You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit abd4971
Browse filesBrowse the repository at this point in the historyBrowse files
authored
Restore the per-cell scale of senkin_tmp and ss_opm predictions (#80)
Both 2022 competition solutions predict a z-scored profile per cell (the
competition scored per-cell Pearson only). Mapping that back with one global
slope and intercept gave every predicted cell the same mean and standard
deviation, so per-gene correlations, overall correlations and RMSE/MAE scored
the missing per-cell level rather than the methods.
src/utils/cell_scale.py predicts each cell's target mean and log standard
deviation from its input (ridge regression on a truncated SVD of the
normalized input plus two sequencing-depth features) and restores them, with
the spread shrunk by one least-squares factor fitted on training-cell
predictions (out-of-fold for senkin_tmp). Per-cell correlations are
unchanged. ss_opm_predict keeps the old global map for model bundles trained
before this change.
Co-authored-by: Vladimir Shitov <vladimir.shitov@helmholtz-munich.de>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -126,6 +126,8 @@
126
126
127
127
*`guanlab_dengkw_pm`: Solve the kernel ridge regression with `scipy.linalg.cho_factor()`/`cho_solve()` instead of `KernelRidge`, whose `scipy.linalg.solve()` raised a `MemoryError` or segfaulted beyond ~30k cells with the OpenBLAS in this image. Predictions are unchanged; the method failed on every dataset except `bmmc_multiome`.
128
128
129
+
*`senkin_tmp_train`, `ss_opm_train`, `ss_opm_predict`: Give every predicted cell its own level and spread instead of one global slope and intercept. Both 2022 competition solutions predict a z-scored profile per cell, so every cell came out with the same mean (0.5955 on `bmmc_cite`, where the true per-cell mean ranges from 0.16 to 2.83): per-cell correlations were unaffected, but per-gene correlations, overall correlations and RMSE/MAE scored that missing level, not the methods. The new `src/utils/cell_scale.py` predicts each cell's target mean and log standard deviation from its input (ridge regression on a truncated SVD plus two sequencing-depth features) and shrinks the restored spread by one factor fitted on training-cell predictions. `ss_opm_predict` still applies the old global map to model bundles trained before this change.
0 commit comments