A submission¶
One submission is one sample. It has exactly two slots.
| Slot | Kinds | Containers |
|---|---|---|
observations — exactly one |
patches, embeddings |
npz, zip |
covariates — any accepted subset |
bulk_rna, tissue, disease |
enum, table |
Observations are what the model reads: either the tiles themselves, or embeddings you computed from them. Exactly one kind, because a model is trained to read one thing.
Covariates are what the model is told about the sample besides the image — a bulk expression profile, the tissue, the disease. Any subset, and only the ones the model you chose declares it accepts. A submission carrying a covariate the model does not accept is refused, by name, rather than quietly ignored: a covariate that is silently dropped is a result you would have interpreted differently.
Why the slots are separate¶
The two slots answer different questions, and keeping them apart is what lets one job model serve every input.
Only observations have a size. They are uploaded, they have caps, and they are what a quota counts. Covariates are small: two of them are a single word from a fixed vocabulary, and the third is a table of gene values. So a submission is "one upload plus some labels", whatever the model, and there is one upload path, one job shape and one result contract rather than one per modality.
What a model decides¶
You do not choose a runtime, a preprocessing recipe or an output gene set. The model does, and it says so up front:
- What it accepts — the observation kinds and the covariate kinds. See Model cards.
- What its input must be — resolution, patch size, normalisation, pooling,
quality floors. See
input_spec. - What it returns — the gene axis. See Genes.
The path a submission takes¶
- Prepare the observation locally — tile a slide, run quality control, pack it. Nothing is uploaded while you do this. See the Quickstart.
- Create an upload and send the bytes in parts.
- Submit it against a model, with any covariates. You get a job.
- Poll the job, or wait on it. Every job ends in one of a small set of states.
- Download the result: one
.h5ad, the same layout whichever runtime ran it.
Each step has one endpoint, listed in the API reference, and every failure is one of the codes in the error catalogue.