One embryo resource, two modalities

Embryo collections across eleven stages (A), single-cell measurement (B), 3D MERFISH from serial sections (C), and the conditional knock-outs (D).
Download
The training stages are released to registered participants. Validation and test targets come back as a score rather than as answers, until the final phase releases the validation answers for every task.
To look at these stages before downloading them — cells in 3D, coloured by type, with gene expression — they are in the atlas: browse the challenge training data ↗
This is not all the data you will get. At the final test phase the validation stages are released too — with their answers — so they become training material rather than something you can only probe through the board. By then ranking has moved to the hidden test split, so releasing them costs nothing and gives every entrant more to train on for the round that decides the prizes. The held-out heart stages become training input at the same point.
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
A whole heart or whole embryo is sliced continuously into serial 2D spatial-transcriptomic sections, which are then reassembled into a 3D volume. Every cell therefore carries both a 3D position and measured RNA, across several developmental stages, with cell-type labels. Coordinates are per-embryo local and are 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
- never distributed — submit and the server scores it
- n_obs × 32,285tbc
- Test
- inputs released at the final test phase, without labels
- n_obs × 32,285tbc
| Key | Type | What it holds |
|---|---|---|
| .X | float32 [n_obs, 32285] | Log1p-normalised expression over the whole transcriptome. Submit sparse or dense — it changes nothing, because every metric runs on a PCA of a couple of thousand subsampled cells and the linear algebra behind that wants a dense array. The conversion happens after subsampling, so it is small. |
| 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 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 (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 | interpolation validation — answers withheld |
| E7.75 | test | interpolation test — hidden |
| E8.0 | train | the stage after the pair — both targets are bracketed |
.h5ad · log-normalised .X · 500-gene MERFISH panel · obs["celltype"] · obsm["spatial_3D"] (per-embryo local frame, not cross-timepoint registered)
The scope follows what can be sectioned. Through gastrulation the whole embryo is small enough to slice end to end and reassemble, so these stages cover the entire embryo; by the stages in the heart setting it is far larger, and profiling is focused on the organ of interest instead. Both held-out stages here sit strictly inside the training range — E7.5 and E7.75 fall between E7.25 and E8.0 — so the embryo setting is entirely interpolation, with no extrapolation axis. It is also the only setting that tests interpolation: heart trains and validates that question but has no stage left to hold back for it, so E7.75 is where interpolation is judged in the final phase. 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
- never distributed — submit and the server scores it
- n_obs × 500tbc
- Test
- inputs released at the final test phase, without labels
- 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 (heart setting)
Continuous serial 2D sections reassembled into a 3D volume, so every cell carries a position as well as its RNA.
| Stage / condition | Role | Notes | Size |
|---|---|---|---|
| E8.25 | train | ships as E8.25_late.h5ad | 288 MB |
| E8.5 | val | interpolation validation — answers withheld | 85 MB |
| E8.75 | train | also the Task 3 wild-type reference | 84 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 |
Identical to the embryo setting above.
The heart setting holds stages out on two axes at once. E8.5 sits strictly between the training stages E8.25 and E8.75, so recovering it is interpolation; E10.5 and E12.5 sit past the last training stage, so reaching them is extrapolation. The two questions are scored separately and never averaged. Heart trains and validates interpolation but never tests it: the interval E8.25–E8.75 contains just E8.5, so there is no second stage to hold back. Interpolation is tested in the embryo setting instead, on the hidden E7.75 — which is where to look if you want to know how that skill will be judged. What this setting carries into the final phase is extrapolation, on the hidden E12.5. In the final phase every heart stage is training input.
The file format is the same as Task 2 · 3D MERFISH (embryo setting) above — same container, same keys, same dtypes.
Task 3 — conditional knock-outs
3D MERFISH from conditionally knocked-out embryos with matched wild-type controls at the same stage. Both knockouts released here are Mesp1-Cre driven, so the deletion is restricted to the mesodermal lineage: Mesp1-Cre; Gata4 F/F; Gata6 F/+ for the Gata4 condition, and Mesp1-Cre; β-catenin F/F for β-catenin.
| Stage / condition | Role | Notes | Size |
|---|---|---|---|
| Mab21l2 KO @ E9.5 | train | clear phenotype, very specific gene | 458 MB |
| Gata4 KO @ E8.75 | val | Mesp1-Cre; Gata4 F/F; Gata6 F/+ — two replicates; answers released at the final phase | 374 + 409 MB |
| β-catenin KO @ E8.75 | test | Mesp1-Cre; β-catenin F/F — two replicates, broadly expressed and the 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 |
Identical to Task 2.
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
- inputs released at the final test phase, without labels
- 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. A submission is scored against each of them, and the difference between those two scores is published alongside the result: it is the same prediction measured against two embryos of the same genotype, so it is a direct read of how much of any gap between two entrants is biology and how much is noise. Which replicate the leaderboard rank uses is fixed by the scorer, not chosen by the entrant.
Where the data comes from
The 3D MERFISH resource and the conditional knock-out embryos were generated by Qingquan Zhang and Neil Chi at UC San Diego. The benchmark is built on that resource; the tasks, splits and scoring are the competition's.
Competition datasets are provided for research and educational purposes. Any use, reuse, publication, presentation, or redistribution of the data outside the Challenge must appropriately acknowledge the Virtual Embryo Challenge and credit Dr. Neil Chi’s group at the University of California, San Diego (UCSD), which generated the dataset. As the dataset has not yet been published, any use of the data in a publication or public presentation must receive prior approval from Dr. Neil Chi and the data-generating team. Any publication using the dataset must also appropriately credit Dr. Qingquan Zhang and Dr. Neil Chi.
Access and reproducibility
Training data is released for method development. Validation and test ground truth are withheld while they can still affect the board: a validation submission comes back as a leaderboard score, not the answers. At the start of the final phase the validation answers are released for every task — ranking has moved to the hidden test split by then — and the test leaderboard opens. 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.
You may train on external data, public or your own, and for Task 1 this is expressly encouraged. What you may not use is measured data from a held-out stage or genotype, by any route — not directly, not through a model pre-trained on it, and not through a public dataset that contains it. Those are: E10.5 and E12.5 for Task 1; E7.5 and E7.75 in the embryo setting and E8.5, E10.5 and E12.5 in the heart setting for Task 2; and the Gata4 and β-catenin knockouts at E8.75 for Task 3. Nearness counts: external data is treated as a held-out stage when it sits closer to that stage than to the nearest stage we released for the same task, the midpoint being the boundary — holding out E9.5 and training on an external E9.45 embryo is using the answer under a different name, and so is a dataset labelled by somite count or Theiler stage that lands in the same window. Beyond the last released stage, as the extrapolation targets are, everything from the midpoint onwards counts. For the extrapolation targets the window is stated outright rather than derived: no external data from any time point between E9.5 and E13.5 may be used, and E10.5 and E12.5 — the validation and test targets themselves — are excluded absolutely; time points outside E9.5–E13.5 may be used provided the source and its stages are stated explicitly with the submission. For interpolation targets, external data too close to a held-out stage is also treated as held out: in Task 2 that means heart data from E8.25 to E8.75 and embryo data from E7.5 to E7.75 may not be used — the midpoint-derived protected windows around the held-out interpolation stages. The same applies to genotype: another allele of the same gene at a comparable stage, or a perturbation that phenocopies the held-out one, is the held-out condition. A general-purpose resource that spans one of those windows is not banned outright — remove the cells inside it before training and say so in the method summary. Using it with them left in is using the held-out data. Every external source must be disclosed with the submission; an undisclosed one is a violation whether or not it changed the result, because the disclosure is what makes this checkable.
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.
A related resource
This site also hosts the Virtual Embryo atlas. It is not the benchmark — the challenge is scored against the releases listed above — but it covers the same organism over the same window, and it is browsable without downloading anything. Useful for orienting yourself in mouse development, and for Task 1, where external public single-cell data may be trained on as long as it is disclosed with the submission.
With one limit that applies to every external source, this atlas included: no measured data from a held-out stage or condition may be used — not for training, not for fine-tuning, not transferred in under another name. The atlas spans the same window as the benchmark, so some of what it contains sits at target time points; using it there is using the answer, however it is routed. The held-out stages are named for each task above, so what is off limits is knowable before you start.
