One embryo resource, two modalities
Modalities
- Single-cellTask 1
- Single-cell RNA
Real dissociated cells profiled across the whole transcriptome, 32,285 genes rather than a panel. Cell-type labels ship with the training stages. This is what Task 1 predicts.
- SpatialTasks 2 and 3
- 3D MERFISH — 500-gene panel
Serial sections decoded to per-cell 3D positions plus measured RNA over the same developmental window, with cell-type labels. Coordinates are per-embryo local, not registered across time points. The conditional knock-outs — Mab21l2, Gata4 and β-catenin, each with a matched wild type — are profiled the same way.
Task 1 — single-cell RNA
Real dissociated single cells, whole transcriptome — not the MERFISH panel.
| Stage / condition | Role | Notes | Size |
|---|---|---|---|
| E8.5 | train | E8.5_RNA.h5ad | 571 MB |
| E9.5 | train | E9.5_RNA.h5ad | 590 MB |
| E10.5 | val | validation target — answers withheld | 647 MB |
| E12.5 | test | hidden test target | 360 MB |
| E7.75 | unused | released, outside the Task-1 split | 911 MB |
.h5ad · log1p-normalised .X · 32,285 genes · obs["celltype"] · no spatial coordinates
E7.75 ships with the release but is not part of the Task-1 split. There is no E9.25 stage in this single-cell release, so training uses the two real stages that exist before the target.
File format
AnnData .h5ad, one file per stage. Entries marked tbc are fixed with the data release; the keys and dtypes below are already pinned by the loaders.
- Train
- E8.5_RNA.h5ad 571 MB
- n_obs × 32,285tbc
- Train
- E9.5_RNA.h5ad 590 MB
- n_obs × 32,285tbc
- Validation
- not distributed — scored server-side
- n_obs × 32,285tbc
- Test
- not distributed — scored server-side
- n_obs × 32,285tbc
| Key | Type | What it holds |
|---|---|---|
| .X | float32 [n_obs, 32285] | Log1p-normalised expression over the whole transcriptome. Sparse or dense both load; the scorer densifies and casts to float32 either way. |
| obs["celltype"] | categorical | Cell-type label, released with the training stages. Never part of a submission — the scorer types every prediction with its own frozen classifier. |
| obs indextbc | string | Cell barcode. Not matched between prediction and target; the metrics are distributional, so submissions need not preserve cell identity or even cell count. |
| var index | string [32285] | Gene symbols in the fixed Task-1 panel order. A submission must carry exactly these names in exactly this order, or pass --allow-reorder and let the scorer reindex. |
- No spatial coordinates anywhere in Task 1 — dissociated cells have no position to predict.
- Task 1 is the only task where training on external public single-cell data is allowed, provided the source is disclosed with the submission.
Task 2 — 3D MERFISH (heart setting)
Serial sections decoded to per-cell 3D positions plus measured RNA over the same developmental window.
| Stage / condition | Role | Notes | Size |
|---|---|---|---|
| E8.25 | train | ships as E8.25_late.h5ad | 288 MB |
| E8.5 | val | imputation validation — answers withheld | 85 MB |
| E8.75 | test | imputation test — hidden | |
| E9.25 | train | organizer-internal path, same underlying release | 128 MB |
| E9.5 | train | 4D MERFISH release | 164 MB |
| E10.5 | val | extrapolation validation — answers withheld | 484 MB |
| E12.5 | test | extrapolation test — hidden | 629 MB |
.h5ad · log-normalised .X · 500-gene MERFISH panel · obs["celltype"] · obsm["spatial_3D"] (per-embryo local frame, not cross-timepoint registered)
The heart setting holds stages out on two axes at once. E8.5 and E8.75 sit strictly between the training stages E8.25 and E9.25, so recovering them is imputation; E10.5 and E12.5 sit past the last training stage, so reaching them is extrapolation. Each axis has one public validation stage and one hidden test stage, and the two questions are scored separately.
File format
AnnData .h5ad, one file per stage, per setting. Entries marked tbc are fixed with the data release; the keys and dtypes below are already pinned by the loaders.
- Train
- E<stage>.h5ad
- n_obs × 500tbc
- Validation
- not distributed — scored server-side
- n_obs × 500tbc
- Test
- not distributed — scored server-side
- n_obs × 500tbc
| Key | Type | What it holds |
|---|---|---|
| .X | float32 [n_obs, 500] | Log-normalised expression on the 500-gene MERFISH panel — a measured panel, not a transcriptome. Must be finite and non-negative; a negative entry usually means the matrix was centred somewhere upstream. |
| obs["celltype"] | categorical | Cell-type label, released with the training stages. Not submitted, and not read from a submission. |
| obs indextbc | string | Cell identifier. Not matched across stages — there is no cell-level correspondence between time points in the released data. |
| var index | string [500] | The 500 panel genes, in panel order. Identical across every Task-2 and Task-3 file. |
| obsm["spatial_3D"] | float32 [n_obs, 3] | Per-cell x y z. The frame is per-embryo local and is not registered across time points, so no shared coordinate system holds between stages. Columns beyond the third are ignored. |
- The two settings — heart and embryo — share this schema exactly and differ only in which stages they load and which are held out.
- A submission carries both channels: .X and obsm["spatial_3D"]. A file with expression but no coordinates is rejected before scoring.
Task 2 — 3D MERFISH (embryo setting)
The same 3D MERFISH assay applied to the whole embryo rather than the heart, over the gastrulation window.
| Stage / condition | Role | Notes |
|---|---|---|
| E6.75 | train | earliest released stage |
| E7.25 | train | last stage before the held-out pair |
| E7.5 | val | imputation validation — answers withheld |
| E7.75 | test | imputation test — hidden |
| E8.0 | train | the stage after the pair — both targets are bracketed |
Same schema as the heart setting — 500-gene panel, obs["celltype"], obsm["spatial_3D"].
Both held-out stages sit strictly inside the training range — E7.5 and E7.75 fall between E7.25 and E8.0 — so the embryo setting is entirely imputation, with no extrapolation axis. It is still the harder of the two: it spans gastrulation, where composition turns over fastest, and the stages are packed far more tightly in time than the heart series. Scored separately from the heart setting. Per-file sizes are not in the handoff document, so they are omitted here rather than guessed.
File format
AnnData .h5ad, one file per stage, per setting. Entries marked tbc are fixed with the data release; the keys and dtypes below are already pinned by the loaders.
- Train
- E<stage>.h5ad
- n_obs × 500tbc
- Validation
- not distributed — scored server-side
- n_obs × 500tbc
- Test
- not distributed — scored server-side
- n_obs × 500tbc
| Key | Type | What it holds |
|---|---|---|
| .X | float32 [n_obs, 500] | Log-normalised expression on the 500-gene MERFISH panel — a measured panel, not a transcriptome. Must be finite and non-negative; a negative entry usually means the matrix was centred somewhere upstream. |
| obs["celltype"] | categorical | Cell-type label, released with the training stages. Not submitted, and not read from a submission. |
| obs indextbc | string | Cell identifier. Not matched across stages — there is no cell-level correspondence between time points in the released data. |
| var index | string [500] | The 500 panel genes, in panel order. Identical across every Task-2 and Task-3 file. |
| obsm["spatial_3D"] | float32 [n_obs, 3] | Per-cell x y z. The frame is per-embryo local and is not registered across time points, so no shared coordinate system holds between stages. Columns beyond the third are ignored. |
- The two settings — heart and embryo — share this schema exactly and differ only in which stages they load and which are held out.
- A submission carries both channels: .X and obsm["spatial_3D"]. A file with expression but no coordinates is rejected before scoring.
Task 3 — conditional knock-outs
3D MERFISH from genetically perturbed embryos with matched wild-type controls at the same stage.
| Stage / condition | Role | Notes | Size |
|---|---|---|---|
| Mab21l2 KO @ E9.5 | train | clear phenotype, very specific gene | 458 MB |
| Gata4 KO @ E8.75 | val | two replicates; also a specific gene | 374 + 409 MB |
| β-catenin KO @ E8.75 | test | two replicates; broadly expressed — hardest | 300 + 381 MB |
| WT @ E9.5 | reference | matched wild-type control (shared with Task 2) | 164 MB |
| WT @ E8.75 | reference | matched wild-type control | 84 MB |
Same schema as Task 2 — .X on the 500-gene panel plus obsm["spatial_3D"].
Training and validation use knockouts of very specific genes. The hidden test gene is broadly expressed, and its effect correspondingly diffuse.
File format
AnnData .h5ad, one file per condition; knock-outs ship as two replicates. Entries marked tbc are fixed with the data release; the keys and dtypes below are already pinned by the loaders.
- Train
- Mab21l2 KO @ E9.5 458 MB
- n_obs × 500tbc
- Validation
- Gata4 KO @ E8.75 — 2 replicates 374 + 409 MB
- n_obs × 500tbc
- Test
- not distributed — scored server-side
- n_obs × 500tbc
- Reference
- matched WT @ E8.75 and E9.5 84 + 164 MB
- n_obs × 500tbc
| Key | Type | What it holds |
|---|---|---|
| .X | float32 [n_obs, 500] | Same 500-gene panel and normalisation as Task 2. The prediction is the mutant embryo, not the difference from wild type. |
| obs["celltype"] | categorical | As Task 2. Released for the wild-type reference and the training knock-out. |
| obs["condition"]tbc | categorical | Genotype of the embryo the cell came from — the knocked-out gene, or wild type. |
| var index | string [500] | The same 500 panel genes as Task 2, in the same order. |
| obsm["spatial_3D"] | float32 [n_obs, 3] | Per-cell x y z. The frame is per-embryo local and is not registered across time points, so no shared coordinate system holds between stages. Columns beyond the third are ignored. |
- Every differential-expression metric is computed against the matched wild type at the same stage, never against a preceding stage — so the wild-type reference is part of the input, not an extra.
- Knock-outs ship as two biological replicates. Which replicate a submission is scored against is fixed by the scorer, not chosen by the entrant.
Access and reproducibility
Training data is released for method development. Validation and test ground truth are both withheld — a validation submission comes back as a leaderboard score, and the answers are released only when the final test set is. Task 1 additionally permits training on external public single-cell data — only the evaluation stages are fixed — provided any external source is disclosed with the submission.
Each task's loader in the starter kit reads a documented path list, and DATA_SOURCES.md records which file every task reads, its verified size, and its status — including two dependencies of the richer reference baselines that are not yet on shared storage. The floor and the simple baseline need neither.
Explore it first
The challenge is grounded in the same atlas you can browse on this site. Use it to understand modality coverage and stage spacing before writing a loader.