Prima Mente · Model evals
Every eval we run, in one ledger.
prima-bench grades what a model actually knows about biology — across genes, cells, sequences, and whole samples. This is the internal map: which evals exist, what each one measures, and the exact way to run it.
- Evals
- 179
- task × dataset
- Tasks
- 15
- registered
- Families
- 10
- with ≥1 eval
- Datasets
- 182
- in the registry
- Recipes
- 59
- curation dirs
catalog fb70fe0 · 2026-07-21
Coverage
Where the 179 live evals land today — by bucket and task family, and how many reach across paired modalities.
- sequence classification68
- variant effect31
- sequence clustering3
- gene function29
- gene regression5
- gene classification4
- sample classification4
- integration15
- cell type annotation8
- perturbation1
- sample classification11
- single-modality164
- gene expression9
- chromatin accessibility5
- joint (paired)1
Five buckets
- Core guides Harness, contracts, and metrics every eval shares
- Gene-level evals 42 evals One gene in, one label out — function to fitness
- Cell-level evals 24 evals Identity, state, and response to perturbation
- Sequence-level evals 102 evals Regulatory readouts and variant effects
- Sample-level evals 11 evals Whole-sample classification and phenotype
Run one
prima-bench never touches your model. Fetch a censored eval input, hand back predictions in the expected shape, and score against the held-out solution — any framework, any language. The prima-bench CLI is discovery + docs; scoring runs through the Python API.
example gene_function_classification · ashburner_2000_nature_genetics/go_bp@0.0.3
import prima_bench as pb
# Downloads on demand into the local cache; returns local Paths.
train_path, test_path = pb.fetch_data(task="gene_function_classification", dataset="ashburner_2000_nature_genetics/go_bp@0.0.3")
train = pb.load(train_path, task="gene_function_classification", split="train", dataset="ashburner_2000_nature_genetics/go_bp@0.0.3")
test = pb.load(test_path, task="gene_function_classification", split="test", dataset="ashburner_2000_nature_genetics/go_bp@0.0.3")
# Your model produces predictions aligned to the eval input.
predictions = my_model(test)
# Score against the censored solution over this task's metric panel:
# gene_function_term_auprc, gene_function_term_auroc, gene_function_micro_auprc, gene_function_fmax, gene_function_smin
run = pb.Evaluation(task="gene_function_classification", dataset="ashburner_2000_nature_genetics/go_bp@0.0.3")
run.update(predictions=predictions) # one-shot; or stream shard-by-shard
result = run.compute() # -> EvalResult
print(result)