Chapter 23 — Reading Tahoe at Author Depth
Second of the four model readings. A warning that shapes everything below: Tahoe-100M is a dataset, not a model. Its authors deliberately train nothing — it is a 100-million-cell drug-perturbation atlas built to be the fuel other people’s models burn. So this chapter’s job is different from Chapter 22’s. Parts 1–2 (problem, representation) are about the data and how a model consumes it; parts 3–4 (architecture, training) walk through the two models actually built on Tahoe — Arc Institute’s STATE and Tahoe’s own Tahoe-x1 — because that is where the modeling choices live; parts 5–8 (downstream, distinctiveness, limits, improvements) judge the whole data-plus-model stack. Throughout, the reason this chapter exists is the gap Chapter 22 left open: scGPT is trained on observational snapshots and therefore cannot learn intervention (22_READING_SCGPT.md §22.7). Tahoe is the field’s most serious attempt to fix that at scale — every cell in it was dosed with a drug on purpose.
One-sentence version: Tahoe-100M is ~95 million single cells in which 47 cancer cell lines were pooled together and exposed to 379 drugs at three doses each, with matched vehicle controls — an atlas engineered so that “(drug, dose, cell line) → transcriptome” becomes learnable, which is exactly the structure toxicogenomics needs and observational atlases lack.
23.1 What problem Tahoe addresses
The gap it targets. A foundation model can only learn what its data contains. scGPT’s corpus is a pile of snapshots — cells sitting in tissues, no intervention applied — so, as Chapter 22 argued, it can learn “gene X and gene Y are on together” but never “if I perturb X, Y falls.” The whole field’s perturbation-prediction failure (18_GENOMIC_FM_LANDSCAPE.md §18.4) traces to this. Tahoe attacks the gap not with a cleverer model but with the missing kind of data: an atlas where the intervention, its dose, and the context are all recorded for every cell.
A few terms first (this chapter leans on them):
- Cell line — an immortalized population of cells derived from one patient’s tumor, grown indefinitely in culture with a stable, known genotype. Think of it as a reproducible cellular “reagent”: every vial of the line HCT116 is genetically the same colon-cancer cells, so an experiment on it is repeatable.
- Dose–response — measuring the effect of a drug at several concentrations, not one. The relationship between “how much drug” and “how much effect” is the core object of pharmacology and toxicology.
- DMSO / vehicle control — the drug is dissolved in a solvent (DMSO). A control well gets the solvent with no drug, so it tells you what “untreated” looks like under identical handling. Every perturbation effect is measured relative to this control.
- MoA (mechanism of action) — the biological process a drug acts through (e.g. “microtubule inhibitor,” “HDAC inhibitor”). The tox analogue is “mechanism / adverse outcome pathway.”
- SMILES — a text string encoding a molecule’s chemical structure (so a drug can be fed to a model as a structure, not just a name).
The data type. Single-cell RNA-seq (as in Chapter 22 — sparse gene-count vectors per cell), but each cell now carries a rich intervention label.
What one training example is. One cell, exactly as before — but its metadata tuple is the point:
| field | example value | meaning |
|---|---|---|
| gene counts | sparse vector over 62,710 genes | the readout (as in Ch. 22) |
drug | Taxol (paclitaxel) | which compound was applied |
canonical_smiles | CC1=C2... | its chemical structure |
drugname_drugconc | 0.5 µM | the dose |
cell_line_id | HCT116 (colon) | the context it was applied to |
moa-fine | microtubule inhibitor | mechanism annotation |
plate / control flag | plate 6, well A3 (vs H11/H12 = DMSO) | batch + reference |
scGPT’s cell had only the gene counts plus a coarse batch tag; Tahoe’s cell has drug, dose, cell line, and mechanism — the four things you need to learn intervention, and precisely what §22.5’s toxicity paragraph said scGPT was missing.
Input → output (of a model trained on it). Given a control cell state plus a perturbation specification (drug + dose, or a cell-line context), predict the perturbed transcriptome — or, in the embedding direction, map a cell to a latent state that “knows” what perturbation produced it. Downstream tasks: predict response to an unseen drug, an unseen cell line, or an unseen dose; cluster drugs by mechanism; discover genotype-specific drug responses.
23.2 How the input is represented
Because Tahoe is a dataset, “representation” has two layers: how the atlas stores a cell, and how a model turns that into input. Both matter, and the second is where the new metadata enters.
The atlas, from raw measurement to stored cell
How the cells were made (and why the numbers are shallow). Tahoe used split-pool combinatorial barcoding (Parse Biosciences Evercode): instead of isolating each cell in a droplet, cells are repeatedly pooled and split across wells, and the combination of well-barcodes a cell picks up over several rounds uniquely tags it. This scales to tens of millions of cells cheaply, but the trade-off is shallow sequencing — a median of ~1,890 transcripts (UMIs) per cell (a UMI, unique molecular identifier, is one captured mRNA molecule), versus tens of thousands in deep plate-based methods. So a Tahoe cell is sparser and noisier than a typical scGPT training cell — a fact that returns in the limitations.
The “cell village” (the clever part). All ~50 cell lines are pooled into the same well and dosed together — a “mosaic” or cell-village design. One drug well therefore perturbs all 47 lines simultaneously under identical conditions. After sequencing, each cell’s cell-line identity is recovered from its natural genotype (each line has distinct SNPs, so a genetic-demultiplexing step assigns each cell back to its line — ⚠️ the exact tool isn’t spelled out in the text I could verify). Why this matters: because every line saw the drug in the same well on the same plate, the usual “different cell line = different batch” confound is largely removed by construction — a genuinely smart piece of experimental design.
Scale, in manuscript-precise numbers (the press releases round these badly — use these):
| quantity | precise value | the rounded press version (avoid) |
|---|---|---|
| cells passing QC | 95.6M (training split = 95,624,334) | “100M” |
| distinct drugs | 379 | ⚠️ “~1,100 / 1,200 drugs” |
| drug–dose treatments | 1,135 | (this is what “1,100” actually counts) |
| doses per drug | 3 — 0.05, 0.5, 5.0 µM (10× spacing) | — |
| exposure time | 24 hours, single time point | — |
| cancer cell lines | 50 cultured, 47 analyzed | 50 |
| line × treatment conditions | 52,886 (median 1,287 cells each) | ⚠️ “60,000 combinations” |
| genes | 62,710 | — |
| vehicle controls | DMSO in wells H11/H12 of every plate | — |
Reconciliation to keep the numbers honest: 379 drugs × 3 doses ≈ 1,135 treatments; 47 lines × 1,135 ≈ 53k, minus failed wells ≈ 52,886 conditions. “1,100 drugs” in the press is really 1,100-ish drug-dose treatments, not distinct compounds.
How a model turns a Tahoe cell into input
A model consuming Tahoe must represent two things: the expression vector (as in Ch. 22) and the perturbation. Take a concrete cell — HCT116, dosed with Taxol at 0.5 µM:
gene counts: { TUBB=14, MKI67=3, BAX=6, ...(sparse over 62,710 genes)... }
perturbation: drug = Taxol (SMILES CC1=C2...), dose = 0.5 µM, cell line = HCT116
The expression side is tokenized just like Chapter 22 (gene tokens + a value representation — binned or, in count-likelihood models, raw counts). The new part is the perturbation, which enters as extra tokens/embeddings:
- a drug embedding — either a learned token per compound, or (better) an embedding of the drug’s SMILES structure, so chemically similar drugs start similar and an unseen drug still has a representation;
- a dose value — a scalar (log concentration) or a small bin, so 0.05 / 0.5 / 5.0 µM are distinguishable;
- a cell-line / context embedding — which genetic background the drug hit.
Contrast with Chapter 22 explicitly: scGPT’s input sum was , where was just batch/modality. A Tahoe-native model extends the conditioning to — the very tokens §22.8 (improvement 2–3) proposed adding to scGPT. Tahoe is what makes training those tokens possible, because now the data actually varies drug and dose.
What biology is preserved or lost.
| preserved / newly captured | lost or weak |
|---|---|
| the intervention (drug identity + structure via SMILES) | time dynamics — one 24 h snapshot only, no kinetics |
| the dose (3-point dose–response) | fine dose resolution — only 3 concentrations, 10× apart |
| matched DMSO controls → a real reference for computing change | depth — ~1,890 median UMIs/cell is sparse and noisy |
| cell-line context with driver-gene annotations | normal tissue / in-vivo context — cancer lines in a dish only |
| massive scale + shared batch structure (cell village) | species — human only; residual demux/doublet risk |
23.3 How the architecture works (the models that consume Tahoe)
Tahoe trains no model, so “architecture” means the models built to learn from it. The most instructive is Arc Institute’s STATE, because it makes an architectural choice that is the perfect foil to scGPT: scGPT runs attention over the genes within one cell; STATE runs attention over a set of cells within one perturbation. I walk STATE, then note Tahoe-x1.
STATE — attention over cells, not genes
STATE has two modules:
- SE (State Embedding). Encodes one cell’s transcriptome into a latent state vector — conceptually the same job as scGPT’s : “summarize this cell.”
- ST (State Transition). The distinctive part. A bidirectional transformer whose tokens are whole cells. It takes a set of control cells’ state vectors plus a perturbation embedding, and predicts the set of perturbed state vectors — i.e. how a whole population shifts when you apply the drug.
Why a set of cells? Because a perturbation’s effect is a distributional change, not a single-cell change: a drug might push 30% of cells into apoptosis and leave the rest, shifting the population’s shape. Attending over a set of cells lets the model represent “what fraction moved where,” which a per-cell model cannot.
Shapes, end to end (toy alongside plausible real):
| stage | what it is | toy shape | real-ish shape |
|---|---|---|---|
| input set | control cells’ state vectors | ||
| perturbation | drug+dose embedding | ||
| ST transformer | self-attention across the cells | ||
| output set | predicted perturbed state vectors | ||
| decode | states → expression (via SE decoder) |
A worked micro-example. Say and we have 3 control cells whose SE state vectors are
and a Taxol-0.5µM perturbation embedding . ST attends over conditioned on and outputs shifted states, e.g.
Read biologically: cell 2 (a high-proliferation state, large values) was pushed down toward the others — Taxol, a microtubule inhibitor, arrests dividing cells — while the already-quiet cells barely moved. The model expressed a population effect (the spread collapsed) that no single-cell prediction could. Decoding each back through SE gives the predicted post-Taxol expression vector per cell.
The attention math is standard (Ch. 22 §22.3), but the axis is different: now means “how much cell ’s predicted response draws on cell ,” so cells in similar states inform each other’s fate. That is a genuinely different inductive bias from gene-level attention.
Tahoe-x1 (Tx1) — a full reading
Tahoe’s own foundation model (Gandhi, Javadi et al., “Tahoe-x1,” bioRxiv 2025.10.23.683759) is the more scGPT-like of the two, and it is the one worth reading in depth because it shows what changes when you take a scGPT-style architecture and (a) scale it to 3B parameters and (b) train it natively on interventional data. Everything below is developer-reported (the preprint was not peer-reviewed or independently replicated as of writing); exact numbers I could not confirm verbatim are flagged ⚠️.
Architecture — an encoder-only masked model, in three sizes. Despite the marketing word “generative,” Tx1 is a BERT-style encoder trained by masked expression prediction (denoising), not an autoregressive decoder and not scGPT’s iterative known/unknown scheme. It ships in three sizes:
| variant | params | layers | hidden | heads | context (genes) | drug token? |
|---|---|---|---|---|---|---|
| Tx1-70M | 70M | 12 | 512 | 8 | 1,024 | no |
| Tx1-1.3B | 1.3B | 24 | 2,048 | 16 | 1,024 | no |
| Tx1-3B | 3B | 32 | 2,560 | 20 | 1,024 → 2,048 | yes |
(FFN expansion ×4, no mixture-of-experts. “Up to 3B” = these three; the middle model is 1.3B, sometimes rounded to “1B” in the blog.)
Tokenization — scGPT’s lineage, with a chemistry add-on.
- Genes: identity tokens over a ~67,000-gene Ensembl vocabulary (larger than Tahoe-100M’s 62,710-gene panel because Tx1 also trains on CELLxGENE and scBaseCount).
- Expression: raw counts discretized into ~48 bins ⚠️ (rank/count binning, same family as scGPT §22.2 — so Tx1 inherits scGPT’s magnitude blindness).
- Per-token input = gene-identity embedding + expression-bin embedding + a mask embedding, summed (the §22.2 pattern).
- Special tokens:
<cls>(cell readout),<pad>, and — only in the 3B model — a<drug>token built from a 2,048-dim Morgan fingerprint (a structural encoding of the molecule) projected through an MLP to width — a warm-start initialization (the token begins from chemistry, not random noise, then is trained further; contrast scGPT’s random-then-learned tables,22_READING_SCGPT.md§22.2). There is no dedicated cell-line/context token ⚠️; context enters through the expression profile itself.
The design choice that defines it: dense attention. scGPT used a custom attention mask (the known/unknown scheme, §22.3). Tx1 throws that away and uses plain dense all-to-all attention, specifically so it can run FlashAttention-2. That single change is the source of its headline “3–30× more compute-efficient” claim — which is an engineering/throughput number (model-flops-utilization, ~10× lower GPU memory), not an accuracy or data-efficiency claim. Read plainly: Tx1’s efficiency win is that it dropped scGPT’s clever-but-slow masking to get a fast standard kernel, then scaled.
Input → output, with shapes.
| what it is | shape (Tx1-3B) | |
|---|---|---|
| input | up to 2,048 highest-expressed gene tokens + bins (+<cls>, +<drug>) | |
| body | 32 dense-attention layers | |
| out: cell embedding | the <cls> vector | |
| out: per-gene embeddings | contextual gene vectors | |
| out: reconstructed bins | masked-value predictions (two heads) | masked positions |
Note what is not a native output: drug-response prediction. Tx1 emits embeddings and reconstructions; to predict a perturbation response you freeze Tx1 as a backbone and train STATE’s ST module on top of its embeddings (§23.3 above). So Tx1 is a representation model; response prediction is a downstream add-on.
Objective. Masked gene-expression denoising at a 50% mask ratio (they swept 15/30/50/75%; 30–50% best), with two MSE decoder heads, equally weighted: a gene-aware head (predict a masked gene from token context) and a cell-aware head (predict it from the <cls> cell embedding — the same GEP-vs-GEPC split as scGPT §22.4). There is no contrastive term and no supervised response loss in pretraining: the perturbation labels enter only through the 3B model’s <drug> token, as enrichment, not as a prediction target. So pretraining teaches “reconstruct expression, aware of which drug was present,” and response is learned later by the ST fine-tune.
Data. Tx1-3B trains on 266.6M cells from three pools: Tahoe-100M (>100M interventional), CZ CELLxGENE (~129M observational primary cells), and Arc scBaseCount (~9M). A two-stage curriculum grows context 1,024 → 2,048 and tightens the cell-quality filter. So — importantly — Tx1 is not a pure perturbation model; it is mostly trained on observational data with a large interventional slice mixed in.
Strengths (developer-reported). On cancer-context benchmarks Tx1-3B reports: DepMap gene essentiality AUROC ≈ 0.95 (broadly-essential genes), ≈ 0.62 context-specific; MSigDB oncogenic programs AUPRC ≈ 0.31 (top of its comparison set); cell-type classification accuracy ≈ 0.93 / macro-F1 ≈ 0.82 despite human-only training; and, with the ST module, drug-response Pearson-of-deltas ≈ 0.74 few-shot / ≈ 0.54 zero-shot, plus best-in-set zero-shot transfer to Parse-PBMC (unseen donors). It is benchmarked above scGPT, Geneformer, UCE, and Arc’s SE-600M embeddings. Honest reading of the bar: on essentiality the comparison is against strong linear baselines, and the margin is modest — the blog says so itself.
Weaknesses and caveats.
- Scope is in-vitro cancer (the paper concedes it): no primary tissue, no in-vivo, no tumor microenvironment (cell lines lack immune/stromal context); transfer to patient tumors is called untested.
- Single modality — expression only; no protein, spatial, or multi-omics.
- Inherits scGPT’s binning → the same magnitude blindness (§22.2), so dose sensitivity is limited at the representation level.
- The drug token is identity, not dose or time — a Morgan fingerprint encodes which molecule, not how much or how long; so even the 3B model has no native dose–response or kinetics axis.
- Drug awareness is 3B-only — the 70M/1.3B checkpoints have no chemical token at all.
- Developer-reported, single-lab, cancer-heavy — no independent replication yet, and the interventional slice is one proprietary dataset.
Which tasks Tx1 is — and isn’t — for.
| well-suited (human cancer-cell context) | not suited (mostly [inference] from its data/design) |
|---|---|
| gene essentiality / dependency inference (DepMap-style) | normal / primary tissue and in-vivo biology (paper concedes) |
| oncogenic gene-program / pathway recovery | tumor microenvironment, immune–stromal interactions |
| cell-type / cell-state classification | non-human species (rat/mouse tox) — human Ensembl vocab, human-only |
| drug-response on unseen cell lines (with ST) | bulk RNA-seq — it is a single-cell model; bulk is OOD |
| general-purpose cell/gene embeddings for transfer | dose–response curves & time-course — no dose/time axis in pretraining |
| direct patient-tumor / clinical prediction — flagged unvalidated |
What would have to change to make Tx1 useful for toxicogenomics. Each maps to a gap above and to the §23.8 program:
- Make the drug token dose- and time-aware. Today it is an identity fingerprint; concatenate a log-dose scalar and an exposure-time token so the model can represent a concentration–time regimen — the core tox readout (§23.8-1, §23.8-3).
- Cross-species vocabulary. Swap the human-ID gene table for protein-sequence embeddings (ESM-2/UCE-style) so rat orthologs align and the model can bridge species (§23.8-2;
22§22.8-4). - A bulk-input path. Add a pseudobulk/aggregation adapter so bulk toxicogenomics profiles (DrugMatrix/TG-GATEs) are in-distribution rather than OOD.
- A fold-change-vs-control head. Use matched controls to output signed change vs vehicle, aligning the output type with tox rather than absolute state (§23.8-5;
22§22.8-3). - Give the value channel magnitude back — the inherited binning caps dose sensitivity; add a within-bin residual or a count likelihood (
22§22.8-1). - Independent, shortcut-proof evaluation on held-out drugs/lines with the linear baseline reported (§23.8-4), since all current numbers are developer-run.
The through-line: Tx1 is an impressively engineered and scaled scGPT-descendant that finally trains on interventional data — but it is a human cancer-cell-line expression model, and every axis toxicology needs (dose, time, species, tissue, bulk, fold-change) is either absent or inherited-broken. That gap list is the research opportunity.
⚠️ STATE and Tahoe-x1 are recent and evolving; the size table, ~48-bin count, and all metrics are from the preprint/model card and should be re-verified before citing.
23.4 How the models are trained
Two training layers: pretraining, then the objective Tahoe uniquely enables
Keep two things separate, because the two models split them differently (this is what §23.3’s Tx1 reading showed in detail).
Layer 1 — self-supervised pretraining (build the representation). Both STATE’s SE module and Tahoe-x1 are pretrained the way scGPT is: mask expression values, reconstruct them (§22.4). This is not perturbation-aware — it just learns good cell/gene embeddings from expression. Tx1’s entire pretraining is this masked denoising; its drug token only enriches the embeddings, it is not a prediction target.
Layer 2 — perturbation-response prediction (the objective Tahoe’s data uniquely enables). Given a control cell state + a perturbation, predict the perturbed state. This is where interventional data actually pays off, and the two models reach it differently. STATE’s ST module is trained on it directly — a set-level (population) model whose loss compares the predicted perturbed population to the measured one with a distributional loss (an optimal-transport / maximum-mean-discrepancy–style match between two cell sets, not a per-cell MSE — because there is no pairing between a specific control cell and a specific treated cell, only two populations). Tahoe-x1 reaches the same objective indirectly: freeze the pretrained backbone and train an ST head on top of its embeddings (§23.3). Either way, Layer 2 is the part that needs Tahoe — Layer 1 could be trained on any expression atlas.
What the objective is meant to teach. Because the data varies drug, dose, and cell line against a fixed DMSO reference, the objective can — for the first time at this scale — reward learning causal, dose-dependent response: “this compound, at this concentration, in this genetic background, moves these genes this much.” That is the content observational atlases cannot supply.
Shortcuts and weaknesses in the objective
As in Chapter 22, name the ways a model can score well without learning the intended biology, each with a fix.
Shortcut 1 — predict “no change” (copy the control). Most genes don’t move under most drugs, so a model that predicts the control state unchanged already scores well on average — the perturbation analogue of scGPT’s “predict the mean.” This is exactly why the field’s negative results use a “no-change” baseline, and why it is so hard to beat (§23.5). Fix: score on the differentially expressed genes only, or on discrimination (can you tell this perturbation’s effect from another’s?), so “predict no change” is penalized where it matters.
Shortcut 2 — memorize the cell line, ignore the drug. With 47 lines and strong line-specific expression, a model can get low loss by identifying the line and predicting its typical state, barely using the drug/dose. Fix: evaluate on held-out cell lines and held-out drugs separately, and include the drug via SMILES structure (not a bare ID) so the signal has to come from chemistry, not line lookup.
Shortcut 3 — three doses is nearly categorical. With only 0.05/0.5/5 µM, a model can treat “dose” as a 3-way switch rather than learning a continuous concentration–response, and still fit the data. Fix: add a monotonicity/dose-ordering constraint (higher dose ⇒ monotonic movement along the response axis) and test dose extrapolation to a held-out concentration.
Shortcut 4 — shallow data rewards the abundant. At ~1,890 UMIs/cell, low-expression genes are mostly noise, so the objective is dominated by a few high-count genes. Fix: count-aware likelihood (negative binomial, as in §22.8) and aggregation across cells within a condition before scoring.
23.5 How it is used for downstream tasks
Same fixed pattern as §22.5: task → concrete input → adapt → concrete output → worked example, with pictures where they help.
Perturbation-response prediction (the headline task)
The task. Predict the transcriptome a cell/population takes on after a drug at a dose.
Input. A set of control (DMSO) cells from a context + a perturbation spec.
control HCT116 cells (DMSO) + perturbation: Palbociclib @ 0.5 µM (CDK4/6 inhibitor)
Adapt. Train STATE’s ST (or fine-tune Tahoe-x1) on Tahoe’s (control → treated) population pairs; evaluate on held-out conditions.
Output. The predicted treated population’s expression (a set of cells, ).
predicted after Palbociclib: CCND1/E2F targets -> down (cell-cycle arrest),
p21(CDKN1A) -> up, housekeeping -> ~unchanged
Reading. Palbociclib blocks the cell cycle, so proliferation genes fall — the model should reproduce that shift and the fraction of cells arrested.
Dose–response prediction
The task. Predict how the effect grows with concentration.
Input. Control cells + drug + a dose (or a request to interpolate/extrapolate a dose).
Output picture — the deliverable is an ordering:
dose: 0.05 µM 0.5 µM 5 µM
effect: small shift > bigger shift > large shift (monotone along the response axis)
Success = predicted effect monotonically increasing with dose, and correct extrapolation to a held-out concentration. This is the single most toxicology-relevant capability, because a dose–response is the tox readout.
Unseen-drug / unseen-cell-line transfer
The task. Generalize to a compound or a genetic background not in training.
Input → output. A new drug’s SMILES (never trained on) + control cells → predicted response; or a held-out cell line + a known drug → predicted response.
BEFORE (seen): drug D in line L -> model has examples
TEST (unseen): drug D' (new SMILES) in line L OR drug D in line L' (new genotype)
success: predicted response matches measured, WITHOUT having seen that combination
This is where models earn or lose credibility — memorizing (drug×line) tables is easy; generalizing across the SMILES/genotype axes is the real test (and Tahoe-x1’s claimed strength on unseen lines).
Mechanism-of-action (MoA) clustering & drug classification
The task. Group drugs by how they act, from their induced responses.
Input. For each drug, its response signature (embedding of the treated-vs-control shift).
Output. Clusters/labels: microtubule inhibitors together, HDAC inhibitors together, etc.
response embeddings -> cluster -> { Taxol, Vincristine, ... } = "microtubule inhibitors"
{ Vorinostat, ... } = "HDAC inhibitors"
Use. Predict the mechanism of an uncharacterized compound by which cluster its response lands in — directly analogous to tox “read-across” (infer a chemical’s hazard from structurally/mechanistically similar ones).
Toxicity relevance (why this book cares)
Tahoe is the closest large public single-cell resource to a toxicogenomics design — and the contrast is worth stating precisely. It has the tox data architecture that scGPT lacked: an intervention (chemical, with SMILES), an explicit dose (3-point response), matched vehicle controls, and mechanism labels — i.e. the (chemical, dose → change vs control) structure that DrugMatrix/TG-GATEs are built on. But it is a cancer-cell-line pharmacology screen, not toxicology: cancer lines in a dish (no liver/kidney tissue context, no ADME/metabolism), human only (no rat bridge), single-cell and shallow (classic tox is bulk), and therapeutic screening doses at one 24 h point (not tox concentration–time regimens to cytotoxic endpoints). Net: Tahoe demonstrates the data architecture a single-cell toxicogenomics atlas would need, without being one — which is exactly what makes it the most useful analogue and the sharpest illustration of what tox still has to build.
23.6 What is technically distinctive
Separating real advances from cheaper explanations, in the book’s usual way (18 §18.7):
- It is interventional with dose — the data, not a trick. The genuine contribution is the corpus: chemical identity + concentration + matched control at 100M-cell scale. This is the thing the whole field was missing, and no architecture substitutes for it.
- The cell-village / mosaic design. Pooling all lines per well and demultiplexing by genotype is a real experimental-design advance: it buys massive parallelism and removes most cross-line batch confound for free. This is arguably Tahoe’s most transferable idea.
- SMILES-based drug conditioning. Encoding the perturbagen by structure (not a bare ID) is what makes unseen-drug generalization even possible — a design choice, not just more data.
- STATE’s set-level attention (cells as tokens). A real architectural idea: modeling a perturbation as a population shift rather than a per-cell edit. Whether it is decisively better than strong per-cell baselines is still contested (§23.5) — treat as promising, not proven.
- Scale done cheaply (split-pool + Ultima sequencing). Impressive engineering, but it buys breadth at shallow depth — a trade-off, not a pure win.
Genuine advance vs. “just more/interventional data.” Be honest: most of Tahoe’s value is (1) — the data. STATE/Tahoe-x1’s gains over prior scFMs are substantially because they train on interventional data with dose, which earlier models never had, not because of a new attention formula. That is not a criticism — it is the book’s recurring lesson (18 §18.4) that in this field the data, not the architecture, tends to be the lever. The open question §23.7 presses is whether even this data is enough to beat the trivial baselines.
23.7 Limitations and research gaps
Representation. Shallow depth (~1,890 median UMIs) means low-expression genes are largely noise, capping how fine a response the data can teach; only 3 doses and one time point make dose–response nearly categorical and dynamics invisible. The 62,710-gene space is whole-transcriptome but sparse per cell.
Architecture. Set-level attention (STATE) and 3B-scale gene models (Tahoe-x1) are reasonable, but there is no evidence yet that the architecture is what matters versus the data; and population-matching losses are harder to evaluate and can hide per-cell errors.
Objective. Perturbation prediction is dominated by the “predict no change” shortcut (§23.4); with strong cell-line identity, “memorize the line” is a second shortcut. Both are exactly what make honest evaluation hard.
Evaluation — the field has not cleared the bar. The Arc Virtual Cell Challenge 2025 — predicting single-cell responses to 300 CRISPRi genetic knockdowns in a held-out stem-cell context — concluded that models are “not yet consistently outperforming naive baselines across all metrics,” with almost all models worse than baseline on MAE (wrap-up). The general backdrop is Ahlmann-Eltze, Huber et al., Nature Methods 2025 (doi:10.1038/s41592-025-02772-6): across scGPT/scFoundation/scBERT/Geneformer/UCE/GEARS/CPA, none beat a simple linear baseline on perturbation. ⚠️ That paper predates Tahoe and does not use it — cite it as context, not a Tahoe result; Tahoe-specific model numbers (STATE “first to beat linear baselines,” Tahoe-x1 SOTA on unseen lines) are developer-reported and await independent replication.
Mechanism vs statistics. Tahoe enables causal learning in a way observational data cannot, but whether the models trained on it learn dose-dependent mechanism or just richer correlations is unresolved — the baseline results suggest the latter still dominates.
Where it fails out-of-distribution. Unseen chemicals far from the 379 drugs’ chemical space (SMILES helps but only interpolates); doses outside 0.05–5 µM or times other than 24 h (no data to support them); normal tissues / in-vivo context (cancer lines only — no liver/kidney tox biology); species (human only — no rat, so no bridge to regulatory tox); other platforms (shallow split-pool depth is its own distribution). For toxicogenomics specifically, Tahoe is structurally close but biologically off on nearly every one of these axes.
23.8 How it could be improved
The most detailed section. Each proposal: gap → concrete how-to → data → metric + baseline → why it’s a contribution. Because Tahoe is a dataset, several of these are data extensions as much as model changes — which is appropriate, since the data is the lever.
1. Add a time axis (kinetics)
- Gap. One 24 h snapshot — no dynamics, so early/transient responses and adaptation are invisible (§23.7).
- How to. Run the same cell-village + dose design at multiple exposure times (e.g. 2/6/24/48 h); model time as a continuous condition token alongside dose.
- Data & metric. A time-course extension of Tahoe (new data) or existing time-resolved perturbation sets; evaluate trajectory prediction (predict 24 h from 6 h) against a “hold-last-value” baseline.
- Why it’s a contribution. Toxicology is intrinsically concentration×time; adding time turns a pharmacology snapshot into something tox-usable.
2. Bridge to primary tissue and to rat
- Gap. Cancer cell lines, human only — the two axes furthest from toxicogenomics (§23.7).
- How to. Apply the same mosaic-village design to primary human hepatocytes and to rat cells; train with a species-shared gene representation (protein-sequence tokenization, ESM-2/UCE-style, per
22§22.8 improvement 4) so rat and human orthologs align. - Data & metric. Open TG-GATEs (rat + human hepatocytes) as the tox anchor; evaluate rat→human and line→primary response transfer, macro-F1 on up/down/none stratified by ortholog conservation (
20_REASONING_DATASET_IDEA.md§20.6). - Why it’s a contribution. It is the concrete path from “cancer pharmacology atlas” to “toxicogenomics atlas.”
3. A dose-aware, monotonic objective
- Gap. Three doses invite treating dose as a categorical switch (§23.4, Shortcut 3).
- How to. Add a monotonicity constraint (predicted effect ordered by dose) and train to interpolate/extrapolate concentration; represent dose as continuous log-M.
- Data & metric. Tahoe’s 3 doses for training; hold out the middle dose (0.5 µM) and predict it — a clean dose-interpolation test — against a linear-in-log-dose baseline.
- Why it’s a contribution. Dose–response is the tox endpoint; a model that extrapolates dose is directly useful for hazard assessment.
4. Fix the evaluation before the model
- Gap. “Predict no change” and “memorize the line” shortcuts make headline numbers misleading (§23.4, §23.7).
- How to. Standardize on held-out drug and held-out cell line splits, score on DE genes + discrimination (PDS/DES) not raw MAE, and always report the linear/no-change baseline alongside.
- Data & metric. Tahoe conditions, split by drug and by line; the Virtual Cell Challenge metrics as the protocol.
- Why it’s a contribution. Much of the field’s confusion is evaluation, not modeling; a Tahoe-based, shortcut-proof benchmark would be a service in itself (the
20/21“the benchmark is the contribution” move).
5. Predict fold-change vs control, not absolute state
- Gap. Absolute-expression targets bury the perturbation signal in baseline variation; toxicogenomics is natively fold-change vs control (
11§3). - How to. Use Tahoe’s matched DMSO controls to train the model to predict the treated − control shift directly (a signed log-fold-change head), rather than the absolute treated state.
- Data & metric. Tahoe (treated, DMSO) pairs; evaluate signed-direction accuracy on DE genes against a per-line mean-shift baseline.
- Why it’s a contribution. It aligns the model’s output type with the tox readout, and is the single change that would make Tahoe-trained models drop-in comparable to DrugMatrix/TG-GATEs analyses (a fold-change adapter, cousin of
22§22.8 improvement 3).
6. SMILES-grounded chemical generalization
- Gap. 379 drugs is a thin slice of chemical space; bare drug IDs can’t generalize (§23.4, Shortcut 2).
- How to. Condition on a pretrained molecular representation of the SMILES (a chemistry foundation model / GNN embedding), so an unseen compound enters through its structure.
- Data & metric. Train on a subset of the 379 drugs, test on held-out compounds; measure response-prediction and MoA-recovery on unseen chemistry against a nearest-training-drug baseline.
- Why it’s a contribution. It is the prerequisite for using such a model on new chemicals — the whole point of toxicogenomics (350,000 untested chemicals,
02_TOXICOLOGY_CONTEXT.md).
Cost note. Proposals 3–6 are model/objective changes trainable on existing Tahoe at modest scale (single- to few-GPU with LoRA-style adaptation); 1–2 require new data generation (time course; primary/rat villages) — heavier, but they reuse Tahoe’s own proven mosaic design. As always (21 §21.11), each names its metric and baseline before the model is built.
This chapter is exposition, not a result. Tahoe-100M facts are from the preprint (bioRxiv 2025.02.20.639398) and the Hugging Face card tahoebio/Tahoe-100M: 95.6M QC cells, 379 distinct drugs, 1,135 drug-dose treatments, 3 doses (0.05/0.5/5 µM), 24 h, 47 of 50 lines, 52,886 conditions, 62,710 genes, DMSO controls in H11/H12 — I use these manuscript-precise numbers over the rounded “1,100 drugs / 60,000 combinations” press figures, which count treatments, not compounds. The consuming models are Arc’s STATE (SE + ST, set-level attention over cells) and Tahoe’s Tahoe-x1 (≤3B params); their architecture specifics and performance claims are preprint/developer-reported and flagged ⚠️ for re-verification. The skeptical context is the Arc Virtual Cell Challenge 2025 wrap-up and Ahlmann-Eltze et al. (Nature Methods 2025), the latter predating and not using Tahoe. Uncertain items flagged in-text: the ~153M initially-sequenced figure (v1 only), and the exact genetic-demultiplexing tool. Next: Chapter 24, BulkFormer — a foundation model for bulk RNA-seq, the data modality classic toxicogenomics actually uses.