Hematopoiesis · Time interpolation · scRNA-seq · flow matching
Development is a continuous, highly dynamic process, but we can only ever watch it in snapshots. Single-cell RNA-seq is destructive (a cell is consumed the moment it is measured), so the data are cross-sectional, a set of unpaired marginal distributions (one per sampled timepoint), never longitudinal tracks of the same cells. Given the cell states we did measure, can we recover the states at the timepoints we did not, the continuous dynamics hidden between snapshots? FateFlow frames this as an interpolation problem in gene-expression space: learn a transport that carries the earlier population into the later one, and read off the intermediate populations it passes through. FateFlow shows the trained velocity field integrated as an ODE (day 2 → day 6, day 4 held out); every frame is a real integration step. CellOT-AE's day-4 prediction is also real model output, but its transport lives in an autoencoder latent, so the in-between frames here are a straight reconstruction between its real day-2 and day-4 clouds. Scrub the timeline: the orange band is the held-out day, and the orange rings are the real day-4 cells neither model saw.
Benchmark: recover a held-out timepoint. We test on the LARRY state-fate hematopoiesis dataset (Weinreb et al. 2020, Science), which profiles mouse hematopoietic progenitors at days 2, 4 and 6. Observed: day 2 (source) and day 6 (target). Held out: day 4, the intermediate marginal we try to reconstruct. Because day 4 is never shown to the model, how closely the interpolated population matches the real day-4 cells is a direct, quantitative test of the recovered dynamics.
The middle frame of each animation is that method's day-4 prediction, compared to the real, held-out day-4 cloud by an energy distance in UMAP space (lower = closer to the truth the models never saw). FateFlow reaches 0.094 by committing cells to the neutrophil / monocyte arms early. CellOT-AE's day-4 prediction sits at 0.399: its cells land closer to the progenitor pool than out on the arms. Both day-4 clouds are genuine model output; the difference in how they get there is discussed below.
Data: LARRY in-vitro hematopoiesis (Weinreb et al., Science 2020), the state-fate dataset. 700 day-2 progenitors are followed to day 6, with day 4 held out; positions are rendered on a UMAP fit to the real day-2 / day-4 / day-6 cells (50 principal components). Fates restricted to the two dominant lineages (neutrophil and monocyte) plus the undifferentiated pool.
What is real, and what is reconstructed. Every cell position, the held-out day-4 cloud, and both energy distances are computed on real data, and both day-4 predictions are genuine model output. FateFlow goes further: its whole animation is the real ODE integration path (midpoint solver, 100 steps) of its trained velocity field, so every frame is where the model actually places the cells. CellOT-AE transports cells in an autoencoder latent, from which we recover only the real day-2 start and the real day-4 prediction; the frames between them are a straight displacement reconstruction, not the model's own latent path. Neither panel is a hand-drawn template.
Export your 2-D embedding (UMAP or first two PCs) at every ODE step, in this shape:
{
"real": { "day4": [[x,y],...] },
"methods": {
"FateFlow (ours)": { "note": "fate-conditioned", "real": true, "frames": [ [[x,y],...], ... ] }
}
}
Each frames array runs day 2 → day 6; the middle frame is the day-4 prediction
scored against real.day4. Keep row order identical across frames.