Experiments#
The experiments/ tree contains the training and evaluation pipelines
for the three benchmark tasks. Each task folder has its own Hydra
configs, Python drivers and sbatch wrappers; the per-task README.md
lists the drivers in detail.
experiments/
├── preprocessing/ # PBMC / LuCA / Tahoe data preparation
├── 01_end_to_end/ # PCA / AE / scVI / nlscVI / mlscVI
│ ├── codes/ # train.py + eval_*.py
│ ├── configs/ # Hydra (model/, data/, trainer/, metric/)
│ └── submit/ # *.sbatch wrappers + pbmc_search.sh sweep
├── 02_foundation_model/ # SE / scGPT / scConcept / SCimilarity
│ ├── codes/ # *_emb.py + decoderonly_hvg(_tsfm).py + eval_decoder_*.py
│ ├── configs/ # pretrained/, decoder/, model/eval/, data/, metric/
│ └── submit/ # decoderonly_grid.sbatch
└── 03_latent_shift/ # CellFlow + STATE perturbation prediction
├── codes/ # train_cf.py, train_st.py, eval_cf.py, eval_st.py
├── configs/ # cellflow_default.yaml, state_hf_se_parse.yaml, arch/, st/
└── submit/ # train_cf.sbatch, train_st.sbatch
01 — End-to-end reconstruction#
PCA, AE, VAE (scVI implementation) across the latent grid
{10, 32, 128, 512, 2048} on PBMC, Tahoe or LuCA.
submit/pbmc_search.sh expands the 5-model × 5-latent grid into
separate jobs.
02 — Foundation-model reconstruction#
Two-step pipeline. An FM-specific embedder writes per-cell embeddings to
zarr (one driver per FM). An FM-agnostic decoder is then trained on top.
The Hydra --multirun sweep over decoder width / depth is in
submit/decoderonly_grid.sbatch.
03 — Latent-shift reconstruction#
CellFlow or STATE predict the post-perturbation latent state, which is then decoded back to expression. Both methods read the same upstream embeddings (PCA / AE / scVI / nlscVI at multiple latent dims, plus the four FMs) and condition on a perturbation covariate.
Preprocessing#
experiments/preprocessing/ contains the data-prep scripts:
preprocess_pbmc.py— PBMC-10M zarr per (cell_type, donor, cytokine).preprocess_luca.py— LuCA split by study / disease / tissue.tahoe/— multi-step Tahoe pipeline driven byprocess_pipeline.sh.
Smoke tests#
experiments/_smoke.sh runs a short sanity check for every driver.
Submit per env via the matching
experiments/_smoke_logs/smoke_*.sbatch wrapper; per-driver outcomes
land in experiments/_smoke_logs/REPORT.md.