Arc Institute ran a large experiment. They took six human cell lines from different tissues and, one gene at a time, turned genes down using CRISPRi, a CRISPR tool that dims a gene without cutting DNA. Then they measured the activity of every gene in thousands of individual cells.
They hid the results. For the current phase they give us three cell types, called only A, B and C, and they never say which lines these are. For each one we get:
Our job: for every context and every one of the 300 knockdowns, produce 400 made-up but realistic cells. Each cell is a row of 18,533 whole-number counts, showing what we think that cell looked like after the knockdown. That comes to 300 × 400 × 3 = 360,000 cells in one .vcc file. No training set is given this year. We must learn from other public experiments and transfer that knowledge to cell types we have never seen perturbed.
The knockdowns were chosen to be strong (>80% on-target knockdown), and the data were read with 10x Flex, a probe-based single-cell method.
research/recon/challenge-mechanics.md §1, §5; data/catalog/A1-official-bundle-metadata.md (manifest); A2-official-control-contexts.mdArc's scorer is cell_eval2, run with its vcc2026 profile. It computes six measures and averages them equally, first within each context and then across A, B and C. Each measure is rescaled so that:
| member | in plain words |
|---|---|
| pds (perturbation discrimination) | If you line up our predicted change for gene X against all 300 real changes, is the real X the closest match? Checks the direction of the change, not its size. |
| mse (expression accuracy) | How close our predicted average expression is to the real one, after correcting for sampling noise. For us this is stuck at exactly 0: it is clamped at the floor in all eight scored reads. Even when a run cut its raw error 2.8× (6.908 → 2.458), the score stayed 0. We treat it as permanently unreachable. |
| nmae (log-fold-change accuracy) | For the genes that really changed significantly, how far off is our predicted size of change? |
| fid (direction fidelity) | Of the genes we call significantly changed, how many move in the right direction, up or down? Also penalises calling too many or too few. |
| reach (direction reach) | Rank the truly changed genes by how confident we are about them. How deep can we go down that list while staying 90% right on direction? |
| jac (significance overlap) | How much our set of "significantly changed" genes overlaps the real set. Calling too many is punished. |
The knocked-down gene itself is left out of every measure, so predicting "the target went down" earns nothing.
challenge-mechanics.md §6; I1-leaderboard-payloads.md (integrity table); ACTION-FOR-AMIT.md (2026-09-07 update); state log ALPHA_030_CUT_u_mse_BY_2.8x…Validation and final scores are on different scales, because they use different lines and panels, and pds is a rank within a panel. Don't compare numbers across the Oct 22 line. Leaderboard entries are not prize-eligible; only final entries are.
research/challenge-rules.md §1, §2.1, §6, §10; challenge-mechanics.md §2, §5, §8; state log RETRACTED_THE_OPTIMAL_STOPPING_VALUE_IS_ZERO…The recipe in one breath: take the average knockdown response (log fold change) measured for each target in public experiments on four "donor" cell lines. Scale how far each response departs from the shared, generic CRISPRi response by α = 0.90. Apply that to each context's own control cells. Then draw realistic counts using per-gene noise levels (θ) estimated from that context's controls.
Noise is the hard reality. The same frozen model, submitted three times with different random seeds, scored 0.092546, 0.097239 and 0.095203. Its rank ranged from 202 to 213 without us changing anything. So a single submission can only show a real improvement if it moves the score by about 0.0143. Only two effects we have ever measured on the board clear that bar:
Every other tweak we priced (trims, call-set changes, and so on) sits at +0.001 to +0.003, well below the floor.
| read | what changed | score | rank |
|---|---|---|---|
| s01 | α 1.50, constant θ | 0.064822 | 260 |
| s02 | α 0.90, constant θ | 0.089521 | 207 |
| s03 | α 0.70, constant θ | 0.090650 | 204 |
| s04 | dm α 0.90, seed 0 | 0.092546 | 202 |
| s05 | dm α 0.90, seed 1 | 0.097239 | 204 |
| s06 | dm α 0.90, seed 2 | 0.095203 | 213 |
| s07 | level-matched trim | 0.094703 | 218 |
| s09 | dm α 0.30 | 0.057431 | 311 |
s08, a fourth seed, was built but never flown.
mshift, the average response). KOLF2.1J, a stem-cell dataset, covers 273 of the 300 targets and 21 of the 28 orphans. On our local rig, using it only for the orphans beat the fallback on all three seeds, and a shuffled-KOLF control showed about half of that gain comes from the right target's response. Scaled to the real board (21 orphans filled, and six members with mse stuck at 0), the expected gain is about +0.012 to +0.020, right around the 0.0143 noise floor. That's worth one read, not a sure thing. (The older "+0.0251" was one seed at a larger mask, not a board projection.) Using KOLF more broadly, as a general second donor, hurt (−0.0136). Flown 2026-09-19 as submission 10: the frozen dm α 0.90 model plus KOLF for 21 orphans, and nothing else. It scored 0.098572, our best read so far: +0.0036 over the previous setup's average (+1.5σ). That's too small to be certain, so as decided in advance we keep KOLF. It also came in smaller than the rig predicted. A repeat with a different random seed (submission 11) scored 0.098918, a new best. Averaged over the two, KOLF is +0.0037 ahead (1.75 standard errors: nearly, but not quite, statistically certain).
I1-leaderboard-payloads.md; ACTION-FOR-AMIT.md §0 and "What is already done"; data/catalog/README.md (E1); state log entries 2026-09-06 to 2026-09-19 (KOLF2_1J_LICENCE_CLEARED_BY_AMIT, ALPHA_IS_CLOSED…, THE_ALPHA_VERTEX_IS_LOCATED…)A2-official-control-contexts.md (cell identity); A1-official-bundle-metadata.md (revised interpretation); data/catalog/README.md (C, D1–D2 rows); I1-leaderboard-payloads.md; state log FIRST_PER_MEMBER_RIG_vs_BOARD_HEAD_TO_HEAD_AND_reach_FLIPPED; challenge-mechanics.md §10Seven ideas were priced in two days. Two things paid, five did not, and two of the failures taught us a rule.
| Idea | Result |
|---|---|
| KOLF2.1J for the 28 uncovered targets (you cleared the licence) | Flown. Best score, 0.098918. Kept. |
| A test rig built from the 2025 data — same chemistry as the real task, 255 targets × 400 cells | Works. Tracks the leaderboard at 0.96 correlation and costs no submissions. Judges effects of ~0.01 or bigger. |
| Scale predictions by how often a gene is detected | No gain (+0.001 against a +0.013 bar) |
| Learn a per-gene correction from the 2025 measurements | No transferable gain |
| Smooth donor responses toward their shared patterns | Big loss (−0.025 to −0.155) |
| Strip those shared patterns out instead | Small loss (−0.005) |
| Even out weak and strong responses | Loss (−0.007 to −0.015) |
The rule those failures bought. KOLF's gain landed almost entirely in the two scores that ask "did you name the right genes?" (jaccard and fidelity), and there it is unambiguous. The reason is simple: the 28 uncovered targets used to share one generic answer, so they named nearly the same genes as each other; 21 of them now have real, measured answers.
That suggests making every prediction more distinctive. It does not work. When we stretched weak responses to stand out, the "right genes" scores did improve — and the score that asks "is the size of the change right?" (nmae) fell much further, wiping out the gain. Distinctiveness and accurate magnitude are in tension, and magnitude weighs more.
So the only move that pays is replacing a wrong answer with a measured one, which is exactly what KOLF does. Rescaling what we already have cannot win. That rule now filters new ideas before they cost anything.
LEV2, LEV4, LEV6, LEV7, KOLF_GAIN_LOCALISED…); research/leverage-plan-2026-09-19.md; research/flex-rig-calibration.md
Amit asked for a proper set of test problems, so that we could tune against them and check whether wins travel rather than fitting one test. We built nine, each differing from the real task in one way, and re-scored settings the leaderboard has already graded. Three things came out, and two of them corrected mistakes this project had already made.
1. We had been testing on the wrong kind of panel for months. Our old test rigs gave each perturbation 64 cells; the real task gives 400. That single difference decides whether a test agrees with the leaderboard. The 64-cell panels rank our old α 1.50 setting best — the leaderboard ranks it worst, and dropping it was our biggest ever gain. A 400-cell panel that is otherwise identical tracks the leaderboard closely. Rule adopted: never tune on a panel with few cells per perturbation.
2. A tuning run found a "win" that wasn't one. An automatic search over the method's settings beat the shipped one on three panels and lost on the fourth — the panel that matches the leaderboard best. Tuning on a single test would have shipped it. Rule adopted: one disagreeing panel is a veto.
3. The model experiment failed in an instructive way. We first measured something nobody here had measured: how much a perturbation's effect in one cell type tells you about the same perturbation in another. The answer is "a real amount, but small" — about 5–9%. A learned model looked four times better than our simple copying method… but only when it was allowed to see examples from the cell type it was being tested on. On a cell type it had never seen — which is exactly our situation — it collapsed to nothing. A later version improved that transfer measure on every held-out cell type and still made the actual score worse on every panel.
The most useful conclusion is that last contradiction: a method can get better at predicting biology and worse at the thing we are graded on. Convenient stand-in measurements can rule ideas out cheaply, but only the real scorer can promote one. Nothing from this work changed what we submit — and that, given how good the intermediate numbers looked, is the point.
research/benchmark-suite.md; research/world-model-transfer.md; data/catalog/L1-benchmark-and-model-artifacts.md
Each topic opens to a plain explanation. Inside are two more layers, Deeper (mechanism) and Down to the molecule, followed by reading and one line on why it matters for our score. Everything starts collapsed.
Every cell carries the same DNA, a recipe book of roughly 20,000 protein-coding genes. A cell "expresses" a gene when it copies that gene into messenger RNA (mRNA), a short-lived working copy that ribosomes read to build a protein. A T cell and a liver cell have the same book but open different pages. "Expression" in our data means one thing: how many mRNA molecules of each gene were caught in one cell. We never see proteins.
Crick's central dogma is DNA → RNA → protein. Each step is regulated. Transcription (DNA→RNA) is controlled by promoters, enhancers and transcription factors. RNA processing covers splicing, capping and poly-A tailing. Translation (RNA→protein) and degradation of both RNA and protein set the final levels. mRNA and protein levels are correlated only partly, because each has its own synthesis and decay rates.
A cell's identity is largely its expression pattern. Some genes (like actin and ribosomal proteins) are on everywhere at high levels, while lineage genes (CD3E in T cells, hemoglobins in erythroid cells) are on only in their cell type. A transcriptome is a vector of about 18–20k numbers per cell.
RNA polymerase II binds a promoter, helped by general transcription factors such as TFIID, which recognises the core promoter. It unwinds DNA and synthesises pre-mRNA 5′→3′. The nascent RNA gets a 7-methylguanosine cap. The spliceosome removes introns. At the 3′ end the transcript is cleaved and a poly(A) tail of roughly 200 adenines is added. That poly(A) tail is the handle that 10x 3′ chemistry grabs (topic 5). The mature mRNA is exported through nuclear pores, and ribosomes translate its codons into amino acids.
Why it matters for our score: every number we emit is an mRNA count, so everything we predict is a change in mRNA abundance, not in protein or cell behaviour.
The amount of an mRNA in a cell is a bathtub: the tap is transcription and the drain is decay. Turn a gene's tap down (which is what CRISPRi does) and its mRNA level falls toward a new, lower level. How fast it falls depends on how quickly that mRNA naturally decays. The downstream genes change only after the target's protein runs down, which takes longer.
At steady state, level = synthesis rate ÷ decay rate. Mammalian mRNA half-lives span minutes to tens of hours; the median in Schwanhäusser 2011 was about 9 h. Protein half-lives are typically much longer (about 46 h median in the same study). So after a knockdown the target mRNA drops first, its protein declines more slowly, and only then do genes regulated by that protein shift. Perturb-seq experiments read cells days after guide delivery, so what we see mixes direct effects and secondary cascades.
Many knockdowns of essential machinery (ribosome, proteasome, splicing, mitochondrial translation) trigger stereotyped stress responses that look alike whichever gene was hit. Examples are the integrated stress response, p53 activation, and slowed proliferation. That shared component is why a "mean response" baseline is strong, and it is roughly what our mshift term captures.
Most cytoplasmic mRNA decay starts with deadenylation: the CCR4–NOT and PAN2–PAN3 complexes shorten the poly(A) tail. The DCP1/DCP2 decapping enzymes then remove the cap, and XRN1 chews the RNA 5′→3′; the exosome can also degrade it 3′→5′. Stability is tuned by 3′-UTR elements (AU-rich elements, microRNA sites) and by codon optimality. Transcription itself is often bursty: a promoter flips between ON and OFF, making mRNAs in bursts. That bursting is the biological source of the extra variance modelled by θ in topic 6.
Why it matters for our score: the shared stress response is why the "context mean" baseline sets score 0. We only score above it by getting the target-specific part right.
CRISPR uses a short guide RNA to steer a protein (Cas9) to a matching 20-letter stretch of DNA. Normal Cas9 cuts there. CRISPRi uses a "dead" Cas9 that can't cut, fused to a repressor. It parks on the gene's start and dims it: a knockdown, not a knockout. A non-targeting control (NTC) guide matches nothing in the human genome, so cells carrying it experience everything except the knockdown. They are the fair baseline.
SpCas9 has two nuclease domains: RuvC cuts the non-target strand and HNH cuts the target strand. The mutations D10A (RuvC) and H840A (HNH) make "dead" Cas9 (dCas9), which still binds DNA. The single guide RNA (sgRNA) has a ~20-nt spacer that base-pairs with the target DNA, plus a scaffold that Cas9 binds. Binding needs a PAM (5′-NGG-3′) next to the target. The fused KRAB domain (originally from the zinc-finger protein KOX1/ZNF10) recruits the co-repressor KAP1/TRIM28. That brings in SETDB1, which lays down H3K9me3, and HP1 proteins, which compact the chromatin, so RNA polymerase II can no longer initiate efficiently. Even without KRAB, dCas9 bound inside the gene physically blocks elongating polymerase (the original CRISPRi of Qi et al. 2013).
Why it matters for our score: the scorer excludes the target gene itself, so the whole game is the ripple of a partial knockdown through the rest of the transcriptome, measured against NTC cells.
Perturb-seq is a pooled experiment. Thousands of different guides go into a big population of cells, one guide per cell. Each cell is then sequenced individually, reading both its full mRNA profile and which guide it carries. It works like thousands of separate knockdown experiments in one tube. The challenge data and all our donor data come from Perturb-seq.
Guides are delivered by lentivirus at a low multiplicity of infection (MOI), so most cells get at most one integration, and drug selection keeps only infected cells. In early Perturb-seq, the guide identity was read through an expressed barcode transcript on the same vector. Later, direct guide capture (Replogle et al. 2020) put a capture sequence into the sgRNA scaffold so the guide itself is barcoded alongside the cell's mRNAs. The CRISPRi machinery (dCas9-KRAB) is usually stably integrated in the cell line beforehand.
Why it matters for our score: our donors are other people's Perturb-seq screens. Their cell lines, depth and cells-per-target set the ceiling on what we can transfer.
To measure thousands of cells separately, each cell is sealed in a tiny oil droplet together with a gel bead. Every bead carries millions of DNA tags sharing one cell barcode, so every molecule from that cell gets the same label. Each tag also carries a random UMI, so copies made later during amplification can be collapsed back to one original molecule. After sequencing, the software counts UMIs per gene per barcode. That count table is what we receive, and what we must produce.
10x 3′ (poly-A capture): the bead's oligo ends in poly(dT), which grabs the poly(A) tail of mRNAs in live, dissociated cells. Only the 3′ end of each transcript is sequenced. Any polyadenylated RNA can be caught, so the gene list is open-ended. Efficiency varies with 3′ UTR annotation, transcript length and internal A-rich stretches.
10x Flex (probe hybridisation): cells are fixed first. Pairs of DNA probes designed for each gene in a predefined panel hybridise side by side on the mRNA and are joined by a ligase. Only the joined probe product is captured and counted. Only genes on the panel are measured, and each gene's efficiency depends on how well its probes bind, not on its poly-A tail.
So the same true mRNA level can produce different counts in the two chemistries, gene by gene. Our challenge data are Flex, while K562_gwps is 3′. The genes missing from the scored list (RPL/RPS, GAPDH, MALAT1, EEF1A1, TPT1) are probably a probe-panel property. Their absence also means library sizes here exclude the reads that usually dominate a cell.
In 10x 3′ v3, each bead oligo reads: sequencing adapter / primer site, a 16-nt cell barcode, a 12-nt UMI, and a ~30-nt poly(dT). Inside the droplet (a "GEM") the cell lyses, and reverse transcriptase primes off poly(dT) to make cDNA, adding a template-switch sequence at the 5′ end. The droplets are then broken, and cDNA is amplified by PCR, fragmented and sequenced. Read 1 gives barcode + UMI; read 2 gives the transcript. In Flex, formaldehyde crosslinking preserves cells. A left-hand and a right-hand probe (each tens of nucleotides) anneal to adjacent sequences on the target RNA, and an RNA-templated ligation joins them only if both are correctly paired. The ligated probe carries the sequence that the gel bead captures and barcodes. Because the probe, not the mRNA, is what gets copied, RNA degradation and poly-A length matter far less.
Why it matters for our score: we copy responses measured in 3′ chemistry into Flex contexts, and gene-specific capture differences add error to every gene we predict.
Single-cell counts are small, noisy whole numbers. Most values are 0, 1, 2 or 3; in our controls about 71% of non-zero values are ≤ 3. Two layers of randomness pile up. First, sampling: only a fraction of each cell's mRNAs get caught, like drawing marbles from a bag. Second, biology: two identical cells really do hold different amounts, because genes fire in bursts. The Poisson distribution describes the first layer; the negative binomial describes both.
The NB arises as a gamma–Poisson mixture. Each cell's true expression rate λ is drawn from a gamma distribution (the biology), then the observed count is Poisson(s·λ), where s is the capture/depth factor. The gamma shape comes from transcriptional bursting. In the "telegraph" model a promoter toggles ON/OFF, and while ON it fires mRNAs at a high rate. If bursts are short and rare, the steady-state mRNA distribution is approximately NB, with burst frequency setting θ and burst size setting μ/θ. Our emitter literally draws a gamma and then a Poisson to make each synthetic count, so it is simulating this mechanism.
Why it matters for our score: we must emit raw counts, and θ sets how noisy our fake cells are. That noise feeds straight into every Wilcoxon-based member (nmae, fid, reach, jac).
"Differential expression" (DE) asks which genes truly changed between knockdown cells and control cells, and by how much. Two numbers come out per gene: the log fold change (how big and which direction) and a p-value (how surprising the difference would be if nothing had changed). With 18,000 genes, some will look changed by luck, so p-values are corrected to control the false discovery rate.
rank_genes_groups(method='wilcoxon').A subtlety: with 400 cells per group, even small shifts become "significant". Our synthetic cells' noise level (θ) therefore changes how many genes we call significant, which directly moves fid and jac.
U statistic: U = R₁ − n₁(n₁+1)/2, where R₁ is the rank sum of group 1. Under no difference, U has mean n₁n₂/2 and variance n₁n₂(n₁+n₂+1)/12, with a correction for ties, which matters a lot for sparse counts full of zeros. z = (U − mean)/sd gives the p-value.
Benjamini–Hochberg: sort the m p-values p₍₁₎ ≤ … ≤ p₍ₘ₎, find the largest k with p₍ₖ₎ ≤ (k/m)·0.05, and call the first k significant. On average at most 5% of the calls are false.
vcc2026-metrics.md, in github.com/ArcInstitute/cell-eval2 (docs/vcc2026_metrics)Why it matters for our score: four of the six members (nmae, fid, reach, jac) are built on this exact Wilcoxon + BH pipeline run on our synthetic cells.
Pseudobulk means summing (or averaging) all the cells in a group into a single profile, as if they had been measured together in one tube. It throws away cell-to-cell variation but gives a much cleaner estimate of the group's average. Our donor data are stored as pseudobulk responses, one averaged log fold change per target per gene.
Averaging N cells shrinks sampling noise by about √N. For DE across biological replicates (patients, mice), single-cell tests that treat each cell as independent inflate false positives, and pseudobulk methods are safer (Squair et al. 2021). In Perturb-seq the replicate unit is less clear-cut, so many analyses use pseudobulk for effect sizes and cell-level tests for significance. The challenge scorer does both: pds and mse use pseudobulk-style bulk profiles (normalised to 5×104, then log1p), while the DE members test at the cell level.
Pseudobulk is just linear algebra on the count matrix. For group g, sum the rows of X belonging to g (or average after per-cell normalisation). Because the average of NB counts is much closer to Gaussian than a single cell, bulk RNA-seq tools (DESeq2, edgeR, limma) apply. The catch is that the average hides mixtures. If only half the cells truly responded (escaped knockdown, different cell-cycle phase), the pseudobulk shows a half-sized effect.
Why it matters for our score: pds is computed on pseudobulk profiles, so getting the average shift direction right is worth more than getting individual cells right.
Genes don't act alone. Transcription factors (TFs) are proteins that switch other genes on or off, and proteins team up into complexes. Network databases record these relationships: "TF X activates gene Y", "protein A interacts with protein B", "these 10 proteins form a complex". The hope is that if we know who talks to whom, we can guess what happens downstream of a knockdown we've never seen.
corum.zip turned out to be an HTML page, so a high-confidence STRING subset was used instead.A TF has a DNA-binding domain (zinc finger, homeodomain, bHLH, and so on) that recognises a short motif of about 6–12 bp in promoters and enhancers, and an effector domain that recruits co-activators (Mediator, p300/CBP acetyltransferases) or co-repressors (e.g. KRAB→KAP1, the same machinery CRISPRi hijacks). Lambert et al. 2018 catalogued about 1,600 likely human TFs. Complexes matter because a subunit's knockdown often destabilises its partners at the protein level, so the whole complex's function is lost. That's why complex members give similar transcriptional readouts even though their mRNAs are unrelated.
Why it matters for our score: networks are the main way to say anything about the ~28 orphan targets, or to adapt a donor response to a context whose TFs differ.
A cell line is a population of cells grown indefinitely in the lab, usually from a cancer or engineered to be immortal. Each keeps much of its tissue of origin: a leukaemia line still looks like blood, a liver line still makes liver proteins. Which genes are "on" in a line decides what a knockdown can even affect.
| line | what it is | role for us |
|---|---|---|
| K562 | Chronic myeloid leukaemia (blast crisis), BCR-ABL1+, erythroleukaemia-like (makes fetal hemoglobin) | Main donor: carries 272 of our 300 targets (K562_gwps) |
| RPE1 (hTERT RPE-1) | Retinal pigment epithelium, immortalised with telomerase, near-diploid, non-cancerous | Donor; carries 0 challenge targets |
| HepG2 | Liver cancer line with hepatocyte features (albumin, apolipoproteins) | Donor + rig panel; 0 challenge targets |
| Jurkat | T-cell acute lymphoblastic leukaemia (T-ALL) | Donor + rig panel; 0 challenge targets, despite matching context A's lineage |
| KOLF2.1J | Human induced pluripotent stem cell (iPSC) reference line chosen for large collaborative studies (iNDI) | New donor: 273/300 targets, 21 of our 28 orphans. Licence cleared 2026-09-19 |
| H1 | Human embryonic stem cell line (Thomson et al. 1998) | The VCC 2025 challenge line (also 10x Flex) |
Our three contexts, by marker genes: A T-lymphoid (CD3E, CD3D, TRBC1, LCK, plus TAL1, a T-ALL oncogene); B mesenchymal (VIM high, CDH2, COL1A1) but with keratins; C epithelial carcinoma (EPCAM, CDH1, keratins, very high TACSTD2). All three proliferate (MKI67, TOP2A).
Lineage is held in place by master TFs and chromatin. In erythroid K562, GATA1/TAL1 open globin loci. In T cells, TCF7/GATA3/BCL11B drive the T-cell programme. In pluripotent cells, POU5F1 (OCT4)/SOX2/NANOG. Enhancers for other lineages sit in closed, H3K27me3- or H3K9me3-marked chromatin. So a knockdown in K562 can only ripple through genes and enhancers accessible in K562. A T-cell-specific target gene whose enhancer is shut in K562 simply can't respond there. Cancer lines also carry mutations (e.g. TP53 status differs between lines) that rewire stress responses, and TP53 status strongly shapes the response to many essential-gene knockdowns.
Why it matters for our score: none of our contexts is erythroid, yet most of our signal is erythroid. Lineage mismatch is the most likely structural limit on our score.
Knocking down the same gene in two different cell types gives related but different results. Some parts are universal: hitting the ribosome slows every cell. Other parts depend on what the cell was doing, what else is switched on, and which pathways it relies on. Our whole method bets on the universal part, and pays for the rest.
Take a TF knockdown. Its effect on target gene Y requires (1) the TF protein to be present and bound at Y's enhancer, (2) that enhancer to be accessible chromatin in this cell type, and (3) no redundant paralog compensating. Each is cell-type-specific. For a metabolic or housekeeping gene, the downstream response goes through shared stress sensors, for instance the kinases (PERK, GCN2, HRI, PKR) that phosphorylate eIF2α in the integrated stress response, and through p53. These sensors exist almost everywhere, but their thresholds and outputs vary by line and by TP53 status.
Why it matters for our score: this is the core difficulty of the challenge. α < 1 won precisely because shrinking the donor-specific part hedges against transfer error.
A metric is a rule for turning "prediction vs truth" into one number. Different rules reward different things. Cosine asks "same direction?", MSE asks "same values?", and Jaccard asks "same list of genes?". The challenge uses six of these rules together, so a model can't win by being good at just one.
Then each metric is mapped so the context-mean baseline scores 0 and the split-half replicate scores 1.
Cosine ignores overall scale. But our effect is mshift + α·(D − mshift): a fixed shared part plus a scaled donor-specific part. Changing α changes the mix of the two, so it rotates the vector, not just stretches it. That's why α 0.30 lost a lot of pds (−0.114 on that member): with too little donor-specific signal, every target's prediction points roughly the same way and can't be told apart. Conversely, α 1.50→0.90 was mostly an nmae repair (+0.179 on that member), because overshooting magnitudes inflates absolute log fold change errors.
vcc2026 metric spec: github.com/ArcInstitute/cell-eval2Why it matters for our score: almost the whole leaderboard is pds. The top-50 median was 0.673 on pds versus about 0 on mse, fid and jac in the Aug 29–30 scrape, so direction matters more than magnitude.
A "virtual cell" is a computer model that answers "what would this cell look like if I did X?" without doing the experiment. Big AI models trained on millions of cells promise this, but a humbling lesson of recent years is that very simple baselines are hard to beat. Examples are "predict the average response" and "fit a linear model". Arc's challenge exists partly to test honestly whether that is changing.
dm.A transformer turns each gene (or cell) into a vector "token" and uses attention (weighted averaging where the weights are learned similarities) to let tokens update each other. A perturbation is typically encoded as an extra token or embedding, and the model learns a map from (control state, perturbation) → perturbed state. A linear baseline does the same with matrices: predicted effect = W · embedding(target), with W fitted by least squares on known perturbations. Our dm is even simpler. It is a fitted estimator with a few global parameters (α, θ) that averages donor effects and conditions on each context's own controls. Whether that counts as "machine learning" under Arc's rules is the open question drafted in ACTION-FOR-AMIT.
Why it matters for our score: the 0 point of every metric is a simple baseline. Beating it means capturing target-specific signal, which neither size nor architecture guarantees.