Virtual Embryo
P3 is open: the test leaderboard is open, P2 standings are frozen, and validation answers are available by explicit opt-in. Next: Final submissions due on 2 December 2026.Full timeline →
Virtual Embryo Challenge
Submit

Submissions

Upload a prediction file and follow it through scoring. Ranking uses your team's best score on each task.
Your submissions (0)nothing yet›

Nothing submitted yet.

Upload a prediction

You choose when to start your final test submissions. Once you access validation answers or your first P3 submission is accepted, no member of your team can submit to P2 again, on any task. This is permanent, even if the submission is later rejected or withdrawn. Format checks do not trigger this change.

Loading boards and allowance…

You can also upload predictions through the API. Set up API access →

Register a team first.

What is checked on upload

A mismatch is a validation error, not a low score. These run before the file is queued; the scorer re-checks everything, including gene order, which needs the task's gene list and is therefore its call, not this page's.

var_names must equal the task's gene list, in the released order
Checked element by element. A mismatch reports how many genes were expected against how many arrived, plus the first missing and extra names. Pass --allow-reorder if you have exactly the same genes in a different order and want the scorer to reindex for you.
.X must be a 2D cells × genes matrix
Sparse input is densified and everything is cast to float32, so you can submit either. Any other dimensionality is rejected.
.X must be finite
A single NaN or infinity anywhere in the matrix rejects the file rather than scoring around it.
.X must be non-negative
The metrics expect log-normalised, non-negative data. A negative entry usually means the matrix was centred or z-scored somewhere in the pipeline.
obsm["spatial_3D"] is required for Tasks 2 and 3
Shape cells × 3 or more; only the first three columns are read. Must be finite. Task 1 submissions carry no coordinates at all.
obs["celltype"] is optional and ignored
If it is absent the scorer fills in a placeholder. Cell types are never taken from a submission: every entry is typed by the same frozen probe.