Commit ·
60537f6
1
Parent(s): 2ff3971
app: warn if input values are out of log2 range (guards against raw TPM/counts)
Browse files
app.py
CHANGED
|
@@ -96,6 +96,21 @@ if uploaded:
|
|
| 96 |
if overlap < 1000:
|
| 97 |
st.warning("Low gene overlap — results may be unreliable.")
|
| 98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
aligned = pd.DataFrame(0.0, index=df.index, columns=gene_list)
|
| 100 |
common = [g for g in gene_list if g in df.columns]
|
| 101 |
aligned[common] = df[common].values
|
|
|
|
| 96 |
if overlap < 1000:
|
| 97 |
st.warning("Low gene overlap — results may be unreliable.")
|
| 98 |
|
| 99 |
+
# --- Input scale check: model expects log2(TPM) ---
|
| 100 |
+
common_for_scale = [g for g in gene_list if g in df.columns]
|
| 101 |
+
if common_for_scale:
|
| 102 |
+
vals = df[common_for_scale].to_numpy(dtype=float)
|
| 103 |
+
vmax = float(np.nanmax(vals))
|
| 104 |
+
p99 = float(np.nanpercentile(vals, 99))
|
| 105 |
+
st.caption(f"Input value range: 99th pct = {p99:.1f}, max = {vmax:.1f} "
|
| 106 |
+
"(log2(TPM) is typically 0–20).")
|
| 107 |
+
if vmax > 30 or p99 > 25:
|
| 108 |
+
st.warning(
|
| 109 |
+
"⚠️ Input values look larger than expected for **log2 scale**. "
|
| 110 |
+
"This model expects **log2-transformed expression** (e.g. log2(TPM+1)). "
|
| 111 |
+
"Raw TPM/counts will give unreliable predictions — please log2-transform first."
|
| 112 |
+
)
|
| 113 |
+
|
| 114 |
aligned = pd.DataFrame(0.0, index=df.index, columns=gene_list)
|
| 115 |
common = [g for g in gene_list if g in df.columns]
|
| 116 |
aligned[common] = df[common].values
|