Skip to content

Covariates

Covariates are what the model is told about the sample besides the image. Every one of them is optional, and a model accepts only the ones its card declares.

Kind Container Charges Item cap Size cap
bulk_rna table 64 MiB
tissue enum
disease enum

None of them charges a quota counter: they are small, and pricing a single word would be theatre.

tissue and disease

One value each, from a fixed vocabulary. They are labels, not free text, so that a model conditioned on them sees the same token you meant. A value outside the vocabulary is refused rather than mapped to a nearest neighbour.

bulk_rna

A bulk expression profile for the same sample, as a table.

Part Contract
Layouts long, wide
Units counts, tpm
Minimum gene coverage 60 % of the model's input gene set

Long layout is one row per gene; wide layout is one row of values under gene column names. Either is accepted, and gene names are resolved through the same gene table as everything else, so previous symbols and aliases work.

Coverage is checked before anything runs. A table that covers less than the stated fraction of the model's input gene set is refused with bulk_rna_coverage_too_low rather than padded with zeros: a zero in an expression table is a measurement, and inventing it changes the answer without telling you.

Bulk RNA is used in one of two ways, and the model's card says which. A calibration layer needs no retraining and its output is labelled as calibrated; a model with a bulk branch was trained with it. The distinction matters when you compare results, which is why it is on the card and in the result file's provenance rather than in a release note.