chreode-downstream / README.md
MufanQiu's picture
Fix arXiv primaryClass to cs.LG
7f693df verified
---
license: mit
library_name: pytorch
tags:
- single-cell
- foundation-model
- waddington
- dynamics
- fine-tuned
language: en
pipeline_tag: feature-extraction
---
# Chreode — downstream fine-tuned heads
Fine-tuned Chreode dynamics heads for **Weinreb hematopoiesis** (§5.1, Table 1) and **Veres islet differentiation** (§5.2, Table 2) of [arXiv:2605.28111](https://arxiv.org/abs/2605.28111).
Each task is shipped at three seeds (0, 1, 2). Each checkpoint was produced by 5000 epochs of fine-tuning on top of the released pretrained backbone [`WhenceFade/chreode-pretrained`](https://huggingface.co/WhenceFade/chreode-pretrained).
## Files
| File | Task | Seed | Size |
|---|---|---|---|
| `weinreb_seed0.pt`, `weinreb_seed1.pt`, `weinreb_seed2.pt` | Weinreb hematopoiesis (d2 → d4, d6) | 0, 1, 2 | 36 MB ea |
| `veres_seed0.pt`, `veres_seed1.pt`, `veres_seed2.pt` | Veres islet differentiation (t0 → t1…t7) | 0, 1, 2 | 36 MB ea |
These files include the dynamics head only (the scVI encoder is frozen and lives in [`WhenceFade/chreode-pretrained`](https://huggingface.co/WhenceFade/chreode-pretrained)).
## How to use
The full evaluation flow is in `reproduce/02_weinreb.md` and `reproduce/03_veres.md` of the [Chreode GitHub repo](https://github.com/mufanq/Chreode). Quick command (after cloning the GitHub repo + downloading these weights into `checkpoints/downstream/`):
```bash
for seed in 0 1 2; do
PYTHONPATH=src python -m cellworldmodel.script.run_intermediate_eval \
--method m10 --dataset weinreb_scvi \
--experiment g2a_m10_wdit_time2vecu_lowfreqcurl_uncertainty_adamw \
--model-config-checkpoint checkpoints/downstream/weinreb_seed${seed}.pt \
--init-checkpoint checkpoints/downstream/weinreb_seed${seed}.pt \
--epochs 0 --seed ${seed} \
--output-dir output/reproduce/weinreb_eval_seed${seed}/
done
```
`--epochs 0` skips fine-tuning and reports eval-only Sinkhorn $W_2$.
## Expected paper numbers (3-seed mean ± std)
### Weinreb hematopoiesis (Table 1)
| Day | Chreode (these weights) | Best baseline |
|---|---|---|
| d4 | **1.5133 ± 0.0757** | PI-SDE 1.745 |
| d6 | **1.6884 ± 0.0362** | PI-SDE 1.840 |
### Veres islet differentiation (Table 2)
| t | Chreode (these weights) |
|---|---|
| t1 | 2.4009 ± 0.0658 |
| t4 | 2.4048 ± 0.1020 |
| t7 | 2.9132 ± 0.1704 |
| avg | **2.6171** |
(Full curve t1 – t7 in the paper's Table 2.)
## Training recipe
| | Setting |
|---|---|
| Initialization | `dynamics_dit.pt` from `WhenceFade/chreode-pretrained` |
| Epochs | 5,000 |
| Optimizer | AdamW β=(0.9, 0.95), wd=0.01, lr=3 × 10⁻⁴ |
| Schedule | 5% cosine warmup |
| Batch | 512 |
| Loss | MMD + Sinkhorn W₂ + drift + downhill (1 : 1 : 1 : 0.1) |
| Hardware | 1 × A100 per seed |
| Wall-clock | Weinreb ≈ 1.5 h / seed, Veres ≈ 2 h / seed |
## License & citation
MIT — see the GitHub repo. Citation block is the same as the pretrained card.
```bibtex
@article{qiu2026chreode,
title = {Chreode: A Cell World Model for One-Step Temporal Dynamics and Perturbation Prediction},
author = {Qiu, Mufan and Zheng, Genhui and Xu, Yinuo and Zhang, Ruichen and Ding, Ying and Long, Qi and Chen, Tianlong},
year = {2026},
eprint = {2605.28111},
archivePrefix = {arXiv},
primaryClass = {cs.LG},
url = {https://arxiv.org/abs/2605.28111}
}
```