Bridging Genomics Foundation Models and Toxicogenomics
Read this as a book:
mdbook serve --open→ http://localhost:3000. It live-reloads on every edit. See Building the book at the bottom.
A working set of notes on an open problem: the foundation model revolution has not reached toxicogenomics, and the reasons are structural rather than incidental.
Written for ML researchers — especially NLP — with no biology background. Built around the ORNL–NIEHS cross-tissue translation program (ToxCompl+, TransPlatformer, TransTissueFormer, GenTox) and the 2026 single-cell foundation model literature.
The short version
Three facts that together define the opportunity:
-
There is no toxicogenomics foundation model. Every genomics FM is single-cell, absolute-expression, mostly-observational, human, in vitro.
-
Scale has not solved perturbation prediction. The Virtual Cell Challenge 2025 ran 1,200+ teams on 100M+ cells and concluded models are “not yet consistently outperforming naive baselines across all metrics”, with hybrids of deep learning and classical statistics winning. Souza & Mehta (2026) show parameter-free linear methods beating FMs including out-of-distribution.
-
The leading diagnosis points at what toxicogenomics has. Ahlmann-Eltze et al. (2025): FMs underperform because their pretraining data is observational. Toxicogenomics data is small, bulk, rat — and 100% interventional.
The central technical obstacle, stated precisely: scGPT’s value encoder consumes binned absolute counts; toxicogenomics data is log fold-change. That is a type error, not a domain gap. No amount of fine-tuning fixes it. You either convert the data or change the encoder — and choosing which is the research question.
Documents
01_BACKGROUND.md | The biology, from zero, for an ML audience. Central dogma → expression → assays → fold-change → single-cell vs bulk. Start here if you have no biology. |
02_TOXICOLOGY_CONTEXT.md | Why this field exists. 350,000 data-poor chemicals, 8 years each. EPA: all animal testing gone by 2035. What regulators actually want (a dose, not your vector). ETAP. And the uncomfortable question about what cross-tissue translation adds. |
03_TOXICOGENOMICS_RESEARCH.md | The research landscape. The four arms, the datasets, who’s who — and TransTox, the FDA method doing the same task, published a year earlier, cited in one clause. |
04_TOXCOMPL.md | Low-rank matrix factorization from absolute zero (a movie-ratings toy, then genes). ToxCompl vs ToxCompl+. The engine under everything else. |
05_TRANSPLATFORMER.md | Across generations of measuring machines. The Seq2Seq ablation (2 layers fit on a V100S) and the zero-shot result buried in §3.3. |
06_GENTOX.md | Inductive matrix factorization — handling drugs never tested. Induction bases, graph InfoMax on 1M compounds, attention aggregation. |
07_TRANSTISSUEFORMER.md | The architecture in depth. Worked math, why it’s 280–3,676× cheaper than standard attention, and the parameter-budget finding. |
08_AUGMENTATION.md | How the training data is manufactured, walked end-to-end on the paper’s own Figure 4 toy. |
09_WALKTHROUGH.md | The four-paper program as one matrix, four axes. Includes the NLP↔toxicogenomics dictionary. |
10_SOTA_LANDSCAPE.md | The ML field as of July 2026, sourced. Tahoe-100M, STATE, Evo 2 — and the evaluation crisis. |
11_SC_FOUNDATION_MODELS.md | scGPT, Geneformer, UCE, scFoundation, CellFM, Tahoe — with worked toy numbers. Where each breaks on fold-change data. |
12_TRANSLATION_TRANSFER.md | What thirty years of low-resource machine translation offers a problem that has never heard of it. |
13_SYNTHESIS.md | All four papers as one picture, and where the program contradicts itself in useful ways. |
14_RESEARCH_AGENDA.md | Defensible track vs speculative track, confidence-labelled. |
15_FRONTIER.md | The research program. Eight directions with honest failure modes. |
16_MATH_NOTES.md | Every derivation, in LaTeX. |
17_SOURCES.md | Provenance. Verified / from-the-papers / unverified-background. |
code/ | Runnable demos. numpy only, no GPU, no data access needed. |
Suggested order — file number = chapter number = sidebar number:
01_BACKGROUND the biology, from zero
02_TOXICOLOGY_CONTEXT why the field exists — regulators, 2035, ETAP
03_TOXICOGENOMICS_RESEARCH what's being researched — and the competition
↓
04_TOXCOMPL matrix factorization from zero — the engine
05_TRANSPLATFORMER across machines
06_GENTOX inductive MF — new drugs
07_TRANSTISSUEFORMER across organs — the architecture
08_AUGMENTATION how the training data is manufactured
09_WALKTHROUGH one matrix, four axes
↓
10_SOTA_LANDSCAPE the ML field in 2026
11_SC_FOUNDATION_MODELS scGPT, UCE, Tahoe — with toy numbers
12_TRANSLATION_TRANSFER what MT offers this problem
↓
13_SYNTHESIS all four papers connected ← the payoff
14_RESEARCH_AGENDA defensible vs speculative
15_FRONTIER the research program
↓
16_MATH_NOTES every derivation } reference —
17_SOURCES provenance } dip in as needed
code/ runnable demos
What’s actually established here
Things tested rather than asserted (all in code/):
-
The matrix-completion-augmented translation task is exactly affine. Ridge scores / MAE on augmented pairs; the analytic construction with no fitting also scores . Scoring well on augmented data proves you can invert a low-rank linear map — not that you learned biology. (
16_MATH_NOTES.md§2) -
Row-wise PCC is undefined for a mean predictor. Constant rows, no denominator. This makes it the metric that exposes the baseline everyone should be running — and it is the metric GenTox §2.3 argues for from first principles, in a paper the same program wrote. (§3.5)
-
The DrugMatrix pair table decomposes exactly into 24 study panels — residual 0.0, all 24 structural zeros reproduced. Missingness is study-design block structure, which means the data are plausibly Missing Not At Random, contra the stated MAR assumption. (§6)
-
A model can score and be useless. GenTox’s degenerate adversary, verified. (§3.4)
And one claim that testing refuted: the rank of the induced linear map is ~2, not ~301. is an upper bound, not the rank. The corrected version is stronger — the task can be nearly rank-one — but the original form was wrong. Kept visible in 17_SOURCES.md rather than quietly fixed.
The finding that surprised me most
TransTissueFormer’s input bottleneck is a matrix . It holds 96.6% of the model’s parameters — the 32-layer transformer stack is 3.4%. And row of is, by construction, a 512-dimensional embedding of gene : the bottleneck computes , an expression-weighted sum of gene embeddings. It is word2vec-style document embedding.
scGPT’s gene token embeddings are also 512-dimensional.
Same shape. scGPT’s pretrained gene embedding table can be loaded directly as the initialization of — no adaptation layer, no dimension mismatch, no architecture change. And it sidesteps the fold-change/absolute-count type error entirely, because that error lives in scGPT’s value encoder, which this architecture doesn’t have. Gene embeddings never touch expression values.
So: 96.6% of a model currently initialized randomly and trained on 425 examples, versus a public checkpoint trained on 33M cells, with matching dimensions. See 07_TRANSTISSUEFORMER.md §7.7.1.
The finding I didn’t expect to find twice
ToxCompl’s matrix is — a gene embedding table, randomly initialized. Each gene row is fit from ~369 observed treatments.
Fitting a 300-dim vector from 369 observations is a ratio of 1.23. Marginal. At — which the paper tried — it’s 0.74: underdetermined, and the fit is arbitrary in ~131 directions. That explains the paper’s own reported failure (raising made MaxAE worse, 1.71 → 3.99) with a mechanism the paper doesn’t give. Brain genes, at ~65 observations for 300 parameters, are underdetermined by 5×.
A pretrained gene embedding is a prior — and a prior is the only thing that can fix an underdetermined system. That’s a much stronger argument for foundation models than “it might help.” See 04_TOXCOMPL.md §4.10.
The thread that runs through all of it
Three papers. Three different problems. The same object at the core of each — and it’s random:
| paper | the object | |
|---|---|---|
| ToxCompl | is | gene table, random init |
| TransTissueFormer | is | gene table, random init — 96.6% of the model |
| GenTox | col NN is | gene lookup, random init |
And GenTox is the sharpest case, because it says so out loud:
“As we do not perform inductive learning on the genes or tissues, the [gene] NN we use is a simply embedding layer.”
GenTox went inductive on drugs — a function of molecular features, with a GNN pretrained on 1,000,000 compounds as the basis. That is a foundation model, built by this program, in 2024. Their own ablation proved learned representations beat hand-crafted ones.
They just never applied that lesson to the other axis of the same matrix.
The most under-rated open problem
The field is in an acknowledged metric crisis. “The Metric Picks the Winner” (June 2026) shows model rankings inverting end-to-end with metric choice on drug-response prediction.
GenTox proved the underlying pathology in 2024 — Theorem 1: unrelated transcriptomic profiles correlate at asymptotically; their own baseline scored with . It was early, and the field has independently caught up to it. It remains an unpublished draft with two empty sections.
The proposed replacement — enrichment-consistency, scoring predictions by whether they support the same biological conclusions as the truth — is robust to the correlation pathology, is the actual downstream task, and cannot be gamed by a mean predictor (which outputs identical enrichment for every treatment, hence zero discriminative power). See 15_FRONTIER.md F6.
Caveats
- The synthetic data reproduces the real statistics (92% normal, Table 3 pair counts to mean abs error 5.4, all 24 structural zeros) but is linear-Gaussian plus spikes. Real biology is not. It is a testbed for claims about algorithms, not about biology.
- The study-panel decomposition is not unique — 36 equations, 47 candidates. It is a valid decomposition, not the study design.
- Claims from unverified background knowledge are flagged in
17_SOURCES.md. Check before citing. - Everything downstream is conditional on the mean baseline. If it matches the reported numbers on real data, the cross-tissue translation premise needs rethinking rather than extending. That is why it comes first.
Building the book
This folder renders as an mdBook — searchable, themed, navigable, live-reloading.
One-time setup
brew install mdbook # or: cargo install mdbook
cargo install mdbook-katex # STRONGLY recommended — see below
Then in book.toml: uncomment the [preprocessor.katex] block at the bottom and set mathjax-support = false.
Why KaTeX matters here. These docs are heavy on
$$...$$— all of16_MATH_NOTES.mdis derivations, and the papers’ equations appear throughout. MathJax works as a fallback but is slow and flaky. KaTeX is worth the one extra install.
Read it — one command
bash tools/book.sh
That’s it. It regenerates the table of contents, kills any stale server holding the port, builds, serves, and opens your browser at http://localhost:3000. Live-reloads on every edit — leave it running.
Make it one word. Add to ~/.zshrc:
alias book='bash ~/projects/single_cell/toxicogenomics_and_single_cell_fm_learning/tools/book.sh'
Then from anywhere: book.
Other modes:
bash tools/book.sh --build # build to ./book/, don't serve
bash tools/book.sh --port 3001 # different port
Stop it with Ctrl-C, not Ctrl-Z. Ctrl-Z suspends — the process keeps holding port 3000 and the next run fails with “Address already in use”. (
book.shkills stragglers for you, but it’s a habit worth having.)
Why book.sh and not just mdbook serve
It handles the three things that bite:
| PATH | mdbook lives in ~/.local/bin. The script sets PATH internally, so you never need export PATH=... again. |
| stale port | Ctrl-Z leaves a suspended mdbook holding :3000. The script kills it. |
| new chapters | Regenerates SUMMARY.md. mdBook silently skips any file not listed there — no error, the page just doesn’t exist. The script warns loudly instead. |
It also checks that mdbook-katex actually runs before building — otherwise mdBook dies with a cryptic Exec format error and produces nothing.
Adding a new page
- write the
.md - add one line to
ORDERintools/gen_summary.py - run
bash tools/book.sh— it regenerates the TOC
If you skip step 2 the script tells you. That’s the whole safety net: ORDER is the single source of truth for the book’s structure.
Why
ORDERis explicitFile number is reading order now (
01_BACKGROUND→15_SOURCES), so a filename sort would work. ButORDERalso carries the part groupings (“Background”, “The Program — Four Papers”, …) and the display titles, which a sort can’t infer. It doubles as the orphan check.Note the
ml_and_llm_learninggenerator won’t work here — that one globsNN_*/directories; this folder is flat.
Publish (optional)
Same GitHub Actions workflow as ml_and_llm_learning — see that repo’s HOW_TO_BUILD_BOOK.md §4. Point path: ./book, set Pages source to “GitHub Actions”.
Gotchas
- Math not rendering → KaTeX isn’t installed, or
[preprocessor.katex]is still commented out, ormathjax-supportis stilltrue. - A page is missing → it’s not in
SUMMARY.md. Runpython3 tools/gen_summary.pyand read the orphan warning. - The
.pydemos → mdBook copies non-markdown files through tobook/, so links fromcode/README.mdtodemo_*.pyserve the raw source. They don’t render as pages.
Background — everything you need, from zero
Audience: ML researchers — especially NLP — with no biology background. Promise: by the end you can read any paper in this field without getting stuck on vocabulary. Method: build the biology from first principles, anchoring each concept to something an ML reader already knows.
Read this before 10_SOTA_LANDSCAPE.md.
Part 1: What a gene actually is
1.1 The central dogma
- DNA — the stored program. A string over . ~3 billion characters in a human, ~2.7 billion in a rat. Identical in every cell of the organism.
- Gene — a substring of DNA that codes for something. ~20,000 protein-coding genes. (Plus tens of thousands of non-coding ones that do regulatory things. Ignore those for now.)
- RNA — a working copy of one gene. Disposable. Made on demand.
- Protein — the thing that actually does work. Enzymes, structure, signalling.
The thing that confuses everyone at first: if every cell has identical DNA, why is a liver cell different from a brain cell?
Because they transcribe different subsets of it, at different rates. Same program, different runtime behaviour. A liver cell runs the metabolism modules hard and leaves the neurotransmitter modules idle. Brain does the reverse.
NLP framing: DNA is the codebase. Cell type is which functions actually get called, and how often. Gene expression is the profiler output.
1.2 Gene expression
Expression of gene = how much RNA for exists right now. It’s a proxy for “how hard is the cell running module .”
Measure it for all ~20,000 genes at once and you get a transcriptomic profile:
NLP framing: a dense embedding of the cell’s current state. But — and this is the important difference — every dimension is named and interpretable. Dimension 4,412 is Cyp1a1, and biologists have opinions about it. When they say “the model got Atf3 wrong,” they mean coordinate 8,301 specifically.
This is why interpretability pressure in this field is so much higher than in NLP. Nobody asks what dimension 412 of a BERT embedding means. Here it’s the entire point.
1.3 Why “expression” is a slippery word
Three different things get called expression:
| Thing | What it is | Units |
|---|---|---|
| raw counts | number of RNA molecules detected | integer |
| normalized expression | counts adjusted for sequencing depth, gene length | real, ≥ 0 |
| fold change | ratio to a control condition | real, signed, 0 = no change |
These are not interchangeable, and conflating them is the single most common way to misread this literature. See Part 4.
Part 2: How you measure it
2.1 Microarrays (the old way)
A glass chip with millions of short DNA probes stuck to it in known positions. Each probe is complementary to a bit of one gene.
- Extract RNA from tissue, convert to cDNA, tag it with fluorescent dye
- Wash it over the chip
- cDNA sticks (“hybridizes”) to matching probes
- Shine a laser, photograph the chip
- Brightness of spot ∝ abundance of gene
Analog. Continuous fluorescence intensity. Properties that matter:
- saturation — very bright spots max out; you can’t distinguish 100× from 1000×
- background — the chip glows a bit even with nothing bound
- cross-hybridization — similar sequences stick to the wrong probe
- fixed vocabulary — the chip only has probes for genes it was designed with
In DrugMatrix: CodeLink (8,565 probes, discontinued 1st-gen) and Affymetrix GeneChip Rat 230 2.0 (31,042 probes, 2nd-gen, still used).
NLP framing: a closed-vocabulary bag-of-words counter with lossy analog readout and OOV problems. You can only count words that were in the dictionary when the chip was printed.
2.2 RNA-seq (the new way)
Don’t hybridize. Just read the RNA, letter by letter, using a sequencer. Then count how many reads map to each gene.
Digital. Read counts. Properties:
- huge dynamic range (no saturation)
- open vocabulary — you find genes you weren’t looking for
- Poisson-ish counting noise at low abundance
- depth-dependent — sequence deeper, get more counts for everything
2.3 Targeted sequencing: S1500+ / TempO-Seq
Sequencing everything is expensive. So: pick ~2,700 well-chosen landmark genes, measure only those, then predict the rest.
This works because gene expression is massively redundant — genes move in coordinated modules, so a few hundred well-chosen ones carry most of the information.
In DrugMatrix: BioSpyder S1500+ measures the landmarks; a tool called GeniE extrapolates to ~20,000 genes → “BioSpyderWT” (22,794 probes).
⚠️ File this away. A chunk of “measured” BioSpyderWT data is itself a model prediction. Nobody in the four papers dwells on this. When ToxCompl+ imputes DSMatrix, it is partly imputing from imputations. That’s a soft spot, and an open question — quantifying how much error the extrapolation injects is F2 in
15_FRONTIER.md.
NLP framing: landmark genes are like measuring a document’s embedding from 300 anchor words and predicting the rest. Same trick LINCS L1000 uses (978 landmarks) — which is why L1000 and S1500+ are architecturally cousins. Remember that; it matters in
15_FRONTIER.md.
2.4 The comparability problem
| CodeLink | Affymetrix | BioSpyderWT | |
|---|---|---|---|
| technology | microarray | microarray | targeted seq + extrapolation |
| signal | analog fluorescence | analog fluorescence | digital counts |
| dimension | 8,565 | 31,042 | 22,794 |
| dynamic range | limited, saturates | limited, saturates | wide |
You cannot put a fluorescence intensity and a read count on the same axis. They aren’t the same kind of number.
This is what TransPlatformer exists to solve, and it’s why fold-change matters so much.
Part 3: Single-cell vs bulk
3.1 Bulk
Grind up a whole liver. Extract all the RNA. Measure. You get one vector per sample.
But a liver contains hepatocytes, immune cells, endothelial cells, bile duct cells… So your vector is a weighted average over cell types:
where is the proportion of cell type .
The consequence, and it’s ugly: if a drug kills 10% of one cell type, changes and shifts — even if no surviving cell changed its expression at all. You cannot distinguish “cells changed behaviour” from “the population changed composition.”
NLP framing: you’re reading the mean embedding of a document collection. If the topic mixture shifts, the mean moves, and you can’t tell that from every document changing.
3.2 Single-cell (scRNA-seq)
Physically separate the cells first (droplets, wells, barcodes), then sequence each one. Instead of one vector per liver you get 10,000 vectors, one per cell.
The cost is brutal. Each cell contains very little RNA. You capture maybe 10–20% of it. So per cell you detect ~1,000–5,000 genes out of 20,000. The rest are zero — and you cannot tell “not expressed” from “we missed it.”
That’s dropout, and it’s the defining pathology of single-cell data.
NLP framing: every sentence is 70–90% masked, at random, and you don’t get the mask positions. You have millions of sentences but each is mostly holes.
3.3 The trade
| bulk | single-cell | |
|---|---|---|
| samples | few | millions |
| noise per sample | low | brutal |
| resolution | tissue average | per cell |
| composition confound | yes, unfixable | no |
| cost per experiment | low | high |
| in vivo organs | ✅ standard | hard |
Why this matters for you: the entire foundation model literature is single-cell, because that’s where the millions of samples are. the DrugMatrix data is bulk. That is not a small mismatch — it’s one of the two central gaps you’d be bridging. (The other is fold-change vs absolute; Part 4.)
Part 4: Fold change — the concept that decides everything
4.1 The definition
| value | meaning |
|---|---|
| no change | |
| up 10× | |
| down 10× | |
| up 2× |
Log because effects are multiplicative and you want symmetry: doubling is , halving is .
4.2 Why they do it
Reason 1 — it kills the baseline. Raw liver expression is dominated by “this is a liver.” Every profile looks the same. The drug effect is a small perturbation on a huge constant. Dividing by control subtracts the constant and leaves the signal.
Reason 2 — it makes platforms comparable. Fluorescence and read counts are different units. But a ratio is unitless:
are both “how much did this gene move,” and the platform-specific scale factor cancels — to first order. It doesn’t fully cancel, because saturation and background are nonlinear. That residual is exactly what TransPlatformer models.
4.3 The three consequences you must hold onto
(a) 92% of the matrix is ≈ 0. Most drugs don’t touch most genes. From TransTissue Table 1:
| category | range | % |
|---|---|---|
| extremely under | 0.03% | |
| under | 4.09% | |
| normal | 91.94% | |
| over | 3.88% | |
| extremely over | 0.036% |
The ~8% that isn’t zero is the entire biological content. This is class imbalance wearing a regression costume. Keep asking: what does the all-zeros predictor score?
(b) It changes what correlation means. GenTox proves both directions (see 16_MATH_NOTES.md §3):
- On absolute data, two unrelated profiles share the baseline ⟹ . High PCC is meaningless.
- On fold-change, the baseline is gone ⟹ under noise. High PCC is hard-won.
(c) It breaks foundation models. ⭐ This is the single most important fact in this document.
scGPT’s input is binned absolute expression. Its value encoder takes a count, bins it, embeds the bin. DrugMatrix is already-differenced log ratios.
There is no sensible way to feed a fold-change into a value encoder trained on counts. is not a count. It isn’t in any bin. The model has never seen a negative number in that slot.
This is the honest, technical, concrete answer to “why don’t you just fine-tune scGPT?” It’s not a shrug. It’s an architectural incompatibility, and naming it precisely is what turns a weak future-work paragraph into a real argument.
NLP framing: it’s like trying to feed word deltas to a model whose embedding layer expects word IDs. The type signature is wrong.
4.4 Levels of processing (a table you’ll want later)
| Data | Level | What the numbers are |
|---|---|---|
| DrugMatrix | — | fold-change vs control |
| LINCS L1000 Level 3 | normalized | expression, absolute-ish |
| LINCS L1000 Level 5 | z-scores | differential — signed, centred |
| scGPT training data | raw/normalized counts | absolute |
| Tahoe-100M | counts | absolute |
Note L1000 Level 5. Z-scores are signed and centred at zero — structurally like fold-change. That’s not a coincidence, and it’s why L1000 is the natural bridge. See
15_FRONTIER.mdF1.
Part 5: Biological structure you need to know exists
5.1 Pathways
Genes don’t act alone. They form pathways — chains where gene A’s protein activates gene B, which regulates C.
Example: a toxicant damages DNA → p53 (encoded by TP53) activates → p53 turns on ~100 downstream genes → cell either repairs itself or dies.
So a “p53 signature” is a coordinated pattern across ~100 genes. You don’t look at one gene; you look for the fingerprint.
This is why every one of these papers insists genes are “not a sequence.” There’s no linear order — there’s a graph. TransPlatformer §2.2 makes this argument to reject Seq2Seq. They’re right that there’s no order; whether that rules out attention is a separate question (it argues for no positional encoding, i.e. a set transformer — which is close to what they built).
5.2 Enrichment analysis — how biologists check your work
Given a predicted profile:
- Take the top 100 up-regulated genes
- Ask: are they enriched for any known gene set? (Hypergeometric test.)
- If “PPARα activation” comes back at , your prediction is consistent with PPARα activation.
Enrichr is the standard tool. This is how TransTissue §6 validated its predicted kidney profiles — and it’s worth more than any PCC, because a toxicologist looked at the output and said yes, that’s what lead poisoning looks like.
NLP framing: it’s like checking that your generated text has the right topic distribution rather than just low perplexity. A downstream, semantic, human-meaningful check.
5.3 Gene regulatory networks
Build a graph: nodes = genes, edges = co-expression across conditions. Find hubs (master regulators) and modules (functional units).
Crucially: the edges are correlations between rows of — gene across all treatments vs gene across all treatments.
This is why GenTox §2.3’s row-wise argument is load-bearing. A model perfect column-wise and garbage row-wise gives you profiles that score beautifully and are useless for the analysis biologists actually run.
5.4 Toxicology vocabulary
| Term | Meaning |
|---|---|
| MOA (mechanism of action) | how the drug does what it does |
| hepatotoxic / nephrotoxic | liver-damaging / kidney-damaging |
| in vivo | in a live animal |
| in vitro | in a dish |
| hepatocyte | the main liver cell type |
| dose–response | effect vs amount. Often nonlinear, sometimes non-monotonic |
| apical endpoint | the actual outcome (organ damage) vs the molecular signal |
Genes that keep appearing, and why:
| Gene | Role |
|---|---|
| Cyp1a1 & cytochrome P450 family | drug-metabolizing enzymes. Massively induced by many toxicants. Poorly conserved rat↔human — and they’re exactly what toxicology cares about |
| TP53 / p53 | DNA-damage response. Fires under genotoxic stress |
| Atf3 | general stress response |
| Lcn2 | injury/inflammation marker |
| PPARα | nuclear receptor; fibrate drugs activate it → fatty acid metabolism |
TransTissue’s validation used exactly these: gemfibrozil → PPARα ✓, cisplatin → TP53 ✓, lead → p53 + oxidative stress ✓.
5.5 Why cross-tissue translation is a coherent idea
Dose a rat. The compound enters the bloodstream and reaches every organ. Liver, kidney, heart, brain all see it. Each responds — differently, but to the same systemic event.
So there’s genuinely shared structure:
If you can measure liver (easy, always done) and infer kidney (harder), you save an animal and a lot of money.
⚠️ And here’s the catch that the whole research agenda turns on. That decomposition has two terms. The common term is the same shape for every drug — only its magnitude changes with severity. A model that learns only the common term looks like it’s translating and has learned nothing drug-specific.
The mean-predictor baseline measures exactly this. That’s why
14_RESEARCH_AGENDA.mdA0.1 is first.
Whether translation is possible is open, and TransTissue says so — §5, verbatim: “it is possible that there are simply no (or sufficient) signals for cross-tissue translation.” That honesty is a feature.
Part 6: Cross-species — orthology
Rat and human genes descend from a common ancestor ~90M years ago. Corresponding genes are orthologs.
- ~80% of rat protein-coding genes have a clean 1:1 human ortholog (approximate — verify before citing)
- The rest: many-to-many (gene families expanded differently), or no ortholog at all
The specific problem for toxicology: cytochrome P450s have expanded and diverged differently in rodents. Rats have P450s humans don’t, with different substrate specificities. So the genes that matter most for drug metabolism are the ones where orthology is worst. That’s not bad luck; it’s because those genes are under strong species-specific selection (different diets, different toxins).
NLP framing: orthology is a bilingual dictionary. ~80% coverage, and the missing 20% is concentrated in exactly the domain-specific terminology you need.
And this is why UCE is interesting. It tokenizes genes via ESM2 protein embeddings — a gene’s token comes from its protein sequence, not a vocabulary lookup. So it embeds any protein-coding gene from any species, zero-shot, no dictionary. That’s byte-level/subword tokenization for an unseen language versus a fixed vocab that OOVs everything.
Related, and directly relevant: people have already done rat→human translation of drug-induced expression with deep nets — PLOS One 2020 used a CNN and a bottleneck DNN to translate rat→human primary hepatocytes, explicitly “circumventing the current reliance on orthologs”, and beat classical ML. A 2023 follow-up added transfer learning for rat in vitro → human in vivo. Neither is cited in the four papers, and both are the cross-species analogue of TransTissueFormer. Worth reading and worth raising.
Part 7: The datasets
| Dataset | Species | Type | Scale | Values |
|---|---|---|---|---|
| DrugMatrix | rat, in vivo | bulk tox | 600+ chemicals, 8 tissues, 3 platforms | FC |
| Open TG-GATEs | rat + human hepatocytes | bulk tox | 170 compounds, liver + kidney | intensity |
| LINCS L1000 | human cell lines | bulk-ish perturbation | ~1.3M sigs, ~20k compounds, ~80 lines | z-scores (L5) |
| Tahoe-100M | human cancer lines | single-cell drug perturbation | 100M cells, ~1,100 drugs × 50 lines | counts |
| CELLxGENE | human + others | single-cell atlas | ~100M cells | counts |
DrugMatrix’s unique selling point: eight tissues, in vivo. TG-GATEs has two. LINCS and Tahoe are cell lines in dishes — no organs, no systemic exposure, no inter-organ communication.
That is the moat. Cross-tissue in vivo translation cannot be studied on LINCS or Tahoe at all. Whatever else is true, the program has data nobody else has for this specific question.
Part 8: ML concepts specific to this field
8.1 “Foundation model” here
Same pitch as BERT: pretrain self-supervised on lots of unlabelled cells, fine-tune on your small labelled task.
The cell-as-sentence metaphor drives all of it:
| Language | Single-cell |
|---|---|
| sentence | cell |
| word | gene |
| word order | nothing — genes are a set |
| word frequency | expression level |
| MLM | masked gene / value prediction |
| vocabulary | ~20,000 genes |
The load-bearing weirdness: there is no word order. A cell is a set of (gene, value) pairs. So every one of these models is a set transformer with no positional encoding, and the real design problem is how to encode the value. That’s the main axis of variation between models — see 10_SOTA_LANDSCAPE.md.
8.2 Batch effects
Same biological sample, two labs, two days, two kits → measurably different numbers. Batch effects are often larger than the biological signal you’re chasing.
Standard fixes: ComBat, Harmony, quantile normalization, scVI.
This matters more than you’d think: several 2026 benchmark papers find that FM embeddings encode batch as strongly as biology, and that plain HVG selection beats them at integration. A model can look great and be reading the sequencer’s serial number.
8.3 Observational vs interventional ⭐
This is the deepest idea in the whole field, and it’s the one to actually internalize.
- Observational data: you watched cells sit there. CELLxGENE, most atlases. Tells you what states exist.
- Interventional data: you did something and measured the response. LINCS, Tahoe, DrugMatrix. Tells you what happens when you push.
Ahlmann-Eltze et al.’s explanation for why foundation models underperform on perturbation:
pretraining data is observational. You cannot learn what happens when you push a system by only watching it sit still.
This is Pearl’s ladder of causation, and it’s the single best argument for why scaling observational cell atlases might not deliver perturbation prediction — and why DrugMatrix, which is 100% interventional, is more valuable per sample than its size suggests.
8.4 Matrix completion / collaborative filtering
Netflix Prize. Assume the matrix is low-rank, factor , fit on observed entries only.
- Transductive: can only fill in cells whose row and column were seen. Vanilla Funk-SVD.
- Inductive: can handle a new row/column by using features. GenTox’s Row NN / Col NN.
MAR vs MNAR:
- Missing At Random — missingness independent of the values. Recovery theory assumes this.
- Missing Not At Random — missingness depends on the values. Everything breaks.
TransTissue §5 explicitly assumes MAR. The panel analysis in
16_MATH_NOTES.md§6 suggests that’s false — Table 3 decomposes exactly into study panels, with structural zeros (BR–LI = 0) that no random model produces. This is an open, testable, previously-unstated concern.
8.5 The metrics
| Metric | What it catches | Blind spot |
|---|---|---|
| MAE | overall error | dominated by the 92% zeros |
| rare MAE | error on the biologically meaningful ~8% | |
| MaxAE | worst single prediction | caught ToxCompl’s sign flips |
| profile shape, per treatment | inflated (Thm 1); mean predictor scores well | |
| gene behaviour across treatments | exposes the mean predictor — undefined for it |
Report all five. Always. GenTox §2 argues this from first principles; nobody, including GenTox, consistently does it.
Part 9: The dictionary
Keep this open.
| Their world | Your world |
|---|---|
| transcriptomic profile | a long, dense, interpretable embedding |
| gene | a named dimension people have opinions about |
| tissue | language |
| liver | English — the over-resourced pivot |
| brain, intestine | low-resource languages you actually want |
| platform | dialect / transcription convention |
| (chemical, dose, duration) | the source sentence’s content |
| shared treatments | parallel corpus size |
| Table 3 | your language-pair coverage table |
| LI–KI = 425 | a low-resource pair |
| BR–LI = 0 | a zero-shot pair |
| HE–TM works on 7 | Spanish→Portuguese: typology beats corpus size |
| matrix completion augmentation | back-translation (they cite Sennrich) |
| impute via a third tissue | pivot / multilingual back-translation |
| multi-task PCC = 0.23 | missing <2es> target token |
| rare signals | the long tail your metric ignores |
| PCC | BLEU — Thm 1 is the proof it’s gameable |
| row vs column PCC | corpus- vs sentence-level metric disagreement |
| GenTox’s GNN on 1M compounds | word2vec for molecules — an FM they already built |
| Mordred / Morgan | hand-crafted features |
| induction basis | embedding an OOV token from its features (FastText subwords) |
| scGPT / CellFM / UCE | mBERT / XLM-R / mT5 |
| UCE’s ESM2 tokenization | byte-level tokenization for unseen languages |
| bottleneck | Linformer/Performer — really Perceiver |
| dropout (single-cell) | 80% of tokens masked, positions unknown |
| batch effect | domain shift you can’t see |
| observational vs interventional | the one with no clean NLP analogy — learn it on its own terms |
Part 10: Where the two worlds don’t meet
The four gaps between the DrugMatrix data and the FM literature. Everything in 15_FRONTIER.md is an attack on one of these.
| Axis | Single-cell FMs | DrugMatrix | Severity |
|---|---|---|---|
| resolution | single cell | bulk tissue | 🔴 hard |
| values | absolute counts, binned | fold-change | 🔴 hard — architectural |
| species | human | rat | 🟡 UCE solves it |
| system | cells in dishes | organs in a live animal | 🔴 DrugMatrix’s moat |
| causality | mostly observational | 100% interventional | 🟢 DrugMatrix is better here |
Read the last two rows again. On the axes that Ahlmann-Eltze identifies as why FMs fail, DrugMatrix has what the FMs lack. It is small, but it is in vivo and it is interventional.
That asymmetry is the thesis. It’s developed in 15_FRONTIER.md.
Next: 10_SOTA_LANDSCAPE.md — what the field actually looks like in 2026, and why the news is stranger than you’d expect.
The Field: What Toxicogenomics Is Actually For
Who pays for this, what they need, and what would count as a contribution.
Everything else in this book is about methods. This chapter is about why anyone cares. Read it before deciding what to work on — because “improve PCC by 5%” is not a contribution to this field, and knowing why is the difference between a paper that lands and one that doesn’t.
All 2025–2026 claims sourced; links inline and in 17_SOURCES.md.
2.1 The problem, in one number
~350,000 chemicals are on the global market. Most are “data-poor” — no clear information on their mechanisms or health effects.
Not “under-studied.” Data-poor. Nobody knows what they do.
And the traditional way to find out:
| traditional toxicity testing + human health assessment | 8+ years per chemical |
| animals per chemical | hundreds to thousands |
| cost | millions |
Do the arithmetic. At 8 years per chemical, 350,000 chemicals is not a backlog — it’s a mathematical impossibility. The field is not slowly catching up. It is permanently, structurally behind, and falling further behind every year as new chemicals enter commerce.
This is the problem toxicogenomics exists to solve. Not “understand biology better” — clear an impossible queue.
2.2 The deadline that changes everything
This is no longer aspirational. There are dates.
EPA
The EPA’s goal: eliminate ALL mammalian animal testing by 2035.
On June 2, 2026, EPA announced two major actions to replace animal-based testing with alternatives for chemical assessments under TSCA (Toxic Substances Control Act) and FIFRA (pesticides). It also introduced a streamlined process to nominate NAMs for use in pesticide and chemical assessments. (source)
FDA
April 2025: a roadmap for a stepwise transition from animal testing to validated New Approach Methodologies — beginning with monoclonal antibodies, expanding to other biologics, then new chemical entities.
March 2026: draft guidance, “General Considerations for the Use of New Approach Methodologies in Drug Development” — a validation framework and regulatory expectations for replacing animal toxicology studies. (FDA)
What “NAMs” means
New Approach Methodologies — FDA’s definition spans complex in vitro, 2D in vitro, in chemico, and in silico studies.
Read that last one again. In silico is a NAM.
A model that predicts a kidney profile from a liver profile is a candidate NAM. That is not a metaphor or a stretch — it is the regulatory category this work falls into, and there is now a formal process to nominate things into it.
The gap this creates
Animal testing is being phased out on a deadline. The replacements must exist. They must be validated. They must be accepted by regulators.
That’s the demand side. This is a field with a legal mandate and a shortage of supply. That is an unusual and favourable place to be doing methods research.
2.3 What regulators actually want (and it isn’t a gene profile)
This is the single most important thing for an ML person to understand, and it’s where most ML papers in this space miss.
A regulator does not want your predicted 8,565-dimensional vector. They want one number:
The Point of Departure (POD)
The dose below which nothing bad happens.
Everything downstream — safety factors, reference doses, exposure limits, whether a chemical can be sold — derives from that number.
Traditionally the POD is an apical POD: dose animals at several levels for months or years, look for actual damage (liver necrosis, tumours, death), find the dose where damage starts. This is what takes 8 years.
NLP framing: you spent a year building a beautiful sequence-to-sequence model, and the customer wants a scalar. Everything you optimize should be judged by whether it improves that scalar’s accuracy or the confidence around it. PCC on the vector is at best a proxy, and
16_MATH_NOTES.md§3 shows it’s a bad proxy.
2.4 The transcriptomic POD — why this field exists at all
Here is the finding the entire enterprise rests on:
Apply benchmark-dose analysis to gene expression from a SHORT-term exposure, and you get a POD that is concordant with the apical POD from a LONG-term study — including chronic toxicity and cancer.
Read that carefully. Days of exposure predict years of outcome.
| tPOD vs apical POD agreement | often within 3-fold (Frontiers 2024) |
| exposure needed | days, not years |
| what it protects against | “thought to be highly protective of all potential adverse toxicological effects” |
Why it works, mechanistically: damage doesn’t appear from nowhere. Before a tumour, before necrosis, the cell’s transcriptional program shifts — stress response, repair, proliferation. The transcriptome is the early warning. Gene expression moves first; pathology follows.
NLP framing: it’s a leading indicator. You don’t wait for the user to churn; you read the signal that precedes churn.
This is the whole bet of toxicogenomics, and it has held up well enough that regulators are building products on it.
2.5 ETAP — the actual regulatory product
Not a proposal. A thing EPA is building.
EPA Transcriptomic Assessment Product (ETAP): a human health assessment for chemicals lacking traditional toxicity data, using a standardized short-term in vivo study + standardized transcriptomic analysis to derive a reference value. (EPA)
| traditional | ETAP | |
|---|---|---|
| time | 8+ years | months |
| chemicals it targets | well-studied | data-poor |
Reviewed by EPA’s Board of Scientific Counselors in July 2023. Real assessments exist — e.g. for Perfluoro-3-Methoxypropanoic Acid.
This is the destination. A standardized short in-vivo study → transcriptomics → a number a regulator can act on, in months rather than a decade.
Everything in this book is upstream of that pipe.
2.6 Where DrugMatrix fits — and who is actually behind these papers
This is worth knowing because it explains the program’s real objective.
Scott S. Auerbach, Ph.D., DABT leads the Toxicoinformatics Group in the Predictive Toxicology Branch, Division of Translational Toxicology (DTT), NIEHS. He:
- oversees the NTP DrugMatrix resource — the dataset all four papers are built on
- built BMDExpress 2 and 3, the standard tools for genomic dose-response analysis
- co-authored S1500+, the landmark gene set (
01_BACKGROUND.md§2.3) - is corresponding author on both TransPlatformer and TransTissueFormer
So this is not an academic ML program that happens to use tox data.
It is a regulatory toxicology program that is using ML. The people who own DrugMatrix, who built the dose-response tooling, and who are driving transcriptomic PODs toward regulatory acceptance are the authors.
That should change what you consider a contribution. A method that improves MAE but produces profiles a toxicologist can’t act on is worth less than an honest negative result that de-risks a regulatory submission.
2.7 The keystone result — and the uncomfortable question it raises ⭐⭐
Johnson, Auerbach & Costa (2020), Toxicological Sciences 176(1):86 — “A Rat Liver Transcriptomic Point of Departure Predicts a Prospective Liver or Non-liver Apical Point of Departure”
The setup: 79 molecules from Open TG-GATEs. Derive a liver transcriptomic POD from short-term exposure. Compare it to the systemic apical POD.
The finding:
A liver tPOD predicted the systemic apical POD within 10× — even when that apical POD came from a non-liver endpoint.
Following subacute (29-day) dosing, liver BEPOD and systemic apical POD agreed within 10×.
Note the author list. Scott Auerbach — corresponding author on TransTissueFormer.
The uncomfortable question ⭐
If the liver transcriptome already predicts non-liver toxicity within 10×, what does cross-tissue translation add?
This is the question a reviewer will ask, and it deserves a real answer rather than a dodge. As far as I can tell there are two, and they’re different in kind:
Answer 1 — different products. The tPOD is a dose: “below 5 mg/kg, nothing bad happens anywhere.” Protective, conservative, and deliberately silent on mechanism. Cross-tissue translation produces a profile: “at 50 mg/kg the kidney shows p53 activation and oxidative stress.” You cannot get the second from the first. POD answers how much; the profile answers what and where.
Answer 2 — the 10× is doing a lot of work. Ten-fold is a wide band. For a protective screening threshold that’s fine — err low, nobody gets hurt. For deciding which organ to look at or what the mechanism is, it’s useless.
And the honest caveat: if what you need is a protective threshold, the 2020 result already delivers it, cheaply, from liver alone — and cross-tissue translation is solving a problem that is already solved. The contribution has to be on the mechanism side, or it isn’t a contribution.
This is the framing question for the whole program, and I’d want it answered before committing a year. It’s also exactly the kind of thing the corresponding author can answer in five minutes, since he wrote the 2020 paper.
2.8 The fifth paper you should know about
There is a ToxCompl successor that isn’t in your four PDFs:
Nguyen & Cong (2025), BioKDD’25 — “Completion of the DrugMatrix Toxicogenomics Database using 3-Dimensional Tensors” — ToxiTenCompl.
The idea, and it’s a good one: DrugMatrix isn’t naturally a matrix. “each probe measurement is made with a compound, a dose, a duration, for a gene within a tissue” — that’s a 3D or 4D tensor. The 2D view is a flattening that throws away structure.
ToxCompl (2D): rows = (platform, tissue, gene) x cols = treatments
ToxiTenCompl (3D): tissue x treatment x gene
| method | gradient descent, not alternating minimization (their ToxiTenCompl) |
| beats | CP decomposition and 2D matrix factorization, on MSE and MAE |
| loss | weighted MSE — higher weights on over/under-expressed genes |
| bonus | non-negative version yields interpretable tissue factors |
| stated aim | “drugs that may cross species barriers, for example, from rats to humans” |
⭐ Why this matters for everything in Chapters 2–5
The tensor formulation partly fixes a problem I spent three chapters complaining about.
In ToxCompl’s 2D layout, Cyp1a1-in-liver and Cyp1a1-in-kidney are different rows with independent parameters. The model has no idea they’re the same gene.
In the 3D tensor, gene is its own mode. The gene factor is shared across tissues by construction. That’s structurally the right move, and it’s the same instinct as “make the gene side inductive” (06_GENTOX.md §6.7) — arrived at from a different direction.
It also changes my obs/param analysis (04_TOXCOMPL.md §4.6). CP rank- on a tensor has parameters, not where . The tensor is far more parameter-efficient — which is likely why it wins, and it’s a better explanation than the paper gives.
Read this paper. It is the current state of the program’s completion work, and it partly pre-empts the criticism in Chapter 4.
2.9 What the field actually struggles with
The honest list, from the literature. These are the open problems — pick from here, not from the ML leaderboard.
| problem | status |
|---|---|
| regulatory acceptance of omics | “implementation of omics-based approaches in AOPs and their acceptance by the risk assessment community is still a challenge” |
| AOPs aren’t actually used | “regulatory agencies show limited formal adoption of AOPs despite their potential”; a “disconnect between AOP research and regulatory implementation” |
| cross-species applicability | explicitly named as a key gap |
| quantitative data insufficiency | named as a key gap |
| mixture toxicity | named as a key gap |
| workflow standardization for tPODs | active; “rigorous and reproducible wet and dry laboratory methodologies are required” |
| read-across is the current crutch | EPA, Health Canada, and EU rely on it for data-poor chemicals — it’s chemical-similarity guessing |
Two terms you’ll hit constantly
AOP (Adverse Outcome Pathway) — a structured causal chain: molecular initiating event → key events → adverse outcome. E.g. “binds receptor → activates transcription → cell proliferation → tumour.” It’s how toxicologists formalize mechanism. Regulators like the idea and barely use it. That gap is a research opportunity.
Read-across — “this new chemical looks like that known chemical, so assume similar toxicity.” It’s the default for data-poor chemicals because there’s nothing better. It’s structure-based guessing with expert judgment on top.
⭐ Notice that GenTox’s compound GNN is a learned read-across. Pretrain on 1M molecules, embed, predict response. That is exactly the read-across problem, done with representation learning instead of expert judgment — and their own ablation shows learned beats hand-crafted (
06_GENTOX.md§6.3).That framing would land much better with a tox audience than “inductive matrix factorization” does. Same method, different sentence, completely different reception.
2.10 What counts as a contribution — and to whom
You are choosing between three audiences. They want different things, publish in different places, and reward different work.
Audience A — the ML community (NeurIPS, ICML, ICLR, KDD)
| wants | novelty, benchmarks, SOTA |
| where the program already goes | BioKDD (the tensor paper) |
| your leverage | the NMT connection (12_TRANSLATION_TRANSFER.md) is genuinely novel to them |
| the risk | they don’t have the data and don’t care about rats. A tox-specific result is a poster, not an oral |
Audience B — the toxicology community (Toxicological Sciences, Arch Toxicol, SOT)
| wants | does it predict the apical endpoint? is it protective? can a regulator use it? |
| does not care about | your PCC, your architecture, your parameter count |
| does care about | the gemfibrozil→PPARα validation, the F1 0.636→0.718 downstream result |
| your leverage | almost nobody there can build these models |
| the risk | you must speak POD, BMD, AOP, concordance — not attention and embeddings |
Audience C — the regulatory/NAM community (EPA ORD, NIEHS DTT, ICCVAM)
| wants | validated, documented, reproducible, defensible |
| does not care about | novelty at all |
| the currency | a method that survives a Board of Scientific Counselors review |
| your leverage | there is a formal nomination process and a 2035 deadline |
| the risk | glacial; validation is measured in years |
The strategic read
The program’s authors sit in B and C. DrugMatrix’s owner is the corresponding author. The destination is ETAP-shaped.
You arrive with A’s toolkit. That’s the arbitrage — and it cuts both ways. Your NMT knowledge is genuinely rare here. But if you optimize for A’s metrics you’ll produce something B and C cannot use, and the people who’d have to champion it are the ones you’d be failing.
2.11 The contributions that would actually matter
Re-derived from the field’s priorities rather than the ML leaderboard. Ordered by how much a toxicologist would care.
1. Enrichment-consistency as the metric ⭐⭐ — the best fit between your skills and their needs
15_FRONTIER.md F6 argued for this on ML grounds. The field argument is stronger.
Toxicologists do not evaluate profiles by correlation. They run the profile through enrichment analysis, get a mechanism, and act on the mechanism. That is the actual downstream task. TransTissueFormer did it by hand for 3 of 44 compounds and never automated it.
“Our model recovers the correct mechanism of action for 31 of 44 compounds” is a sentence a regulator can act on. “PCC 0.793” is a sentence a regulator will ignore.
And it’s the field’s own live problem: “The Metric Picks the Winner” (June 2026) shows rankings invert with metric choice, and GenTox proved the pathology in 2024. You’d be closing a loop the program itself opened.
2. Predict the tPOD, not the profile ⭐⭐ — the reframing
Everything in this book optimizes the wrong target.
The regulatory product is a dose. So evaluate cross-tissue translation on the question that matters:
Does a predicted kidney profile yield the same kidney tPOD as the measured one?
That’s a single number, comparable to apical data, directly ETAP-shaped, and BMDExpress already computes it — built by the corresponding author.
If predicted profiles give tPODs within 2–3× of measured ones, that is a NAM candidate, and there is a formal nomination process. If they don’t, the model isn’t fit for the purpose it exists for, and that’s worth knowing in a week rather than a year.
Nobody has done this. It’s the natural bridge between the ML and the regulation, it uses existing tooling, and it’s the experiment I’d want run before any of 15_FRONTIER.md.
3. Frame the compound GNN as learned read-across 🟢 — free
Same method, a sentence a tox audience recognizes. Read-across is the current regulatory crutch for data-poor chemicals. GenTox already beats hand-crafted descriptors with it. That’s a Tox Sciences paper written in the framing, not the method.
4. Cross-species — the field’s own named gap 🟡
“Limited cross-species applicability” is listed as a key gap. The tensor paper names it as the goal. UCE’s ESM2 tokenization is the principled route (11_SC_FOUNDATION_MODELS.md §6). And PLOS One 2020 already did rat→human hepatocytes with a bottleneck DNN — “circumventing the current reliance on orthologs” — and isn’t cited in any of the four papers.
Rat data is only a proxy for humans. Everything in this program is one translation short of the thing anyone actually wants.
5. Uncertainty 🟡 — what regulators need and models don’t give
A regulator cannot act on a point estimate with no error bar. Every model here outputs bare numbers. A calibrated interval on a predicted tPOD is worth more than a better mean, because it’s the difference between “usable in an assessment” and “interesting.”
This also connects to the MaxAE/sign-flip failure (04_TOXCOMPL.md §4.7): a model that’s confidently wrong about direction is worse than one that says it doesn’t know.
6. The baselines 🟢 — still first
Unchanged from 14_RESEARCH_AGENDA.md. Everything above is conditional on the mean predictor not matching 0.793. The field’s own flagship competition ran 1,200 teams and found models not consistently beating naive baselines. This isn’t pedantry — it’s the field’s central methodological problem.
2.12 What to read, in order
The field context (none of this is ML — read it anyway)
- ETAP — About — the destination, 3 pages
- Johnson, Auerbach & Costa (2020), Tox Sci 176(1):86 — liver tPOD predicts non-liver apical. The keystone. Read §2.7’s question while you do.
- FDA NAMs page — the regulatory frame, and note in silico is a NAM
- Bioinformatic workflows for deriving tPODs (Tox Sci 2024) — current status, data gaps, research priorities. A ready-made list of open problems.
- An AOP primer — PMC5805086, concise, for toxicologists
The program’s own work you don’t have
- ToxiTenCompl (BioKDD’25) — the tensor successor to ToxCompl. §2.8.
- ToxCompl on bioRxiv — the published version
- BMDExpress 2/3 — the tool that turns your profile into the number regulators want. If you do contribution #2, this is the tool.
2.13 The summary
THE PROBLEM ~350,000 chemicals, most data-poor. Traditional assessment: 8+ years each. That queue can never clear.
THE DEADLINE EPA: eliminate all mammalian animal testing by 2035, with actions announced June 2026 and a formal NAM nomination process. FDA: NAM guidance March 2026. In silico methods are NAMs. A cross-tissue model is a candidate NAM — a regulatory category, not a metaphor.
WHAT REGULATORS WANT Not your vector. One number — the Point of Departure, the dose below which nothing bad happens.
WHY THE FIELD EXISTS Benchmark-dose analysis on short-term gene expression gives a POD concordant (often within 3×) with chronic apical PODs. Days predict years. The transcriptome moves before the pathology.
THE DESTINATION ETAP — short in-vivo study → transcriptomics → a regulatory reference value in months instead of 8 years, for data-poor chemicals. Real, reviewed, deployed.
WHO’S BEHIND THIS Scott Auerbach — leads Toxicoinformatics at NIEHS DTT, oversees DrugMatrix, built BMDExpress, corresponding author on two of your four papers. This is a regulatory toxicology program using ML, not an ML program using tox data.
THE UNCOMFORTABLE QUESTION His own 2020 paper shows a liver tPOD already predicts non-liver apical PODs within 10×. So what does cross-tissue translation add? Best answer: the POD is a dose, the profile is a mechanism — different products. But if a protective threshold is all you need, that’s already solved from liver alone. The contribution has to be on the mechanism side. Ask before committing a year.
THE FIFTH PAPER ToxiTenCompl (BioKDD’25) — 3D tensor completion, beats ToxCompl and CP, non-negative version gives interpretable tissue factors, explicitly aims at rat→human. It partly fixes the shared-gene problem Chapters 2–5 complain about, because gene becomes its own tensor mode.
WHAT WOULD ACTUALLY COUNT
- Enrichment-consistency as the metric — the real downstream task, and the mean predictor can’t game it
- Predict the tPOD, not the profile — the regulatory product is a dose; BMDExpress already computes it; nobody has tried
- Reframe the compound GNN as learned read-across — free, and it’s the field’s current crutch
- Cross-species — the field’s own named gap; rat is only a proxy for human
- Uncertainty — regulators can’t act on a bare point estimate
- The baselines — still first, still gating everything
Regulatory and field claims verified by search July 2026; links inline. The §2.7 question and the §2.8 parameter-efficiency reading are mine. Audience analysis in §2.10 is judgment, not fact — weigh it against what you learn from the people actually in the room.
The Toxicogenomics Research Landscape
What people are actually working on, who they are, and where the four papers sit among them.
Chapter 2 was why the field exists — the regulatory pull. This is what the field does — the research threads, the datasets, the groups, and the competition.
The headline finding, and you need to know it before writing anything: there is a method from a different federal agency, published a year earlier in a Nature-portfolio journal, doing the exact same task as TransTissueFormer. It’s cited — in one clause, generically. See §3.5.
All 2024–2026 claims sourced.
3.1 The map
Toxicogenomics has four research arms. They’re funded separately, publish separately, and mostly don’t talk to each other. Knowing which one you’re in determines who reviews you.
| arm | question | data | where the four papers sit |
|---|---|---|---|
| 1. In vivo transcriptomics | dose an animal, read the transcriptome, infer risk | DrugMatrix, TG-GATEs | ⭐ all four papers are here |
| 2. High-throughput in vitro | screen 10,000 chemicals × 1,000 assays in dishes | ToxCast, Tox21 | the big federal investment |
| 3. Mechanism formalization | write down the causal chain | AOP-Wiki, AOP-DB | the “understanding” arm |
| 4. Chemical structure | predict toxicity from the molecule alone | QSAR, read-across | the oldest arm |
Arm 1 is the smallest and the one with a regulatory product (ETAP, Ch 2 §2.5). It’s also where the data is scarcest — which is why matrix completion, augmentation, and translation are the methods that dominate. The methods in this book are a response to arm 1’s data poverty.
⭐ The interesting structural fact: GenTox is the only one of the four that touches arm 4 (chemical structure, via the compound GNN). That makes it the bridge between the two arms — and, as Ch 2 §2.9 notes, a learned read-across. That framing is worth more than “inductive matrix factorization” to this audience.
3.2 The datasets — the real infrastructure
Toxicogenomics is dataset-driven to an unusual degree. Knowing which is which tells you what a paper can and cannot claim.
| dataset | what | species/system | scale | who |
|---|---|---|---|---|
| DrugMatrix | in vivo, 8 organs, + histopathology, clinical chemistry, hematology | rat, in vivo | 600+ chemicals | NIEHS/NTP |
| Open TG-GATEs | in vivo liver/kidney + human/rat hepatocytes in vitro | rat + human | 170 compounds | Japan |
| LINCS / CMap | drug-response signatures, 978 landmarks | human cell lines | ~1.3M sigs | Broad |
| DRUG-Seq | high-throughput drug-response RNA-seq | cell lines | large | Novartis |
| sci-Plex | single-cell drug perturbation | cell lines | large | academic |
| ToxCast / Tox21 | in vitro assay panels — not transcriptomics | cell-free + cellular | ~10k chemicals | EPA/NIH/FDA |
| NCTR ArrayTrack | FDA’s in-house tox transcriptomics | rat | — | FDA NCTR ⭐ |
Two things to notice:
DrugMatrix is unique in one respect and one only — eight organs, in vivo, same animal. TG-GATEs has two. LINCS/DRUG-Seq/sci-Plex are cells in dishes: no organs, no systemic exposure, no inter-organ communication. That is the moat (15_FRONTIER.md), and it’s real.
ArrayTrack matters because it’s what TransTox trains on — so TransTox and TransTissueFormer solve the same problem on different data, which makes them complementary evidence rather than a head-to-head. That’s a useful thing to be able to say.
3.3 Thread 1 — transcriptomic points of departure
Covered in Ch 2 §2.4–16.5. The dominant thread in arm 1, and the one with a regulatory product.
Active research questions, from Tox Sci 2024, “Bioinformatic workflows for deriving tPODs” — this paper is a ready-made list of open problems:
- which BMD method? distribution-based vs gene-set-based
- how do you filter which genes respond?
- how few animals / how short an exposure can you get away with?
- how reproducible is the whole workflow across labs?
Standard tool: BMDExpress 2/3 — built by Scott Auerbach, who is corresponding author on two of your four papers.
This is the thread your work would feed. Ch 2 §2.11’s contribution #2 — predict the tPOD, not the profile — lives here.
3.4 Thread 2 — organ toxicity prediction (DILI and friends)
DILI — drug-induced liver injury — is the field’s canonical prediction task. It’s the single biggest cause of drug withdrawal, so industry cares enormously.
The pattern is always the same:
transcriptomic profile → classifier → "is this hepatotoxic?"
Representative work:
- Open TG-GATEs + FAERS (FDA Adverse Event Reporting System) + deep nets → predict adverse drug reactions. A nice trick: link molecular profiles to real-world human outcomes.
- Att-RethinkNet — multilabel, memory + attention, correlating hepatic and renal pathology from TG-GATEs
- ToxAssay (Bioinformatics 2025) — R package over TG-GATEs and DrugMatrix
- ML for DILI to assist medicinal chemistry (J Med Chem)
Why this matters to you: TransPlatformer’s best result (F1 0.636 → 0.718,
05_TRANSPLATFORMER.md§5.8) is exactly this task. It’s the one number in the four papers that a tox audience will immediately understand and value — because it’s their benchmark, not an ML one.
3.5 Thread 3 — multi-organ, and the competitor ⭐⭐⭐
This is the most important section in this chapter.
TransTox
Li, Chen & Tong (2024), npj Digital Medicine 7(1):310 — “Bridging organ transcriptomics for advancing multiple organ toxicity assessment with a generative AI approach”. FDA National Center for Toxicological Research.
From the abstract:
“TransTox, an innovative AI model using a Generative Adversarial Network (GAN) method to facilitate bidirectional translation of transcriptomic profiles between the liver and kidney under drug treatment.”
That is TransTissueFormer’s task. Liver ↔ kidney. Drug treatment. Transcriptomic profiles.
| method | GAN, bidirectional |
| data | NCTR ArrayTrack (not DrugMatrix) |
| validation | “validated across independent datasets and laboratories” |
| claim 1 | concordance with real data in characterizing toxicity mechanisms |
| claim 2 | synthetic profiles work as training data, and as “digital twins” for diagnostics |
| venue | npj Digital Medicine — Nature portfolio |
| published | November 2024 |
How TransTissueFormer cites it
Reference [26]. One clause, in the Introduction:
“Beyond predictive performance, generative AI models have been proposed to produce synthetic transcriptomic profiles that preserve biological signals, facilitating downstream applications such as toxicity assessment and biomarker discovery [26].”
That describes it as generic “generative AI.” It does not say: this is a method that already does bidirectional liver–kidney translation. There’s no comparison, no discussion of how the approaches differ, no positioning.
A reviewer will find this. It is the first thing a reviewer will find.
Not because it’s hidden — it’s in npj Digital Medicine, from Weida Tong, who is one of the most visible people in computational toxicology, at the FDA.
And there’s a second tension
TransTissue §5 states:
“The very limited amount of common measurements between tissues and the vast drug space in DrugMatrix prevent the application of generative models for creating new profiles.”
TransTox is a generative model creating new profiles, for liver↔kidney, and it works.
The claim may still be defensible — on DrugMatrix specifically. DrugMatrix has 425 LI–KI pairs; ArrayTrack may have far more, and TG-GATEs-derived liver/kidney data is denser. So “generative models don’t work at our sparsity” could be exactly right.
But it has to be argued, not asserted — especially with [26] sitting in the bibliography.
What this means for you — and it’s not bad news
| ❌ | you cannot claim cross-organ translation is unexplored |
| ✅ | different data — DrugMatrix (8 organs) vs ArrayTrack. TransTox does two organs; DrugMatrix has eight |
| ✅ | different method — GAN vs transformer. A genuine comparison is a contribution in itself |
| ✅ | TransTox is a baseline you can run. It’s published, described, and on the same task |
| ⭐ | TransTox validates the premise. Someone at the FDA independently concluded cross-organ translation is worth doing and got it into a Nature journal. That de-risks the whole programme |
The strongest move: stop treating TransTox as a citation and start treating it as the baseline. “TransTox (GAN, 2 organs, ArrayTrack) vs TransTissueFormer (transformer, 8 organs, DrugMatrix) — here’s what each does better, and here’s the first head-to-head” is a better paper than either alone.
And note TransTox reports mechanism concordance, not PCC. They already evaluate the way Ch 2 §2.11 argues you should. That’s not a coincidence — it’s what an FDA audience demands.
3.6 Thread 4 — the in vitro arm (ToxCast / Tox21 / IVIVE)
Not transcriptomics, but it’s where the federal money is, and you’ll be asked about it.
Tox21 — a collaboration across four US federal agencies (EPA, NIH/NCATS, NIEHS/NTP, FDA). ToxCast is EPA’s in vitro screening programme: a large chemical library × assay panels covering signalling pathways and cellular processes.
The scale is the point: ~10,000 chemicals, run at throughput impossible for animals.
The problem is IVIVE — in vitro to in vivo extrapolation. A dish is not an animal. So:
A concentration that does something in a well → what dose in a human?
Current state: “predictive adult IVIVE models have produced fold differences less than 10 between the modelled human Administered Equivalent Dose and the measured in vivo adjusted points of departure.”
Within 10×. Same ballpark as the liver-tPOD→apical result (Ch 2 §2.7).
⭐ Notice the pattern. Every bridge in this field lands at “within 10×”:
- in vitro → in vivo: ~10×
- liver tPOD → systemic apical POD: ~10×
- tPOD → apical POD: ~3×
10× is what this field accepts as useful for a protective threshold. If your cross-tissue model can’t beat 10× on something that matters, it isn’t competitive with methods that already exist. That’s a much more honest bar than PCC, and it’s the one the field actually uses.
3.7 Thread 5 — AOPs, and why they’re stalled
Adverse Outcome Pathway: molecular initiating event → key events → adverse outcome.
The status is the interesting part:
- “the implementation of omics-based approaches in AOPs and their acceptance by the risk assessment community is still a challenge”
- “regulatory agencies show limited formal adoption of AOPs despite their potential”
- “there is a disconnect between AOP research and regulatory implementation”
Twenty years of effort, universal agreement it’s the right idea, and it’s barely used.
Why? An AOP is hand-curated. Someone reads the literature and writes down a causal chain. It doesn’t scale to 350,000 chemicals.
The gap: AOPs are the field’s lingua franca for mechanism, and there’s no automated way to go from data to AOP. A model that outputs “which key events fired” rather than “here’s a vector” would speak the field’s language. That’s adjacent to Ch 2 §2.11’s enrichment-consistency idea, and possibly the more ambitious version of it.
3.8 What the ML-in-tox literature says about itself
There’s a substantial self-critical literature. Read it before you write anything, because reviewers have.
Archives of Toxicology 2026 — “A review of machine learning in toxicology: current practices and reporting gaps” and companions list six recurring failures:
| # | the failure | does this program have it? |
|---|---|---|
| 1 | choosing the wrong algorithm | — |
| 2 | lack of mechanistic interpretability | partly — TransPlatformer’s attention genes, TransTissue’s enrichment |
| 3 | overfitting | ⚠️ 425 samples, 4.4M params |
| 4 | yes/no prediction instead of continuous modelling | ✅ avoided — these are regression |
| 5 | overwhelming volume of low-quality data | ⚠️ 92% is noise around zero |
| 6 | reproducibility — data and code not shared | ⚠️ no code released for any of the four |
#6 is worth dwelling on. The field is explicitly complaining about unshared code and data. DrugMatrix is public; ToxCompl’s completed matrix is published; ToxiTenCompl is on arXiv. But no model code.
Releasing runnable code would be a contribution the field has explicitly asked for, costs nothing intellectually, and is the kind of thing that gets a method adopted rather than admired.
Also emerging: “Potential Role of Agentic Artificial Intelligence in Toxicologic Pathology” (arXiv 2026) — the LLM-agent wave is arriving. Note it, don’t chase it.
3.9 Who’s who
You will be reviewed by these people. It’s worth knowing the map.
| group | who | what they own |
|---|---|---|
| NIEHS DTT — Predictive Toxicology Branch | Scott Auerbach | DrugMatrix, BMDExpress, S1500+. Corresponding author on 2 of your 4 papers |
| ORNL — Data & AI Section | Guojing Cong, Robert Patton | the ML side of all four papers, + ToxiTenCompl |
| Sciome LLC (RTP) | Shah, Mav, Phadke, Balik-Meisner, Scholl | the data engineering. GeniE, S1500+ processing |
| FDA NCTR | Weida Tong, Ting Li, Xi Chen | TransTox, ArrayTrack. ⭐ the competition |
| EPA ORD / CCTE | — | ETAP, ToxCast, AOP-DB |
| Health Canada | Carole Yauk | tPOD methodology, a central figure |
Read the author lists on your four PDFs again. ORNL + NIEHS + Sciome. That’s a national-lab / regulatory-agency / contractor triangle, not a university group. It tells you the work is aimed at deployment inside a federal assessment pipeline — which is exactly what Ch 2 §2.10 says about audiences B and C.
3.10 Where the field is going in 2026
| trend | status |
|---|---|
| animal testing phase-out | EPA: all mammalian testing gone by 2035. Real deadline, real money |
| NAM validation frameworks | FDA guidance March 2026; EPA nomination process June 2026 |
| tPOD standardization | active; the “bioinformatic workflows” paper is the roadmap |
| multi-organ / digital twins | TransTox framing; also FDA NAMs via digital twins (npj Digital Medicine 2026) |
| omics into AOPs | wanted, stalled, unsolved |
| agentic AI / LLMs | arriving; mostly position papers so far |
| foundation models | ⭐ essentially absent from toxicology |
That last row is the thesis of this whole book. The FM wave has hit single-cell biology hard (
10_SOTA_LANDSCAPE.md) and has not reached toxicogenomics. There is no toxicogenomics foundation model. Given a 2035 deadline and 350,000 data-poor chemicals, that’s a gap with a clock on it.
3.11 What this changes about your plan
Three concrete updates to 13_SYNTHESIS.md–15_FRONTIER.md:
1. TransTox is a baseline, not a citation. ⭐ The most valuable single experiment just became: run TransTox’s approach on DrugMatrix, or TransTissueFormer on ArrayTrack, and compare. GAN vs transformer, 2 organs vs 8, and the first head-to-head on the task. Nobody has done this, and the two agencies clearly aren’t talking.
2. “Within 10×” is the bar, not PCC. IVIVE lands at 10×. Liver-tPOD→apical lands at 10×. tPOD→apical at 3×. That’s the currency. Evaluate cross-tissue translation on whether it beats 10× on a decision someone makes — which routes straight back to Ch 2 §2.11’s predict the tPOD idea.
3. Release the code. The field’s own review literature names unshared code as a top-six failure. None of the four papers ship any. It’s free, and it’s what makes a method get used.
And one thing that got easier: TransTox de-risks the premise. You are no longer arguing that cross-organ translation is worth doing — the FDA published that argument in a Nature journal in 2024. You’re arguing about how, on more organs, with better evaluation. That’s a much easier paper to write.
3.12 Summary
THE FOUR ARMS In vivo transcriptomics (where your papers are, smallest, has the regulatory product) · high-throughput in vitro (ToxCast/Tox21, where the money is) · AOPs (the mechanism language, stalled) · chemical structure (QSAR/read-across, oldest). GenTox’s compound GNN is the only bridge between arms — and it’s a learned read-across.
THE DATASETS DrugMatrix is unique for eight organs, in vivo, same animal. Everything else is two organs, or cells in dishes. That’s the moat.
THE COMPETITOR ⭐ TransTox (Li, Chen & Tong, FDA NCTR, npj Digital Medicine, Nov 2024): a GAN for bidirectional liver↔kidney translation, validated across labs, evaluated on mechanism concordance. TransTissueFormer cites it as generic “generative AI” and never compares. A reviewer will find this immediately. It’s also the best available baseline, and it validates the premise.
THE TENSION TransTissue §5 says sparsity “prevent[s] the application of generative models.” TransTox is a generative model doing exactly this. Possibly true on DrugMatrix specifically — but it must be argued.
THE BAR Everything in this field lands at within 10× — IVIVE, liver-tPOD→apical. tPOD→apical at 3×. That’s the currency, not correlation.
THE SELF-CRITIQUE Six named failures. Three apply here: overfitting (425 samples, 4.4M params), low-quality data (92% noise), and unshared code — which none of the four papers release.
THE GAP WITH A CLOCK ON IT Foundation models are essentially absent from toxicology. EPA wants all mammalian animal testing gone by 2035. 350,000 data-poor chemicals. That is the opening.
TransTox details are from its abstract, author list, and the citation context in TransTissue (1).pdf — I have not read its full body. Do that before building on §3.5. Group/personnel mapping is from public profiles and paper author lists. §3.6’s “everything lands at 10×” observation is mine.
Chapter 4 — ToxCompl and ToxCompl+, and Matrix Factorization From Zero
This is the engine under the whole program. It assumes nothing.
Run code/demo_matrix_factorization.py next to this chapter — it prints every number below.
Read this before Chapters 1–3. ToxCompl is the thing TransTissueFormer’s augmentation runs on. It’s what GenTox generalizes. And it’s where a foundation model plugs in most naturally.
⚠️ Two papers, one lineage. Get the order right.
This confused me at first, so here it is plainly:
what it adds 1. ToxCompl bioRxiv 2024, Auerbach co-author the original: matrix completion, plus hybrid sampling and Bayesian optimization, plus biological validation. Deployed publicly by NIEHS. 2. ToxCompl+ the sequel built on top of ToxCompl. Adds side-information and attention (§4.8–4.9). ToxCompl came first. ToxCompl+ is the follow-up. §4.8–4.9 are the sequel’s additions. §4.12 is what the original does — hybrid sampling, a proper rare-signal metric, a real baseline, and biological validation.
The matrix-factorization core (§4.1–4.6) is shared by both, and it’s the part that lasts. Read §4.12 before repeating any criticism — two critiques in this chapter don’t hold against the original paper.
4.1 The magic trick
Four people, four movies, ratings 1–10:
| Alien | Titanic | RoboCop | Notebook | |
|---|---|---|---|---|
| Alice | 8 | 2 | 9 | 1 |
| Bob | 4 | 1 | 4.5 | 0.5 |
| Carol | 12 | 3 | 13.5 | 1.5 |
| Dave | 2 | 0.5 | 2.25 | 0.25 |
Look at Bob’s row: [4, 1, 4.5, 0.5]. Now Alice’s: [8, 2, 9, 1].
Bob is exactly Alice divided by 2. Every single entry.
Carol is Alice times 1.5. Dave is Alice divided by 4. Exactly, every entry.
So every row is just a multiple of Alice’s row. That is what “rank 1” means. Nothing more.
Write it compactly. Give each person one number, and each movie one number:
Check: Carol’s RoboCop rating is . ✓
Now count the numbers:
| the full table | numbers |
| and together | numbers |
Eight numbers describe sixteen. So you don’t need to see all sixteen to know them.
4.2 So you can fill in holes
Say Bob rated only one movie:
| Alien | Titanic | RoboCop | Notebook | |
|---|---|---|---|---|
| Alice | 8 | 2 | 9 | 1 |
| Bob | 4 | ? | ? | ? |
| Carol | 12 | 3 | 13.5 | 1.5 |
| Dave | 2 | 0.5 | 2.25 | 0.25 |
Bob rated Alien 4. Alice rated Alien 8. So Bob’s scale is .
That fixes his whole row: Alice’s row = [4, 1, 4.5, 0.5].
predicted: [4. 1. 4.5 0.5]
truth: [4. 1. 4.5 0.5]
error: 0.0000000000
One observation. Three holes filled. Exactly right.
That is matrix completion. That’s the whole idea. Everything after this is just making it work when the structure is only approximate, not exact.
4.3 Rank 2, rank
Rank 1 is too rigid. It says everyone has the same taste and differs only in how generous they are. But real people differ in kind, not just in degree.
Fix: give each person two numbers, and each movie two numbers.
| action | romance | action | romance | |||
|---|---|---|---|---|---|---|
| Alice | 9 | 1 | Alien | 9 | 1 | |
| Bob | 2 | 8 | Titanic | 1 | 9 | |
| Carol | 5 | 5 | RoboCop | 8 | 2 | |
| Dave | 8 | 2 | Notebook | 0 | 9 |
- Alice on Alien: — action fan, action movie. High. ✓
- Bob on Alien: — romance fan, action movie. Low. ✓
Rank 1 could not do this. It forced Bob to like whatever Alice liked, only weaker. Rank 2 lets Bob like different things.
The general form
| size | numbers | |
|---|---|---|
| total |
If is small, then is far less than . Fewer unknowns than entries. That gap is what lets you fill holes.
This is the entire mathematical content of ToxCompl.
4.4 Swap the nouns: this is DrugMatrix
Change the words, keep the math:
| Netflix | DrugMatrix |
|---|---|
| person / user | gene (a row) |
| movie / item | treatment (a column) |
| rating 1–10 | fold-change |
| most users haven’t rated most movies | 88% of entries missing |
| taste vector | — gene ’s latent profile |
| genre vector | — treatment ’s latent profile |
Here is ToxCompl’s model, straight from the paper:
Two extra terms:
- is the gene bias — “this gene is generally jumpy.”
- is the treatment bias — “this drug is generally toxic.”
Why believe low rank here?
The paper’s argument, and it’s a good one:
“there are similarities between the drugs, for example, Doxorubicin and Epirubicin, and the genes form co-expression networks”
In plain terms:
- There are 3,000 columns, but only 636 distinct drugs. Many columns repeat.
- Doxorubicin and Epirubicin are nearly the same molecule. So their columns are nearly the same. Redundant.
- Genes move in co-regulated groups. So rows are redundant too.
- The same gene is measured in 8 organs. More redundancy.
Redundant rows and columns are exactly what “low rank” means.
4.5 How you actually fit it
There’s no formula that solves this in one step. The problem is non-convex. So you go downhill:
- Start and at random values.
- Measure the error on the entries you did observe.
- Nudge and in the direction that lowers that error.
- Repeat.
⚠️ The sum runs only over observed entries (). Missing entries add nothing to the loss. They get filled in purely because the low-rank structure forces the whole table to stay consistent. That’s the trick.
Optimizer: Adam, learning rate , weight decay .
4.6 The counting that decides everything
Take a 12×10 table of true rank 2. Change how much of it we observe:
| observed | n_obs | params | obs/param | held-out MAE |
|---|---|---|---|---|
| 25% | 25 | 44 | 0.57 | 1.1062 ← garbage |
| 35% | 45 | 44 | 1.02 | 0.0698 ← barely works |
| 50% | 64 | 44 | 1.45 | 0.0000 ← clean |
| 70% | 89 | 44 | 2.02 | 0.0000 |
| 90% | 106 | 44 | 2.41 | 0.0000 |
That table is the whole lesson. There’s a sharp jump right around obs/param = 1.
Matrix completion isn’t magic. It’s just solving a system of equations. Each observation is an equation. Each entry of and is an unknown.
- Many more equations than unknowns → clean recovery.
- Barely more → fragile.
- Fewer → arbitrary. Garbage.
Now count the real matrix
DSMatrix is 375,000 rows × 3,000 columns = 1.12 billion entries. 12.3% are observed = 138 million.
To fit one gene’s vector , you need at least observations in that row:
| obs/row | params/row | ratio | verdict | |
|---|---|---|---|---|
| 50 | 369 | 50 | 7.38 | fine |
| 100 | 369 | 100 | 3.69 | fine |
| 300 | 369 | 300 | 1.23 | marginal |
| 500 | 369 | 500 | 0.74 | underdetermined |
This explains a failure the paper reports but doesn’t explain
ToxCompl+ Figure 2 shows something odd: going from to made MAE better but MaxAE worse. The paper calls this surprising and moves on.
Here’s why it happens.
At , each gene row has about 369 observations but 500 free parameters. The row is underdetermined. The fit is arbitrary in roughly 131 directions.
And that’s the average row. Brain shows up in only ~65 treatments. So a brain gene has 65 observations for 500 parameters — underdetermined by nearly 8×. Its latent vector is essentially random in most directions.
Even is only marginal (ratio 1.23). ToxCompl is running at the edge of identifiability, and the tissues with the least data fall off that edge.
Remember this. It’s exactly what a foundation model fixes (§4.10).
4.7 Where ToxCompl breaks: the sign flip
ToxCompl+ Figure 2 reports this, moving from DrugMatrix to the bigger DSMatrix:
| MAE | 0.05 → 0.03 — better |
| MaxAE | 1.58 → 3.99 — much worse |
And at the worst single point:
The sign flipped. This isn’t “a little off.” It’s the opposite conclusion.
Why it happens
Low rank assumes everything is a mix of shared patterns. But a rare extreme signal is, by definition, not a shared pattern. It’s the part of the table that isn’t low-rank at all. So the model can’t represent it.
The demo reproduces this. A 200×150 matrix, true rank 4, plus rare spikes on 1% of the entries:
typical |value| in the smooth part : 1.48
spike magnitudes : 6 to 10 ← rare, large, NOT low-rank
held-out MAE on NORMAL entries : 0.178
held-out MAE ON SPIKES : 7.845 ← 44x worse
MaxAE : 10.099
SIGN FLIPS on held-out spikes : 49% ← the ToxCompl failure
49% sign flips on the rare signals. A coin toss. The average looks fine, but the only entries with toxicological meaning are wrecked.
This is why MAE alone can fool you. The average hides the failure.
✅ But credit where it’s due: the ToxCompl authors saw this exact problem and built for it. The published paper (§4.12) doesn’t hide behind MAE. It reports Mean F1 across the five categories precisely to check whether the rare up/down signals survive, and its main contribution — hybrid sampling — exists to preserve them. So “MAE hides the failure” is a fair point about the metric in general, but not a fair criticism of this paper, which measures the right thing and reports it.
4.8 ToxCompl+ fix 1 — side information
The idea: we know things about the rows and columns that the plain model ignores.
| about a row (gene) | about a column (treatment) |
|---|---|
| platform, marker, organ | drug name, dosage, duration |
Two treatments labeled “Doxorubicin at 100mg” and “Doxorubicin at 200mg” should end up with similar latent vectors. But plain ToxCompl doesn’t know they share a drug. To it, they’re just column 47 and column 112.
So embed each feature and add the interactions:
Result (Figure 3): MaxAE 3.99 → 3.27, but MAE 0.03 → 0.05.
That’s a trade, not a clean win. Better on the extremes, worse on the average.
4.9 ToxCompl+ fix 2 — attention (the signature move)
Plain factorization:
Every one of the dimensions counts equally. That’s just what a dot product is — an unweighted sum.
But maybe dimension 7 matters a lot for this gene-treatment pair and not at all for another one. A plain dot product can’t say that.
So ToxCompl+ learns two extra tables, and . Their only job is to decide how much each dimension counts:
Here is the elementwise product — multiply position by position, don’t sum. And is softmax.
Worked out, with
P[i,:] = [ 2.0 -1.0 3.0 0.5]
Q[j,:] = [ 1.0 2.0 -1.0 4.0]
P ∘ Q (values) = [ 2.0 -2.0 -3.0 2.0] ← "what each dim says"
P'[i,:] = [ 0.1 0.2 3.0 0.1]
Q'[j,:] = [ 0.5 0.3 2.5 0.2]
P' ∘ Q' = [0.05 0.06 7.5 0.02]
softmax(P' ∘ Q') = [0.00 0.00 1.00 0.00] ← "how much each dim counts"
PLAIN dot product : sum(P ∘ Q) = -1.000
ATTENTION-weighted : (P ∘ Q) · softmax = -2.994
The plain version gives every dimension weight 1. The attention version gives dimension 3 weight ≈ 1.00 and the rest ≈ 0. So the answer is dominated by dimension 3’s value, which is −3.0.
Why this really is attention
values = P ∘ Q (r of them)
weights = softmax(P' ∘ Q') (sum to 1)
output = Σ values × weights
That’s attention with “positions” and one query. Same three lines as a transformer. The paper is right to call it attention.
Result: MaxAE 3.27 → 0.83, MAE → 0.02. A large win.
The fair objection
Is the win from attention, or just from doubling the parameters ()?
The paper answers this in part. Raising from 300 to 500 also adds parameters, and that made things worse. So extra capacity alone doesn’t explain it. Decent evidence.
Not airtight, though. The clean test is to run with (identity instead of softmax). That would isolate the nonlinearity from the extra capacity. Worth asking whether it was run.
(Note from §4.6: the =500 comparison is confounded anyway — it went underdetermined, which is a different failure from “more capacity didn’t help.” So the ablation is still needed.)
4.10 Where a foundation model plugs in
Look at again.
Same realization as TransTissueFormer’s bottleneck (07_TRANSTISSUEFORMER.md). And right now it is randomly initialized and learned from about 369 observations per row.
From §4.6: at that’s a ratio of 1.23 — marginal. At it’s underdetermined. For brain genes (~65 observations, 300 parameters) it’s hopeless.
A pretrained gene embedding is a prior. And a prior is the only thing that can fix an underdetermined system.
This isn’t a nice-to-have. When you have 65 observations and 300 unknowns, you must bring in outside information, or the answer is arbitrary. scGPT’s gene embeddings are outside information — learned from 33 million cells.
Demonstrated
Set up genes in three co-regulated modules. Starve the factorization of data so the system is genuinely underdetermined, like the real low-data tissues:
matrix 60x50, true rank 4, observed 10%
observations: 286 free parameters: 440 ratio: 0.65 ← UNDERDETERMINED
held-out MAE MaxAE
------------------------------------------------------------
random init (ToxCompl today) 1.9851 13.7905
PRETRAINED init (scGPT-style) 0.6886 5.4533
Better MAE and better MaxAE — and MaxAE is the metric ToxCompl+ was built to fix. The prior does the job the data can’t, because the data isn’t there.
⚠️ The control that actually matters
The real comparison is not “pretrained vs random.” That one is rigged — of course a prior helps when the system is underdetermined.
The real question is: does scGPT beat the co-expression structure you can compute from DrugMatrix itself? DrugMatrix already tells you which genes move together. That’s a free prior, with no foundation model involved.
| init of | tests |
|---|---|
| random | current baseline |
| PCA / co-expression from | ⭐ the control |
| scGPT gene embeddings | the foundation model |
| UCE / ESM2 | species-agnostic — no ortholog mapping needed (rat!) |
| shuffled scGPT | is it the content, or just some structure? |
If scGPT loses to DrugMatrix’s own co-expression, that’s a result too. It’s what Kedzierska et al. (2025) and Souza & Mehta (2026) would predict. It turns “we plan to explore this in future work” into “we tested it, here’s the evidence.”
Either outcome publishes. That’s what makes it the right first experiment.
4.11 ToxCompl vs ToxCompl+ side by side
| ToxCompl | ToxCompl+ | |
|---|---|---|
| model | side info attention | |
| tables learned | , plus feature tables | |
| aggregation | dot product — all dims equal | — learned weights |
| uses drug name / organ? | no | yes |
| MAE on DSMatrix | 0.03 | 0.02 |
| MaxAE on DSMatrix | 3.99 | 0.83 |
| sign flips on rare signals | yes (−0.77 → +0.94) | largely fixed |
| gene embeddings | random init | random init ← still |
The last row is the opening. Both versions learn a 375,000 × 300 gene embedding table from scratch, from about 369 observations per row, in a system that’s marginally determined at best.
4.12 What the published paper actually does
§4.8–4.9 covered ToxCompl+, the sequel. This section is the original ToxCompl it was built on: “Completion of the DrugMatrix Toxicogenomics Database using ToxCompl”, Cong, Patton, … Auerbach. It’s the foundational paper of the whole program, and it’s more careful than the chapter above might suggest. Here’s what it really does, and what it corrects.
The real fix: hybrid sampling, not attention
The published version’s answer to the rare-signal problem (§4.7) is not side-information-plus-attention. It’s hybrid sampling guided by Bayesian optimization:
- The 5 categories are wildly imbalanced. 92% of values sit in category 0 (“no change”).
- Left alone, the model just learns to predict 0 and ignores the rare extremes.
- So they over-sample and under-sample the minority categories, and use Bayesian optimization to find the best mix.
Result (their Figure 2): Mean F1 about 2.6× better than plain matrix completion at recovering the rare up/down signals, while keeping MAE about the same.
That’s the same instinct as “class weights for an imbalanced classifier” (
12_TRANSLATION_TRANSFER.md§12.8), reached from the completion side.
They do report a real metric — and a baseline
| value | |
|---|---|
| Test MAE (regression) | 0.09 |
| Accuracy (5-category) | 90.98% |
| F1 (5-category) | 95.11% |
| Mean F1 (rare-signal focus) | the headline number their whole method optimizes |
And there is a baseline: Nearest-Neighbor-Mean (NNM, ). For each missing entry, average its 10 nearest measured neighbours in the same row. ToxCompl beats it per-organ (their Figure 1).
⚠️ Correction to the rest of this book. Two critiques I make elsewhere are too harsh against this paper:
- “they only use MAE” — false. They report F1 and Mean F1, and Mean F1 is the number the method exists to move.
- “no baselines” — partly false. NNM is a real baseline for the completion task. (It is not the cross-tissue mean-predictor from
14_RESEARCH_AGENDA.md§A0 — that’s a different task — so that critique still stands for TransTissueFormer. But for ToxCompl completion, a baseline exists.)
They did the biological validation — the gold standard
Not just numbers. The published paper checks the completed matrix against biology:
- connectivity analysis — do predicted profiles cluster with measured ones the way real biology does?
- pathway / MOA analysis — do the differentially-expressed gene lists point at the right mechanisms?
- transcriptional biomarkers of tissue toxicity
- predicted apical endpoints — does the filled-in data predict actual organ damage?
This is exactly the enrichment-consistency direction 15_FRONTIER.md F6 argues the field should move toward — and ToxCompl is already doing it. It just hasn’t propagated to TransTissueFormer.
And they name their own weakness — which matters to a regulator
The paper flags a positivity bias: when predicting histopathology, the model over-predicts damage. It cries “toxic” too often.
That’s the honest, important kind of failure. A false alarm (“this safe chemical looks toxic”) wastes a real animal study. And in the phase-out world of
02_TOXICOLOGY_CONTEXT.md, a screening tool that over-flags is a specific, named problem that regulators care about. That’s worth more attention than any MAE number.
It’s a deployed resource, not just a paper
The completed DrugMatrix is released publicly by NIEHS: rstudio.niehs.nih.gov/complete_drugmatrix. Gene expression, clinical chemistry, hematology, and histopathology — filled in and browsable.
This confirms
02_TOXICOLOGY_CONTEXT.md’s central point: this is a regulatory toxicology program that uses ML, not an ML program that happens to use tox data. The output is a government resource, not a leaderboard entry.
They know about the GAN competitors
The paper cites ToxGAN and TransOrGAN — the FDA NCTR generative work behind TransTox (03_TOXICOGENOMICS_RESEARCH.md §3.5). So the ORNL group is aware of the FDA group’s methods. That softens the “they ignore TransTox” worry somewhat — though TransTissueFormer specifically still under-cites it.
What still stands
The durable critiques survive:
- The obs/param counting (§4.6) is still the best explanation for the =500 MaxAE failure, and the paper still doesn’t give it.
- The gene table is random-init (§4.10). A pretrained prior is still the natural fix.
- Row-wise metrics. F1 is a real metric, but it’s still per-entry. The gene-network / row-structure argument (
16_MATH_NOTES.md§3.5) is untouched.
4.13 Summary
Matrix factorization. Every row is a combination of shared patterns. So numbers describe entries. Fewer unknowns than entries means you can fill holes. ToxCompl: , , fit by Adam on observed entries only.
Why it breaks. Rare extreme signals are the part that isn’t low-rank. MAE improves while MaxAE degrades, and signs flip: target −0.77, predicted +0.94. Reproduced: 49% sign flips on held-out rare signals.
A quantitative reason the paper doesn’t give. About 369 observations per gene row. At the ratio is 1.23 (marginal). At it’s 0.74 (underdetermined). That’s why raising made MaxAE worse. Brain genes (~65 obs, 300 params) are hopeless.
ToxCompl+ fix 1 — side information. Use drug name, dose, organ. MaxAE 3.99 → 3.27, MAE 0.03 → 0.05. A trade.
ToxCompl+ fix 2 — attention. . Values from one pair of tables, weights from another. Literally attention with positions and one query. MaxAE 3.27 → 0.83. A large win.
Where the foundation model goes. is a gene embedding table, randomly initialized, fit from ~369 observations per row for 300 parameters. That system is barely determined, and for low-data tissues it’s not determined at all. A pretrained gene embedding is a prior — the only thing that can fix an underdetermined system. Control against DrugMatrix’s own co-expression, or the comparison is rigged.
Every number here comes from code/demo_matrix_factorization.py. The obs/param analysis uses the paper’s stated DSMatrix dimensions (375,000 × 3,000, 12.3% observed) and its stated values. The underdetermination explanation for the =500 failure is my reading, not the paper’s — it follows from the counting, but should be checked against the implementation.
Chapter 5 — TransPlatformer: Translating Between Generations of Machines
Why it’s needed, what it does, and the finding buried in §5.5 that matters more than the headline.
Paper: “TransPlatformer – Translating Toxicogenomic Profiles Between Generations of Platforms” (ORNL / Sciome / NIEHS).
Read 04_TOXCOMPL.md first. This is the sibling of TransTissueFormer — same architecture, different axis.
5.1 Why this exists: a very expensive problem
Over 20 years, three generations of machines measured gene expression:
| platform | technology | signal | dimension |
|---|---|---|---|
| CodeLink | 1st-gen microarray, discontinued | analog fluorescence | 8,565 |
| Affymetrix | 2nd-gen microarray, still used | analog fluorescence | 31,042 |
| BioSpyderWT | targeted sequencing + extrapolation | digital read counts | 22,794 |
Here’s the problem in one sentence:
Decades of toxicology were run on CodeLink and Affymetrix. Modern work is BioSpyderWT. The old data can’t be pooled with the new. So it sits there, paid for, unusable.
Why can’t they be pooled? The two technologies produce different kinds of number:
- A microarray is a glass chip. Probes glow, and you measure brightness. That’s analog. It saturates, and it has background noise.
- A sequencer reads the RNA letter by letter and counts reads. That’s digital, with a huge dynamic range.
You can’t put a brightness and a count on the same axis. They aren’t the same kind of number.
NLP analogy: it’s the same language, transcribed by three different systems with different phoneme inventories and different error profiles. You have a huge corpus in the old transcription, and your model expects the new one. TransPlatformer is a normalizer.
But wait — doesn’t fold-change fix this?
Partly. And that’s the whole point. From 01_BACKGROUND.md §4.2: dividing treated by control makes the numbers unitless, so the platform’s scale factor cancels — to first order.
It doesn’t cancel all the way, because saturation and background are nonlinear. A gene at the top of CodeLink’s range is clipped; the same gene on BioSpyderWT isn’t. Fold-change doesn’t undo clipping.
That leftover part — the bit fold-change can’t remove — is exactly what TransPlatformer models. Everything else was already handled by the ratio.
5.2 What it actually does
Same tissue. Same treatment. Different machine.
⚠️ Notice the dimensions don’t match. . This is not a square problem. TransTissueFormer maps ; TransPlatformer maps . Same architecture, but the output side has to be sized differently — hence 45 decoders () instead of TransTissueFormer’s 17.
The architecture — identical to TransTissueFormer
(B, n) → [n×s bottleneck] → (B, s) → [1×r] → (B, s, r)
→ [L = 32 layers] → [⌈m/s⌉ = 45 decoders] → (B, m, r) → [r×1] → (B, m)
, , , dropout 0.1, Adam , batch 16.
Everything in 07_TRANSTISSUEFORMER.md §7.3–7.6 applies word for word, including:
- The bottleneck is a gene embedding table — row of is a 512-dim vector for gene .
- The bottleneck holds the overwhelming majority of the parameters. It’s worse here: on Affymetrix it’s parameters, against a ~150k transformer stack.
- The transformer never sees a gene.
- The
1×rprojection makes the tokens collinear at layer 0.
5.3 The Seq2Seq ablation — a number worth remembering
They tried a plain Seq2Seq transformer. Treat the profile as a sentence, decode it one token at a time, <EOS> and all.
Here’s the result, on an NVIDIA Tesla V100S 32GB, sequence length 8,565, batch 8:
The number of layers that fit: 2.
Two. Against TransPlatformer’s 32.
And on the 2 layers that fit, TransPlatformer is 2.74× better on overall MAE and 2.27× better on rare-signal MAE. Seq2Seq loses to the MLP too.
This is why “we can’t use standard transformers” isn’t hand-waving. It’s not that they’re slow. At (Affymetrix) a standard transformer doesn’t run at all — see
07_TRANSTISSUEFORMER.md§7.4: about 2 TB of attention scores.
Their three reasons for rejecting Seq2Seq (their §2.2), all sound:
- Memory. attention on 31,042 tokens. Dead.
- Genes aren’t ordered. “the first genes as tokens may not necessarily hint at the th token.” Correct — there’s no order; there’s a graph.
- Profiles are ~90% identical to each other. “two distinct transcriptomic profiles for two different treatments can share more than 90% of their content.” Feed those in as “sentences” and the model drowns.
Point 2 is right that there’s no order, which means no positional encoding — a set transformer. But that doesn’t mean no attention. Their conclusion overshoots their premise a little. Point 1 alone settles it, though.
5.4 Three training strategies — and this is the interesting part
The data is skewed (liver everywhere, brain almost nowhere). So how do you train?
| strategy | what it means | models |
|---|---|---|
| mixed-tissue | one model, all tissues pooled | 1 |
| single-tissue | one model per tissue | 8 (CodeLink) / 4 (Affy) |
| cross-tissue | train on tissue set , test on a disjoint set | 1 |
Sample counts: CodeLink→BioSpyderWT = 2,225 pairs. Affymetrix→BioSpyderWT = 888.
Mixed-tissue — the headline
| TransPlatformer | MLP | ToxCompl | |
|---|---|---|---|
| MAE (CodeLink→BSWT) | 0.043 ±0.0008 | 0.0626 ±0.001 | 0.09 |
| PCC | 0.71 ±0.006 | 0.37 ±0.03 | — |
| MAE (Affy→BSWT) | 0.038 ±0.0007 | 0.0542 ±0.0001 | — |
| PCC | 0.72 ±0.005 | 0.39 ±0.01 | — |
MAE cut by more than half versus ToxCompl (0.043 vs 0.09). PCC doubled versus the MLP (0.71 vs 0.37). Rare-signal MAE under 0.22.
Why compare against ToxCompl at all? Because ToxCompl can also fill in the missing entries — but it’s “agnostic to the relationship between data entries and the platforms.” So the comparison asks one precise question:
“whether additional side information, in this case the correspondence of genes across platforms, can help improve prediction performance.”
It does — by more than half. That’s a clean, well-posed ablation, and it’s the best-designed comparison in the four papers.
The mixed-tissue assumption, stated plainly:
“It assumes that the tissue-identifying signals are latent in the vectors, and with a powerful architecture and plenty of [data]…”
And here’s the thing: that assumption is correct — for this task. Hold that thought; §5.6 is about why.
5.5 Zero-shot transfer, and nobody is talking about it ⭐⭐⭐
This is the most important section in the paper, and it’s not in the abstract.
The problem: brain and intestine have almost no data. Single-tissue models for them fail.
So they tried this:
Train on . Test on or .
“Note that data from the target tissues are completely withheld from training.”
Zero brain data. Zero intestine data. Predict brain and intestine.
The result
| target tissue | improvement over the single-tissue model |
|---|---|
| BR (brain) | 2.42× better MAE |
| IN (intestine) | 2.34× better MAE |
A model that had never seen a brain beat the model trained on brain’s own data — by 2.42×.
What this means
Read it slowly, because it’s counterintuitive:
- The single-tissue brain model had brain data. It was trained on the actual target.
- The cross-tissue model had zero brain data. It saw liver, kidney, heart, muscle.
- The one with no target data won, by a factor of 2.4.
Why? Because brain’s own data is so scarce that training on it is worse than useless — you overfit ~65 samples. But the translation function itself — “how does CodeLink’s brightness map to BioSpyder’s counts?” — is largely tissue-independent. It’s a property of the machines, not the organ. So liver data teaches you the machine, and the machine is the same for brain.
Their own framing:
“Cross-tissue mode assumes that some fundamental relationships among genes are preserved across tissues and can be leveraged for translation.”
“Figure 6 suggests that the translation mechanism learned from one set of tissues may be applied to another set.”
And then they did few-shot
“To further improve the performance of the model, we include a very small fraction of the data (e.g., one data sample) from the target tissue in training.”
One sample. They call it Cross-tissue*.
NLP framing, and it’s exact:
This is massively multilingual NMT’s central finding. A low-resource language does better inside a multilingual model trained mostly on other languages than in its own bilingual model. Its own corpus is too small; the shared structure carries it.
§5.5 is zero-shot cross-lingual transfer, plus one-shot fine-tuning, in a toxicogenomics paper — reported as a paragraph and a bar chart.
5.6 The contradiction — and why it isn’t one ⭐⭐
Put two facts from the same program side by side:
| TransPlatformer §3.3 | trains on {LI,KI,HE,SM}, tests on brain with zero brain data, wins by 2.42× |
| TransTissueFormer §6 | trains one multi-task model, collapses from PCC 0.53 → 0.23 |
Same group. Same architecture. Same data. Opposite outcomes. What gives?
The tasks are structurally different, and the difference is exactly conditioning:
TransPlatformer:
input: CodeLink profile of tissue X
output: BioSpyder profile of tissue X ← SAME tissue
→ the tissue is a NUISANCE VARIABLE. It's implicit in the input.
→ the model never has to CHOOSE. Mixing tissues just adds data.
→ mixed-tissue WORKS.
TransTissueFormer:
input: liver profile
output: kidney? heart? spleen? ← DIFFERENT tissue, YOUR CHOICE
→ the tissue is a FREE PARAMETER. It is not in the input.
→ the model MUST choose and is never told which.
→ multi-task COLLAPSES.
The two results are perfectly consistent. Together they prove the conditioning argument from inside the program.
TransPlatformer doesn’t need a target token — the target tissue equals the source tissue, so it’s already in the input. Mixing tissues is free data.
TransTissueFormer does need one — the target tissue is a choice the model is asked to make blind. Under squared loss it correctly returns , the average over organs (
16_MATH_NOTES.md§4.2). Mush is the right answer to an ill-posed question.So this is no longer my argument from the NMT literature. It’s the program’s own two results, read together. TransPlatformer proves the shared trunk works. TransTissueFormer proves you need the target token. Add and you get both.
And §5.5 makes the zero-shot claim in 12_TRANSLATION_TRANSFER.md §12.4 far less speculative than I first rated it. Zero-shot to brain already worked once, on the platform axis, in this program. The tissue axis needs conditioning — but the transfer mechanism is demonstrated.
5.7 Attention interpretability — a real bonus
Translating CodeLink → BioSpyderWT, the model attends most to:
Cmya1, Ca3, Cyp1a1, Ctsh, Sds, Cited4, Atf3, Lcn2, Stac3
Several are well-known toxicology genes:
| gene | why it matters |
|---|---|
| Cyp1a1 | drug-metabolizing enzyme — massively induced by toxicants |
| Atf3 | general stress response |
| Lcn2 | injury / inflammation marker |
And per-tissue (heart): Arntl, Timm8a, Rufy1, Kap, Atf3, Sln, Gal, Alas2, Fos — Arntl is a circadian clock gene, Fos an immediate-early stress gene. Plausible for heart.
This is a genuine sanity check. The model attends to genes a toxicologist would name. It’s weak evidence — attention weights aren’t explanations, and that’s a whole literature — but it’s the right kind of evidence, and it costs nothing.
⚠️ Be careful here. “Attention is not explanation” (Jain & Wallace 2019) is a well-known result in your field, and it applies. High attention does not mean high importance. But “the model attends to Cyp1a1 when translating toxicogenomics” is still a reassuring smell test, and they present it as one rather than over-claiming.
5.8 The downstream result — the most convincing number in all four papers ⭐
Everything above is intrinsic evaluation. This is the one that matters.
Task: predict liver necrosis (does this compound damage the liver?) from a BioSpyderWT profile. A simple MLP classifier.
Experiment: train it on BioSpyderWT only. Then translate the legacy Affymetrix data into BioSpyderWT format with TransPlatformer, add it to the training set (nearly doubling it), and retrain the same model with the same hyperparameters.
| Metric | BioSpyderWT only | + harmonized legacy data |
|---|---|---|
| Accuracy | 0.901 | 0.939 |
| Precision | 0.778 | 0.875 |
| Recall | 0.538 | 0.609 |
| F1 | 0.636 | 0.718 |
That’s +12.9% relative F1. All four metrics improve.
Why this is worth more than every PCC in the four papers
PCC 0.71 tells you the predicted vector correlates with the true vector. So what? Nobody deploys a predicted vector.
This says something else: translated legacy data made a real classifier measurably better at a real task. The old CodeLink and Affymetrix data, sitting unusable for 20 years, became useful. That’s the paper’s actual claim, tested end to end.
It’s the same kind of evidence as TransTissueFormer’s enrichment validation (gemfibrozil → PPARα ✓), and it’s the direction
15_FRONTIER.mdF6 argues the whole field should move: score models by whether they help the downstream task, not by whether the vectors correlate.
⚠️ One small reporting inconsistency: the abstract says F1 “improves by approximately 8%”; the results section says “12.9% improvement.” Both are right — 8.2 percentage points (0.636 → 0.718) versus 12.9% relative. Worth picking one convention and stating it consistently.
5.9 What’s still open
| gap | why it matters |
|---|---|
| the bottleneck is random-init | params on Affymetrix, learned from 888 samples. That’s ~18,000 parameters per sample. 07_TRANSTISSUEFORMER.md §7.7.1 applies with more force here than anywhere. |
| the same gene has different rows per platform | ⭐ CodeLink’s Cyp1a1 probe and Affymetrix’s Cyp1a1 probe are different lookup rows in different models. The model has no idea they’re the same gene. A gene-feature basis would make them the same feature by construction — which is TransPlatformer’s own problem, dissolved rather than solved. See 06_GENTOX.md §6.7. |
| no baselines | zero-predictor, mean-predictor, and row-wise PCC are all missing — same as the rest of the program. |
| cross-tissue mode isn’t used elsewhere | §5.5 proves the shared trunk works. TransTissueFormer trains 32 separate models. |
| GeniE is a model | BioSpyderWT is partly extrapolated from 2,700 landmarks (01_BACKGROUND.md §2.3). So the translation target is partly a model output. Nobody has quantified what that costs. 15_FRONTIER.md F2. |
5.10 Summary
Why it’s needed. Three generations of machines. Microarrays measure brightness; sequencers count. You can’t pool them. Decades of paid-for toxicology data sit unusable. Fold-change cancels the platform to first order — but saturation and background are nonlinear and survive. That leftover is what TransPlatformer models.
What it does. . Same tissue, same treatment, different machine. Same architecture as TransTissueFormer, 45 output decoders instead of 17.
The headline. MAE 0.043 vs ToxCompl’s 0.09 (>50% better); PCC 0.71 vs the MLP’s 0.37 (doubled). The ToxCompl comparison is well-posed — it isolates “whether the correspondence of genes across platforms helps.” It does.
The Seq2Seq number. On a 32GB V100S at length 8,565: 2 layers fit, versus 32. TransPlatformer is 2.74× better on MAE. The compute argument is not hand-waving.
The finding nobody mentions (§5.5). Train on {liver, kidney, heart, muscle}, withhold brain entirely, test on brain: 2.42× better than the model trained on brain’s own data. Then one brain sample improves it further. That is zero-shot and one-shot cross-lingual transfer. It’s not in the abstract.
The contradiction that isn’t. TransPlatformer’s mixed-tissue works; TransTissueFormer’s multi-task collapses. Consistent: TransPlatformer’s target tissue equals its source tissue (implicit in the input, no choice to make), while TransTissueFormer’s is a free choice it’s never told. The program’s own two results prove the target-token argument from the inside.
The best number in all four papers. Harmonize legacy Affymetrix into BioSpyderWT, add it to a liver-necrosis classifier: F1 0.636 → 0.718, all metrics up. Twenty years of unusable data, made useful, measured on a real task.
Numbers are verbatim from the paper. §5.6’s reading of the TransPlatformer/TransTissueFormer relationship is mine — it follows from the two task definitions, but I’d want the authors to confirm the framing. Architecture claims inherit the caveats in 07_TRANSTISSUEFORMER.md §7.6.
Chapter 6 — GenTox: Deep Inductive Matrix Factorization
The three components, from zero, with numbers.
Run code/demo_inductive_mf.py alongside. Read 04_TOXCOMPL.md first — this builds on plain MF.
Paper: “Predictive Transcriptomics with Attention-Augmented Inductive Matrix Factorization and Graph Mutual Information for Small Molecule Drugs” (GenTox).
The paper has three components:
| § | component | what it buys |
|---|---|---|
| 3.1 | deep inductive matrix factorization | handle new drugs |
| 3.2 | representation learning for the induction basis | what features describe a drug? |
| 3.3 | attention-based aggregation | weight the latent dimensions |
This chapter is where the whole document set converges. The punchline is in §6.6.
6.1 The problem plain MF cannot solve
Recall ToxCompl:
and are lookup tables. To get you look up row of a big array of learned numbers.
Now a chemist synthesizes a brand-new compound. Predict its profile.
Which row of do you look up?
There isn’t one. The table has 2,238 rows, and this drug is number 2,239.
You can’t even ask the question. The model has no input slot for it. This isn’t “poor accuracy” — the function is undefined.
This is the cold-start problem. Netflix has it too: a movie released today has zero ratings, so no learned vector, so no recommendation.
That’s why GenTox exists. ToxCompl fills holes in a matrix. GenTox predicts a whole new column.
Two different verbs
| needs | ||
|---|---|---|
| TRANSDUCTIVE | “fill in the gaps in THIS matrix” — ToxCompl, TransTissueFormer’s augmentation | the row and column to have been seen |
| INDUCTIVE | “handle something I have NEVER seen” — GenTox | features describing the new thing |
6.2 §3.1 — the fix: replace the lookup with a function
The whole idea in one line:
A new drug has no row in a table. But it has features — it’s a molecule, and you can measure things about it. Feed the features to , get a vector out.
GenTox’s Figure 3:
row features (gene, tissue) ──► Row NN ──┐
├──► MIXER ──► G'[i,j]
col features (compound, dose, time) ──► Col NN ──┘
The paper’s own note on why this is a generalization, not a new thing:
“The model degenerates to a standard matrix factorization approach when the outputs of the row NN and the column NN have the same dimensions and the mixer network is simply a dot product.”
So plain MF is just inductive MF with = lookup and mixer = dot product. GenTox is strictly more general.
Watch the difference
A toy: 40 genes × 60 drugs. Each drug has 12 molecular descriptors that cause the response. Train on 50 drugs; the last 10 are new compounds — never seen, not one measurement.
---- TRANSDUCTIVE (plain MF, ToxCompl-style) ----
on SEEN drugs : relative error 0.0000 ← excellent
on NEW drugs : *** CANNOT RUN ***
Q has 50 rows. The new drugs are rows 50-59.
There is nothing to look up. The function is undefined.
---- INDUCTIVE (GenTox-style) ----
on SEEN drugs : relative error 0.0040
on NEW drugs : relative error 0.1656 ← *** IT RAN ***
It predicted profiles for 10 compounds it had never seen, from their molecular descriptors alone.
Nothing clever happened. We replaced one lookup with one small MLP. That’s the entire content of “deep inductive matrix factorization.”
One more thing §3.1 does
“As during training the samples in each minibatch are drawn uniformly at random from the whole G, the model in GenTox with three networks is expected to learn to not only predict the profile for a certain treatment but also preserve the relationships between endpoints in different regions of the matrix.”
Sampling random cells (not whole columns) is what forces the model to preserve row structure as well as column structure. That directly addresses the rank-degeneracy argument in 16_MATH_NOTES.md §3.4. It’s a deliberate, well-motivated design choice.
6.3 §3.2 — everything now depends on the features
The inductive model is only as good as .
| good features | similar drugs → similar features → maps them to similar latents → a new drug lands near its neighbours |
| bad features | has nothing to work with → garbage |
The paper calls the induction basis — the thing that makes induction possible at all.
Feature quality decides everything
induction basis SEEN drugs NEW drugs
----------------------------------------------------------
informative descriptors 0.0020 0.1664
descriptors + heavy noise 0.0050 1.2549
random features 0.0002 1.8598 ← !!
half the descriptors 0.0049 1.0792
⭐ Read the
random featuresrow. It has the best in-distribution fit of all four (0.0002 — the MLP simply memorises) and the worst generalization (1.86).A model can look perfect in-distribution and be worthless inductively. Only the new-drug column reveals it. That gap is the whole game.
Option A — hand-crafted features (the classical answer)
Mordred descriptors: about 1,826 numbers a chemist decided are meaningful. Molecular weight, logP, ring count, polar surface area. Deterministic — run the molecule through a fixed algorithm.
Morgan / ECFP fingerprints: a bit vector. Bit 4,412 = “does this molecule contain –C(=O)NH– ?” One bit per substructure.
In GenTox: — Mordred, plus dose, plus duration.
NLP analogy: this is a bag of hand-designed features. It’s what you did before word embeddings — someone decides in advance what properties matter, and you count them.
Option B — learned features (GenTox’s contribution)
Pretrain a graph neural network on about 1 million compounds, self-supervised.
A molecule is a graph: atoms are nodes, bonds are edges.
B1 — Contrastive (positive/negative pairs)
Take a molecule. Corrupt it twice, differently. Both corruptions came from the same molecule, so they’re a positive pair. A corruption of a different molecule is a negative pair. Train so positives end up close and negatives far apart.
Their corruptions: atom (node) masking plus bond (edge) deletion, “taking care not to select a node whose removal will result in a disconnected graph.”
This is SimCLR. Identical objective. Molecules instead of images, atom-masking instead of cropping.
B2 — Graph InfoMax (mutual information)
Different idea: make each atom’s embedding predictive of the whole molecule’s embedding.
Mutual information is intractable, so train a discriminator to tell real (atom, its-own-molecule) pairs from fake ones:
Intuition: if an atom’s neighbourhood tells you which molecule you’re in, the embedding has captured real structure.
Encoder: 2-layer GCN, hidden 64, output FC 64×300.
Graph embedding = mean of node embeddings.
Their finding ⭐
graph InfoMax > contrastive pairs ≫ Mordred ≈ Morgan
“Both mutual information based approaches perform slightly better than the positive-negative pair approach, and much better than traditional fingerprinting (e.g., Morgan fingerprint) or descriptor (Mordred) approaches.”
Learned representations beat hand-crafted ones.
That sentence should sound familiar. It’s word2vec beating bag-of-words. BERT beating TF-IDF. Your field’s entire 2013–2018.
And note what this means ⭐⭐
GenTox pretrains a GNN on 1,000,000 compounds, self-supervised, freezes it, and uses it as a feature extractor.
That is a foundation model.
This program already built one — on the chemistry side. It did so before the TransTissue paper wrote “we plan to explore the adaptation of these models in future work.”
6.4 §3.3 — attention-based aggregation (the Mixer)
Now you have (gene factor) and (drug factor). Combine them.
The plain version: . Every one of the 300 dimensions counts equally, because that’s what a dot product is. But maybe dimension 7 is decisive for this gene–drug pair and irrelevant for another one. A dot product can’t say that.
So GenTox learns two extra factors, and , whose only job is to decide how much each dimension counts:
is the Hadamard (elementwise) product — multiply position by position, don’t sum. is softmax.
Worked out,
R_i = [ 3.0 -2.0 4.0 1.0 -0.5]
C_j = [ 2.0 1.0 -1.0 3.0 2.0]
R_i ∘ C_j = [ 6.0 -2.0 -4.0 3.0 -1.0] ← WHAT each dim says
R'_i = [ 0.2 0.1 2.8 0.3 0.1]
C'_j = [ 0.4 0.5 2.6 0.2 0.3]
R'_i ∘ C'_j = [0.08 0.05 7.28 0.06 0.03]
softmax(...) = [0.00 0.00 1.00 0.00 0.00] ← HOW MUCH each dim counts
plain dot product : sum(R ∘ C) = 2.000
attention-weighted : (R ∘ C) · softmax = -3.984
The plain version gives every dimension weight 1.0. Attention gives dimension 3 weight ≈ 1.00 and the rest ≈ 0, so the answer is dominated by dimension 3’s value (−4.0). The sign flipped, because the plain sum was averaging away the dimension that actually mattered.
Why this really is attention
values = R ∘ C (r of them)
weights = softmax(R' ∘ C') (sum to 1)
output = Σ values × weights
Query, keys, values — with “positions” and a single query. The same three lines as a transformer.
Their claim to novelty:
“To our knowledge no prior study has directly introduced attention to the low-rank factorization approach for matrix completion.”
It’s the same mechanism as ToxCompl+ (04_TOXCOMPL.md §4.9). One idea, two papers — worth knowing they’re the same thing.
6.5 A drafting bug worth reporting
The paper contradicts itself inside one paragraph.
§3.1 says:
“From the columns GenTox produces column (treatment) features” → columns = treatments
But the Results section says, in consecutive sentences:
“the fully connected layers in the column NN are … if the compound is represented by a Mordred descriptor, ” → column NN handles compounds
“The col NN is a look-up table of as there are 31099 genes/probesets in AffyMetrix” → col NN handles genes
The same network is described as both a 31,099-gene lookup table and an compound MLP. The row/column labels are swapped somewhere.
The sensible reading, and what the model must actually be:
| genes | lookup table , plus three FC layers |
| treatments | MLP on features (Mordred, or the GNN embedding) |
Easy fix. Worth flagging because §3.1 is the paper’s central contribution, and the labels are inverted in the very section that implements it.
(The paper is also a draft — broken Figure ?? refs, [?] citations, and §5 “Gene Network Analysis” / §6 “Out-of-distribution validation” are empty section headers.)
6.6 The asymmetry nobody has acted on ⭐⭐⭐
Read this sentence from the implementation section:
“As we do not perform inductive learning on the genes or tissues, the [gene] NN we use is a simply embedding layer.”
So here’s the split:
| DRUGS | INDUCTIVE | a function of molecular features. Basis: a GNN pretrained on 1,000,000 compounds. Handles new compounds. |
| GENES | TRANSDUCTIVE | a lookup table. Basis: none. Random init. Cannot handle a new gene, probe, platform, or species. |
They built a foundation model for the columns and left the rows random.
And they proved, in their own ablation, that learned representations beat hand-crafted ones — for molecules. They never applied that lesson to genes.
This is the same gap in all three papers
| paper | the object | |
|---|---|---|
| ToxCompl | is | gene table, random init |
| TransTissueFormer | is | gene table, random init — 96.6% of the model |
| GenTox | col NN is | gene lookup, random init |
Three papers. One randomly-initialized gene embedding table at the core of each. And a public checkpoint trained on 33 million cells that has exactly that object, already learned.
6.7 The fix: be inductive on genes too
Where do gene features come from? The same place drug features come from: a pretrained model.
| axis | basis | status |
|---|---|---|
| drugs | GNN on 1M compounds | ✅ GenTox already does this |
| genes | scGPT / UCE embeddings | ❌ nobody does this |
The symmetry is exact. It’s the argument they already made and won, applied to the other axis of the same matrix.
What inductive-on-genes buys — more than a leaderboard bump
1. New platforms. A CodeLink probe and an Affymetrix probe for the same gene are different lookup rows today — the model has no idea they’re the same gene. With gene features they get the same features. That’s TransPlatformer’s entire problem, solved structurally.
2. New species. Rat → human. A lookup table can’t do this, ever. UCE tokenizes genes by their protein sequence, so a rat gene and its human ortholog get similar features automatically, with no dictionary needed (11_SC_FOUNDATION_MODELS.md §6).
3. The low-data tissues. ⭐ This is the big one. From 04_TOXCOMPL.md §4.6: a brain gene has ~65 observations and 300 free parameters. The lookup row is underdetermined — arbitrary in most directions. An inductive gene factor doesn’t need 300 observations. It’s a function of features shared with every other gene, so every gene’s data helps every other gene.
4. Unmeasured genes. A gene never on any array still has a protein sequence → still has features → still predictable.
Demonstrated — the underdetermined regime
45 genes x 40 drugs, observed 11%
-> 197 observations vs 340 parameters, ratio 0.58 (UNDERDETERMINED)
(values scaled so mean |G| = 1.00, so errors read as fractions)
gene factor held-out MAE MaxAE
----------------------------------------------------------------
LOOKUP TABLE (GenTox today) 0.990 9.399
MLP on gene features (proposed) 0.268 3.050
-> MAE 73% lower, MaxAE 68% lower
Both improve — and MaxAE is the metric ToxCompl+ was built to fix.
⚠️ The control that matters
The comparison is not “features vs lookup.” That’s rigged when the system is underdetermined — of course a function beats 300 free parameters fit from 65 observations.
The real question: do scGPT/UCE gene features beat the co-expression structure you can compute from DrugMatrix itself? That’s a free basis, no foundation model required.
| gene basis | tests |
|---|---|
| lookup table | current |
| co-expression from | ⭐ the control |
| scGPT gene embeddings | the FM |
| UCE / ESM2 (protein sequence) | species-agnostic — the rat answer |
| shuffled scGPT | content, or just some structure? |
If scGPT loses to DrugMatrix’s own co-expression, that’s a result too. It’s what Kedzierska (2025) and Souza & Mehta (2026) would predict. Either outcome publishes.
6.8 Summary
The problem. Plain MF uses lookup tables. A new drug has no row, so you can’t even ask the question. Cold start.
§3.1 — deep inductive matrix factorization. Replace the lookup with a function of features: . Now a new drug works — it has features even though it has no row. Degenerates to plain MF when = lookup and mixer = dot product. Random-cell minibatch sampling forces row and column structure to be preserved.
§3.2 — representation learning for the induction basis. Everything depends on . Random features give the best in-distribution fit and the worst generalization — only the new-drug column reveals it.
- hand-crafted: Mordred (1,826 numbers), Morgan (substructure bits)
- learned: GNN on 1M compounds — contrastive (= SimCLR for molecules) or graph InfoMax
Finding: InfoMax > contrastive ≫ Mordred ≈ Morgan. Learned beats hand-crafted. That’s word2vec vs bag-of-words. And a GNN pretrained on 1M compounds is a foundation model — they built one.
§3.3 — attention-based aggregation. . Values from one pair of factors, weights from another. Attention with positions and one query. Same mechanism as ToxCompl+.
The opening.
“As we do not perform inductive learning on the genes or tissues, the [gene] NN we use is a simply embedding layer.”
They went inductive on drugs with a 1M-compound foundation model, and left genes as a random lookup table. All three papers have the same random gene table at their core.
Being inductive on genes buys new platforms, new species, the low-data tissues, and genes never measured. The argument is the one they already made and won — applied to the other axis of the same matrix.
Every number here is produced by code/demo_inductive_mf.py. Quotes are verbatim from the GenTox draft. The row/column inconsistency in §6.5 is in the paper as written and may be a labelling slip rather than a modelling error — check the implementation.
Chapter 7 — TransTissueFormer, In Depth
What it is, why it’s fast, why it’s the right shape, where it breaks, and what to do about it.
7.1 The problem it solves
Given the transcriptomic profile of a source tissue under a treatment, predict the target tissue profile for the same treatment.
Both are fold-change vs. control. A treatment is a (chemical, dose, duration) triple.
Concretely: Nitrofurantoin, 100 mg/kg, 24h. We measured the liver. Predict the heart.
Why it’s hard: 8,565 → 8,565, from 425 training examples on the best-resourced pair. And 92% of both vectors are ≈ 0.
7.2 The architecture
(B, n) n = 8,565 source genes
│
│ [1] bottleneck FC: n × s s = 512
▼
(B, s) the profile, compressed to 512 numbers
│
│ [2] projection: 1 × r r = 16
▼
(B, s, r) 512 "slots", each a 16-dim token
│
│ [3] L transformer layers ("TP attention") L = 32
▼
(B, s, r)
│
│ [4] ⌈n/s⌉ = 17 PARALLEL decoders
▼
(B, n, r)
│
│ [5] projection: r × 1
▼
(B, n) predicted target profile
Hyperparameters, from the paper: , , , , concurrent decoders. Adam, , weight decay , batch 16, 40 epochs.
The three claimed departures from Vaswani
- The bottleneck compresses 8,565 genes into 512 slots before attention. Attention then costs , not . Same spirit as Linformer/Performer — project the sequence dimension down.
- Every output gene attends to the entire input profile. No context window. Any liver gene can in principle influence any kidney gene.
- 17 parallel decoders. Not autoregressive — all segments emit at once.
7.3 Worked example: what the bottleneck actually does
Take genes, slots. The bottleneck is :
The compressed representation is :
Read the columns of . Column 1 loads on genes 1–2; column 2 on genes 3–4; column 3 on genes 5–6. Those are gene modules — co-regulated programs. Slot 1 says “module A is up (+1.72),” slot 3 says “module C is down (−1.09).”
Now read the rows. Row of is a vector in describing how gene participates in each module.
And the operation is:
This is word2vec-style document embedding. A document is the weighted sum of its word vectors, with weights = term frequency. Here a profile is the weighted sum of its gene vectors, with weights = fold-change.
So the bottleneck isn’t a compression trick bolted on for compute reasons. It’s a gene embedding table, and the model is doing bag-of-embeddings pooling. That reading is what makes §7.7.1 possible.
7.4 Why it’s fast — the numbers
Attention memory
Standard self-attention over tokens materializes an score matrix per head per layer. At fp32, batch 16, layers:
| Platform | standard attention | TransTissueFormer | ratio | |
|---|---|---|---|---|
| CodeLink | 8,565 | 150 GB | 0.54 GB | 280× |
| BioSpyderWT | 22,794 | 1,064 GB | 0.54 GB | 1,982× |
| Affymetrix | 31,042 | 1,974 GB | 0.54 GB | 3,676× |
Standard attention on Affymetrix needs about 2 terabytes for score matrices alone. This isn’t “slow.” It doesn’t run, on any hardware that exists.
The bottleneck makes attention memory independent of . It’s always entries — 0.54 GB across the whole stack. That’s the entire architectural argument in one row of a table.
Decode latency
| sequential steps | |
|---|---|
| autoregressive Seq2Seq | 8,565 |
| TransTissueFormer | 17 segments, emitted in parallel → ~1 |
Autoregressive decoding of an 8,565-token output is 8,565 forward passes, each attending to a growing KV cache. Parallel decoding is one pass. This is the larger practical win, and it’s the one the complexity table doesn’t show.
Complexity table
The paper’s Table 6:
| Method | Complexity | Score matrix |
|---|---|---|
| Standard | ⚠️ | |
| Linformer | ||
| TransTissueFormer |
⚠️ The “Standard / ” entry is a typo. Standard attention’s score matrix is ; isn’t even defined for it. Minor, but it’s the row that carries the paper’s central claim, so it should be fixed.
The real difference from Linformer: Linformer projects keys and values to but keeps queries, so its score matrix is . TransTissueFormer projects the input itself to before attention, so its score matrix is — strictly smaller. The cost is that it can never do gene-level attention again (see §7.6.1).
7.5 Why the shape is right
Three things the design gets genuinely right:
1. No positional encoding. Genes have no linear order — they form pathways and networks. Refusing to impose sequence order is correct, and the reasoning in TransPlatformer §2.2 is sound.
2. Full-profile context. Every output gene sees the whole input. In biology, any liver gene can in principle influence any kidney gene through systemic signalling. A context window would be a lie about the domain.
3. Parallel decoding. No autoregressive error accumulation, no arbitrary generation order. For a set-valued output, generating left-to-right would impose structure that doesn’t exist.
And the compute argument is unanswerable. At , standard attention needs about 2 TB. There is no version of this project that uses vanilla self-attention over genes.
The honest framing: this is Perceiver-shaped. Cross-attend a huge input into a small latent array, compute in latent space, broadcast back out. The papers cite Linformer and Performer; Perceiver IO is the closer relative and isn’t mentioned. Worth knowing, because Perceiver’s literature — especially on latent-array sizing — applies directly.
7.6 Where it breaks
7.6.1 96.6% of the model is a linear projection ⭐
Parameter budget, CodeLink, from the paper’s stated hyperparameters:
| Component | Parameters | Share |
|---|---|---|
| bottleneck | 4,385,280 | 96.6% |
| projection | 16 | 0.0% |
| encoder, 32 layers @ | 100,352 | 2.2% |
| 17 decoders @ | 53,312 | 1.2% |
| projection | 16 | 0.0% |
| total | ≈ 4.54M |
(Standard transformer layer accounting: QKV + output + LayerNorm + a 4× MLP. Decoder depth is ambiguous in the paper — assumed ~1 layer each. Even at 32 layers each, the transformer stack reaches only ~1.8M, and the bottleneck still dominates.)
The transformer stack is 3.4% of the model. The “transformer” in TransTissueFormer is a rounding error on a 4.4M-parameter linear projection.
Three consequences follow.
(a) It explains the results. TransTissueFormer’s MAE is 0.081; the MLP’s is 0.086. A 6% gap. That’s not what you’d expect from a 32-layer transformer beating a 4-layer MLP. But it’s exactly what you’d expect if both models are mostly a big linear map with a small nonlinearity on top.
(b) It explains exp02. The Funk-SVD-augmented task is exactly affine of rank ≤ 301, and empirically rank ~2 (16_MATH_NOTES.md §2). A model that is 96.6% linear projection is a matched filter for a linear task. That’s why it wins Figure 7’s pretrain row (0.90 vs MLP 0.64 vs RF 0.51) — not because it captures “the intricate relationships between transcriptomic profiles from different tissues,” but because its inductive bias is the process that generated the data it’s being scored on.
(c) It’s 10,000 parameters per training sample. 4.4M parameters, 425 examples. The bottleneck is trained from scratch, from random init, on 425 samples.
7.6.2 There is no gene-gene attention
Follow the tensor. After step [1], the profile is 512 numbers. Every gene-level distinction that isn’t preserved by is gone before attention runs.
So the 32 transformer layers attend over 512 pooled latent dimensions, not over genes. The claim that “each gene in the target tissue profile can be influenced by any gene in the source” is true — but it’s delivered by the linear pooling, not by the attention. All gene-gene interaction in this model is linear.
Attention here plays the role it plays in ToxCompl+ — re-weighting latent factors — not the role it plays in a transformer. That’s consistent with the program’s style, and it’s a defensible design. But it means the model can’t represent “gene A’s effect on gene B depends on gene C,” which is what pathway biology is made of.
✅ Confirmed against Figure 1. The figure shows (B,n) → [n×s] → (B,s) → [1×r] → (B,s,r) → L stacked layers. The transformer stack operates on (B, s, r) = 512 slots × 16 dims. Genes are gone before layer 1. This is no longer an inference — it’s what the figure draws.
7.6.3 The first attention layer is provably inert
Step [2] maps via a projection. Read literally — and Figure 1 labels the operation once — slot ’s token is
Every token is then a scalar multiple of the same vector. Verified numerically in code/demo_transtissueformer.py:
| quantity | rank | out of |
|---|---|---|
| token matrix | 1 | 8 |
| block-1 attention scores | 1 | 8 |
| block-1 attention output | 1 | 8 |
| (attention output) | 1 | 8 |
Why: , , so — an outer product, rank 1. A rank-1 score matrix means every query attends with the same pattern up to a scalar. Block 1’s attention contributes nothing.
But this is not fatal, and the distinction matters. The MLP’s nonlinearity breaks the symmetry:
| stage | rank |
|---|---|
| input tokens | 1 |
| after block 1 | 7 |
| after block 2 | 7 |
| after block 3 | 8 (full) |
So the model recovers. The cost is waste, not incorrectness:
- block 1’s attention is provably doing nothing
- the model spends its first block manufacturing diversity that a slot embedding would supply for free at step 0
- with there’s very little room to manufacture it in
Say it precisely. “The architecture is broken” is wrong. “The first attention layer is provably inert, and the fix costs 0.18% of the parameters” is right, and it’s a better thing to say.
⚠️ Check the implementation before acting. Figure 1 draws one trapezoid per slot but labels the operation once. If the is actually per-slot, this is already handled and there’s nothing to fix. The paper alone can’t settle it.
Also: per token, against BERT’s 768. That’s a very small representation to run 32 layers over.
7.6.4 The gaps that follow from everything above
| Gap | Consequence |
|---|---|
| no tissue conditioning | multi-task collapses to ρ=0.23 |
| no compound representation | can’t use unpaired profiles; can’t generalize to new drugs |
| 32 separate models | no statistical sharing across pairs |
| ~1,249 unpaired liver profiles unused | the monolingual data is on the floor |
| trained on exactly-linear synthetic data | pretraining teaches “translation is a rank-2 linear map” |
| column-wise PCC only | the metric that exposes a mean predictor isn’t reported |
7.7 What to do — actionable, ordered by effort
7.7.1 Initialize the bottleneck from scGPT ⭐⭐ — the best idea in this document
The observation:
- TransTissueFormer’s bottleneck is . Row is a 512-dim embedding of gene (§7.3).
- scGPT’s gene token embeddings are 512-dimensional (confirmed: scGPT’s , and gene embeddings are 512-dim vectors from its encoder layer).
So you can drop scGPT’s gene embeddings straight in as the initialization of . No adaptation layer. No dimension mismatch. No architecture change. Map rat genes → human orthologs → look up → initialize.
Why this is the right way in, and not a hack:
- It initializes 96.6% of the model. Not a side input, not an auxiliary loss — the overwhelming majority of the parameters, currently random, on 425 samples.
- It completely dodges the type error. The fold-change/absolute-count incompatibility (
01_BACKGROUND.md§4.3) lives in scGPT’s value encoder. This uses only the gene embeddings. Gene embeddings never touch expression values — they encode which genes are functionally related, which is modality-independent and largely species-conserved. - It’s the answer to the future-work paragraph. TransTissue §7 says these models “may nevertheless be finetuned… We plan to explore the adaptation of these models in future work.” The adaptation is one tensor load.
- Both outcomes are publishable. If it helps, that’s the FM bridge. If it doesn’t — consistent with Kedzierska, Souza & Mehta, and “one PCA still rules them all” — it converts a hedge into “we tested it; here’s the evidence.”
The ablation, designed so it can’t fail to inform:
| init of | tests |
|---|---|
| random | current baseline |
| PCA / co-expression from DrugMatrix itself | ⭐ the critical control — does an FM beat the data’s own structure? |
| scGPT (ortholog-mapped) | the obvious FM |
| UCE / ESM2 | species-agnostic — no ortholog mapping needed |
| shuffled scGPT | content, or just some structure? |
| ortholog-restricted subset, all methods | isolates the mapping penalty |
That last row is the interesting one. Rat P450s — precisely the genes toxicology cares about — have no clean human orthologs. If ESM2’s advantage concentrates in the non-ortholog genes, that’s a mechanistic result, not a leaderboard bump, and it’s exactly what the theory predicts.
Effort: days. This should be experiment #1.
7.7.2 Add a target-tissue embedding
One vector , added to after the bottleneck:
This fixes the ρ=0.23 multi-task collapse by construction — the conditional-mean argument (16_MATH_NOTES.md §4.2) no longer applies once the target is specified. And it’s the prerequisite for zero-shot (Chapter 12 §12.4).
Effort: a day. Risk: at 425 pairs the conditioning may be swamped. Untested.
7.7.3 Tag the synthetic data
We know — provably — that the augmented pretraining data is exactly affine and nearly rank-2. Tagged back-translation (Caswell et al. 2019) is the way to use synthetic data without absorbing its artifacts:
Set it to the “real” tag at fine-tuning. Effort: hours.
7.7.4 Noise the augmentation
Funk-SVD output is noiselessly linear — the extreme of the pathology Edunov et al. (2018) identified. Sample from a probabilistic factorization’s posterior instead of taking the point estimate, so each epoch sees a different draw.
Prediction: noised augmentation beats clean augmentation on real held-out data while scoring worse on augmented data. Effort: days.
7.7.5 Add a slot embedding
Verified effect (code/demo_transtissueformer.py):
| before | after | |
|---|---|---|
| rank of token matrix | 1 | 8 (full) |
| rank of block-1 attention scores | 1 | 8 |
| mean between tokens | 1.000 | 0.185 |
Cost: parameters — 0.18% of the model. Benefit: block 1’s attention starts working.
This is a positional encoding — but over latent slots, not genes, so it doesn’t violate the (correct) no-gene-order principle. Check the implementation first (§7.6.3). Effort: hours.
7.7.6 Raise , lower
is tiny; the transformer has 3.4% of the parameters. Rebalance:
| config | bottleneck | transformer | total |
|---|---|---|---|
| current () | 4.39M | 0.15M | 4.54M |
| 2.19M | 1.6M | 3.8M | |
| 1.10M | 6.3M | 7.4M |
The third row is a real transformer. And attention gets cheaper — shrinks faster than grows. This is a free axis nobody has swept.
Hypothesis: if performance is flat across this sweep, the transformer isn’t contributing, and the honest model is a low-rank linear map plus a small MLP — consistent with everything in 10_SOTA_LANDSCAPE.md §3.
Effort: a sweep. Value: high either way.
7.7.7 Report the metrics that discriminate
- row-wise PCC — undefined for a mean predictor, so it’s the metric that exposes one (
16_MATH_NOTES.md§3.5). GenTox §2.3 argues for it from first principles; TransTissue doesn’t report it. - macro-F1 over the 5 categories — the 92%/8% split is a classification problem dressed as regression (Chapter 12 §12.8b). The all-zeros predictor can’t game macro-F1.
- enrichment-consistency — do the predicted and true profiles support the same biological conclusions? (
15_FRONTIER.mdF6.) The mean predictor scores zero here by construction: identical enrichment for every treatment means no discriminative power.
Effort: a week. This is the highest-value non-modelling contribution available.
7.8 The upgrade path
Each step composes with the last. Nothing here requires abandoning the architecture.
v0 TransTissueFormer as published
32 separate models, random init, column-wise PCC
v1 + scGPT/UCE bottleneck init [7.7.1] ← 96.6% of params, days
+ row-wise PCC, macro-F1 [7.7.7] ← the metrics that discriminate
+ slot embedding if needed [7.7.5]
v2 + target-tissue embedding [7.7.2] ← one model, all pairs
+ tagged synthetic data [7.7.3] ← quarantine the linearity artifact
+ noised augmentation [7.7.4]
v3 + tissue adapters [Ch 12 §12.7] ← shared trunk, per-organ capacity
+ compound embedding (GenTox's GNN) ← unifies GenTox and TransTissueFormer
+ unpaired profiles via denoising ← the 1,249 liver profiles on the floor
v4 + zero-shot to the 24 empty pairs [Ch 12 §12.4]
+ off-target detection [Ch 12 §12.4] ← "is this actually a kidney?"
+ unsupervised alignment [Ch 12 §12.5] ← the bet
v1 is days of work and touches 96.6% of the parameters. Start there.
7.9 The honest summary
What’s right. The compute argument is unanswerable — vanilla attention on 31,042 genes needs about 2 TB. Refusing positional encoding is correct. Parallel decoding is correct. Full-profile context is correct. The biological validation (§6 of the paper: gemfibrozil→PPARα, cisplatin→TP53, lead→p53) is worth more than every PCC in the four papers, and it’s the part that deserves to be automated and scaled.
What’s overstated. The transformer is 3.4% of the model. There’s no gene-gene attention — gene interactions are entirely linear. The 6% MAE gap over an MLP is what you’d expect from two mostly-linear models. And Figure 7’s pretrain row scores a nearly-linear model on a provably-linear task, which is a matched filter, not a finding.
What’s missing. Tissue conditioning. Compound representation. The unpaired profiles. Parameter sharing across pairs. Row-wise metrics. And a pretrained gene embedding table of exactly the right shape, sitting in a public checkpoint.
The one-sentence version:
TransTissueFormer is a 4.4M-parameter gene embedding table with a small transformer attached, trained from random initialization on 425 examples — and scGPT ships a pretrained gene embedding table with precisely matching dimensions, whose fold-change incompatibility lives entirely in a value encoder this architecture doesn’t have.
Parameter counts computed from the paper’s stated hyperparameters; decoder depth is ambiguous and assumed shallow. Architecture read from the paper’s prose and figure — §7.6.2 and §7.6.3 in particular should be checked against the implementation. The linearity result is verified in code/experiments/exp02_rank_test.py. scGPT’s 512-dim gene embeddings verified against its documentation.
Chapter 8 — The Augmentation: What Is Done, Why, and What Needs Doing On Top
Walked through on the paper’s own Figure 4 example, with real numbers.
Run code/demo_augmentation.py alongside — it prints every number here.
8.1 The problem, in one table
We want a liver → kidney translation model. We need treatments where both organs were measured.
Here is the paper’s own toy: 4 tissues, 7 treatments.
1 2 3 4 5 6 7
LI ## ## .. ## .. ## ..
BR ## ## .. .. ## ## ##
KI ## ## .. .. .. ## ..
HE .. ## ## ## .. ## ..
## = measured .. = missing
LI measured on: 1, 2, 4, 6
KI measured on: 1, 2, 6
─────────────────────────────
LI–KI PAIRS: 1, 2, 6 ← THREE. That's the whole training set.
At real scale that number is 425, against 8,565-dimensional inputs and outputs. 88% of DrugMatrix is empty.
Section 5 exists to fix this.
(The sparsity pattern above is reconstructed from the paper’s own arithmetic — see §8.5. It reproduces their stated 43% figure exactly, which is how we know it’s right.)
8.2 The idea: manufacture the missing data
The paper’s reasoning, and it’s sound:
“The scarcity of our data samples for translation is due to many of the missing endpoints in DrugMatrix. Had all entries contained observed measurement values, for all cross-tissue translation models there would be orders of magnitude more training samples.”
So: fill in the holes, then train on the filled-in matrix.
Why not the usual augmentation tricks?
They’re right to rule them out, and the reasoning is worth understanding:
| technique | why it fails here |
|---|---|
| noise injection, dropout | fold-change data is already noisy — you’d be adding noise to noise |
| label smoothing | the target isn’t a label. It’s an 8,565-dim continuous vector |
| mixup | is a real biological state? Probably not |
| GANs, diffusion | need lots of training data to learn the distribution. That’s the thing we don’t have |
| back-translation (NLP) | needs a reverse model. Which needs parallel data. Which is the problem |
| graph augmentation | a profile isn’t a graph |
“Unfortunately none of the existing augmentation techniques are suitable in training cross-tissue translation models.”
Correct — with one large asterisk. They then invent back-translation anyway. See §8.9.
8.3 Funk-SVD in one paragraph
Stack the data: rows are (tissue, gene), columns are treatments.
Assume the matrix is low-rank, and factor it:
- is — “maps genes into an -dimensional latent space”
- is — “maps treatments into the same space”
- — per-gene and per-treatment biases
- in the paper
Fit by minimising squared error on observed entries only:
Adam, , weight decay .
Then read the missing entries off the product. That’s the entire augmentation.
This is the Netflix Prize. Genes are users, treatments are movies, fold-change is the rating. Most users haven’t rated most movies; predict the ratings they’d give.
Why low-rank is defensible
Their argument, and it’s a good one:
“there are similarities between the drugs, for example, Doxorubicin and Epirubicin, and the genes form co-expression networks.”
3,000 columns but only 636 distinct drugs, each at ≤5 dose/duration regimes. Doxorubicin and Epirubicin are nearly the same molecule doing nearly the same thing. Genes move in co-regulated modules. The same gene is measured in 8 organs. Rank 300 out of 3,000 is plausible.
8.4 Algorithm 1, line by line
Algorithm 1 AugmentTrain&Transfer(G, m, s, t)
──────────────────────────────────────────────────────────
1: split treatments into train set a, test set b
2: F ← G − G[t, b] # withhold TARGET rows at TEST cols
3: G' ← Funk_SVD(F) # impute EVERYTHING
4: G' ← G'[:, s ∪ t] # keep source+target tissue rows
5: split G' column-wise → train / validation
6: train model M on augmented data
7: fine-tune M on real measured data G[s ∪ t, a]
8: test M on real measured data G[s ∪ t, b]
In our toy: train = {1, 2}, test = {6}.
Line 2 — withhold the test target
(a') F = G with KI[6] removed
1 2 3 4 5 6 7
LI ## ## .. ## .. ## ..
BR ## ## .. .. ## ## ##
KI ## ## .. .. .. .. .. ← KI[6] gone
HE .. ## ## ## .. ## ..
Look at column 6 carefully:
| KI[6] | removed ✅ — this is the test answer |
| LI[6] | still there |
| BR[6] | still there |
| HE[6] | still there |
The paper is explicit that this is deliberate:
“the correlation of LI treatments 6 and 2 makes it possible to infer BR treatment 6, which can further help to infer the withheld KI profile for treatment 6.”
And explains why they don’t remove more:
“If both the LI profile and the KI profile for treatment 6 are removed from G, then an extreme situation occurs, that is, the entire column 6 will be empty.”
Both statements are true. Hold that thought until §8.7.
8.5 The payoff — and the genuinely clever part
After imputation, every cell is filled:
BEFORE: LI–KI pairs = {1, 2, 6} → 3 training samples
AFTER: LI–KI pairs = {1,2,3,4,5,6,7} → 7 training samples
3 → 7. At real scale: 7 → 2,711 for HE–TM.
Where did treatment 3 come from? ⭐
Treatment 3 has no liver and no kidney measurement. Only HE[3] exists. Yet now has an LI–KI pair for it. How?
HE[3] is measured
→ it constrains Q[:,3], the latent vector for treatment 3
→ Q[:,3] + P[LI rows] gives you an imputed LI[3]
→ Q[:,3] + P[KI rows] gives you an imputed KI[3]
→ an LI–KI pair for a treatment where NEITHER was measured
Heart data created a liver–kidney training pair.
That’s a real, clever contribution, and it’s why they impute the whole matrix rather than the LI/KI sub-matrix. Their own arithmetic:
| approach | LI–KI pairs |
|---|---|
| impute the whole matrix | 7 |
| impute LI+KI sub-matrix only | 4 — {1,2,4,6}; treatments 3,5,7 have empty columns |
| 43% reduction |
The paper says 43%. The toy reproduces 43% exactly — which is how we know the reconstructed sparsity pattern is right.
NLP analogy: this is pivot translation. You can’t get Portuguese→Spanish directly, so you route through English. Here you can’t get liver–kidney for treatment 3, so you route through heart.
8.6 What the augmented data actually contains ⭐⭐
This is the important section. Everything above is setup.
Funk-SVD produced:
So for treatment , the liver and kidney profiles are:
Both are built from the same . Count the unknowns:
Wildly over-determined. So is exactly recoverable from the liver profile by least squares. And the kidney profile is then just :
Liver → kidney translation, on augmented data, is an exact linear map.
Verified in the toy (demo_augmentation.py STEP 6):
| test | result |
|---|---|
| recovered vs true | correlation 1.000000 |
| analytic prediction vs | correlation 1.000000 |
| mean absolute error | 0.00000000 |
No model was trained. That’s a closed-form matrix inverse.
What this means
Pretraining a 32-layer transformer on augmented data teaches it to invert a low-rank linear map. It cannot teach biology, because there is no biology in the augmented data beyond that map.
This reframes Figure 7 (RF 0.51 / MLP 0.64 / TransTissueFormer 0.90 on augmented data). It is not measuring who captures “the intricate relationships between transcriptomic profiles from different tissues” — the paper’s phrase. It’s measuring who best approximates a linear map.
And TransTissueFormer’s bottleneck is 96.6% of its parameters and structurally a linear map (07_TRANSTISSUEFORMER.md §7.6.1). It wins because its inductive bias is the generative process of the data it’s being scored on. Matched filter, not insight.
A ridge regression belongs in that figure. It would top it.
What this does NOT say
⚠️ The fine-tuned 0.72 on real measured data is untouched by this. That number is real held-out measurement. This is about one figure and one missing baseline — not about the model being bad.
Also: at real scale the effective rank is ~2, not 301 (16_MATH_NOTES.md §2.5). is a ceiling, not the rank. The task is even more degenerate than the algebra suggests.
8.7 Is the test set leaking?
Line 2 withheld KI[6]. Good. But trace what informed the imputed :
LI[6] measured, in the matrix ─┐
BR[6] measured, in the matrix ─┼→ all constrain Q[:,6]
HE[6] measured, in the matrix ─┘
↓
G'[KI,6] = b_KI + b_6 + P_KI · Q[:,6]
Is that leakage? The measured KI[6] was never seen, so in the narrow sense: no.
But now ask what happens at deployment. A new compound arrives. You ran the liver panel. You want the kidney prediction:
| available? | |
|---|---|
| LI[new] | ✅ yes |
| BR[new] | ❌ you didn’t run a brain panel |
| HE[new] | ❌ you didn’t run a heart panel |
| KI[new] | ❌ that’s what you’re asking for |
can only be informed by the liver profile.
But in the evaluation, was informed by BR[6] and HE[6] too.
The test condition is easier than the deployment condition. The number doesn’t measure what the paper claims it measures.
8.8 The fix — and why their objection doesn’t apply
The paper rejects withholding more:
“If both the LI profile and the KI profile for treatment 6 are removed from G, then an extreme situation occurs, that is, the entire column 6 will be empty. As such, no correlation can be established with other parts of the matrix.”
Correct — but that’s not the protocol deployment needs. Deployment keeps the source:
F under the STRICT protocol
1 2 3 4 5 6 7
LI ## ## .. ## .. ## .. ← liver KEPT
BR ## ## .. .. ## .. ##
KI ## ## .. .. .. .. ..
HE .. ## ## ## .. .. ..
The column is not empty. It has the liver profile — exactly what you’ll have in production. Their objection is against removing the source too. It doesn’t apply.
What it costs
How well is the withheld, measured KI[6] recovered?
| protocol | PCC | MAE |
|---|---|---|
| paper’s (drop KI[6] only) | 0.842 | 0.831 |
| strict (drop BR[6], KI[6], HE[6] too) | 0.737 | 0.793 |
The gap is how much of the reported performance comes from information you won’t have at deployment.
(In this toy the gap is modest because the latent dim is 3 and liver alone nearly determines . At on real data the gap should be larger — which is why it’s worth measuring rather than arguing about.)
8.9 What to do on top ⭐
The realisation
The augmentation IS back-translation.
| MT | little parallel data → generate synthetic pairs → pretrain on synthetic → fine-tune on real |
| Here | 3 real pairs → impute 7 pairs → pretrain on imputed → fine-tune on measured |
Same algorithm. And the paper cites Sennrich et al. 2016 — as reference [36], in the related-work list, apparently without noticing the connection is exact rather than decorative.
MT then spent seven years improving it. Each of the following addresses a problem this paper reports.
FIX 1 — Tag the synthetic data (Caswell et al. 2019)
The MT result: mark synthetic pairs with a tag. The model uses their statistics without absorbing their artifacts. Consistent gains, essentially free.
Why it’s not a minor tweak here: §8.6 proved the artifact. The synthetic data says “translation is a rank-2 linear map.” Fine-tuning has to un-teach that. Tagging is the mechanism that lets the model keep the useful statistics and quarantine the artifact — and this may be the cleanest application of tagged BT anywhere, because the artifact isn’t suspected, it’s provable.
Do: add a learned e_synthetic vector to the bottleneck during pretraining; switch to e_real at fine-tuning.
Cost: one 512-dim vector. Hours.
Highest value-to-effort item in this chapter.
FIX 2 — Noise the synthetic data (Edunov et al. 2018)
The MT result, and it’s counterintuitive: noisy synthetic data substantially beats clean synthetic data. Clean output is too easy — no uncertainty, so the model learns a degenerate mapping.
Why it matters here: Funk-SVD output isn’t merely clean. §8.6 showed it is noiselessly, exactly linear — the strongest possible form of the pathology Edunov identified. The model is being pretrained on data with a closed-form solution.
Do: use a probabilistic matrix factorization and sample from the posterior over each epoch, rather than taking the point estimate. Prediction: noised augmentation beats clean augmentation on real held-out data while scoring worse on augmented data. Cost: days.
FIX 3 — Iterate (Hoang et al. 2018)
round 0: G' ← Funk-SVD(G) [rank-300 LINEAR]
M₀ ← train(G'), finetune(G)
round 1: G'' ← M₀ fills the gaps [NONLINEAR, and better than Funk-SVD
— which is the paper's own claim]
M₁ ← train(G''), finetune(G)
This directly attacks §8.6. Round 0’s synthetic data is exactly linear. Round 1’s is whatever the transformer learned. The linearity artifact dilutes with each round — and the mechanism is the paper’s own result that the transformer beats Funk-SVD.
Cost: one retrain.
FIX 4 — Report the strict protocol
Report both numbers (§8.8). The paper’s protocol answers “how well can we fill a hole in this matrix?” The strict protocol answers “how well can we translate a new compound?” The paper claims the second.
FIX 5 — The baselines (this one gates everything)
(a) Funk-SVD alone. Line 3 already imputes . Just read it out and score it. No transformer. That number already exists inside the pipeline. If it’s ~0.75, the transformer adds little over the matrix completion, and the contribution is the augmentation — still a contribution, differently stated. Ten minutes.
(b) Ridge on the augmented pairs, in Figure 7. §8.6 says it scores 1.0.
(c) The mean predictor. Ignore liver, always predict the average kidney response. Ahlmann-Eltze et al. (Nature Methods 2025) found five foundation models plus two deep models failing to beat exactly this.
(d) Row-wise PCC. Undefined for the mean predictor — constant rows, no denominator — which is precisely what makes it the metric that exposes it (16_MATH_NOTES.md §3.5). GenTox §2.3 argues for row-wise metrics from first principles. TransTissue reports column-wise only.
8.10 Summary
WHAT IS DONE 3 real LI–KI pairs → impute the whole matrix with Funk-SVD → 7 pairs → pretrain on imputed → fine-tune on the 3 real ones. Imputing the whole matrix (not just LI+KI) is the clever part: heart data creates liver–kidney pairs, worth 43% more training data. That is a real contribution.
WHY IT WORKS Real pairs are the bottleneck — 425 at full scale. The matrix is 88% empty. Filling it multiplies the training set by ~400×.
WHAT’S WRONG
- The synthetic data is exactly a linear map (verified). Pretraining on it teaches linear-map inversion, not biology. Figure 7 measures that.
- The eval protocol lets the test treatment’s other tissues inform the imputation. Deployment has only the source.
- No baselines. Funk-SVD-alone, ridge, and mean are all missing — and the first already exists inside the pipeline.
WHAT TO DO tag it (hours) → noise it (days) → iterate it (one retrain) → report the strict protocol → and run the baselines first.
This is back-translation. They cited Sennrich and stopped. Seven years of follow-up work is sitting there, and it addresses the exact problems the paper reports.
Every number here is produced by code/demo_augmentation.py. The sparsity pattern is reconstructed from the paper’s stated 43% figure and reproduces it exactly. The linearity result is a property of Funk-SVD’s algebra, so it should transfer to real data — but run it there before saying so.
Walkthrough — One Matrix, Four Axes
Written for: someone with a transformers/multilinguality background and no biology. Core claim of this document: you already know most of this. It’s machine translation with low-resource language pairs. The vocabulary is different; the problems are the same.
Part 0: The one-paragraph version
the ORNL–NIEHS program has one data matrix and four papers that each attack a different axis of it.
The matrix is called DrugMatrix. Rows = genes (~375,000 of them, because the same gene appears once per tissue per measurement platform). Columns = treatments (~2,700–3,000; a “treatment” is a (chemical, dose, duration) triple). Each cell is a number: how much did this gene’s activity change in this tissue under this treatment, relative to an untreated control animal.
88% of the matrix is empty. Nobody ran every drug on every tissue on every platform. That single fact is what all four papers are about.
| Paper | What axis it generalizes along | NLP analogy |
|---|---|---|
| ToxCompl+ | Fill in arbitrary missing cells | Matrix completion / collaborative filtering |
| TransPlatformer | Old measurement tech → new measurement tech | Dialect normalization / domain adaptation |
| TransTissueFormer | Liver → kidney, liver → brain, … | Machine translation between low-resource language pairs |
| GenTox | Predict a column for a drug never tested | Zero-shot inductive generalization |
Read them in that order. ToxCompl+ is the foundation; the other three are built on its ideas.
Part 1: The biology, from zero
You need about six concepts. That’s genuinely it.
1.1 Genes and expression
Every cell in a rat contains the same DNA — the full instruction set, ~20,000-ish genes. But a liver cell and a brain cell behave completely differently. Why? Because they use different subsets of those instructions at different intensities.
The mechanism: DNA gets transcribed into mRNA, and mRNA gets translated into protein. Protein is what actually does things. So how much mRNA exists for gene X right now is a decent proxy for “how hard is the cell running instruction X.”
That quantity is called gene expression. Measure it for all ~20,000 genes at once and you get a transcriptomic profile — a vector in R^20000.
NLP intuition: think of a profile as a dense document embedding of the cell’s current state. Except each dimension is named and interpretable — dimension 4,412 is the gene Cyp1a1, and it means something specific. You have a 20,000-dimensional vector where every axis has a biological meaning. That interpretability is why biologists care about individual dimensions in a way NLP people usually don’t.
1.2 Fold change — the single most important preprocessing fact
You could report raw expression: “there were 5,000 copies of Cyp1a1 mRNA.” But raw numbers are dominated by boring stuff — liver cells always express liver genes highly, and that swamps any drug effect.
So DrugMatrix reports log10 fold change:
value = log10( expression_in_treated_animals / expression_in_control_animals )
0→ the drug did nothing to this gene+1→ gene went up 10×-1→ gene went down 10×
This differencing step is doing enormous work, and you must hold onto it:
- It’s why cross-platform comparison is even possible. CodeLink measures fluorescence brightness; BioSpyder counts sequencing reads. Totally incompatible units. But a ratio is unitless. Dividing by the control cancels the platform out — partially. TransPlatformer exists because it only cancels partially.
- It’s why single-cell foundation models don’t plug in. scGPT eats binned absolute expression. DrugMatrix is already-differenced ratios. There is no sensible way to feed a fold-change into scGPT’s value encoder. This is the concrete, technical reason “just fine-tune scGPT” is not a five-minute job. Remember this — it comes back in Part 5.
- It’s why 92% of the matrix is ≈ 0. Most drugs don’t touch most genes. The signal is sparse.
1.3 The 92% problem
From Table 1 of TransTissue:
| Category | Range | % of data |
|---|---|---|
| extremely under-expressed | (-5, -1] | 0.03% |
| under-expressed | (-1, -0.3] | 4.09% |
| normal | (-0.3, 0.3) | 91.94% |
| over-expressed | [0.3, 1) | 3.88% |
| extremely over-expressed | [1, 5) | 0.036% |
92% of every profile is noise around zero. The ~4% that isn’t zero is the entire biological content.
NLP intuition: this is a severe class imbalance problem wearing a regression costume. It’s why every one of these papers reports “rare MAE” separately from overall MAE. A model that outputs all zeros gets a great overall MAE and is completely worthless. Keep asking: what does the all-zeros predictor score?
1.4 Platforms (the “dialects”)
Three generations of measurement technology, all present in DrugMatrix:
| Platform | Technology | Signal | Dimension |
|---|---|---|---|
| CodeLink | 1st-gen microarray (discontinued) | analog fluorescence | 8,565 |
| Affymetrix | 2nd-gen microarray (still used) | analog fluorescence | 31,042 |
| BioSpyderWT | targeted sequencing (S1500+) + GeniE extrapolation | digital read counts | 22,794 |
Microarrays: little DNA probes stuck to a chip, your sample sticks to matching probes, you measure how bright each spot glows. Analog, saturates, noisy background.
Sequencing: you literally read the mRNA letter by letter and count how many reads map to each gene. Digital, huge dynamic range.
BioSpyder S1500+ has a twist: it only physically measures ~2,700 well-chosen “landmark” genes, then a tool called GeniE extrapolates to the full ~20,000. So a chunk of “BioSpyderWT” data is itself a model prediction. (Worth filing away. It’s a soft spot nobody in these papers dwells on.)
NLP intuition: same language, three different transcription conventions with different phoneme inventories and different amounts of transcription error. TransPlatformer is a normalizer.
1.5 Tissues (the “languages”)
Eight organs: liver (LI), kidney (KI), heart (HE), bone marrow (BM), thigh muscle (TM), spleen (SP), intestine (IN), brain (BR).
Coverage, in measured endpoints (TransTissue Table 2):
Platform LI KI HE BM TM BR IN SP
CodeLink 14.2M 7.7M 5.3M 0.2M 2.7M 0.55M 0.17M 1.5M
Affymetrix 20.3M 11.3M 6.5M 1.3M 0 0 0 0
BioSpyderWT 17.6M 15.9M 10.7M 6.5M 0.09M 0.07M 0.5M 1.6M
Liver is enormous. Brain and intestine are almost nothing. Why? Because liver is where drugs get metabolized, so toxicologists always look there. Brain is hard to sample and rarely the primary target.
NLP intuition: liver is English. It’s the pivot. It’s over-represented in every corpus because that’s where the field’s attention has been. Brain and intestine are your genuinely low-resource languages — and, exactly as in NMT, they’re the ones you actually want to translate into, because getting real data for them is expensive and invasive.
1.6 Why cross-tissue translation is a sane idea at all
You dose a rat with a compound. It goes everywhere in the bloodstream. Liver, kidney, heart, brain all see it. Each organ responds — differently, but they’re all responding to the same systemic event.
So there is genuinely shared latent structure: a common “the animal was poisoned” signal, plus organ-specific programs. If you can measure liver (easy) and infer kidney (harder), you save an animal, a biopsy, and a lot of money.
Whether that inference is actually possible is an open question, and — read this carefully — the TransTissue paper does not claim to have settled it. Section 5, verbatim: “it is possible that there are simply no (or sufficient) signals for cross-tissue translation.” That honesty is a feature. Don’t let anyone, including you, oversell the result.
Part 2: The shape of the data (internalize this and everything else follows)
treatments (m ≈ 2,700–3,000)
─────────────────────────────►
(chemical, dose, duration)
g ┌───────────────────────────────────────┐
e │ CodeLink × LI ░░░░████████░░░░██ │ ← 8,565 rows
n │ CodeLink × KI ░░░████░░░░░░████░ │
e │ CodeLink × BR ░░░░░░░░░░█░░░░░░░ │ ← almost empty
s │ ... │
│ Affymetrix × LI ██████░░░████████░ │ ← 31,042 rows
n │ ... │
≈ │ BioSpyder × LI ░░████████░░░░░░██ │ ← 22,794 rows
375k │ ... │
└───────────────────────────────────────┘
█ = measured (12%) ░ = missing (88%)
A row is (platform, tissue, gene). That’s why there are 375,000 of them and not 20,000 — the same gene Cyp1a1 appears as a separate row for every (platform, tissue) combination.
Now the four papers are just four different questions about this picture:
- ToxCompl+: fill in the ░ cells. Anywhere.
- TransPlatformer: given a CodeLink row-block, produce the BioSpyderWT row-block. Same column.
- TransTissueFormer: given the LI row-block, produce the KI row-block. Same column.
- GenTox: here’s a brand-new column (a drug never tested). Produce it from scratch.
That’s the whole research program.
Part 3: The four papers
3.1 ToxCompl / ToxCompl+ — “Improved Completion of DrugMatrix…”
Question: 88% of the matrix is missing. Can we just… fill it in?
Method — start with Funk-SVD. This is the Netflix Prize algorithm, and the analogy is exact:
| Netflix | DrugMatrix |
|---|---|
| users | genes (rows) |
| movies | treatments (columns) |
| rating | expression fold-change |
| most users haven’t rated most movies | 88% missing |
Assume the matrix is low-rank. Factor M ≈ P × Q where P is (n_genes × r) and Q is (r × n_treatments), with r = 300. Fit by SGD on observed entries only:
min Σ_{i,j observed} ( M[i,j] − ( b_i + b_j + P[i,:] · Q[:,j] ) )²
b_i, b_j are per-gene and per-treatment bias terms. Adam, lr=1e-3.
Why low-rank is a reasonable assumption (their argument, and it’s a good one): 3,000 columns but only 636 distinct drugs. Doxorubicin and Epirubicin are nearly the same molecule and do nearly the same thing. Genes come in co-regulated modules. The same gene is measured in 8 organs. There’s massive redundancy. Rank 300 out of 3,000 is plausible.
What went wrong. They added the new BioSpyderWT data, doubling the matrix (→ “DSMatrix”, 375k × 3k). Mean absolute error improved (0.05 → 0.03). But maximum absolute error got worse (1.58 → 3.99). And here’s the killer detail:
at that worst point: target = −0.77, prediction = +0.94
The gene was suppressed. The model said it was activated. The sign flipped. In toxicology that’s not a small error, it’s the opposite conclusion. More data made the average better and the tails worse — and the tails are the whole point (remember §1.3). Raising r to 500 and training longer made MAE better and MaxAE worse still. That’s the low-rank assumption cracking: rare extreme signals are exactly the part of the matrix that isn’t low-rank.
ToxCompl+’s two fixes:
(a) Side information. Rows have features (platform, marker, organ), columns have features (drug, duration, dosage). Embed each into R^300, add their interactions:
M[i,j] ≈ b_i + b_j + P[i,:]·Q[:,j] + Σ_t P[i,:]·C^t[:,j] + Σ_t R^t[:,i]·Q[j,:]
Result: MaxAE 3.99 → 3.27, but MAE went 0.03 → 0.05. A trade, not a win.
(b) Attention-augmented aggregation. This is their signature move — it recurs in GenTox, so learn it once here. Vanilla MF predicts a plain dot product P[i,:] · Q[:,j], which weights all r=300 latent dimensions equally. Instead, learn two extra factor matrices P' and Q', and let them decide how much each latent dimension matters for this particular cell:
M[i,j] ≈ b_i + b_j + ( P[i,:] ∘ Q[:,j] ) · σ( P'[i,:] ∘ Q'[:,j] )
∘ is Hadamard (elementwise) product, σ is softmax.
NLP intuition:
P ∘ Qis your value vector;σ(P' ∘ Q')is a learned, input-dependent attention distribution over latent dimensions; the dot product is the weighted sum. It’s attention with r “positions” and a single query. Small idea, and it works: MaxAE 3.27 → 0.83, MAE → 0.02.A fair question to hold: is the win from attention specifically, or from doubling the parameters? They anticipate this — they note that raising r from 300→500 (also more parameters) hurt, which is decent evidence the nonlinearity is doing real work. Not airtight, but decent. It’s a good thing to have an opinion about.
Take-away: ToxCompl+ is the engine. TransTissueFormer’s data augmentation is ToxCompl. Everything else sits on this.
3.2 TransPlatformer — “Translating Toxicogenomic Profiles Between Generations of Platforms”
Question: decades of legacy CodeLink and Affymetrix data exist. Modern work is BioSpyderWT. Can we translate the old to the new and reuse it?
Why they rejected Seq2Seq (their §2.2 — this argument recurs in TransTissue and you should be able to state it cold):
- Compute. Self-attention is O(n²) and n = 31,042 for Affymetrix. That’s a ~10⁹ attention matrix. Dead on arrival.
- Genes aren’t a sequence. In language, tokens 1..s predict token s+1 — there’s a real ordering. Genes have no meaningful linear order; they form pathways and networks. Autoregressive left-to-right decoding imposes a structure that doesn’t exist.
- Profiles are ~90% identical to each other. Two completely different drugs produce profiles sharing >90% of their content (because 92% of both is ≈0). Feed those to a Seq2Seq model as “sentences” and it drowns.
This is the most important intellectual move in the whole program, and it’s the one your background makes you best-placed to evaluate. They are saying: transformers, yes; the NLP transformer’s inductive biases, no. Point 1 is unarguable. Point 2 is right that there’s no linear order — though “not a sequence” doesn’t imply “can’t use attention,” it implies “use it without positional encoding,” which is basically a set transformer, and is closer to what they built than they say. Point 3 is the interesting one and I’d push on it: high baseline similarity between inputs is an argument about signal-to-noise, not about architecture. Worth asking the original authors whether these are three independent arguments or really one (compute) plus two rationalizations.
The architecture (shared with TransTissueFormer, so learn it once):
input (B, n) n = 8,565 source genes
│
│ bottleneck FC: n × s s = 512 ← the key move
▼
(B, s)
│
│ projection: 1 × r r = 16 ← give each of the s slots an embedding
▼
(B, s, r)
│
│ L = 32 transformer layers ("TP attention")
▼
(B, s, r)
│
│ ⌈n/s⌉ = 17 PARALLEL decoders, one per output segment
▼
(B, n, r)
│
│ projection: r × 1
▼
output (B, n)
Three deliberate departures from Vaswani:
- The n×s bottleneck compresses 8,565 genes into 512 “slots” before attention. Attention then costs O(s²) = O(512²) instead of O(8565²). Same spirit as Linformer/Performer — project the sequence dimension down. Their complexity table: standard O(n²d), Linformer O(nsd) with an O(ns) score matrix, theirs O(nsd) with an O(s²) score matrix.
- Every output gene attends to the entire input profile. No context window. Any gene in liver can in principle influence any gene in kidney.
- ⌈n/s⌉ = 17 parallel decoders. Not autoregressive — all 17 output segments emit simultaneously. This is what kills the O(n) sequential decode.
NLP intuition: it’s Perceiver-shaped. Cross-attend a huge input into a small latent array, do the work in latent space, broadcast back out. If you’ve read Perceiver IO, you already know this architecture. That’s a genuinely useful connection to bring up with the original authors — the papers cite Linformer and Performer but not Perceiver, and Perceiver IO is arguably the closer relative.
Results: mixed-tissue mode, MAE 0.043 vs 0.09 baseline (>50% reduction), PCC ≈0.71 vs ≈0.37 (doubled), rare-signal MAE <0.22. Downstream: they used it to translate legacy data into BioSpyderWT format, added it to a liver-necrosis classifier’s training set, and got ~8% F1 improvement. That downstream number is the most convincing result in the entire four-paper set — it’s the only one where a translated profile demonstrably helped a task someone actually cares about. Note it.
Bonus: attention weights are interpretable. Translating CodeLink→BioSpyderWT, the model attends heavily to Cmya1, Ca3, Cyp1a1, Ctsh, Sds, Cited4, Atf3, Lcn2, Stac3. Several of those (Cyp1a1 — drug metabolism; Atf3 — stress response; Lcn2 — injury marker) are well-known toxicology genes. That’s a nice sanity check that it learned something real.
3.3 TransTissueFormer — “Translating Transcriptomic Profiles Between Tissues”
Question: given the liver profile for a treatment, predict the kidney profile for the same treatment.
Same architecture as TransPlatformer. The paper is about data scarcity, not architecture.
The pair counts (CodeLink, Table 3) — this table is the paper:
BM BR HE IN KI LI SP TM
BM 325 0 24 0 158 223 161 0
BR 0 65 19 0 3 0 0 0
HE 24 19 629 4 159 176 14 7
IN 0 0 4 20 0 0 0 0
KI 158 3 159 0 906 425 84 24
LI 223 0 176 0 425 1674 164 28
SP 161 0 14 0 84 164 180 0
TM 0 0 7 0 24 28 0 29
NLP intuition — this is a parallel corpus size table and you have seen it a hundred times. LI–KI has 425 sentence pairs. That’s it. BR–LI has zero — a language pair with no parallel data at all. Of 64 possible directions, only 40 have any data, and only 32 are genuinely cross-tissue.
425 examples. Your models have 8,565-dimensional inputs and outputs. Sit with that for a second. The entire paper is a response to that number.
Direct training results:
| RF | MLP | TransTissueFormer | |
|---|---|---|---|
| mean MAE | 0.132 | 0.086 | 0.081 |
| mean rare MAE | 0.32 | — | 0.27 |
| mean PCC | 0.31 | 0.51 | 0.53 |
TransTissueFormer wins, but PCC 0.53 is weak-to-moderate. Even LI–KI, the best-resourced pair, only hits 0.40. The paper says so plainly: “no definite conclusion can be drawn whether cross-tissue translation is possible.”
The interesting biology: HE–TM gets PCC 0.7 on only 7 pairs. LI–KI gets 0.4 on 425 pairs. Data volume isn’t destiny — biological relatedness matters more. Heart and thigh muscle are both striated muscle, both mitochondria-dense, both oxidative-phosphorylation-dependent — so they respond similarly. Liver and kidney both handle xenobiotics but by different mechanisms (liver = Phase I/II metabolism, cytochrome P450; kidney = transporter-mediated uptake, tubular stress), so they decouple.
NLP intuition: Spanish→Portuguese works on tiny corpora. English→Japanese doesn’t work on large ones. Typological distance beats corpus size. Same phenomenon, and it’s the single best cross-domain insight in the paper. There’s a real research question hiding here: can you predict translation quality from a tissue-relatedness prior? That’s “language similarity for transfer selection,” a well-studied problem in your own field.
The main contribution — AugmentTrain&Transfer (Algorithm 1):
1: split treatments m into train set a, test set b
2: F ← G − G[t, b] # hold out TARGET rows at TEST columns
3: G' ← Funk_SVD(F) # ToxCompl! impute the whole matrix
4: G' ← G'[:, s ∪ t] # keep source+target tissue rows
5: split G' column-wise → train / validation
6: train model M on augmented data
7: fine-tune M on real measured data G[s ∪ t, a]
8: test M on real measured data G[s ∪ t, b]
NLP intuition: this is back-translation. Real parallel data is tiny (425 pairs), so manufacture synthetic parallel data (2,711 pairs for HE–TM, up from 7), pretrain on synthetic, fine-tune on real. Sennrich et al. 2016 — which they cite, in the augmentation related-work, as
[36]. The connection is right there.
Two subtleties they’re proud of, and you should understand both:
- Why impute the whole matrix, not just the LI/KI sub-matrix? Because a heart profile for treatment 3 helps you reconstruct the liver and kidney profiles for treatment 3. Restricting to LI/KI would lose 43% of the recoverable pairs in their toy example. NLP analogy: multilingual back-translation — pivot through a third language.
- Why hold out only the target and not the source? If you remove both, the test column is empty, and matrix completion has nothing to anchor on.
Results with augmentation: MAE 0.081→0.059, rare MAE 0.27→0.159, PCC 0.53→0.793. Improvements of 38.3% / 69.1% / 50.1%. Nearly every tissue pair improves. LI→SP hits 0.87.
The multi-task failure — and why you specifically should care. They tried one model translating LI→everything. PCC collapsed to 0.23 (vs 0.53 single-task). Their diagnosis, verbatim:
“given the same source LI profile the model cannot decide which is the correct target”
Anyone from NMT will recognise this immediately. Same liver input, three valid outputs (kidney, heart, spleen) — the model averages them and produces mush. This is precisely the problem multilingual NMT hit and solved in 2016: you have to tell the model which language to decode into. Johnson et al.’s multilingual NMT prepends a <2es> target-language token; mBART and M2M-100 do the same. Add a target tissue embedding — one token, prepended or added to the bottleneck — and the ambiguity is gone by construction.
Formally (16_MATH_NOTES.md §4.2): under squared loss the optimal single-valued is the conditional mean — the average over whichever organs happen to be present for that treatment. The model is behaving optimally for a mis-specified problem. Mush is the correct answer to an ill-posed question.
Two caveats worth keeping attached. This has not been verified to fix the number, and there are reasons it might not: 425 pairs is very little, and the conditioning signal could be swamped entirely. But the stated diagnosis is a textbook conditioning bug with a textbook fix, and the paper reports it as a negative result rather than as a bug. That distinction is the whole point — it reclassifies a finding as an artifact, and the fix costs one embedding.
Biological validation (§6) — the best part of the paper. They took 44 predicted kidney profiles and asked a toxicologist to check them blind:
- Gemfibrozil (a PPARα activator): the top enriched gene set in the predicted kidney profile was PPARα activation, with fatty-acid-metabolism pathways dominating. Correct.
- Cisplatin (nephrotoxic chemotherapy): predicted profile showed TP53 enrichment (genotoxicity) and matched a real published cisplatin-kidney-damage signature. Correct.
- Lead acetate: showed cell cycle and p53, and enriched against Lead (IV) acetate in curated DrugMatrix gene sets. Initially looked like a miss; on inspection, both lead species do the same thing. Correct.
This is worth more than any PCC. It’s the difference between “the numbers went up” and “a domain expert looked at the output and said yes, that’s what lead poisoning looks like.” When you evaluate the rest of this program, this is the bar. It’s also, notably, only 3 compounds reported out of 44 — a fair question is what the other 41 looked like.
3.4 GenTox — “Predictive Transcriptomics with Attention-Augmented Inductive Matrix Factorization…”
Question: predict the profile for a compound never tested. This is the hardest axis — a genuinely new column.
This paper opens with theory, and the theory is the most valuable thing in the entire four-paper set. Read §2 even if you skip everything else.
Theorem 1 — Pearson correlation is a liar (on absolute expression)
Let u = s + δ₁, v = s + δ₂, where s is a shared base vector and δ₁, δ₂ are sparse perturbations with k = o(n) nonzero entries. Then ρ(u,v) → 1 as n → ∞.
In English: take two completely unrelated drug profiles. They share the base “this is a liver cell” signal s. Each has a small, sparse drug-specific perturbation. Their correlation goes to 1 — asymptotically perfect — no matter what the drugs are. Because the shared baseline dominates and the sparse differences vanish as n grows.
Their empirical demonstration is brutal, and it’s their own baseline model:
| PCC | p-value | |
|---|---|---|
| treatment profile-wise (column) | 0.992 | 9.37e-35 |
| gene profile-wise (row) | 0.0084 | 0.634 |
A model reporting PCC 0.992 that has learned essentially nothing (row-wise correlation is 0.008 — indistinguishable from noise). This is a real, trained MLP, and it looks spectacular by the standard metric.
NLP intuition: BLEU on a task where every reference shares 92% of its tokens. You’d score 0.95 by copying the input. This theorem is the toxicogenomics version of “your metric has a trivial-baseline problem,” proved rather than asserted. Your group has proven that the field’s default metric is broken. That is a strong, citable, defensible position and you should know it cold.
Theorem 2 — but fold-change is different
Let u = t (sparse, k nonzero), v = t + η with η ~ N(0, σ²Iₙ). Then ρ(u,v) → 0 in probability.
Because fold-change already subtracted the baseline, there’s no shared s to inflate things. Now correlation is governed by SNR = ‖t‖²/(σ²n). With large n and constant noise, correlation is crushed.
So the two theorems cut opposite ways, and this is the subtle bit:
- On absolute data (TG-GATEs intensity): PCC is inflated → high PCC is meaningless.
- On fold-change data (DrugMatrix): PCC is suppressed → high PCC is hard-won and meaningful.
This partially defends TransTissueFormer’s PCC 0.793 — DrugMatrix is fold-change, so Theorem 2’s regime applies, and 0.793 against a headwind is a real number. It does not defend it against a mean-predictor baseline, which is a different failure mode neither theorem covers (Theorem 2 assumes i.i.d. Gaussian noise; a mean predictor’s error is structured, not Gaussian). Hold that distinction — it’s the sharpest question in Part 6.
The rank-degeneracy argument
Consider a model that outputs x = αⱼ · y for ground truth y, with a different scalar αⱼ per column. Every column correlates perfectly, ρ = 1. But now look at rows — gene i₁ across all treatments vs gene i₂ across all treatments. Each row got multiplied by a different, arbitrary αⱼ per column. Row-wise structure is destroyed.
Why that’s fatal: gene network analysis — the thing biologists actually want — needs rows. It builds a graph where nodes are genes and edges are co-expression across treatments, then finds hub genes and modules. A model that’s perfect column-wise and garbage row-wise produces profiles that look great and are useless for the downstream science.
So: always report row-wise AND column-wise metrics. Their proposed metric suite: MAE, rare MAE, row-wise PCC, column-wise PCC, with MAD as a data characteristic.
The GenTox method
Three components:
(a) Deep inductive matrix factorization. Vanilla MF can’t handle a new column — Q[:,j] doesn’t exist for an untested drug. So replace the lookup tables with networks over features:
row features (gene, tissue, platform) ──► Row NN ──┐
├──► Mixer NN ──► Ĝ[i,j]
col features (compound, dose, duration) ─► Col NN ──┘
Sample random (rᵢ, cⱼ) cells across the whole matrix each minibatch — that’s what forces row and column structure to be preserved (directly addressing §2.3). Degenerates to vanilla MF if the Mixer is a dot product and dims match. Now a new drug is just a new feature vector → the Col NN produces its factor. Inductive, not transductive.
(b) Contrastive learning for the induction basis. How do you featurize a molecule? Classical answer: Mordred descriptors (1,826 hand-crafted physicochemical numbers) or Morgan/ECFP fingerprints (substructure bit vectors). Their answer: pretrain a GNN on ~1M compounds (in-house) and use its learned embedding.
Two variants:
- Positive/negative contrastive: augment each molecular graph twice (atom masking + bond deletion, carefully avoiding disconnection), same molecule = positive pair, different = negative, InfoNCE loss.
- Graph InfoMax: maximize mutual information between node embeddings and the graph readout,
max_θ Σ_G Σ_v I_θ(z_v, z_G), via a discriminator (MI is intractable directly).
Finding: InfoMax > contrastive pairs > Mordred ≈ Morgan. Learned representations beat hand-crafted ones. Encoder is a 2-layer GCN, hidden 64, output 64×300.
NLP intuition: this is word2vec vs. one-hot, or BERT vs. bag-of-words, for molecules. And note — this is already a foundation model. Pretrained on 1M compounds, self-supervised, frozen, used as a feature extractor downstream. the ORNL–NIEHS program has already done the thing the TransTissue future-work paragraph proposes to explore. They did it on the chemistry side. Nobody’s done it on the gene side. That asymmetry is your opening — see Part 6.
(c) Attention-based aggregation. The same (P ∘ Q) · σ(P' ∘ Q') from ToxCompl+. Ablation: attention > plain.
Data: Open TG-GATEs, in vivo rat liver, 6,766 samples / 2,238 distinct treatments / 139 compounds, 3 doses × 4 durations (3/7/14/28 days), 8:2 split, Affymetrix 31,099 probes.
Note the caveat: the paper is a draft. Broken Figure ?? refs, [?] citations, and §5 (Gene Network Analysis) and §6 (Out-of-distribution validation) are empty section headers. The gene network analysis is the thing §2.3 spends three pages arguing is essential — and it isn’t done yet. That’s not a criticism, that’s an opportunity. If you’re looking for a place to contribute immediately, §5 is an unfilled hole in a paper that already argues for why it must be filled. Ask about it.
Part 4: The NLP ↔ toxicogenomics dictionary
Keep this open while you read. It’s the highest-leverage thing in this document for you specifically.
| Their world | Your world |
|---|---|
| transcriptomic profile (R^8565) | a very long, dense, interpretable embedding |
| tissue | language |
| liver | English (the over-resourced pivot) |
| brain, intestine | low-resource languages you actually want |
| platform (CodeLink/Affymetrix/BioSpyder) | dialect / transcription convention / domain |
| (chemical, dose, duration) | the source sentence’s content |
| shared treatments between tissues | parallel corpus size |
| Table 3 (the 8×8 pair matrix) | your language-pair coverage table |
| LI–KI = 425 pairs | a low-resource pair |
| BR–LI = 0 pairs | a zero-shot pair |
| HE–TM works on 7 pairs | Spanish→Portuguese: typological closeness beats corpus size |
| LI–KI struggles on 425 | English→Japanese: distance beats data |
| matrix completion augmentation | back-translation (they cite Sennrich!) |
| impute via a third tissue | pivot-based / multilingual back-translation |
| the multi-task PCC=0.23 failure | missing target-language token (<2es>) |
| rare signals (the 8%) | the long tail your metric ignores |
| PCC | BLEU — and Theorem 1 is the proof it’s gameable |
| row-wise vs column-wise PCC | corpus-level vs sentence-level metric disagreement |
| GenTox’s GNN on 1M compounds | word2vec/BERT for molecules — a foundation model they already built |
| Mordred descriptors / Morgan fingerprints | hand-crafted features |
| induction basis | a way to embed an OOV token from its features (like FastText subwords) |
| scGPT / CellFM / UCE | mBERT / XLM-R / mT5 |
| the n×s bottleneck | Linformer/Performer — really Perceiver |
| 92% of values ≈ 0 | extreme class imbalance in regression clothing |
Part 5: Single-cell foundation models — background and current state
Everything here is the “other half” — the literature the original authors’ TransTissue future-work paragraph gestures at. My reliable knowledge runs to ~mid-2025; it is now July 2026. Treat the “foreground” section as a starting point to verify, not gospel. I can search for what’s landed since.
5.1 The other measurement revolution: single-cell
Everything above is bulk transcriptomics: grind up a whole liver, measure average expression. You get one vector per sample — an average over millions of cells of dozens of types.
Single-cell RNA-seq (scRNA-seq) measures each cell individually. Instead of one vector per liver, you get 10,000 vectors, one per cell. You can see that hepatocytes did X while immune cells did Y — information that bulk averages away.
The cost: data per cell is terrible. You detect maybe 1,000–5,000 genes out of 20,000 in any given cell. The rest are zeros — and you can’t tell “not expressed” from “we missed it” (dropout). So scRNA-seq is many observations, each very noisy and sparse.
NLP intuition: bulk = document-level embeddings. Single-cell = token-level, but every token is 70% masked and you don’t know which. You trade precision for granularity and count.
5.2 Why “foundation model” happened here
Millions of public scRNA-seq cells + self-supervised objectives + transformers = the obvious play. The pitch is exactly BERT’s: pretrain on unlabeled cells at scale, learn “the language of biology,” fine-tune on your small labeled task.
The cell-as-sentence metaphor drives all of it:
| Language | Single-cell |
|---|---|
| sentence | cell |
| word | gene |
| word order | (nothing — genes are a set) |
| word frequency | expression level |
| masked language modeling | masked gene / masked expression prediction |
| vocabulary | ~20,000 genes |
The load-bearing weirdness: there is no word order. A cell is a set of (gene, value) pairs. So every one of these models is really a set transformer with no positional encoding, and the hard design problem is how to encode the value — because “gene X is present” is much less informative than “gene X is present at level 7.”
Each model answers that differently, and that’s the main axis of variation:
- Geneformer (Theodoris et al., Nature 2023, ~30M cells): rank-value encoding. Sort genes by expression, feed the ranked list as tokens. The value becomes position in the ranking. Clever — it’s normalization-free and robust across batches. But it throws away magnitude: rank 5 vs rank 6 could be a 2× or a 1.01× difference.
- scGPT (Cui et al., Nature Methods 2024, 33M cells): gene token + binned expression value embedding, added together. Generative masked pretraining. The most widely used; fine-tuned for cell-type annotation, perturbation prediction, GRN inference, batch integration. This is
[8]in TransTissue. - scBERT: BERT-ish, gene2vec embeddings, Performer attention for the long gene sequence.
- scFoundation: ~50M cells, an asymmetric encoder-decoder (xTrimoGene) that only encodes non-zero genes — a direct attack on the sparsity problem.
- UCE (Universal Cell Embeddings, Rosen et al.): 36M cells across 8 species. The trick: genes are tokenized by feeding their protein sequence through ESM2 (a protein language model). So a gene’s token is derived from what its protein looks like, not from a fixed vocabulary lookup. Consequence: it can embed any protein-coding gene from any species, including species never seen in training, zero-shot. Hold that thought hard.
- CellFM (Zeng et al., Nature Communications 2025, 100M human cells, ~800M params, ERetNet). This is
[49]in TransTissue. - GeneCompass, scMulan, SATURN and others in the cross-species / multi-omics direction.
NLP intuition: this is 2018–2020 all over again. scBERT is BERT, scGPT is GPT, UCE is XLM-R-with-a-clever-tokenizer, CellFM is “same thing but 3× the data.” The field is speed-running your field’s history. Which means you know what happens next, and roughly in what order. That is not a small advantage.
5.3 Perturbation prediction — the other cited thread
Different question: given an untreated cell and a perturbation, predict the perturbed cell. Directly relevant to the original authors’ program, since that’s what a toxicogenomics profile is.
-
CPA (Compositional Perturbation Autoencoder; Lotfollahi et al., Mol Sys Bio 2023) —
[27]in TransTissue. The key idea, and it’s beautiful: decompose the latent into additive, disentangled parts:z_cell = z_basal + z_drug(compound, dose) + z_covariate(cell type, ...)Train an adversarial classifier to force
z_basalto contain no drug information. Then you can recombine at test time: take a basal state you’ve seen, add a drug embedding you’ve seen, get a combination you’ve never seen. Compositional generalization. -
chemCPA: CPA + a molecular structure encoder → generalize to unseen chemicals.
-
GEARS: GNN over a gene-ontology graph → predict unseen genetic perturbations by leaning on the knowledge graph.
-
PerturbNet (Yu et al., Mol Sys Bio 2025) —
[47]. Perturbation representation → latent → cell state, via normalizing flows. Handles unseen chemical and genetic perturbations. -
PerturbAtlas (NAR 2025) —
[51]. ⚠️ This is a database of bulk RNA-seq perturbation datasets, not a generative method. TransTissue miscites it as one (“Perturbation predictions using generative methods (e.g., see [51, 47, 27])”). Small thing, easy fix, and noticing it is a good way to show the original authors you actually read the references.
Look at CPA and then look at ToxCompl.
z_basal + z_drug + z_covariate → decoderversusb_i + b_j + P[i,:]·Q[:,j]. Funk-SVD is the linear special case of CPA. this line of work has been building a linear, transductive CPA and calling it matrix completion. That’s not a criticism — it’s the observation that these two literatures are the same idea at different points on the nonlinearity axis, and nobody has said so in print. That connection is worth a paper by itself.
5.4 The critiques — learn these before you get excited
This is the most important subsection in Part 5. The single-cell FM field has a replication problem, and two papers land hard:
-
Kedzierska et al., Genome Biology 2025 — “Zero-shot evaluation reveals limitations of single-cell foundation models.” Evaluated scGPT and Geneformer zero-shot. They are outperformed by simply selecting highly variable genes — a baseline from 2010 that involves no learning whatsoever. Also beaten by scVI and Harmony. The authors’ hypothesis: masked-language-modeling on cells may simply not produce useful cell embeddings.
-
Ahlmann-Eltze, Huber & Anders, Nature Methods 2025 — “Deep-learning-based gene perturbation effect prediction does not yet outperform simple linear baselines.” Benchmarked five foundation models plus two other deep models. For unseen combinatorial perturbations: they don’t beat an additive model. For unseen genes: they don’t beat predicting the mean of the training perturbations. Their hypothesis for why: the pretraining data is observational, not interventional — you can’t learn what happens when you push the system by only watching it sit still.
-
Related: Boiarsky et al. found logistic regression competitive with scGPT/Geneformer for cell-type annotation.
This is the “BERT beats LSTM… wait, does it?” moment, or the whole ELMo-era-reproducibility discourse. You’ve lived through this genre. The lesson transfers exactly: scale is not automatically transfer. 33M cells of observational data may teach you what cells look like without teaching you what drugs do to them.
Strategically, this is very good news for you. It means the honest answer to “why don’t you just use scGPT?” is not a defensive shrug — it’s “because the current best evidence says it wouldn’t help, here are two Nature-family papers, and we tested it anyway and here’s what we found.” Skepticism, properly cited and properly tested, is a stronger position than enthusiasm.
5.5 The foreground (as of ~mid-2025 — verify this)
- Tahoe-100M (Vevo Therapeutics + Arc Institute, Feb 2025): 100M cells, ~1,100 drugs × 50 cancer cell lines, ~60,000 drug-cell combinations. Open source. This is drug perturbation at scale, which is much closer to the original authors’ problem than any cell atlas. This matters and should be on your radar.
- Arc Institute Virtual Cell Atlas, CZI Virtual Cells Platform: infrastructure plays, aggregating datasets and hosting models.
- STATE (Arc Institute): a perturbation-response model trained on the above.
- The field’s stated goal has consolidated around “the virtual cell” — simulate a cell in silico well enough to replace experiments. Enormous funding, real skepticism, unresolved.
- The evaluation crisis is the live debate. After Kedzierska and Ahlmann-Eltze, the field is (rightly) arguing about benchmarks and baselines rather than about parameter counts. Good time to arrive with a rigorous-evaluation mindset.
Things I’d want to check before relying on any of it (I can search):
- What landed at NeurIPS/ICML 2025–2026 on single-cell FMs?
- Did anyone answer Ahlmann-Eltze? Are there FMs that now beat linear baselines?
- Has anyone built a bulk or toxicogenomics foundation model? (As of my cutoff: not really. That’s conspicuous.)
- Is there a rat-specific or cross-species perturbation FM?
- What happened with STATE / the virtual cell push?
Part 6: Where this program is incomplete
The four papers leave three kinds of gap. They’re developed properly elsewhere; this is the map.
Gap 1 — the baselines are missing. None of the four report what predicting zero scores, what predicting the mean target profile scores, or what a plain linear map scores. This is not pedantry: it is the single most active methodological problem in the surrounding field. The Virtual Cell Challenge 2025 ran 1,200+ teams and reported that perturbation models “are not yet consistently outperforming naive baselines across all metrics.” Ahlmann-Eltze et al. (2025) found five foundation models plus two deep models failing to beat additive and mean baselines.
→ 14_RESEARCH_AGENDA.md §A0, with runnable checks in code/.
Gap 2 — the metrics argument didn’t propagate. GenTox §2 proves from first principles that Pearson correlation is unreliable for transcriptomic profiles, and that row-wise and column-wise metrics must both be reported. TransTissue reports column-wise PCC only. The metric that would settle its central claim is one the same program already argued for, in another paper.
This is now urgent rather than merely tidy: “The Metric Picks the Winner” (June 2026) shows model rankings inverting end-to-end with metric choice on drug-response prediction. GenTox was early and has been vindicated by the field’s own crisis — while remaining an unpublished draft with two empty sections.
→ 16_MATH_NOTES.md §3, and 15_FRONTIER.md F6 for what should replace PCC.
Gap 3 — the foundation-model paragraph is a placeholder. TransTissue §7 proposes adapting scGPT and CellFM “in future work.” The obstacle is more concrete than the paragraph admits: scGPT’s value encoder consumes binned absolute expression; DrugMatrix is log fold-change. That’s a type error, not a domain gap, and no amount of fine-tuning fixes it. Naming it precisely turns a weak hedge into a real argument — and points at the actual bridges.
→ 10_SOTA_LANDSCAPE.md for the 2026 state of that literature, 15_FRONTIER.md for the program.
Part 7: Open questions
Questions the four papers raise and don’t answer. Roughly ordered from “needs the original study metadata” to “needs new work.”
On the data
- How much of BioSpyderWT is GeniE extrapolation rather than direct measurement? Some “measured” data is itself model output, so ToxCompl+ on DSMatrix is partly imputing from imputations. Nobody has quantified the error this injects.
- What were the actual study panels? Table 3 decomposes exactly into 24 tissue panels (
16_MATH_NOTES.md§6), but the decomposition is underdetermined. The original study designs would settle it — and settle whether the missingness is MNAR. - What do the other 41 of the 44 biologically-validated kidney profiles look like? Three are reported and all three are correct. The hit rate is unknown.
On the models 4. Why rank exactly ? Tuned, or inherited? Does it interact with the bottleneck ? 5. TransTissueFormer uses per slot — very small by NLP standards. Compute-bound, or does something break when it grows? 6. Is the ToxCompl+ attention win from the nonlinearity or from doubling the parameters? The clean ablation is with . 7. Is the bottleneck better understood as Perceiver IO than as Linformer/Performer? The papers cite the latter; the former is the closer relative.
On the claims
8. What is TransTissueFormer’s row-wise PCC? Not reported anywhere, and it is the metric GenTox §2.3 argues is mandatory — and the one that exposes a mean predictor (16_MATH_NOTES.md §3.5).
9. Does Theorem 2 defend the reported ? It applies to fold-change data, so partly. But it assumes i.i.d. Gaussian noise, and a mean predictor’s error is structured. Neither theorem covers that case.
10. Algorithm 1 line 3 already imputes the withheld cells. What does Funk-SVD alone score on them, without the transformer?
11. Writing out what the imputed matrix implies about the LI→KI map gives something affine of rank — verified in code/experiments/exp02_rank_test.py, where ridge solves it exactly (). Does that mean Figure 7’s pretrain row is measuring linear-map approximation? Or does the implementation depart from the pseudocode in a way that breaks the algebra?
12. Was target-tissue conditioning tried for the multi-task model? The reported diagnosis — “cannot decide which is the correct target” — is the exact failure multilingual NMT has with a missing target-language token, and it has a one-embedding fix.
Loose ends
13. GenTox §5 (Gene Network Analysis) and §6 (Out-of-distribution validation) are empty section headers. §2 spends three pages proving §5 is essential.
14. PerturbAtlas [51] is cited as a generative method in TransTissue §7. It’s a database.
15. The closest prior work to TransTissueFormer — rat→human hepatocyte translation with a bottleneck DNN (PLOS One 2020), explicitly framed as “circumventing the current reliance on orthologs” — is not cited in any of the four papers.
Part 8: Reading order
The program, in dependency order
- ToxCompl+ (
completionplus_CSCI.pdf) — the foundation. Funk-SVD and the MaxAE/sign-flip failure. - TransPlatformer (
TransPlatformer____BMC_final.pdf) — the architecture and the anti-Seq2Seq argument. - TransTissue (
TransTissue (1).pdf— the newer one) — scarcity + back-translation-by-matrix-completion. - GenTox (
GenerativeTox.pdf) — §2 is the most valuable text in the set. Read it twice.
The outside literature
5. Kedzierska et al. (Genome Biology 2025) — the zero-shot critique
6. Ahlmann-Eltze et al. (Nature Methods 2025) — the linear-baselines critique
7. Virtual Cell Challenge 2025 wrap-up — 1,200 teams, baselines still not beaten
8. scGPT (Nature Methods 2024) — [8]
9. CPA (Lotfollahi, Mol Sys Bio 2023) — [27]. Read it against ToxCompl. Funk-SVD is its linear special case.
Read 5–7 before 8–9. Knowing what doesn’t work is worth more than knowing what claims to.
These docs
01_BACKGROUND.md— the biology, from zero, for an ML audience10_SOTA_LANDSCAPE.md— the 2026 field, sourced16_MATH_NOTES.md— every derivation, in LaTeX14_RESEARCH_AGENDA.md— defensible vs speculative tracks15_FRONTIER.md— the research programcode/— runnable checks; the baselines and the linearity test
Appendix: Glossary
| Term | Meaning |
|---|---|
| transcriptomic profile | vector of expression values across all genes for one condition |
| fold change | ratio of treated to control expression; log10 in DrugMatrix. 0 = no effect |
| bulk RNA-seq | grind up tissue, measure the average over all cells |
| scRNA-seq | measure each cell separately; more granular, far noisier |
| dropout (single-cell) | a gene is expressed but the assay missed it → indistinguishable from a real zero |
| probe / probe-set | the physical thing on a microarray that detects one gene; multiple probes per gene |
| microarray | analog: fluorescence brightness ∝ abundance. CodeLink, Affymetrix |
| TempO-Seq / S1500+ | targeted sequencing of ~2,700 landmark genes |
| GeniE | tool extrapolating S1500+ landmarks → whole transcriptome. Its output is itself a prediction |
| DrugMatrix | rat in vivo toxicogenomics; 600+ chemicals, 8 tissues, 3 platforms |
| Open TG-GATEs | the other big tox database; rat liver/kidney + human hepatocytes, 170 compounds |
| toxicogenomics | studying gene expression response to toxic exposure |
| MOA | mechanism of action — how a drug does what it does |
| treatment | a (chemical, dose, duration) triple = one column |
| in vivo / in vitro | in a live animal / in a dish |
| PPARα | a nuclear receptor; fibrate drugs activate it → fatty acid metabolism genes fire |
| Cyp1a1 / cytochrome P450 | drug-metabolizing enzymes. Massively induced by many toxicants. Poorly conserved rat↔human |
| TP53 / p53 | the DNA-damage response gene. Fires under genotoxic stress |
| nephrotoxic / hepatotoxic | kidney-damaging / liver-damaging |
| enrichment analysis | given a gene list, which known gene sets are over-represented? |
| Enrichr | the standard web tool for the above |
| gene network analysis | build a graph of genes (edges = co-expression across treatments), find hubs/modules. Needs row-wise structure |
| HVG | highly variable genes — the dumb baseline that beats scGPT zero-shot |
| ortholog | the “same” gene in another species. ~80% clean 1:1 rat↔human; P450s are a mess |
| MAE / rare MAE | mean absolute error, overall / restricted to the ~8% non-normal values |
| MaxAE | maximum absolute error. The metric that exposed ToxCompl’s sign flips |
| PCC | Pearson correlation. Column-wise = within a profile across genes; row-wise = within a gene across treatments |
| Funk-SVD | the Netflix Prize factorization. M ≈ P×Q + biases, SGD on observed entries |
| induction basis | features letting you embed an item never seen in training (e.g. a new drug) |
| Mordred / Morgan (ECFP) | hand-crafted molecular descriptors / substructure fingerprints |
| InfoMax | self-supervised objective maximizing MI between local and global representations |
Generated from: completionplus_CSCI.pdf, TransPlatformer____BMC_final.pdf, TransTissue (1).pdf, GenerativeTox.pdf.
External claims sourced in 17_SOURCES.md. Single-cell “foreground” reflects knowledge to ~mid-2025 — flag anything you want re-checked against 2026.
The State of the Art — Genomics & Single-Cell Foundation Models, July 2026
Every 2025–2026 claim here is sourced. Links at the bottom and inline where load-bearing. Anything drawn from older background knowledge rather than a checked source is flagged as such in 17_SOURCES.md.
The one-line summary, and it is not what you’d expect:
The field scaled to 100M+ cells, built genuinely impressive models, ran a competition with 1,200 teams — and the models still do not consistently beat naive baselines at perturbation prediction. The winning entries were deep learning fused with classical statistical features. Pure end-to-end learning has not solved this.
That is extraordinarily good news for you. Read on.
Part 1: How we got here (2021 → 2026)
1.1 The cell-as-sentence bet
Millions of public scRNA-seq cells + self-supervised objectives + transformers = the obvious play. The pitch was BERT’s, verbatim.
The design problem, as covered in 01_BACKGROUND.md §8.1: a cell is a set, not a sequence. No word order. So the real question every model answers differently is how do you encode the expression value? That’s the axis:
| Model | Year | Scale | Value encoding | The idea |
|---|---|---|---|---|
| scBERT | 2022 | ~1M | gene2vec + binned | BERT + Performer for long gene sequences |
| Geneformer | 2023 | ~30M | rank-value | sort genes by expression, feed the ranking. Normalization-free, batch-robust — but throws away magnitude |
| scGPT | 2024 | 33M | gene token + binned value | generative MLM. The one everyone uses. TransTissue [8] |
| scFoundation | 2023 | ~50M | continuous, asymmetric | xTrimoGene: only encodes non-zero genes — a direct attack on dropout |
| UCE | 2024 | 36M, 8 species | ESM2 protein embeddings | genes tokenized by their protein sequence ⟹ any gene, any species, zero-shot |
| CellFM | 2025 | 100M human | — | ERetNet, ~800M params. TransTissue [49] |
| TranscriptFormer | 2025 | — | generative | cross-species |
| CellVQ | 2026 | 68M | vector-quantized | 500M params |
| CellOS | 2026 | — | joint-embedding predictive | multi-view; “world model of cellular state” |
| BMFM-RNA | 2025 | — | whole-cell expression decoding | IBM |
NLP framing: you are watching your own field’s 2018–2020 speed-run. scBERT is BERT. scGPT is GPT. UCE is XLM-R with a clever tokenizer. CellFM is “same thing, 3× data.” CellOS is JEPA.
Which means you know what comes next, roughly in order. That is not a small advantage. You’ve seen how this movie ends — including the part where someone checks the baselines.
1.2 The perturbation thread
Different question: given an unperturbed cell and an intervention, predict the perturbed cell. This is the one that matters for toxicogenomics, because a tox profile is a perturbation response.
- CPA (Lotfollahi, 2023) — TransTissue
[27]. Additive disentangled latent: with an adversarial classifier forcing to carry no drug info. Then recombine at test time → compositional generalization. - chemCPA — CPA + molecular structure encoder → unseen chemicals.
- GEARS — GNN over a gene-ontology graph → unseen genetic perturbations via the knowledge graph.
- PerturbNet (2025) — TransTissue
[47]. Perturbation representation → latent → cell state via normalizing flows. - PerturbAtlas (2025) — TransTissue
[51]. ⚠️ A database of bulk RNA-seq perturbation datasets, not a generative method. TransTissue miscites it as one.
⭐ Look at CPA next to ToxCompl. Funk-SVD is the linear special case of CPA. this line of work has been building a linear, transductive CPA and calling it matrix completion. The two literatures are the same idea at different points on the nonlinearity axis, and nobody has said so in print. (
16_MATH_NOTES.md§4 — and check the literature before claiming novelty.)
Part 2: The 2026 frontier
2.1 Tahoe-100M — the data unlock
Vevo Therapeutics + Arc Institute, Feb 2025.
- 100M cells, ~1,100–1,200 drugs × 50 cancer cell lines, ~60,000 drug-cell combinations
- ~50× larger than all previously public drug-perturbed single-cell data combined
- Open source, on HuggingFace, first contribution to Arc’s Virtual Cell Atlas
Single-cell perturbation data went from “scarce” to “abundant” in one release. Interventional, at scale.
2.2 Arc’s STATE — the flagship
- Trained on 167M observational cells + >100M perturbational cells across 70 human cell contexts
- Two modules:
- SE (State Embedding) — an organized map of cell states
- ST (State Transition) — predicts how expression shifts under drugs/genetic changes
- Reported: 50% improvement in distinguishing perturbation effects; 2× accuracy identifying true differentially expressed genes vs prior models
The architecture is worth noting for its own sake: separating “where am I” from “how do I move” is the same decomposition as CPA’s basal/drug split, and the same as ToxCompl’s / split. Three literatures, one idea.
2.3 Evo 2 — the DNA side
- 9.3 trillion DNA base pairs, all domains of life
- 7B and 40B parameters, 1 million token context, single-nucleotide resolution
- Predicts functional impact of variants — including BRCA1 pathogenicity — without task-specific fine-tuning
- Autonomously learned exon-intron boundaries, transcription factor binding sites, protein structural elements
Different axis from everything above: sequence → function, not expression → expression. Relevant to you mainly as evidence that the “genomics foundation model” project does work when the task is well-posed and the data is enormous.
2.4 The rest of the 2026 crop
CellScientist (closed-loop refinement), PRiMeFlow (expression heterogeneity in perturbation response), SCALE (conditional atlas-level endpoint transport), Cell-JEPA, AlphaCell, Chreode, VCWorld, dnaHNet, Evo2HiC.
Also a wave of benchmarks: VCBench, scBenchmark (7 tasks, 24 datasets, 3.2M cells), CellBench-LS (low-supervision), scFME (in-silico perturbation).
The benchmark explosion is itself the tell. Fields build benchmarks when they stop trusting each other’s numbers.
Part 3: The evaluation crisis ⭐
This is the most important section in this document. Read it twice.
The critique literature has gone from “a couple of skeptical papers” to the field’s central problem. Five results, escalating:
3.1 Kedzierska et al. — zero-shot doesn’t work
scGPT and Geneformer, evaluated zero-shot, are outperformed by selecting highly variable genes — a 2010 heuristic involving no learning at all. Also beaten by scVI and Harmony. Best batch-integration scores across all datasets came from plain HVG selection.
Their hypothesis: masked language modelling on cells may simply not produce useful cell embeddings.
3.2 Ahlmann-Eltze, Huber & Anders — linear baselines win
Five foundation models + two other deep models, benchmarked on perturbation prediction:
- unseen combinatorial perturbations → don’t beat an additive model
- unseen genes → don’t beat predicting the mean of the training perturbations
Their diagnosis, and it’s the deep one: the pretraining data is observational. You cannot learn what happens when you push a system by only watching it sit still.
3.3 Souza & Mehta — parameter-free wins ⭐ NEW
“Parameter-free representations outperform single-cell foundation models on downstream benchmarks”, Feb 2026.
Simple, interpretable pipelines — careful normalization plus linear methods — reach state-of-the-art or near-SOTA across the standard benchmarks. Including:
outperforming foundation models on out-of-distribution tasks involving novel cell types and organisms absent from the training data.
Read that again. The out-of-distribution generalization case — the thing foundation models are supposed to be for — is where linear methods beat them.
Their conclusion: “the biology of cell identity can be captured by simple linear representations of single-cell gene expression data.”
3.4 The Virtual Cell Challenge 2025 — the field checked, at scale ⭐⭐
Arc Institute, results at NeurIPS 2025.
- 5,000+ registered, 114 countries
- 1,200+ teams submitted, 300+ final submissions
- Winners: BioMap Research (1st), Altos Labs (Generalist Prize, flow-matching generative model)
The organizers’ own conclusion:
“perturbation prediction models are not yet consistently outperforming naive baselines across all metrics”
and
“The winning approaches combined deep learning with classical statistical features, suggesting pure end-to-end learning is yet to solve this problem.”
This is not a skeptic’s paper. This is the field’s own flagship competition, run by the institute that built STATE and Evo 2, reporting that after 1,200 teams tried, naive baselines are still not consistently beaten.
3.5 “The Metric Picks the Winner” — the rankings aren’t real ⭐
Drug-response prediction on held-out chemistry (THP-1 cells, DRUG-seq). The finding:
the model ranking inverts almost end to end depending on which metric you use. Under an inverse-variance proxy, a linear fingerprint baseline appears to win and the deep models look pointless. Under the contest’s true active-set metric, the deep models win and the proxy’s “winner” is the worst chemistry-aware predictor.
Described as “the first [such demonstration] on real held-out drug chemistry.”
⭐⭐ This is GenTox §2, empirically, on drug response, in 2026.
GenTox proved in 2024 that PCC is unreliable for transcriptomic profiles (Theorem 1: unrelated profiles correlate at ; their own baseline scored with ). The field has now independently rediscovered that metric choice determines the winner.
GenTox §2 was early and is now vindicated by the field’s own crisis. That’s not a small thing — it’s a genuine claim to priority on the most important open problem in the area. It’s also, right now, an unpublished draft with
Figure ??and[?]citations and two empty sections.If you do one thing this year, finishing GenTox might be it.
3.6 The meta-problem
From the benchmark papers: “when benchmarking is conducted by the same group that introduced new methods, evaluations tend to exaggerate the performance of the latest models.” And: custom benchmarks select datasets and metrics that flatter the authors’ model.
Which applies to everyone, including the four papers you’re reading, and including anything you build. The defence is baselines you didn’t choose and metrics you committed to in advance.
Part 4: What this means for you
4.1 The field is exactly where you can help
Line these up:
| Finding | Source | Implication |
|---|---|---|
| zero-shot FMs lose to HVG | Kedzierska 2025 | scale ≠ transfer |
| FMs lose to mean/additive baselines | Ahlmann-Eltze 2025 | run the mean baseline |
| linear beats FMs even OOD | Souza & Mehta 2026 | the OOD case is worse, not better |
| 1,200 teams, baselines still not beaten | VCC 2025 | it’s not that people didn’t try |
| metric choice flips the ranking | Metric Picks Winner 2026 | GenTox §2 was right |
| hybrids beat pure end-to-end | VCC 2025 winners | classical + deep, not classical or deep |
Every single one of these supports the Tier-0 agenda in 14_RESEARCH_AGENDA.md. The baselines aren’t pedantry; they’re the field’s central methodological problem, and the four papers don’t report them.
The honest answer to “why don’t you just fine-tune scGPT?” in July 2026 is no longer a shrug. It’s:
“Because the field’s own flagship competition ran 1,200 teams and concluded perturbation models don’t consistently beat naive baselines; because linear methods beat FMs even out-of-distribution; because scGPT’s value encoder takes binned absolute counts and our data is log fold-change, which is a type error. We tested it anyway. Here’s what we found.”
That is a strong position. Skepticism, properly cited and properly tested, beats enthusiasm.
4.2 The bad news: someone did a version of your Tier 3 idea
“Task-adapted biological foundation models uncover perturbation-centric representations”, bioRxiv, June 30 2026 — three weeks ago.
They fine-tuned scGPT on >3M LINCS L1000 perturbation profiles with a supervised objective predicting perturbation identity. Results:
- latent space became perturbation-centric — same chemical/genetic perturbation aligns across heterogeneous conditions
- substantially outperformed both raw expression profiles and the original pretrained scGPT
- recovered 85–100% of perturbations in top-100 nearest neighbours
- perturbation classification accuracy 10–19% → 25–49%
- spontaneously captured chemical similarity and MOA despite never being trained on them
So my “the right FM for toxicogenomics is a perturbation-response model, not a cell-state model” thesis has been partially validated by someone else, three weeks ago.
What this changes:
- ❌ You cannot claim “nobody has adapted FMs to perturbation data.” They have.
- ✅ The direction is validated — which de-risks it substantially.
- ✅ They did human cell lines, L1000, in vitro. Nobody has done in vivo, multi-organ, cross-species, fold-change toxicogenomics.
What remains genuinely open:
- They fine-tuned on L1000 Level 3 (normalized expression). DrugMatrix is fold-change. The value-encoding mismatch is unaddressed.
- Cell lines in dishes, not organs in a live animal. No systemic exposure, no inter-organ communication.
- Human. Not rat.
- No cross-tissue anything. They aligned perturbations; they didn’t translate between organs.
This is what “keeping up with the literature” costs and buys. Three weeks ago, one of my four research directions got half-scooped. It’s not dead — it’s narrowed and de-risked. That’s usually what happens, and it’s why you check before you commit six months.
4.3 The toxicogenomics gap is real and still open
I searched specifically for a toxicogenomics foundation model. There isn’t one. The search returned: DILI prediction from ML, Att-RethinkNet (multilabel on TG-GATEs), ToxAssay (an R package), ADMET/toxicity reviews. No foundation model.
What exists nearby:
- Rat → human hepatocyte translation (PLOS One 2020): CNN + bottleneck DNN translate drug-induced expression rat→human, explicitly “circumventing the current reliance on orthologs”, beating classical ML. This is TransTissueFormer’s architecture and problem, one species-axis over — and it’s not cited in any of the four papers.
- Transfer learning rat in vitro → human in vivo (PLOS One 2023).
Both are worth reading closely. They are the closest prior work to TransTissueFormer in existence — same architecture family, same problem, one axis over — and neither is cited in any of the four papers. Whether the cross-species and cross-tissue lines should be unified is an open question.
4.4 DrugMatrix’s moat, stated precisely
| Axis | Single-cell FMs | DrugMatrix |
|---|---|---|
| scale | 100M+ cells | ~2,700 treatments |
| resolution | single cell | bulk |
| values | absolute counts | fold-change |
| species | human | rat |
| system | cells in dishes | organs in a live animal |
| organs | ~none | eight |
| causality | mostly observational | 100% interventional |
Read the bottom three rows.
Ahlmann-Eltze says FMs fail on perturbation because their data is observational. DrugMatrix is entirely interventional. The Virtual Cell Challenge says pure end-to-end doesn’t work and hybrids win. this program builds hybrids — matrix factorization plus attention plus learned embeddings — which is exactly the winning recipe.
The group is small, under-resourced relative to Arc, and has data nobody else has for the question they’re asking. That’s a real position.
Part 5: What I’d verify next
Things I did not find and would want to know:
- Did anyone answer Ahlmann-Eltze? Is there any model that now reliably beats linear baselines on unseen perturbations?
- Virtual Cell Challenge 2026 — is there a second edition? Did the baseline gap close?
- STATE’s actual numbers vs baselines — the “50% improvement” is Arc’s own reporting. Independent benchmark?
- Is there a bulk-transcriptomics FM? All of this is single-cell. Conspicuous absence.
- Cross-species perturbation FMs. UCE handles cross-species embedding; anyone done cross-species perturbation response?
- The GeniE extrapolation question. How much of BioSpyderWT is model output? Affects everything downstream.
I can run any of these.
Sources
Verified today (July 2026):
- Virtual Cell Challenge 2025 Wrap-Up — Arc Institute — 1,200 teams; baselines not consistently beaten; hybrids won
- Virtual Cell Challenge: Toward a Turing test for the virtual cell — Cell
- NeurIPS 2025: Altos Labs Wins Generalist Prize — GEN
- Arc Institute’s first virtual cell model: STATE — 167M observational + 100M perturbational cells, 70 contexts
- Parameter-free representations outperform single-cell foundation models — arXiv 2602.16696 — Souza & Mehta, Feb 2026
- The Metric Picks the Winner — arXiv 2606.12639 — June 2026; ranking inverts with metric
- Task-adapted biological foundation models uncover perturbation-centric representations — bioRxiv — June 30 2026; scGPT fine-tuned on 3M+ LINCS profiles
- Genome modelling and design across all domains of life with Evo 2 — Nature — March 2026
- Tahoe-100M — bioRxiv
- Deep-learning-based gene perturbation effect prediction does not yet outperform simple linear baselines — Nature Methods
- Zero-shot evaluation reveals limitations of single-cell foundation models — Genome Biology
- Use of deep learning to translate drug-induced gene expression rat → human primary hepatocytes — PLOS One
- Transfer learning to predict drug-induced human in vivo expression from rat data — PLOS One
- VCBench — bioRxiv
- CellOS — bioRxiv
- awesome-foundation-model-single-cell-papers — GitHub — keep an eye on this
From training knowledge, NOT verified — check before citing: Geneformer cell counts, scFoundation scale, scBERT details, GEARS, chemCPA, LINCS L1000 exact figures (~1.3M / 978 / ~20k / ~80), rat-human orthology ~80%. See 17_SOURCES.md.
Single-Cell Foundation Models: What They Are, and How to Actually Use Them
Every claim here has a worked example with numbers you can check by hand.
Run code/demo_scgpt_pipeline.py alongside this — it prints every step.
0. The 60-second version
| Model | What it is, in one line |
|---|---|
| scGPT | BERT, but each token is a gene and “position” is replaced by expression level |
| Geneformer | Same, but instead of the expression value it feeds the expression rank |
| scFoundation | Same, but only encodes the genes that aren’t zero |
| UCE | Same, but a gene’s token comes from its protein sequence — so it works on any species |
| CellFM | Same as scGPT, 3× the data, different backbone |
| STATE | Two models: “where is this cell” + “how does it move when you push it” |
| Tahoe-100M | Not a model. A dataset: 100M cells, 1,100 drugs × 50 cell lines |
The thing to take from all of them: the gene embedding table. Not the model.
The thing that will break: the value encoder. Every single time.
1. What a cell is, as data
Forget biology for a second. Here is a liver cell:
gene: Alb Cyp1a1 Actb Tp53 Lcn2
count: 450 3 890 12 0
That’s it. A cell is a vector of counts. Real vectors are ~20,000 long; this is 5.
What the genes are, so the examples mean something:
| gene | what it does |
|---|---|
| Alb | albumin — liver’s signature protein. Massively expressed there, nowhere else |
| Cyp1a1 | a drug-metabolizing enzyme. Switches ON when toxicants appear. The one toxicology cares about |
| Actb | beta-actin — structural, in every cell, always on. A “housekeeping” gene |
| Tp53 | p53 — the DNA-damage alarm |
| Lcn2 | lipocalin-2 — injury/inflammation marker |
The zero problem
Lcn2 = 0. Is that gene off, or did the assay just miss it?
You cannot tell. In real single-cell data, ~80% of genes read zero this way — you only capture 10–20% of a cell’s RNA. This is called dropout and it is the central pathology of scRNA-seq.
NLP analogy: every sentence has 80% of its tokens randomly deleted, and you don’t get told which positions were deleted. You have millions of sentences, each mostly holes.
Hold onto this. It comes back in §8 as an argument that toxicogenomics data is better.
2. scGPT, step by step
2.1 Gene → token
Exactly a vocabulary lookup. scGPT’s vocab is ~60,000 genes instead of ~50,000 wordpieces.
Alb -> token id 4102
Cyp1a1 -> token id 88
Actb -> token id 17
Tp53 -> token id 991
Lcn2 -> token id 2043
2.2 Value → bin
A count of 450 isn’t a token. So scGPT bins it. Bin edges are fit on the training data — which is counts, so everything is :
bin edges: [0, 1, 5, 20, 60, 150, 400, 1000, ∞]
Alb count 450 -> bin 6
Cyp1a1 count 3 -> bin 1
Actb count 890 -> bin 6
Tp53 count 12 -> bin 2
Lcn2 count 0 -> bin 0
2.3 Embed and add
Two lookup tables, both 512-dimensional:
This is literally BERT.
token_embedding + position_embedding. Except “position” is replaced by “expression level” — because genes have no order. A cell is a set, not a sequence.
2.4 The rest
- 12 transformer layers, no positional encoding
- Pretraining: mask some genes’ values, predict them. Masked language modelling, with expression values instead of wordpieces
- 33M cells
Remember these two tables. They have completely different fates:
| table | shape | fate |
|---|---|---|
| ⭐ the thing worth stealing | ||
| 💥 the thing that breaks |
3. Where toxicogenomics breaks it — worked numerically
Here is a DrugMatrix profile. Same five genes. But these are fold-change:
Alb -0.02 no real change
Cyp1a1 +1.85 UP 71x vs untreated control <-- the signal
Actb +0.01 no real change
Tp53 +0.42 UP 2.6x
Lcn2 -0.71 DOWN 5.1x
Now push it through scGPT’s binner:
Alb value -0.02 -> bin -1 <-- CRASHES: no such bin
Cyp1a1 value +1.85 -> bin 1 <-- same bin as a COUNT of 1-5
Actb value +0.01 -> bin 0 <-- same bin as a COUNT of 0-1
Tp53 value +0.42 -> bin 0 <-- same bin as a COUNT of 0-1
Lcn2 value -0.71 -> bin -1 <-- CRASHES: no such bin
Two failures. The second is worse.
Failure 1 — negatives crash
lands in bin . There is no bin . Bin edges start at 0 because you cannot have RNA molecules. There is no embedding row for it. It errors — or silently wraps to the last row, which is worse.
Failure 2 — positives fail silently ⭐
Cyp1a1 = +1.85 means “this gene went up 71×, the loudest signal in the entire profile.”
It bins to 1. Bin 1 means “a count of 1 to 5 molecules” — i.e. “this gene is essentially off.”
No error. No warning. The most important signal in the profile has been silently relabelled as its opposite. And all 92% of DrugMatrix that sits in collapses into bin 0 right next to it.
You would get a number out. The number would be garbage. Nothing would tell you.
Why this matters more than it sounds
This is a type error, not a domain gap.
A domain gap is “trained on news, you have tweets.” More training fixes it. A type error is “the function expects an int, you passed a list.” No amount of fine-tuning fixes a type error.
This is the concrete, technical answer to “why don’t you just fine-tune scGPT?” — and it’s much stronger than a shrug.
It also means: anyone who tried it and got mediocre results may simply have been feeding it nonsense. The failure would look like “the foundation model didn’t help,” not like “we made a units mistake.” Worth remembering when reading the critique literature.
4. What survives: the gene embeddings ⭐
The type error lives entirely in . It does not touch .
That question has nothing to do with how you encode expression values. It’s learned from co-occurrence statistics across 33M cells — the same way word2vec learns that king and queen are related, from co-occurrence, regardless of how you later count the words.
So is:
- pretrained on 33M cells
- reusable
- modality-independent — doesn’t care about counts vs fold-change
- largely species-conserved — a gene’s function is mostly the same in rat and human
It is the part of scGPT that transfers. And nobody in the toxicogenomics literature has used it.
5. The connection: TransTissueFormer’s first layer is a gene table
TransTissueFormer’s first layer is a matrix . It computes:
Written out on a toy ( genes, slots so it fits on the page):
Read the rows. Row of is a vector describing gene .
And is an expression-weighted sum of gene embeddings — word2vec document embedding, where the weights are fold-changes instead of term frequencies.
So:
| shape | trained on | |
|---|---|---|
| TransTissueFormer’s | random init, then 425 examples | |
| scGPT’s | 33,000,000 cells |
And it dodges the type error completely, because never touches . TransTissueFormer has no value encoder — it multiplies the raw fold-change straight into the gene embedding. The broken part of scGPT is the part this architecture doesn’t have.
is 96.6% of TransTissueFormer’s parameters (07_TRANSTISSUEFORMER.md §7.6.1).
You’d never train word embeddings from scratch on 425 sentences. That is what this model does, on 96.6% of itself, and a matching pretrained table is sitting in a public checkpoint.
6. The other models, and what each one gives you
Geneformer — rank instead of value
Instead of binning the count, sort the genes by expression and feed the ranking:
counts: Actb 890, Alb 450, Tp53 12, Cyp1a1 3, Lcn2 0
ranks: Actb=1, Alb=2, Tp53=3, Cyp1a1=4, Lcn2=5
tokens: [Actb, Alb, Tp53, Cyp1a1, Lcn2] <- position IS the value
Clever: normalization-free, robust to batch effects and sequencing depth. If one sample is sequenced twice as deep, all counts double — but the ranking doesn’t change.
The cost: magnitude is gone. Rank 4 vs rank 5 could be a 1.01× or a 100× difference.
For toxicogenomics: ranking a fold-change profile is almost meaningful — you’d get “which genes moved most.” But it destroys the up/down distinction unless you rank by signed value, and 92% of the profile is tied at ~0 so the ranking is mostly noise. Not a good fit.
scFoundation — skip the zeros
Only encodes the non-zero genes. An asymmetric encoder-decoder: the encoder reads ~2,000 non-zero genes, the decoder reconstructs all 20,000.
Why: if 80% of your input is uninformative zeros, don’t spend attention on them.
For toxicogenomics: ⭐ the architecture idea transfers, and it transfers better than it works in single-cell. See §8.
UCE — the species fix ⭐
The problem: scGPT and CellFM are human. DrugMatrix is rat. You’d need to map rat genes → human orthologs. That’s ~80% clean — and the missing 20% is concentrated in exactly the genes toxicology cares about. Cytochrome P450s (Cyp1a1 and its family) have expanded and diverged differently in rodents, because rats and humans eat different things and evolved against different toxins. The dictionary fails precisely where you need it.
UCE’s move: don’t use a vocabulary at all. Get a gene’s token by running its protein sequence through ESM2 (a protein language model):
scGPT: Cyp1a1 -> look up "Cyp1a1" in a vocab -> row 88 -> 512-dim vector
(fails if the gene isn't in the vocab)
UCE: Cyp1a1 -> get its protein sequence -> ESM2 -> 5120-dim vector
(works for ANY protein-coding gene, ANY species,
including species never seen in training)
Trained on 36M cells across 8 species.
NLP analogy: this is byte-level or subword tokenization for an unseen language, versus a fixed vocabulary that OOVs everything. UCE never needs the bilingual dictionary because it reads the “spelling” directly.
For toxicogenomics: ⭐ the right structural fit for rat data. And it makes a sharp prediction: if you compare scGPT-embeddings-via-orthologs against UCE-embeddings-no-mapping, UCE’s advantage should concentrate in the non-ortholog genes — the P450s. If it does, that’s a mechanistic result, not a leaderboard bump.
CellFM — more of the same, bigger
100M human cells, ~800M params, ERetNet backbone. Same value-encoding problem. Same gene table to steal.
STATE — the architecture worth noticing
Arc Institute. Trained on 167M observational + >100M perturbational cells, 70 human cell contexts. Two modules:
- SE (State Embedding) — where is this cell in state space?
- ST (State Transition) — how does it move when you push it?
Notice the decomposition. “Where am I” + “how do I move” is the same split as:
- CPA’s
- ToxCompl’s
Three literatures, one idea. That convergence is evidence it’s the right decomposition — and it means the toxicogenomics program has been building a linear STATE without calling it that.
7. Tahoe-100M and the pseudobulk bridge ⭐⭐
What Tahoe actually is
Not a model. A dataset. 100M single cells, ~1,100 drugs × 50 cancer cell lines, ~60,000 drug-cell combinations. Open source, on HuggingFace. Released Feb 2025 — ~50× larger than all previously public drug-perturbed single-cell data combined.
Crucially: interventional. Someone dosed the cells and measured what happened.
The problem
Wrong modality (single-cell counts) for toxicogenomics (bulk fold-change). Two mismatches at once.
The fix, worked numerically
Tahoe has DMSO controls for every cell line. DMSO is the solvent — “we ran the experiment with no drug in it.”
So: average the cells, then divide by the control average.
500 cells treated with drug X, 500 DMSO control cells.
gene mean treated mean control log10 FC meaning
--------------------------------------------------------------
Alb 455.0 449.6 0.01 no change
Cyp1a1 29.9 3.0 0.88 UP 7.6x
Actb 879.6 889.7 -0.00 no change
Tp53 39.8 12.0 0.50 UP 3.1x
Lcn2 12.2 1.0 0.81 UP 6.5x
That last column is DrugMatrix’s format.
100,000,000 single cells
→ average within each (drug, cell line) [pseudobulk]
→ divide by that cell line's DMSO control [fold-change]
→ log10
→ ~60,000 bulk-equivalent fold-change signatures
Both mismatches solved by one operation. Single-cell → bulk (averaging). Counts → fold-change (dividing by control).
You deliberately threw away single-cell resolution. That’s the trade: lose per-cell detail, gain commensurability with every bulk toxicogenomics dataset ever collected.
And LINCS L1000 is already there
LINCS L1000 Level 5 ships z-scores — signed, centred at zero, structurally the same object as log fold-change. ~1.3M more signatures, free, already in the right modality.
Note the June 2026 paper that fine-tuned scGPT on 3M+ LINCS profiles used Level 3 (absolute expression). Nobody has used Level 5 as a native differential pretraining corpus.
The corpus that could exist
| source | native | → fold-change | scale |
|---|---|---|---|
| DrugMatrix | log10 FC | ✅ already | ~2,700 × 8 tissues |
| Open TG-GATEs | intensity | ÷ control | ~2,238 |
| LINCS L1000 L5 | z-scores | ✅ already | ~1.3M |
| Tahoe-100M | sc counts | pseudobulk ÷ DMSO | ~60,000 |
~1.4M interventional fold-change signatures. That corpus does not exist. Nothing prevents it existing.
8. The argument that toxicogenomics data is better ⭐
Both single-cell and fold-change data are ~90% zeros. The zeros mean completely different things.
| what a zero means | |
|---|---|
| single-cell | Lcn2 = 0 counts. Gene off? Or assay missed it? You cannot tell. ~80% of entries. This is missing data. |
| fold-change | Lcn2 = -0.02. The gene did not move under the drug. This is a measurement. |
Single-cell zeros are missing data. Fold-change zeros are signal.
The consequence: scFoundation’s “only encode non-zero genes” is a workaround for dropout — a hack around not knowing. In fold-change space the same trick is principled: you skip the 92% because nothing happened there, not because you’re uncertain.
So a fold-change-native foundation model gets scFoundation’s efficiency for a better reason, and gets a cleaner training signal, because its zeros are honest.
I have not seen this argued anywhere. It’s a small point. But it says the modality mismatch isn’t purely a disadvantage — on one axis, the tox data is better-conditioned.
9. How to actually use each one
Ordered by effort. All of these are concrete.
9.1 Steal the gene table 🟢 do this first
1. Download scGPT weights (public, HuggingFace)
2. Pull out E_gene -> (~60000, 512)
3. Map rat genes -> human orthologs (biomaRt / Ensembl)
4. Look up each of DrugMatrix's 8,565 probes
5. Load the result as TransTissueFormer's W
6. Train as normal
Ablate against — this is the part that matters:
| init of | tests |
|---|---|
| random | current baseline |
| PCA/co-expression from DrugMatrix itself | ⭐ the critical control — does a 33M-cell FM beat the data’s own structure? |
| scGPT (ortholog-mapped) | the obvious FM |
| UCE / ESM2 (no mapping) | species-agnostic |
| shuffled scGPT | content, or just some structure? |
| ortholog-only subset | isolates the mapping penalty |
Both outcomes publish. Wins → the FM bridge. Loses to DrugMatrix’s own co-expression → consistent with Kedzierska and Souza & Mehta, and converts “we plan to explore in future work” into “we tested it; here’s the evidence.”
9.2 Build the fold-change corpus 🟡
Pseudobulk Tahoe + LINCS Level 5 + TG-GATEs + DrugMatrix → ~1.4M interventional differential signatures. Pretrain natively in fold-change space, with a signed value encoder.
Why bother — the mechanistic argument: Ahlmann-Eltze says FMs underperform because pretraining data is observational. LINCS, Tahoe, and DrugMatrix are all interventional.
9.3 Don’t 🔴
- Don’t feed fold-change to scGPT’s value encoder. §3. It fails silently.
- Don’t fine-tune scGPT end-to-end on DrugMatrix. Same reason.
- Don’t expect zero-shot scGPT embeddings to work. Kedzierska: beaten by highly-variable-gene selection, a 2010 heuristic with no learning in it.
- Don’t skip the baselines. The Virtual Cell Challenge ran 1,200 teams and reported models “not yet consistently outperforming naive baselines.”
10. Summary
- A cell is a vector of counts. ~80% are zero and you can’t tell why.
- scGPT is BERT over genes.
token = gene_embedding + value_bin_embedding. No positional encoding, because a cell is a set. - Fold-change has negative values. There is no bin for those. And the positives get silently mis-binned — Cyp1a1 up 71× reads as “essentially off.” Type error, not domain gap.
- Gene embeddings never touch values → they transfer.
- TransTissueFormer’s (96.6% of it) is a gene embedding table, . scGPT’s is . Same shape. Load it.
- UCE tokenizes by protein sequence → any species, no ortholog dictionary. The right fit for rat.
- Pseudobulk + ÷ DMSO turns Tahoe-100M into DrugMatrix’s format. LINCS Level 5 is already there. ~1.4M signatures.
- Fold-change zeros are signal; single-cell zeros are missing data. On that axis, tox data is better.
Toy examples runnable in code/demo_scgpt_pipeline.py. Bin edges, token IDs, and embedding tables in the demo are invented for illustration — the structure is real, the specific numbers are not. scGPT’s 512-dim gene embeddings and ~60k vocab are verified; other model details are flagged in 17_SOURCES.md.
Chapter 12 — What Machine Translation Offers Cross-Tissue Translation
Thirty years of low-resource MT research, mapped onto a problem that has never heard of it.
12.1 The claim
Cross-tissue transcriptomic translation and machine translation are the same problem with different nouns. Not “similar,” not “analogous in spirit” — structurally the same, with the same failure modes, the same data pathologies, and — this is the point — the same solutions, most of which have not been tried.
The correspondence:
| Cross-tissue translation | Machine translation |
|---|---|
| tissue | language |
| transcriptomic profile | sentence |
| liver (in 62% of studies) | English — the over-resourced pivot |
| brain (2.4%), intestine (0.7%) | the low-resource languages you actually want |
| treatment measured in both tissues | a sentence pair |
| the tissue×tissue pair table | the parallel corpus size table |
| LI–KI = 425 pairs | a low-resource pair |
| BR–LI = 0 pairs | a zero-shot pair |
| unpaired profiles (1,249 LI, 481 KI) | monolingual data |
| matrix-completion augmentation | back-translation |
| imputing through a third tissue | pivot translation |
| HE–TM works on 7 pairs | Spanish→Portuguese |
| LI–KI struggles on 425 | English→Japanese |
| PCC | BLEU |
| the multi-task collapse to ρ=0.23 | missing <2es> target token |
This chapter walks the MT toolkit and asks, for each tool: does it transfer, and what would it buy?
The headline: the existing work independently reinvented back-translation (via matrix completion) and cited Sennrich for it — and then stopped. The seven years of back-translation research after Sennrich 2016 — tagging, noising, iterating — are unexploited, and at least two of them address problems the papers explicitly report.
12.2 The corpus table is the whole story
Here is the DrugMatrix CodeLink pair table. Rows are source tissue, columns target, entries = treatments measured in both.
BM BR HE IN KI LI SP TM
BM 325 0 24 0 158 223 161 0
BR 0 65 19 0 3 0 0 0
HE 24 19 629 4 159 176 14 7
IN 0 0 4 20 0 0 0 0
KI 158 3 159 0 906 425 84 24
LI 223 0 176 0 425 1674 164 28
SP 161 0 14 0 84 164 180 0
TM 0 0 7 0 24 28 0 29
Anyone who has worked on low-resource MT has seen this table a hundred times. Read it that way:
- Liver is English. 1,674 profiles. It appears in more studies than everything else combined, because that’s where the field’s attention has been — not because it’s more interesting.
- 425 sentence pairs for the best-resourced pair. Against 8,565-dimensional inputs and outputs. Sit with that ratio.
- 24 of 64 directions have zero parallel data. Not “few.” Zero.
- The zeros are structural, not accidental. BR–LI = 0 despite BR=65 and LI=1,674 — independent sampling predicts ~40. Brain was only ever measured in studies that did not do liver. The table decomposes exactly into 24 study panels (
16_MATH_NOTES.md§6; NNLS residual 0.0, all 24 zeros reproduced).
That last point has a hard consequence, and it’s the one that should drive the research:
No pairwise model can ever reach those 24 directions. Not with a better architecture, not with more compute. The parallel data does not exist and never will — no one is going to re-run 600 rat studies with a brain panel.
MT has spent a decade on exactly this. Zero-shot NMT, pivot translation, and unsupervised NMT all exist because the same thing is true of Uyghur→Basque.
12.3 Back-translation: they started and stopped
What they did
TransTissue’s AugmentTrain&Transfer:
- hold out test targets
- impute the whole matrix with Funk-SVD
- train on the synthetic pairs
- fine-tune on the real ones
That is back-translation. Manufacture synthetic parallel data, pretrain on it, fine-tune on real. HE–TM goes from 7 real pairs to 2,711 synthetic. They cite Sennrich et al. 2016 — as reference [36], in the augmentation related-work section, apparently without noticing the connection is exact rather than decorative.
Reported gains: MAE 0.081→0.059, rare MAE 0.27→0.159, PCC 0.53→0.793.
What MT learned next, and they didn’t
Sennrich 2016 was the beginning. Three major results followed, and each one addresses a problem the papers explicitly report.
(a) Tagged back-translation — Caswell et al., 2019 ⭐
The finding: synthetic parallel data should be tagged. Prepend a token marking “this pair is synthetic.” The model then learns to use synthetic data for its statistical structure without mistaking its artifacts for the target distribution. Consistent gains, essentially free.
Why this is not a minor tweak here: we know exactly what artifact the synthetic data carries.
From code/experiments/exp02_rank_test.py: the Funk-SVD-augmented translation task is exactly affine. Ridge regression scores , MAE on augmented pairs. The analytic construction , with no fitting at all, also scores . And the induced map is nearly rank-2.
So the pretraining phase teaches the model: “translation is a rank-2 linear map.” Then fine-tuning has to un-teach that. Tagging is the mechanism that lets the model keep the useful statistics and discard the artifact — and this is the single cleanest application of tagged BT I can think of, because the artifact is not merely suspected, it’s provable.
Actionable: add a learned is_synthetic embedding to the bottleneck during pretraining. Set it to the “real” value at fine-tuning. Cost: one embedding vector. This is the highest value-to-effort ratio idea in this chapter.
(b) Noised / sampled back-translation — Edunov et al., 2018 ⭐
The finding, and it’s counterintuitive: synthetic data generated by sampling or with added noise substantially outperforms clean beam-search output. Clean synthetic data is too easy — it contains no uncertainty, so the model learns a degenerate mapping.
Why it matters here: Funk-SVD output isn’t merely clean, it’s noiselessly, exactly linear — the strongest possible version of the pathology Edunov identified. The model is being pretrained on data with a closed-form solution.
Actionable, and testable this week:
- Add calibrated Gaussian noise to the imputed matrix before pretraining, at the residual scale of the factorization
- Better: use a probabilistic matrix factorization and sample from the posterior over rather than taking the point estimate. Each epoch sees a different draw. That’s Edunov’s sampling, exactly.
- Ablate: clean augmentation vs noised vs sampled
Prediction: noised augmentation beats clean augmentation on real held-out data, even though it scores worse on augmented data. If that holds, it’s a clean, citable, mechanistically-explained result — and it reframes the exp02 finding from “a problem with Figure 7” into “a fix for the augmentation.”
(c) Iterative back-translation — Hoang et al., 2018
The finding: don’t do it once. Use the improved model to regenerate better synthetic data, retrain, repeat. Gains compound over 2–3 rounds.
The mapping: Funk-SVD imputes once, at rank 300, linearly. But after training, TransTissueFormer is itself a better cross-tissue predictor than Funk-SVD. So:
round 0: G' ← Funk-SVD(G) [rank-300 linear]
M₀ ← train(G'), fine-tune(G)
round 1: G'' ← M₀ fills the missing entries [nonlinear, better]
M₁ ← train(G''), fine-tune(G)
round 2: ...
This directly attacks the exp02 problem. Round 0’s synthetic data is exactly linear. Round 1’s is not — it’s whatever the transformer learned. The linearity artifact dilutes with each round.
Actionable: one round of iteration. If MAE improves, the mechanism is confirmed and it’s a paper section.
12.4 Multilingual NMT: the fix for a reported negative result
The bug
TransTissue trained one model LI→everything. PCC collapsed from 0.53 to 0.23. The stated diagnosis:
“given the same source LI profile the model cannot decide which is the correct target”
This is the missing target-language token. Same source, multiple valid targets, no conditioning ⟹ the model averages.
Formally (16_MATH_NOTES.md §4.2), under squared loss the optimal single-valued is the conditional mean:
The model is behaving optimally for a mis-specified problem. Mush is the correct answer to an ill-posed question. This is not a finding about biology; it is a specification error.
The fix, from 2016
Johnson et al. prepend <2es> to tell the model which language to decode into. mBART, M2M-100, NLLB — all of them, universally.
Here: add a target-tissue embedding to the bottleneck. One vector, 512 numbers.
Why the fix is worth more than the fix
Johnson et al.’s target token didn’t just enable multi-task. It enabled zero-shot translation — the model translated Portuguese→Spanish having never seen a single PT–ES pair, because it had learned PT→EN and EN→ES and the target token let it compose them.
That is precisely the 24-empty-pairs problem.
If trains from any brain data (65 profiles exist) and the shared trunk learns the systemic response from the well-resourced pairs, then decoding brain from liver becomes possible with zero LI–BR pairs.
That’s the paper. Not “we improved PCC by 5%,” but “we translated to organs for which no paired data exists, and here is the enrichment analysis showing the predictions are biologically coherent.”
The pathology to expect, and how to detect it ⭐
Zero-shot NMT has a famous failure mode: off-target translation. Ask for Portuguese, get English. The model ignores the target token and defaults to the highest-resource language it knows.
The prediction, stated so it can fail:
A zero-shot cross-tissue model asked for brain will produce something that looks like liver — the highest-resource tissue — rather than brain.
And it’s detectable. Train a tissue classifier on real profiles. Run it on the zero-shot outputs. If brain predictions classify as liver, that’s off-target translation, diagnosed by name, with a literature of fixes attached:
- residual/language-specific layers (Liu et al. 2021)
- target-token position — encoder-side conditioning beats decoder-side prepending in some setups
- denoising auxiliary objectives to strengthen the conditioning signal
Actionable: the tissue classifier is a two-hour job and it is the right instrument regardless of whether zero-shot works. It answers “did the model produce a kidney?” — a question no PCC can answer.
12.5 Unsupervised MT: the idea nobody has tried here ⭐⭐
This is the most under-exploited connection in this chapter.
The MT result
Between 2017 and 2019, MT solved a problem that had been considered impossible: translation with zero parallel sentences.
- Mikolov et al. (2013): monolingual word embedding spaces for different languages are approximately isomorphic. A linear map aligns them. With a seed dictionary of ~5,000 pairs, learn by least squares.
- Procrustes refinement: constrain to be orthogonal. Closed form via SVD:
- Conneau et al. (2018), MUSE: you don’t even need the seed dictionary. Learn adversarially — a discriminator tries to tell from ; tries to fool it. Then refine with Procrustes on the induced dictionary. Fully unsupervised.
- Lample et al. / Artetxe et al. (2018): full unsupervised NMT — shared encoder, denoising autoencoder on monolingual data, iterative back-translation. BLEU in the high teens with zero parallel sentences.
The mapping
All the ingredients are present:
| Unsupervised NMT needs | Cross-tissue has |
|---|---|
| monolingual corpus, language A | 1,249 unpaired liver profiles |
| monolingual corpus, language B | 481 unpaired kidney profiles |
| no parallel data | 24 tissue pairs with exactly zero |
| approximately isomorphic spaces | ? — testable, see below |
| a denoising autoencoder | trivially constructible: mask genes, reconstruct |
| iterative back-translation | §12.3(c) |
Note the second column. DrugMatrix has 1,674 liver profiles but only 425 paired with kidney. There are ~1,249 “monolingual” liver profiles that no cross-tissue model currently uses. Matrix completion touches them; the translation models do not. In MT terms: they are training on the parallel corpus and throwing away the monolingual data, in a low-resource setting, in 2026.
Why isomorphism is plausible here — and this is the interesting part
The isomorphism assumption in MT is a hypothesis about language: that “dog” sits in the same relative position in English space as “chien” does in French space, because both languages carve the world similarly.
In cross-tissue, there is a mechanistic reason to expect it. Every organ is responding to the same systemic event — the same compound, the same dose, in the same animal. Liver’s response space and kidney’s response space are two readouts of one underlying perturbation space. If both are (approximately) linear images of a shared latent:
then the two spaces are related by — isomorphic by construction. The physiology supplies the assumption that MT has to hope for.
That is a better a priori case than cross-lingual embedding alignment ever had.
The concrete method
1. Compute a profile embedding space per tissue independently, from ALL
profiles of that tissue — paired or not. (PCA, or an autoencoder,
or the co-expression structure.)
2. For a pair with SOME data (LI–KI, 425 pairs): learn the orthogonal
map by Procrustes on the paired subset. Establishes the ceiling and
validates the isomorphism assumption.
3. For a pair with NO data (LI–BR): learn the map ADVERSARIALLY, MUSE-style,
using only unpaired LI and unpaired BR profiles. Refine with Procrustes
on the induced pseudo-dictionary.
4. Validate on LI–KI by pretending the 425 pairs don't exist. If the
unsupervised map recovers the supervised one, the method works and
you can trust it on LI–BR.
Step 4 is the whole experiment. It’s a clean, self-validating design: you have a pair with data (LI–KI) to check the method, and pairs without data (the 24 zeros) to apply it to.
The known limitation — and it’s a gift
Søgaard et al. (2018), “On the Limitations of Unsupervised Bilingual Dictionary Induction”: unsupervised alignment works for typologically close languages and fails for distant ones. The isomorphism assumption breaks down with linguistic distance.
Map that onto the reported observation: HE–TM (both striated muscle, mitochondria-dense) achieves ρ=0.7 on 7 pairs. LI–KI (different mechanisms — hepatic P450 metabolism vs renal tubular transport) achieves ρ=0.4 on 425.
That is the isomorphism gradient, in toxicogenomics.
Which yields a falsifiable prediction:
Unsupervised cross-tissue alignment will succeed for same-family pairs (HE–TM, BM–SP) and fail for distant ones (LI–BR). The failure boundary should track biological relatedness, not sample size.
And a negative result here is informative, because it would measure where the shared-systemic-latent model stops holding — which is a statement about physiology, not about the method.
12.6 Choosing what to transfer from: LangRank → TissueRank
The MT result
Lin et al. (2019), “Choosing Transfer Languages for Cross-Lingual Learning.” Given a low-resource target, which high-resource language should you transfer from? They learn a ranker over features: corpus size, typological distance (WALS), lexical overlap, phylogenetic distance, geographic distance. LangRank beats human intuition.
The mapping
Given brain (65 profiles), which tissue should you transfer from? Currently: nobody asks. Models are trained per pair, and pairs are chosen by data availability.
TissueRank features — all computable today:
| Feature | Source |
|---|---|
| paired sample count | Table 3 |
| unpaired sample count | the diagonal |
| shared expressed-gene overlap | the data |
| co-expression network similarity | the data |
| GTEx cross-tissue correlation | public |
| cell-type composition overlap | public deconvolution refs |
| developmental lineage distance | ontology |
| subspace/isomorphism distance (§12.5) | computable without any pairs ⭐ |
That last one is the good one: you can estimate whether two tissues are alignable using only unpaired data, via subspace distance (principal angles between the two PCA bases). No parallel data required. So you can rank transfer candidates for brain without ever having a brain pair.
Why it’s worth doing
With 24 of 64 directions empty and most of the rest tiny, “which transfers are worth attempting?” is not academic. It’s the difference between 40 models of unknown quality and a ranked shortlist.
Actionable, and cheap: compute principal angles between per-tissue PCA subspaces for all 28 pairs. Correlate against the reported PCCs. If subspace distance predicts translation quality, you have a pre-training-time predictor of translatability — and an explanation for HE–TM vs LI–KI that isn’t post-hoc storytelling.
12.7 Parameter sharing: adapters
The MT result
Bapna & Firat (2019), “Simple, Scalable Adaptation for Neural Machine Translation.” Freeze a massively multilingual trunk; inject small per-language adapter modules. Gets language-specific capacity without a separate model per language, and without the curse of multilinguality (Conneau et al.: adding languages to a fixed-capacity model degrades all of them past a point).
The mapping
Currently: 32 separate cross-tissue models, one per direction with data. Each trained from scratch. Nothing shared.
That is the pre-2016 MT world — a bilingual model per pair — and MT abandoned it because it wastes the statistical strength of related pairs. With 425 samples per pair, wasting statistical strength is not affordable.
Proposed:
shared trunk learns the systemic response — trained on ALL tissues
tissue adapter τ small, per-tissue — ~1% of parameters
This composes with everything else in this chapter. Adapters + target-tissue conditioning = a single multilingual model with per-tissue capacity. It’s M2M-100’s architecture, and it’s the natural home for the zero-shot claim.
And there’s an architectural reason it fits — see Chapter 7. 96.6% of TransTissueFormer’s parameters live in the input bottleneck, which is a gene→slot projection. The transformer stack is 3.4%. So “shared trunk + tissue adapters” maps onto “shared bottleneck (gene semantics are universal) + tissue-specific adapters (organ programs differ)” almost too neatly.
12.8 What does NOT transfer
The false friends. Getting these wrong is worse than not making the analogy.
(a) No word order — and they’re right about this
TransPlatformer §2.2 rejects Seq2Seq partly because “the first s genes as tokens may not necessarily hint at the (s+1)th token.” Correct. Genes have no linear order; they form pathways and networks.
What dies: positional encodings, autoregressive decoding, causal masks, beam search, teacher forcing, and most of the decoding literature.
What survives: attention itself. “Not a sequence” implies no positional encoding — i.e. a set transformer — not “no attention.” The papers’ argument is sound on order but overshoots on architecture. What they built is closer to a set transformer than their own framing admits.
(b) The output is continuous, not discrete ⭐
The deepest disanalogy. MT decodes a discrete token from a softmax over a vocabulary. Cross-tissue regresses 8,565 continuous values.
What dies: softmax, cross-entropy, perplexity, likelihood, sampling, beam search, label smoothing, BLEU.
But — and this is a real idea: the categories already exist. DrugMatrix Table 1 defines five: extremely-under, under, normal, over, extremely-over.
Discretize the output and the entire MT machinery returns.
Predict the 5-way category per gene instead of a real number. You immediately regain:
- cross-entropy with class weights — which directly attacks the 92%-normal imbalance that every one of these papers struggles with
- calibration — is the model confident this gene is over-expressed? Nothing in the current setup has a notion of confidence
- label smoothing, focal loss — mature tools for exactly this imbalance
- a likelihood, hence sampling, hence honest uncertainty in the predicted profile
The 92%/8% imbalance is a classification problem that has been dressed as regression, and MAE is the wrong loss for it. Rare MAE is a patch over that mistake, not a fix.
Actionable: a hybrid head — categorical for direction/magnitude class, regression for the value within class. Report macro-F1 over the five categories alongside MAE. A macro-F1 the all-zeros predictor cannot game, unlike MAE.
(c) Length and alignment don’t exist
Fixed 8,565 → 8,565, gene in source corresponds to gene in target. No length modelling, no alignment, no attention-as-alignment interpretation.
This makes the problem easier than MT and means the identity baseline is meaningful in a way “copy the source sentence” is not.
(d) Monolingual data is scarcer, not abundant
MT’s monolingual advantage is overwhelming — billions of sentences vs millions of pairs. Here it’s ~1,249 unpaired liver vs 425 paired: a ratio of 3:1, not 1000:1.
So: unsupervised MT methods will be weaker here than in MT. But 3:1 is still 3:1, and currently the ratio being exploited is 0:1.
(e) There is no pretrained model in the right modality
MT has mBART, NLLB, XLM-R. Cross-tissue has scGPT and CellFM — trained on binned absolute counts, while DrugMatrix is log fold-change. That is a type error, not a domain gap (01_BACKGROUND.md §4.3). No amount of fine-tuning fixes a type error.
The exception, and it’s the important one: gene embeddings don’t touch values. See Chapter 7 §7.7.1 — that’s where this becomes actionable.
12.9 The scope, honestly
What transfers cleanly (high confidence):
| Idea | Cost | What it buys |
|---|---|---|
| Tagged back-translation | one embedding | quarantines the provable linearity artifact |
| Target-tissue token | one embedding | fixes a reported negative result |
| Noised/sampled back-translation | small | attacks the exactly-linear pretraining signal |
| Iterative back-translation | one retrain | dilutes the artifact further |
| Off-target detection | a classifier | the first metric that asks “is this a kidney?” |
| Discretized output + macro-F1 | a head swap | a metric the zero-baseline can’t game |
What transfers with real risk (medium confidence):
| Idea | Risk |
|---|---|
| Zero-shot organ translation | 425 pairs vs millions; conditioning may be swamped |
| Tissue adapters | needs a multi-tissue trunk to exist first |
| TissueRank | 28 pairs is a small sample to fit a ranker |
The bet (low confidence, high value):
| Idea | Why it might work | Why it might not |
|---|---|---|
| Unsupervised cross-tissue alignment | physiology supplies the isomorphism assumption that MT merely hopes for; validates on LI–KI; the only conceivable route to the 24 structural zeros | monolingual ratio is 3:1 not 1000:1; Søgaard’s distance limitation may bite exactly where it’s needed (LI–BR) |
What doesn’t transfer: autoregressive decoding, beam search, positional encoding, BLEU, and the assumption that a pretrained model exists in your modality.
12.10 The one-paragraph version
Cross-tissue transcriptomic translation is low-resource machine translation with 425 sentence pairs, 24 zero-shot directions whose emptiness is structural rather than incidental, and a 3:1 monolingual-to-parallel ratio that nobody exploits. The existing work independently reinvented back-translation and cited Sennrich for it, then stopped — leaving tagged BT, noised BT, and iterative BT on the table, each of which addresses a pathology the papers themselves report. It reported a multi-task failure that is textbook missing-target-token. And it has never tried the one method built for exactly its worst case: unsupervised alignment, whose central assumption — that the two spaces are isomorphic — is not a hope here but a consequence of the fact that both organs are reading out the same systemic event.
References
Back-translation and data augmentation
- Sennrich, Haddow & Birch (2016). Improving Neural Machine Translation Models with Monolingual Data. ACL. — cited as
[36]in TransTissue - Edunov, Ott, Auli & Grangier (2018). Understanding Back-Translation at Scale. EMNLP. — noised/sampled BT
- Caswell, Chelba & Grangier (2019). Tagged Back-Translation. WMT.
- Hoang, Koehn, Haffari & Cohn (2018). Iterative Back-Translation for NMT. WNMT.
Multilingual and zero-shot
- Johnson et al. (2017). Google’s Multilingual NMT System: Enabling Zero-Shot Translation. TACL. — the
<2es>token - Liu et al. (2020). Multilingual Denoising Pre-training for NMT (mBART).
- Fan et al. (2021). Beyond English-Centric Multilingual Machine Translation (M2M-100).
- Zhang et al. (2020). Improving Massively Multilingual NMT and Zero-Shot Translation. — off-target
- Conneau et al. (2020). Unsupervised Cross-lingual Representation Learning at Scale (XLM-R). — curse of multilinguality
Unsupervised alignment
- Mikolov, Le & Sutskever (2013). Exploiting Similarities among Languages for MT.
- Conneau, Lample, Ranzato, Denoyer & Jégou (2018). Word Translation Without Parallel Data (MUSE).
- Artetxe, Labaka, Agirre & Cho (2018). Unsupervised Neural Machine Translation. ICLR.
- Lample, Conneau, Denoyer & Ranzato (2018). Unsupervised Machine Translation Using Monolingual Corpora Only. ICLR.
- Søgaard, Ruder & Vulić (2018). On the Limitations of Unsupervised Bilingual Dictionary Induction. ACL. — the distance limitation
Transfer selection and adapters
- Lin et al. (2019). Choosing Transfer Languages for Cross-Lingual Learning. ACL. — LangRank
- Bapna & Firat (2019). Simple, Scalable Adaptation for NMT. EMNLP. — adapters
- Houlsby et al. (2019). Parameter-Efficient Transfer Learning for NLP. ICML.
Citations are from background knowledge and should be checked against the originals before use. The mapping onto cross-tissue translation is interpretive throughout — an analogy is a way to see a problem, not evidence about it.
Chapter 13 — Connecting the Dots: Four Papers, One Matrix, One Gap
What the program is, what it proved, what it contradicts, and what to do.
Read last. This assumes Chapters 0 → 3.
13.1 The whole program in one picture
There is one matrix. Everything is a different question about it.
treatments (m ≈ 2,700-3,000)
─────────────────────────────►
(chemical, dose, duration)
g ┌───────────────────────────────────────┐
e │ CodeLink × LI ░░░░████████░░░░██ │ ← 8,565 rows
n │ CodeLink × KI ░░░████░░░░░░████░ │
e │ CodeLink × BR ░░░░░░░░░░█░░░░░░░ │ ← almost empty
s │ ... │
│ Affymetrix × LI ██████░░░████████░ │ ← 31,042 rows
n │ ... │
≈ │ BioSpyder × LI ░░████████░░░░░░██ │ ← 22,794 rows
375k │ ... │
└───────────────────────────────────────┘
█ = measured (12%) ░ = missing (88%)
| paper | the question | direction | verb |
|---|---|---|---|
| ToxCompl+ | fill in the ░ cells | anywhere | transductive |
| TransPlatformer | CodeLink block → BioSpyder block | ↕ across platforms | transductive |
| TransTissueFormer | liver block → kidney block | ↕ across tissues | transductive |
| GenTox | here’s a drug never tested — make the column | ← new column | inductive |
That’s the program. Four papers, one object, four axes.
13.2 What each one actually established
ToxCompl+ — the engine
| does | , . Netflix Prize on genes × treatments. |
| fix 1 | side information (drug name, dose, organ). MaxAE 3.99 → 3.27, MAE 0.03 → 0.05. A trade. |
| fix 2 | attention: . MaxAE 3.27 → 0.83. A large win. |
| breaks | rare signals aren’t low-rank. Target −0.77 → predicted +0.94. Sign flip. |
| ⭐ my finding | ~369 obs/gene-row. At : ratio 1.23 (marginal). At : 0.74 — underdetermined. That’s why raising made MaxAE worse — a mechanism the paper doesn’t give. |
TransPlatformer — the harmonizer
| does | . Same tissue, same drug, different machine. |
| headline | MAE 0.043 vs ToxCompl 0.09; PCC 0.71 vs MLP 0.37. |
| Seq2Seq | on a 32GB V100S at length 8,565: 2 layers fit. vs 32. |
| ⭐ §3.3 | train {LI,KI,HE,SM}, withhold brain entirely, test brain → 2.42× better than brain’s own model. Then one brain sample improves it more. Zero-shot + one-shot transfer. Not in the abstract. |
| ⭐ best number | harmonize legacy Affy → liver-necrosis classifier: F1 0.636 → 0.718. Twenty years of dead data, made useful, on a real task. |
TransTissueFormer — the translator
| does | liver → kidney. 8,565 → 8,565, from 425 pairs. |
| direct | PCC 0.53. LI–KI only 0.40. “no definite conclusion can be drawn whether cross-tissue translation is possible.” |
| augmented | PCC 0.793, MAE 0.081→0.059, rare MAE 0.27→0.159. |
| validation | gemfibrozil → PPARα ✓, cisplatin → TP53 ✓, lead → p53 ✓. 3 of 44 reported. |
| negative | multi-task collapses 0.53 → 0.23. |
| ⭐ my finding | 96.6% of the model is the bottleneck — a gene embedding table. The 32-layer transformer is 3.4%. |
| ⭐ my finding | the augmented task is exactly affine — ridge scores , MAE 0.0000, closed-form. Figure 7’s pretrain row measures linear-map approximation. |
GenTox — the generalizer
| does | predict a whole new column — a drug never tested. Inductive: . |
| basis | GNN pretrained on 1,000,000 compounds, self-supervised (contrastive = SimCLR; or graph InfoMax). |
| finding | InfoMax > contrastive ≫ Mordred ≈ Morgan. Learned beats hand-crafted. |
| ⭐ theory | Theorem 1: unrelated profiles correlate at . Their own baseline: , . A model that learned nothing, scoring 0.992. |
| ⭐ theory | Theorem 2: on fold-change, . The two theorems cut opposite ways. |
| ⭐ the tell | “As we do not perform inductive learning on the genes or tissues, the [gene] NN we use is a simply embedding layer.” |
| status | draft. Figure ??, [?] citations, §5 and §6 empty section headers. |
13.3 The thread: one random table, four times ⭐⭐⭐
| paper | the object | |
|---|---|---|
| ToxCompl | — | gene table, random init |
| TransPlatformer | — | gene table, random init, 15.9M params from 888 samples |
| TransTissueFormer | — | gene table, random init, 96.6% of the model, 425 samples |
| GenTox | col NN — | gene lookup, random init |
Four papers. Four different problems. The same object at the core of each, and it is random every time.
And GenTox is the sharpest case, because it proves the point and then doesn’t apply it.
GenTox went inductive on drugs, with a GNN pretrained on 1,000,000 compounds as the basis. That is a foundation model — built by this program, in 2024, before TransTissue wrote “we plan to explore the adaptation of these models in future work.” And their own ablation showed learned representations beat hand-crafted ones.
They never applied that argument to the other axis of the same matrix.
And there’s a public checkpoint of exactly the right shape
- TransTissueFormer’s is .
- scGPT’s gene embedding table is . (verified)
Same shape. Load it. No adapter, no dimension mismatch, no architecture change.
And it dodges the type error entirely — scGPT’s fold-change incompatibility lives in its value encoder (11_SC_FOUNDATION_MODELS.md §3), which none of these architectures have. They multiply the raw fold-change straight into the gene embedding. The broken part of scGPT is the part they don’t need.
13.4 The internal contradictions — where the program argues with itself
These are the most useful things in the whole analysis, because the program contains its own corrections.
(a) TransPlatformer proves the transfer; TransTissueFormer needs the token ⭐
| TransPlatformer §3.3 | withhold brain entirely, test brain → wins by 2.42× |
| TransTissueFormer §6 | multi-task model → collapses 0.53 → 0.23 |
Not a contradiction. A proof.
TransPlatformer: input = CodeLink profile of tissue X
output = BioSpyder profile of tissue X ← SAME tissue
→ tissue is a NUISANCE. Implicit in the input.
→ no choice to make. Mixing tissues = free data. WORKS.
TransTissueFormer: input = liver profile
output = kidney? heart? spleen? ← YOUR CHOICE
→ tissue is a FREE PARAMETER, never supplied.
→ model must choose, blind. Returns E[t|s] = the average.
→ COLLAPSES.
TransPlatformer proves the shared trunk works. TransTissueFormer proves you need the target token. Add and you get both.
This is no longer an argument imported from NMT. It’s the program’s own two results, read together.
(b) GenTox proves PCC is broken; everyone reports PCC ⭐
GenTox §2 proves — with a theorem and their own trained model scoring / — that column-wise PCC is unreliable, and that row-wise metrics are mandatory.
TransTissueFormer reports column-wise PCC. Only.
The metric that would settle its central claim is the one the same program already argued for, in another paper.
And it matters more than it did in 2024: “The Metric Picks the Winner” (June 2026) shows model rankings inverting end-to-end with metric choice on drug-response prediction. GenTox was early. The field has caught up to it. GenTox is still a draft with two empty sections.
(c) GenTox proves learned > hand-crafted; genes stay random
§13.3. The argument is theirs. The axis is the only thing that changed.
(d) The augmentation is back-translation; they cite Sennrich and stop
TransTissue’s Algorithm 1 is back-translation. They cite Sennrich et al. 2016 — as [36], in the related-work list. Then stop.
Seven years of follow-up sits unused, and each item addresses a problem the paper reports: tagged BT (Caswell 2019) quarantines the provably linear artifact; noised BT (Edunov 2018) attacks the fact that Funk-SVD output is noiselessly linear; iterative BT (Hoang 2018) dilutes it. (08_AUGMENTATION.md §8.9.)
13.5 What’s genuinely good — and shouldn’t get lost
Being clear about this, because the analysis above is heavy on gaps:
| The compute argument is unanswerable. | At , standard attention needs ~2 TB. On a 32GB V100S, 2 layers fit. There is no version of this work that uses vanilla attention over genes. |
| Refusing positional encoding is correct. | Genes have no order. Most people would have imposed one. |
| Imputing the whole matrix is clever. | Heart data creates liver–kidney training pairs. 43% more pairs, and the arithmetic checks out exactly. |
| The attention aggregator works. | MaxAE 3.99 → 0.83 is a large, real win on the metric that matters. |
| GenTox §2 is ahead of the field. | They proved the metric problem in 2024. The field rediscovered it in 2026. |
| §3.3’s zero-shot result is a real finding. | Buried in a paragraph. |
| The biological validation is the right species of evidence. | Gemfibrozil→PPARα, cisplatin→TP53, lead→p53. A toxicologist looked at a predicted profile and said yes, that’s lead poisoning. Worth more than every PCC. |
| F1 0.636 → 0.718 is the best number here. | Legacy data, harmonized, made a real classifier better at a real task. |
This is good work with a metrics problem — and the metrics problem is diagnosed in their own GenTox paper.
13.6 What needs to be done
Ordered. Each tier gates the next.
TIER 0 — establish the ground truth (days; nothing below matters without it)
| # | do | why |
|---|---|---|
| 0.1 | the mean predictor — ignore the source, predict the average target profile | Ahlmann-Eltze (2025): 5 FMs + 2 deep models fail to beat it. In one simulator regime it scores 0.797; TransTissueFormer reports 0.793. |
| 0.2 | row-wise PCC, alongside column-wise | Undefined for the mean predictor — that’s what makes it the metric that exposes it. GenTox §2.3 already argues for it. |
| 0.3 | Funk-SVD alone — Algorithm 1 line 3 already imputes the test targets. Read them out. | Ten minutes. The number exists inside the pipeline. |
| 0.4 | ridge on the augmented pairs, into Figure 7 | Verified: scores . It would top that figure. |
| 0.5 | the strict protocol — withhold all non-source tissues at test columns | The current protocol lets brain and heart inform the test treatment. Deployment has only liver. |
| 0.6 | MAR vs MNAR | Table 3 decomposes exactly into 24 study panels (residual 0.0, all 24 structural zeros). Missingness is study design → plausibly MNAR, contra the stated MAR assumption. |
These are not criticism. They’re the field’s central methodological problem — the Virtual Cell Challenge ran 1,200 teams and reported models “not yet consistently outperforming naive baselines.” Running them is the highest-value, lowest-risk contribution available.
TIER 1 — the gene table (days–weeks; touches 96.6% of one model)
| # | do |
|---|---|
| 1.1 | initialize / from scGPT gene embeddings. Same shape (). One tensor load. |
| 1.2 | ablate: random / co-expression from DrugMatrix itself ⭐ / scGPT / UCE-ESM2 / shuffled / ortholog-only |
| 1.3 | make the gene side inductive — . GenTox’s own argument, other axis. |
⚠️ The control is 1.2’s second row, not the first. “Pretrained beats random” is rigged when the system is underdetermined. Does scGPT beat DrugMatrix’s own co-expression? If it loses — consistent with Kedzierska and Souza & Mehta — that’s also a result, and it converts a hedge into evidence. Both outcomes publish.
What 1.3 buys beyond a leaderboard bump:
- new platforms — CodeLink’s Cyp1a1 and Affymetrix’s Cyp1a1 are different lookup rows today. With features they’re the same feature. TransPlatformer’s problem, dissolved.
- new species — rat→human. A lookup table cannot, ever. UCE tokenizes by protein sequence — no dictionary.
- the underdetermined tissues — brain: 65 observations, 300 parameters. A shared function doesn’t need 300 observations per gene.
TIER 2 — the cheap fixes (hours–days each; all compose)
| # | do | cost |
|---|---|---|
| 2.1 | target-tissue embedding | 4,096 params. Fixes the 0.23 collapse by construction. TransPlatformer §3.3 already proved the trunk transfers. |
| 2.2 | tag the synthetic data (Caswell 2019) | 512 params. Quarantines a proven artifact. |
| 2.3 | noise the augmentation (Edunov 2018) | Funk-SVD output is noiselessly linear — the extreme case. |
| 2.4 | iterate the augmentation (Hoang 2018) | Round 1 uses the trained model to re-impute → nonlinear → the artifact dilutes. |
| 2.5 | slot embedding | 8,192 params (0.18%). Block-1 attention is provably inert without it. Check the code first. |
| 2.6 | sweep and | makes the transformer real. If performance is flat, the transformer isn’t contributing. |
TIER 3 — the contributions (weeks–months)
| # | do |
|---|---|
| 3.1 | ⭐ enrichment-consistency as a metric. Score by whether predictions support the same biological conclusions. Robust to Theorem 1. The mean predictor scores zero by construction — identical enrichment for every treatment. TransTissue did this by hand for 3 of 44 and never automated it. |
| 3.2 | finish GenTox §5 (Gene Network Analysis). §2 spends three pages proving it’s essential, then leaves it an empty header. |
| 3.3 | unify GenTox + TransTissueFormer — one model, tissue embedding + compound embedding. Funk-SVD is the linear special case of CPA; this subsumes rather than replaces. |
| 3.4 | zero-shot to the 24 empty tissue pairs. The zeros are structural — no pairwise model can ever reach them. §3.3 proves the mechanism works. |
| 3.5 | the fold-change corpus — pseudobulk Tahoe ÷ DMSO + LINCS L5 + TG-GATEs + DrugMatrix ≈ 1.4M interventional differential signatures. Doesn’t exist. Nothing prevents it. |
13.7 The one-paragraph version
Four papers, one matrix, four axes. ToxCompl fills holes with a rank-300 factorization — running at obs/param 1.23, marginal, and 0.74 (underdetermined) at the they tried, which explains their own unexplained failure. TransPlatformer harmonizes machines, proves standard attention is impossible (2 layers fit on a V100S), and buries the best result in the program in §3.3: zero-shot to brain, 2.42× better than brain’s own model. TransTissueFormer translates organs, reports 0.793 with an augmentation that is provably an exact linear map, and reports a multi-task collapse that is textbook missing-target-token — which TransPlatformer §3.3 already showed how to fix. GenTox goes inductive on drugs with a GNN pretrained on 1,000,000 compounds — a foundation model, built here, in 2024 — proves learned beats hand-crafted, proves PCC is broken two years before the field agreed, and then says: “we do not perform inductive learning on the genes.”
All four have a randomly-initialized gene embedding table at their core. scGPT ships one, 512-dimensional, matching, trained on 33 million cells, with the incompatible part in a value encoder none of these architectures have.
Run the mean baseline first. Everything above is conditional on it.
13.8 The honest caveat
Everything in Tiers 1–3 is downstream of Tier 0.1.
If the mean predictor matches 0.793 on real DrugMatrix, then cross-tissue translation is mostly “what does a poisoned kidney look like in general” — and the premise needs rethinking, not extending. Most of 15_FRONTIER.md gets rewritten.
That is not a prediction. It is an unknown, and it is cheap to resolve. Which is exactly why it goes first.
Verified claims are tested in code/. Unverified ones are flagged in 17_SOURCES.md. §13.4(a)’s reading of the TransPlatformer/TransTissueFormer relationship is mine, though it follows directly from the two task definitions. Numbers are verbatim from the papers except where marked ⭐ (my analysis).
Research Agenda
Goal: bridge genomics foundation modelling and toxicogenomics — expand coverage, close the gap between the cross-tissue translation program and the single-cell FM literature.
Structure: two tracks, deliberately separated.
- Track A — Defensible. Supported by evidence that can be pointed at, or by code in
code/that runs today. - Track B — Speculative. Bets. Some are thesis-scale, some are probably wrong. Confidence labelled throughout.
Every item is tagged:
🟢 verified — tested in code, in this repo 🔵 derived — follows from the papers’ own equations 🟡 hypothesis — plausible, untested 🔴 speculation — I could easily be wrong
Track A — Defensible
A0. The Tier-0 baselines (do these first — literally first)
Cost: an afternoon each, on real data. Why first: you’re new. Running a baseline is the highest-value, lowest-arrogance contribution available. Nobody has ever resented the person who checked. And these determine whether anything downstream is worth doing.
A0.1 — The mean predictor 🔵
Ignore the liver profile entirely. Predict the average measured kidney profile across training treatments. Score it.
Why it matters: Ahlmann-Eltze et al. (Nature Methods 2025) benchmarked five foundation models plus two other deep models. For unseen perturbations, none beat predicting the training mean.
What the simulator says (exp01), sweeping the generic:drug-specific variance ratio:
| regime | PCC mean | PCC ridge | gap | |
|---|---|---|---|---|
| almost all generic | 0.9 / 0.1 | 0.943 | 0.941 | −0.002 |
| mostly generic | 0.75 / 0.25 | 0.797 | 0.838 | 0.041 |
| balanced | 0.6 / 0.4 | 0.616 | 0.805 | 0.189 |
| mostly specific | 0.4 / 0.6 | 0.346 | 0.779 | 0.433 |
| almost all specific | 0.15 / 0.85 | −0.025 | 0.742 | 0.767 |
Read the “mostly generic” row. The mean predictor — which never looks at the source — scores 0.797.
TransTissueFormer reports 0.793.
That is not evidence the paper is wrong. It is evidence that 0.793 is consistent with a regime where the model learned nothing drug-specific, and nobody has checked which regime DrugMatrix is in. That’s the whole argument for running this.
A0.2 — Row-wise PCC 🟢 ← the cheapest high-value thing in this document
TransTissue reports only column-wise PCC. Report row-wise too.
Why this is decisive (proof in 16_MATH_NOTES.md §3.5): the mean predictor outputs , constant along each row. So and is undefined — not low, undefined.
Row-wise PCC is exactly the metric that exposes the mean baseline. Verified in exp01: mean baseline scores , NaN.
And GenTox §2.3 already argues from first principles that row-wise metrics are mandatory — with a real trained model scoring / .
The metric that would settle the question is the one the same program already argued for, in another paper, and it isn’t in this one. That framing is respectful and pointed. It’s not “your paper is wrong,” it’s “shouldn’t we apply GenTox §2.3 to TransTissue?”
A0.3 — Funk-SVD alone 🔵
Algorithm 1 line 3 imputes over , which already includes estimates at the withheld positions. The imputation has already predicted the test targets. Read them out, score against measured KI. No transformer.
If Funk-SVD alone gets ~0.75, TransTissueFormer adds little over the matrix completion, and the contribution is ToxCompl-as-augmentation — still a contribution, differently stated.
Ten minutes. The number already exists in their pipeline.
A0.4 — The augmented task is exactly linear 🟢 VERIFIED
I claimed this. I tested it. It holds. My rank prediction was wrong.
Derivation in 16_MATH_NOTES.md §2. Given :
Results (exp02):
| test | MAE | |
|---|---|---|
| ridge on augmented pairs | 1.0000 | 0.0000 |
| analytic , no fitting | 1.0000 | 0.0000 |
| 1.000000 | — |
Where I was wrong: I predicted . Observed rank is , flat across . is an upper bound; Funk-SVD doesn’t use its capacity. The corrected claim is stronger — the augmented task can be nearly rank-one.
Consequences for Figure 7 (RF 0.51 / MLP 0.64 / TTF 0.90 on augmented data):
- it measures how well each architecture approximates a low-rank linear map
- TTF’s bottleneck () is structurally matched to the generative process — a matched filter
- a ridge baseline belongs in that figure and would likely top it
Scope — say this part out loud: this says nothing about the fine-tuned 0.72 on real measured data. That’s real held-out measurement. It says one figure means something different from what it claims.
The real-data version, an afternoon: run ToxCompl, induce , plot . If near rank-one, the augmented pretraining data carries only the generic stress response.
A0.5 — The eval protocol vs. the deployment claim 🔵
Algorithm 1 line 2 withholds — target rows at test columns. But the source and every other tissue for treatment stay in during factorisation. Figure 4’s narrative depends on it: “the correlation of LI treatments 6 and 2 makes it possible to infer BR treatment 6, which can further help to infer the withheld KI profile for treatment 6.”
At deployment you have only liver for a new compound. So cannot be informed by the other organs.
Stricter protocol: . Implemented as strict_split in toxsim/completion.py. Their stated objection (“the column would be empty”) doesn’t apply — the source is still there.
Numbers will drop. That’s the number supporting the deployment claim.
A0.6 — Missingness is not at random 🟢 VERIFIED, and this one is new
TransTissue §5 asserts: “Completion algorithm for missing at random patterns can be used for imputation.”
I think that’s false, and it’s testable.
toxsim/fit_panels.py solves where is Table 3 and encodes which study panels contribute to which entries. Result:
- residual 0.0
- mean absolute error 0.0
- all 24 structural zeros reproduced
Table 3 decomposes exactly into a non-negative sum of 24 study panels.
The structural zeros are the argument. Table 3 has despite , . Under independent sampling you’d expect pairs. Exactly zero means brain was only ever measured in studies that did not do liver. Study design, not sampling.
So: missingness depends on study design study design depends on what was expected to be interesting MNAR Funk-SVD is biased in a way low-rank recovery theory doesn’t cover.
How much does it matter? Unknown. The simulator can generate MAR and MNAR missingness over identical ground truth — clean self-contained experiment. This is a good first independent project: small, well-defined, nobody’s done it, and it strengthens the group’s flagship method rather than attacking it.
A1. Gene embeddings as a prior for 🟡
The safe foundation-model contribution. The natural next step from the existing paper.
Don’t fine-tune scGPT end-to-end. The blocker is concrete: scGPT’s value encoder eats binned absolute expression; DrugMatrix is fold-change, already differenced. There’s no sensible way to feed one to the other. That mismatch is the honest answer to “why not just fine-tune scGPT?”
Instead: take the gene embedding matrix and use it to initialize in Funk-SVD.
Why the right shape:
- Textbook cold-start with side information. ToxCompl+ §3.1 already does side information for rows. This is just better side information.
- Dodges the value-encoding problem entirely. Gene embeddings don’t care how you encode expression. They encode which genes are functionally related — species-conserved, modality-agnostic.
- Improves the augmentation, the engine of the whole program.
- Cheap.
The species problem, and its clean solution. scGPT and CellFM are human; DrugMatrix is rat. Ortholog mapping is ~80% clean 1:1, and the cytochrome P450 family — exactly the genes toxicology cares about — is notoriously diverged.
UCE sidesteps this. It tokenizes genes via ESM2 protein embeddings, representing any protein-coding gene from any species by sequence alone, zero-shot, no ortholog mapping. Verified: trained on 36M cells across 8 species; the paper explicitly claims novel-species generalization.
NLP analogy: byte-level/subword tokenization for an unseen language vs. a fixed vocabulary that OOVs everything.
Design so it can’t fail to inform:
| initialization of | role |
|---|---|
| random | current baseline |
| co-expression from DrugMatrix itself | the critical control |
| scGPT embeddings (ortholog-mapped) | the obvious FM |
| UCE / ESM2 embeddings | no mapping needed |
| shuffled scGPT embeddings | is it content or just structure? |
- FM embeddings win nice result, answers the reviewer.
- They lose to DrugMatrix’s own co-expression also a result, consistent with Kedzierska, and it converts “we plan to explore this in future work” into “we tested it; it doesn’t help; here’s the evidence.”
Both outcomes publishable. That’s what makes it the right first project.
A2. Target-tissue conditioning 🟡 ← cheapest idea with a real upside
The multi-task model collapsed to (vs 0.53 single-task). Their diagnosis, verbatim: “given the same source LI profile the model cannot decide which is the correct target.”
Formally (16_MATH_NOTES.md §4.2): under squared loss, the optimal single-valued is the conditional mean
The model is behaving optimally for a mis-specified problem. Mush is the correct answer to an ill-posed question.
The fix: condition on the target. , via an embedding added to the bottleneck. One embedding.
This is <2es> from Johnson et al. 2016. mBART, M2M-100, same trick. You know this better than anyone in that group.
Why it’s the right thing to bring: it’s cheap, it’s from your expertise, it costs the original authors nothing if you’re wrong, and it turns a reported negative result into a positive one.
Caveat to keep attached: untested. 425 pairs is very little and the conditioning could be swamped. Stated as an open question, not a prediction.
Track B — Speculative
B1. The CPA reformulation 🟡 → 🔴
Confidence: medium on the framing, low on it beating the current model.
Translation: encode source infer decode with .
The observation that makes it land (16_MATH_NOTES.md §4): Funk-SVD is the linear special case of CPA. Set , a lookup, and is .
So this subsumes the group’s contribution rather than replacing it. That framing matters enormously for how it’s received.
What it buys:
- One model for all 64 pairs, not 32.
- Uses unpaired profiles — a brain profile with no liver counterpart still trains .
- Plug GenTox’s GNN compound embedding in as generalizes to unseen drugs. This unifies GenTox and TransTissueFormer into one model.
- Zero-shot tissue pairs. BR–LI has 0 pairs — and A0.6 proves that’s structural, not accidental. No pairwise model can ever reach it. But if trains from any brain data and from any drug data, you can decode brain from liver having never seen an LI–BR pair.
Point 4 is the paper. It’s zero-shot NMT, and it’s exactly what target-token conditioning unlocked.
🔴 Why it might fail: the whole program lives at . CPA was built for single-cell data with – cells. Adversarial disentanglement at may simply not train. The honest version of this project includes “and it didn’t work” as a likely outcome.
B2. The right FM for toxicogenomics isn’t a single-cell FM 🔴
Confidence: low-to-medium. This is a thesis-scale bet.
The TransTissue future-work paragraph assumes “foundation model” = “single-cell foundation model.” Look at what actually matches the task:
| corpus | scale | modality | match |
|---|---|---|---|
| scGPT’s 33M cells | huge | single-cell, absolute expression | ❌ wrong modality/resolution, observational |
| LINCS L1000 | ~1.3M signatures | bulk-ish, drug-response, differential | ✅ same shape as the task |
| Tahoe-100M | 100M cells | single-cell drug perturbation | ✅ interventional, at scale |
| Open TG-GATEs | ~25k | bulk rat liver/kidney tox | ✅ same domain, small |
LINCS L1000: ~1.3M drug-response signatures, ~20k compounds, ~80 cell lines, measured as differential expression on ~978 landmark genes then extrapolated — which is exactly the S1500+/GeniE trick DrugMatrix uses. Same modality, same differential structure, same landmark-plus-extrapolation design. Appears in none of the four papers.
The mechanistic argument. Ahlmann-Eltze’s diagnosis for why FMs underperform: pretraining data is observational. You can’t learn what happens when you push a system by only watching it sit still. LINCS and Tahoe are interventional.
Thesis: the right foundation model for toxicogenomics is a perturbation-response model, not a cell-state model. Nobody has built one.
🔴 Risks: LINCS is cell lines, not in-vivo organs. Human, not rat. Cancer lines are weird. The domain gap may be as bad as scGPT’s, just differently shaped. Verify the LINCS numbers before building on them — they’re from my training knowledge, not checked (17_SOURCES.md).
B3. Predicting translatability before training 🟡
TransTissue observes HE–TM at on 7 pairs vs LI–KI at on 425. Tempting: relatedness beats data volume.
But that comparison is confounded — I fell into this myself in exp01 and kept the wrong version in the code as a warning. Ridge with 400 training pairs beats ridge with 30 regardless of biology. Data volume swamps relatedness.
The controlled version (hold fixed at 25, vary only relatedness):
| pair | same family | available | PCC ridge | PCC mean | gap |
|---|---|---|---|---|---|
| BM→SP | YES | 173 | 0.956 | 0.693 | 0.263 |
| LI→HE | no | 201 | 0.838 | 0.646 | 0.192 |
| LI→KI | no | 430 | 0.834 | 0.672 | 0.162 |
Same-family sorts top once size is controlled. (This is a consistency check, not evidence — we built the families in.)
The research question: can you predict translation quality from a tissue-relatedness prior, before training? In NLP this is language similarity for transfer selection — well studied, and you know it. Nobody has asked it for tissues.
Why it’s worth something: with 24 of 64 pairs structurally empty (A0.6), knowing which pairs are worth attempting is directly useful. Candidate priors: shared gene programs, GTEx tissue correlation, cell-type composition, developmental lineage.
B4. GenTox §5 — the free one 🟢
GenTox §5 (Gene Network Analysis) and §6 (Out-of-distribution validation) are empty section headers. The paper spends three pages proving gene network analysis is the thing that matters and that column-wise metrics can’t see it — then doesn’t do it.
The argument for it is already written. It’s well-specified. It’s the most obviously useful thing an incoming person could hand their advisor.
It is unfinished, well-specified, and the argument for why it matters is already written.
Ordering
Week 1-2 read the four papers (09_WALKTHROUGH.md §8)
run the code, break it, argue with it
Week 2-3 A0.1 mean baseline ← on real data, the moment you have it
A0.2 row-wise PCC ← cheapest, most decisive
A0.3 Funk-SVD readout ← ten minutes
Week 3-4 A0.4 rank of W on real data
A0.5 strict protocol
A0.6 MAR vs MNAR ← good first independent project
then A2 target-token conditioning ← your expertise, cheap
A1 gene-embedding prior ← both outcomes publishable
B4 GenTox §5 ← ask for it
later B1 CPA reformulation
B3 translatability prediction
B2 the perturbation-FM bet
Note the shape. Everything in Track A either strengthens the group’s existing work or answers a question they’ve already asked. Nothing in it requires you to be adversarial. That’s deliberate — it’s how you build standing to attempt Track B.
The meta-point
The four papers are good work with a metrics problem, and the metrics problem is diagnosed in their own GenTox paper. GenTox §2 proves PCC is unreliable and proposes row-wise + column-wise + MAE + rare MAE. TransTissue reports column-wise PCC.
The highest-value thing you can do is not a new model. It’s applying GenTox §2’s own metric suite to TransTissue’s own results. That’s not a criticism of the group — it’s finishing something they started, in a paper they wrote.
Which is also the most defensible position for a new person to take: “I read all four and noticed the metrics argument in one doesn’t seem to have made it into the others. Should it?”
Verified claims are tested in code/. Run python experiments/exp01_baselines.py and python experiments/exp02_rank_test.py.
Unverified claims are flagged in 17_SOURCES.md. Check before repeating them.
The Frontier: Bridging Genomics Foundation Models and Toxicogenomics
A research program.
Reading order: 01_BACKGROUND.md → 10_SOTA_LANDSCAPE.md → this. Math in 16_MATH_NOTES.md. Runnable checks in code/.
The thesis
The foundation model revolution has not reached toxicogenomics, and the reasons are structural rather than incidental. The gap is not “nobody got around to it” — it is a genuine mismatch of modality, resolution, species, and system. Closing it requires building bridges, not fine-tuning. And the field’s own 2025–2026 results suggest the bridges are worth building precisely because scale alone has not delivered.
Three facts, each independently sourced, that together define the opportunity:
1. There is no toxicogenomics foundation model. Searching the 2026 literature turns up DILI classifiers, multilabel models on TG-GATEs, R packages, and ADMET reviews. No foundation model. Every FM in genomics is single-cell, absolute-expression, mostly-observational, human, in vitro.
2. Scale has not solved perturbation prediction. The Virtual Cell Challenge 2025 ran 1,200+ teams and concluded that models are “not yet consistently outperforming naive baselines across all metrics”, and that “the winning approaches combined deep learning with classical statistical features, suggesting pure end-to-end learning is yet to solve this problem.” Souza & Mehta (2026) show parameter-free linear methods beat FMs — including out-of-distribution, on novel cell types and organisms absent from training. Ahlmann-Eltze et al. (2025) show five FMs plus two deep models failing to beat additive and mean baselines.
3. The diagnosis points at exactly what toxicogenomics has. Ahlmann-Eltze’s hypothesis for why FMs underperform: the pretraining data is observational. You cannot learn what happens when you push a system by watching it sit still.
Toxicogenomics data is 100% interventional. Every column is an experiment where someone dosed an animal and measured the consequence. It is small — ~2,700 treatments against 100M cells — but it is the kind of data the field’s own diagnosis says is missing.
That asymmetry is the program.
The gap map
Everything below is an attack on one of these rows.
| Axis | Single-cell FMs | Toxicogenomics (DrugMatrix) | Severity |
|---|---|---|---|
| values | absolute counts, binned | fold-change | 🔴 architectural — a type error |
| resolution | single cell | bulk tissue | 🔴 hard |
| species | human | rat | 🟡 tractable (ESM2) |
| system | cells in a dish | organs in a live animal | 🔴 the moat |
| organs | ~none | eight | 🔴 the moat |
| causality | mostly observational | 100% interventional | 🟢 advantage |
| scale | cells | treatments | 🔴 hard |
The value-encoding row deserves restating because it is the one people wave away. scGPT’s value encoder consumes binned absolute expression. A fold-change of is not a count, is not in any bin, and the model has never seen a negative number in that slot. It is a type error, not a domain gap. No amount of fine-tuning fixes a type error. You either convert the data or change the encoder — and choosing which is a research decision, not an engineering one.
F1. Move everything into fold-change space, not the model into count space
Confidence: 🟡 medium-high. This is the load-bearing idea.
The reframe
Everyone attacking the modality gap tries to push toxicogenomics data into the FM’s absolute-expression space. That’s backwards. Fold-change is the lower-information, more transferable representation — it has already quotiented out the baseline, the platform, and much of the batch effect. It’s the interlingua.
So: build the corpus in fold-change space and pretrain natively there.
The corpus that doesn’t exist yet
| Source | Native form | → fold-change | Scale after conversion |
|---|---|---|---|
| DrugMatrix | FC | ✅ already there | ~2,700 × 8 tissues |
| Open TG-GATEs | intensity | ÷ time-matched control | ~2,238 treatments |
| LINCS L1000 Level 5 | z-scores | ✅ already differential | ~1.3M signatures |
| Tahoe-100M | single-cell counts | pseudobulk ÷ DMSO control | ~60,000 drug–cell signatures |
| CMap, DRUG-seq, GEO perturbation sets | mixed | varies | + more |
The two moves that make this work:
(a) LINCS Level 5 is already fold-change-shaped. Z-scores are signed, centred at zero, and represent differential response. Structurally the same object as FC. This is not a coincidence — both are answering “how much did this gene move.” The June 2026 task-adapted paper fine-tuned scGPT on L1000 Level 3 (absolute). Nobody has used Level 5 as a native differential pretraining corpus.
(b) Pseudobulking converts single-cell perturbation data into bulk fold-change. ⭐
Tahoe-100M has DMSO controls per cell line by construction. Pseudobulk each of the ~60,000 drug–cell-line combinations against its own control and 100M single cells become ~60,000 bulk-equivalent fold-change signatures — in exactly the modality DrugMatrix uses.
This is the bridge. It throws away single-cell resolution deliberately, and that’s the point: it buys commensurability with every bulk toxicogenomics dataset ever collected.
The architecture question
Once everything is fold-change, the value encoder must handle signed, continuous, zero-inflated values. Options, in increasing order of interest:
- Signed binning — bins over with a dedicated
≈0bin absorbing the 92%. Crude, works, closest to scGPT. - Continuous scalar encoder — MLP on the value, added to the gene embedding. scFoundation-ish.
- Sparse encoding — only attend to genes with . The 92% is structurally uninformative, so don’t spend attention on it. This is scFoundation’s non-zero-encoding trick, repurposed: in fold-change space, “zero” genuinely means “nothing happened,” which is a much cleaner signal than single-cell dropout, where zero means “expressed, or not, we can’t tell.”
⭐ Option 3 is the interesting one, and it’s an argument that fold-change data is better for FMs than single-cell data in one specific respect. Single-cell zeros are ambiguous (dropout). Fold-change zeros are meaningful — the gene really didn’t move. The sparsity is signal, not missingness. No one seems to have made this point.
Experiments
- Build the corpus. Verify L1000 Level 5 and pseudobulked Tahoe land in comparable ranges.
- Pretrain a modest transformer with masked-gene prediction in fold-change space.
- Evaluate: does it transfer to DrugMatrix cross-tissue translation?
- Ablate against: scGPT embeddings (ortholog-mapped), co-expression embeddings from DrugMatrix itself, random init, HVG selection.
Why it might fail 🔴
- Cell lines ≠ organs. LINCS and Tahoe are cancer lines in dishes. The domain gap to in-vivo rat organs may be as bad as scGPT’s, just differently shaped.
- Pseudobulking may destroy the thing that made the single-cell data worth collecting.
- L1000’s 978 landmarks vs DrugMatrix’s 8,565 probes — gene-space alignment is its own project.
Why it’s still the right bet
Every ablation outcome is publishable. If a fold-change-native FM beats scGPT-on-orthologs, that’s a result. If it loses to DrugMatrix’s own co-expression structure, that’s also a result — and it’s consistent with Souza & Mehta, and it converts “we plan to explore this in future work” into “we tested it, here’s the evidence.”
F2. Replace GeniE with a foundation model
Confidence: 🟢 high that it works. 🟡 medium that it’s interesting. Highest ratio of usefulness to risk in this document.
The observation
BioSpyder S1500+ physically measures ~2,700 landmark genes. A tool called GeniE extrapolates to ~20,000. So a large fraction of “measured” BioSpyderWT data is itself a model prediction.
Which means: when ToxCompl+ imputes DSMatrix, it is partly imputing from imputations, and nobody has quantified how much error that injects.
Why this is the cleanest FM insertion point in the entire program
Landmark → whole-transcriptome extrapolation is:
- absolute-expression space ⟹ no modality mismatch. This is the one place scGPT’s native input format is already correct.
- exactly what scGPT’s masked-gene objective was trained to do — predict unmeasured genes from measured ones
- a well-posed supervised task with ground truth (samples profiled on both S1500+ and a whole-transcriptome platform)
- immediately useful — better extrapolation improves every downstream analysis, with no new claims required
The deeper connection ⭐
LINCS L1000 uses 978 landmarks + extrapolation. S1500+ uses ~2,700 landmarks + extrapolation. These are the same architecture.
So a model trained on L1000’s landmark→whole-transcriptome task should transfer to S1500+‘s landmark→whole-transcriptome task. Different landmark sets, different species — but the task is identical, and there is ~1.3M signatures’ worth of training data for it.
Nobody has drawn this line. It’s sitting there.
Experiments
- Find samples with both S1500+ and whole-transcriptome measurements. Score GeniE against a held-out set. Establish the baseline nobody has published.
- Fine-tune scGPT (masked-gene objective, ortholog-mapped) on landmark→WT. Compare.
- Try L1000-pretrained → S1500+ transfer.
- Propagate the uncertainty. GeniE gives point estimates. An FM gives a distribution. Feed that into ToxCompl+ as per-entry observation noise.
Why item 4 is the actual contribution
ToxCompl+ treats every observed entry as equally reliable. But GeniE-extrapolated entries are less reliable than directly measured ones, and by a quantifiable amount. Weighting the factorization objective by measurement confidence:
is a one-line change with a real justification, and it directly targets the MaxAE/rare-signal failure that ToxCompl+ was built to fix. If extrapolated entries are where the sign flips concentrate, this is the fix.
Testable prediction: the ToxCompl MaxAE failures concentrate in GeniE-extrapolated rows. That’s checkable today with existing data and it would be a satisfying result either way.
F3. Tissue tokens and zero-shot organ translation
Confidence: 🟡 medium on the mechanism, 🔴 low that it works at n=425.
The setup
Cross-tissue translation is machine translation between low-resource language pairs. The correspondence is unusually tight:
| Toxicogenomics | NMT |
|---|---|
| tissue | language |
| liver | English — the over-resourced pivot |
| brain, intestine | the low-resource languages you actually want |
| shared treatments | parallel corpus size |
| LI–KI = 425 | a low-resource pair |
| BR–LI = 0 | a zero-shot pair |
| matrix-completion augmentation | back-translation (Sennrich et al., which TransTissue cites) |
| imputing via a third tissue | pivot / multilingual back-translation |
The bug
TransTissueFormer’s multi-task model collapsed to (vs 0.53 single-task). The stated diagnosis: “given the same source LI profile the model cannot decide which is the correct target.”
Formally (16_MATH_NOTES.md §4.2): fitting where ranges over under squared loss gives the optimal single-valued solution
The model is behaving optimally for a mis-specified problem. Mush is the correct answer to an ill-posed question. This is not a finding about biology; it is a conditioning bug.
The fix is one embedding: with added to the bottleneck. This is <2es> from Johnson et al. (2016). mBART, M2M-100, same trick.
Why zero-shot is the real prize ⭐
Of 64 tissue pairs, 24 have no parallel data at all. And these zeros are structural, not accidental — see 16_MATH_NOTES.md §6: Table 3 decomposes exactly into study panels, and BR–LI = 0 despite BR=65 and LI=1674, where independent sampling predicts ~40 pairs. Brain was only ever measured in studies that did not do liver.
No pairwise model can ever reach those 24 pairs. Not with more compute, not with more clever architecture. The data does not exist and never will.
But zero-shot NMT solved exactly this. If trains from any brain data and the drug representation from any drug data, you can decode brain from liver having never seen a single LI–BR pair.
That is the paper. Not “we improved PCC by 5%” — “we translated to organs for which no paired data exists, and here is the enrichment analysis showing the predictions are biologically coherent.”
Why it might fail 🔴
. Multilingual NMT’s zero-shot results came from corpora of millions of sentence pairs. Conditioning could be entirely swamped. The honest version of this project includes “and it didn’t work” as a likely outcome — but a well-executed negative result on 24 structurally-empty tissue pairs, with the mechanism clearly diagnosed, is still worth writing.
F4. Species-agnostic gene tokenization
Confidence: 🟡 medium.
The problem
Rat data, human foundation models. Ortholog mapping is ~80% clean 1:1 — and the missing 20% is concentrated exactly where toxicology lives. Cytochrome P450 families have expanded and diverged differently in rodents. That’s not bad luck: those genes are under strong species-specific selection (different diets, different toxins). The genes that matter most for drug metabolism are the ones where the dictionary fails.
The solution that already exists
UCE tokenizes genes via ESM2 protein embeddings — a gene’s token derives from its protein sequence, not a vocabulary lookup. It represents any protein-coding gene from any species, zero-shot, including species absent from training. Trained on 36M cells across 8 species.
NLP framing: this is byte-level/subword tokenization for an unseen language, versus a fixed vocabulary that OOVs everything. Same problem, same solution, different field.
The connection nobody has drawn
PLOS One 2020 translated drug-induced expression rat→human with a CNN and a bottleneck DNN, explicitly framing the goal as “circumventing the current reliance on orthologs.” They did it by learning a mapping. ESM2 tokenization is the principled way to circumvent orthologs — you never need the dictionary because the representation is derived from sequence.
That paper is the closest prior work to TransTissueFormer in existence (same architecture family, same problem, one axis over) and it is not cited in any of the four papers.
Experiment
Initialize in the factorization from different gene representations and compare:
| init | tests |
|---|---|
| random | the baseline |
| co-expression from DrugMatrix itself | the critical control |
| scGPT (ortholog-mapped) | the obvious FM |
| ESM2 / UCE (no mapping) | species-agnostic |
| shuffled ESM2 | is it the content or just some structure? |
| ortholog-restricted subset | isolates the mapping penalty |
The last row is the interesting one: run everything twice, once on all genes and once restricted to clean 1:1 orthologs. If ESM2’s advantage is concentrated in the non-ortholog genes — the P450s — that’s a precise, mechanistic result rather than a leaderboard bump. And it would be exactly what the theory predicts.
F5. Missing-not-at-random imputation
Confidence: 🟢 high that the premise is right. 🟡 medium that fixing it changes much. Best-defined project here.
The finding
TransTissue §5 states: “Completion algorithm for missing at random patterns can be used for imputation.”
That assumption is load-bearing for the entire program — matrix completion recovery theory assumes MAR — and it appears to be false.
Fitting study panels to Table 3 by non-negative least squares (code/toxsim/fit_panels.py):
where is the vectorized pair-count table and , gives:
- residual 0.0
- mean absolute error 0.0
- all 24 structural zeros reproduced
using 24 panels out of 47 candidates. Table 3 decomposes exactly into a non-negative sum of study panels.
Why that means MNAR
The structural zeros are the argument. Under any independent-sampling model,
Observing exactly zero is not sampling noise. Brain was only ever measured in studies that did not do liver. That is study design.
And study design depends on what the toxicologist expected to be interesting for that compound. A neurotoxicant gets a brain panel. So:
The data are Missing Not At Random, and the imputation is biased in a way low-rank recovery theory does not cover.
The fix
Standard causal-inference machinery, unusually applicable here:
Inverse propensity weighting. Model and weight:
Up-weight rare observations (a brain measurement is informative precisely because brain is rarely measured). The panel structure makes unusually estimable — most MNAR problems don’t hand you the missingness mechanism this cleanly.
Why this is a good project
- Well-posed. The simulator generates MAR and MNAR missingness over identical ground truth, so you can measure the bias directly before touching real data.
- Nobody has done it. MNAR in toxicogenomics imputation is unexamined.
- It strengthens the existing method rather than attacking it. IPW is a one-line change to a working system.
- It has a falsifiable prediction: if missingness is MNAR, imputation error should be systematically worse for tissues whose measurement was most selective (BR, IN) — beyond what their sample size alone explains. Testable today.
⚠️ Caveat: the panel decomposition is not unique (36 equations, 47 candidates — underdetermined). It is a valid decomposition, not necessarily the study design. The real study metadata would settle it.
F6. Enrichment-consistency as a metric ⭐
Confidence: 🟢 high. Most under-rated idea here.
The problem the field just rediscovered
The Metric Picks the Winner (June 2026): on drug-response prediction with held-out chemistry, model rankings invert almost end-to-end depending on the metric. Under one metric a linear fingerprint baseline wins and deep models look pointless; under another the deep models win and the first metric’s winner is the worst chemistry-aware predictor.
GenTox proved the underlying pathology in 2024 (Theorem 1: unrelated profiles correlate at ; their own baseline scored with ). GenTox was early, and the field has now independently caught up to it.
So: correlation metrics are unreliable, and everyone now knows it. What replaces them?
The proposal
Score predictions by whether they support the same biological conclusions as the truth.
TransTissueFormer already did this — by hand, for 3 of 44 profiles. Gemfibrozil → PPARα ✓. Cisplatin → TP53 ✓. Lead → p53 + oxidative stress ✓. A toxicologist looked at the predictions and said yes, that’s what lead poisoning looks like.
That validation is worth more than every PCC in all four papers. And it was done manually, on 3 profiles, and never automated.
Automate it:
for each held-out treatment c:
E_true = enrich(top_100_up(true_profile_c)) # Enrichr / hypergeometric
E_pred = enrich(top_100_up(pred_profile_c))
score_c = agreement(E_true, E_pred) # rank correlation over gene sets,
# or Jaccard over significant sets
Why this is the right metric for this field
- Robust to Theorem 1. Enrichment operates on ranks of the extremes, not on the whole vector. The 92%-of-values-are-zero problem, which is what inflates PCC, doesn’t touch it.
- It’s the downstream task. Nobody deploys a predicted profile. They deploy the conclusion. This measures the thing that matters.
- The mean predictor fails it by construction. ⭐ The mean predictor outputs the same profile for every treatment ⟹ the same enrichment for every treatment ⟹ zero discriminative power. A metric the mean baseline cannot game.
- It’s interpretable to the people who’d use it. “Our model recovers the correct MOA for 31 of 44 compounds” is a sentence a toxicologist can act on. “PCC 0.793” is not.
NLP framing: this is moving from BLEU to task-based evaluation. And the analogy to “perturbation discrimination” — the metric the Virtual Cell Challenge found models actually did improve on, even while failing on others — is close. The field is converging on retrieval/discrimination metrics over reconstruction metrics. This is that idea, with biology in the loop.
Experiment
- Implement enrichment-consistency over the DrugMatrix compounds with known MOA.
- Re-score every existing result with it. TransTissueFormer direct, TransTissueFormer + augmentation, MLP, RF, and — critically — the mean predictor and the zero predictor.
- Report the ranking next to the PCC ranking. If they disagree, that’s “The Metric Picks the Winner,” reproduced in toxicogenomics, with the correct metric identified.
That is a paper on its own, it needs no new model, and it is the single most defensible contribution available.
F7. Model the animal, not the organ
Confidence: 🔴 speculative. Thesis-scale.
The moat, stated precisely
LINCS: cell lines in dishes. Tahoe: cell lines in dishes. Most single-cell atlases: dissociated tissue, one organ at a time.
DrugMatrix: a whole animal, dosed systemically, eight organs measured from the same individual.
That means DrugMatrix contains something no amount of Tahoe scaling produces: inter-organ communication under perturbation. The liver metabolizes a compound into something the kidney then sees. The immune system responds in one organ and the effect shows up in another. That’s physiology, and it’s invisible in a dish.
The formulation
Stop modelling tissue-pair translation. Model the animal:
There is one systemic event per treatment. Each organ is a different readout of the same event. Translation is then a consequence of the model, not its objective: encode liver → infer the systemic state → decode kidney.
Note this is CPA’s structure (16_MATH_NOTES.md §4) — and Funk-SVD is its linear special case, so this subsumes the existing program rather than replacing it. It’s also STATE’s structure (State Embedding + State Transition). Three literatures, one decomposition. That convergence is evidence it’s the right one.
What it buys beyond F3
- Unpaired data becomes usable. A brain profile with no liver counterpart still trains and . Given that 24 of 64 pairs are structurally empty, this is the only way to use most of the data.
- Unseen compounds, by plugging GenTox’s GNN compound embedding into . This unifies GenTox and TransTissueFormer into one model — the two ends of the same research program, currently separate papers.
- Dose and duration become first-class. Which leads to:
The under-explored axis ⭐
Nobody models dose-response properly. DrugMatrix has (chemical, dose, duration) triples. Dose-response is frequently nonlinear and sometimes non-monotonic (hormesis: low doses help, high doses hurt). CPA handles dose, roughly linearly. No FM handles it well.
A dose-aware model gives you a clean compositional generalization test with real stakes:
train on low and high dose, predict middle dose. Train on 1-day and 7-day, predict 3-day.
That’s the Ahlmann-Eltze combinatorial-generalization test, on an axis nobody has used, with data that already exists. And unlike most compositional tests, there’s a mechanistic reason to expect structure — pharmacokinetics is smooth in dose and time.
Risk: 🔴 the whole program lives at per pair, ~2,700 columns total. CPA was built for – cells. Adversarial disentanglement at this scale may simply not train. Test on the simulator first, where the ground-truth decomposition is known.
F8. Interventional-only pretraining
Confidence: 🔴 speculative but cheap to test. The most intellectually interesting.
The hypothesis, directly tested
Ahlmann-Eltze’s explanation for FM underperformance: pretraining data is observational. Watching cells sit still teaches you what states exist, not what happens when you push.
This is Pearl’s ladder of causation, and it has never been tested head-on in this field. It’s an explanation offered for a negative result, not a controlled experiment.
The experiment
Hold architecture, parameter count, and total token budget fixed. Vary only the causal character of the pretraining corpus:
| corpus | character | scale |
|---|---|---|
| CELLxGENE | pure observational | ~50M cells |
| LINCS L1000 + Tahoe (pseudobulked) | pure interventional | ~1.3M + 60k signatures |
| 50/50 mix | both | matched |
Then evaluate all three on held-out perturbation tasks — including DrugMatrix cross-tissue translation.
Prediction: interventional pretraining wins on perturbation tasks at far lower sample count, because it’s the only corpus that contains the relevant causal information.
Why it’s worth doing regardless of outcome
- If interventional wins → the field’s scaling strategy is misdirected, and 1.3M interventional signatures beat 50M observational cells. That’s a significant claim with immediate practical consequences.
- If it doesn’t → Ahlmann-Eltze’s diagnosis is wrong, and the field needs a different explanation for its central negative result. Also significant.
Either way it converts a widely-repeated hypothesis into a measured quantity. That’s a good trade.
⚠️ Confound to control carefully: interventional corpora differ from observational ones in more than causality — different cell types, different assays, different batch structure. Matching on everything except causal character is the hard part, and probably the reason nobody has done it. A within-corpus design (Tahoe’s perturbed cells vs Tahoe’s DMSO controls, same cells, same assay, same day) may be the only clean version.
What to do in what order
FIRST — establish the ground truth. Nothing else means anything without this.
A0 the baselines: zero, mean, identity, ridge, Funk-SVD-alone
+ row-wise PCC alongside column-wise (14_RESEARCH_AGENDA.md)
Cost: days. Decides whether anything downstream is worth doing.
F6 enrichment-consistency, and re-score everything with it
Cost: weeks. Needs no new model. Most defensible contribution available.
THEN — the well-posed, self-contained projects.
F5 MNAR / propensity-weighted imputation
Testable on the simulator before touching real data.
F2 GeniE replacement + uncertainty propagation
The one place an FM plugs in with zero modality mismatch.
F4 ESM2 gene tokenization, ortholog-stratified
Every ablation outcome is informative.
THEN — the ambitious ones.
F3 tissue tokens → zero-shot organ translation
F1 fold-change-native pretraining corpus
LATER — the bets.
F7 the systemic animal model + dose-response
F8 interventional-vs-observational pretraining
The shape is deliberate. Everything in the first two blocks either strengthens existing work or answers a question the existing work already raised. Nothing requires being adversarial. That’s what buys the standing to attempt the rest.
Honest assessment
What’s genuinely novel here:
- 🟢 Enrichment-consistency as a metric (F6). The field is in an acknowledged metric crisis. A biologically-grounded, mean-baseline-proof metric is timely, cheap, and nobody has built it.
- 🟢 MNAR in toxicogenomics imputation (F5). Unexamined, and the panel structure makes the propensity model unusually tractable.
- 🟢 Pseudobulk-to-fold-change as the universal adapter (F1b). The specific move that makes 100M single cells commensurable with bulk tox data.
- 🟡 Fold-change zeros are signal, not missingness (F1). An argument that tox data is better than single-cell data in one respect. Small but I haven’t seen it made.
- 🟡 Zero-shot organ translation (F3). The mechanism is proven in NMT; the structural-zero finding makes it necessary rather than merely nice.
- 🟡 The L1000↔S1500+ landmark-architecture connection (F2). Sitting there, undrawn.
What’s already partly done:
- 🔴 “Adapt FMs to perturbation data.” Done, June 30 2026, on L1000 Level 3, human cell lines. Narrowed, not dead — in vivo, multi-organ, cross-species, fold-change remains open.
- 🔴 “Rat→human translation with deep nets.” Done, 2020 and 2023. Read both before proposing anything cross-species.
What might sink the whole program:
- 🔴 The mean baseline. If it matches the reported numbers on real data, the cross-tissue translation premise needs rethinking, not extending. This is why A0 is first. Everything above is conditional on it.
- 🔴 . Against . Some of these ideas need more data than exists.
- 🔴 Cell lines ≠ organs. The bridge in F1 may not hold weight. The pseudobulk trick makes the modality commensurable; it does nothing about the biology of a dish versus a living animal.
The strongest single argument for the whole program, and it’s worth being able to state in one breath:
The field’s own flagship competition ran 1,200 teams on 100M+ cells and reported that perturbation models still do not consistently beat naive baselines, with hybrids of deep learning and classical statistics winning. Its leading diagnosis is that pretraining data is observational. Toxicogenomics data is small, bulk, rat, and 100% interventional — the exact axis the diagnosis identifies as missing — and there is no foundation model for it.
Claims sourced in 10_SOTA_LANDSCAPE.md. Verified vs. unverified in 17_SOURCES.md. Testable code in code/.
Math Notes
Every derivation that matters across the four papers, plus the ones I added. LaTeX throughout — renders in VS Code (Markdown Preview Enhanced), Obsidian, Jupyter, and GitHub.
Notation, fixed once and used everywhere:
| Symbol | Meaning | Real size |
|---|---|---|
| the toxicogenomics matrix | , | |
| row | a (platform, tissue, gene) triple | — |
| column | a treatment = (chemical, dose, duration) | — |
| fold-change vs. control | ||
| set of observed index pairs | ||
| gene factors | ||
| treatment factors | ||
| gene and treatment biases | ||
| drug latent for treatment | ||
| tissue set, |
Write for the rows of belonging to liver, and similarly . With on CodeLink.
1. Funk-SVD / ToxCompl
1.1 The objective
Fit by SGD (Adam, , weight decay ) over observed entries only. Unobserved entries contribute nothing to the loss; they’re recovered by the low-rank structure alone.
Netflix Prize, exactly. Genes are users, treatments are movies, fold-change is the rating.
1.2 Why low rank is defensible
columns, but only distinct drugs, each at dose/duration regimes. Similar molecules (Doxorubicin, Epirubicin) produce similar responses. Genes come in co-regulated modules. The same gene is measured across 8 organs. So
and out of is plausible. Their argument, and it’s a good one.
1.3 Why it breaks
The rare signals — the of entries with — are precisely the part that isn’t low-rank. Empirically (ToxCompl+ Fig. 2), moving from DrugMatrix to DSMatrix:
with the worst point at against . The sign flipped. And increasing made MAE better and MaxAE worse still — capacity isn’t the bottleneck, the assumption is.
1.4 ToxCompl+ fix (a): side information
Rows carry features (platform, marker, organ), columns carry features (drug, duration, dosage). Embed each of features into :
Result: MaxAE , but MAE . A trade.
1.5 ToxCompl+ fix (b): attention-augmented aggregation
This is the group’s signature move. It recurs in GenTox, so learn it once.
Vanilla MF weights all latent dimensions equally via a plain dot product. Instead, learn two extra factor matrices and let them decide, per cell, how much each latent dimension counts:
where is the Hadamard (elementwise) product and is softmax.
Read it as attention. With “positions” and a single query:
Result: MaxAE , MAE . Large win.
The obvious objection: is that from attention, or from doubling the parameters ()? They pre-empt it: raising from 300 to 500 also adds parameters and hurt. Decent evidence the nonlinearity is doing real work. Not airtight — the clean ablation is with , which isolates nonlinearity from capacity. Worth asking whether that was run.
2. The linearity of the augmented task
This is my argument, not the papers’. It is tested in code/experiments/exp02_rank_test.py and it holds.
2.1 Setup
TransTissue Algorithm 1 pretrains on Funk-SVD output. So take the augmented matrix
For a fixed treatment , the source (liver) and target (kidney) profiles are:
with , .
2.2 The recovery
Stack the unknowns as and define the augmented design
Then , which is
— wildly over-determined. If has full column rank (generic for random-ish ), least squares recovers exactly:
2.3 The conclusion
Substituting back:
An exact affine map , with
So on purely augmented data, LI KI translation has a closed-form linear solution. No transformer required. Ridge regression should hit .
2.4 What the experiment found
| Test | MAE | |
|---|---|---|
| ridge () on augmented pairs | 1.0000 | 0.0000 |
| ridge () on augmented pairs | 1.0000 | 0.0009 |
| analytic , no fitting at all | 1.0000 | 0.0000 |
| recovery: | 1.000000 | — |
| ridge on real measured pairs () [control] | 0.9320 | 0.0406 |
Confirmed. Exactly.
2.5 Where I was wrong
I predicted . It doesn’t. Observed rank is , flat across .
Why: is an upper bound, not the rank. Funk-SVD doesn’t use its capacity — it allocates latent dimensions to whatever variance exists. When a generic stress response dominates, the factorisation spends nearly everything on one direction, and the induced map is essentially
— rank one. “Read the severity scalar off the liver, scale the kidney’s generic stress direction by it.”
The corrected claim is stronger than the original. The augmented pretraining task isn’t merely linear; on data with a dominant common response it’s nearly rank-one.
2.6 The rank as a diagnostic
Sweeping the generic:specific variance ratio (see §5):
| regime | ridge on augmented | ||
|---|---|---|---|
| almost all generic | 0.9 / 0.1 | 2 | 1.0000 |
| mostly generic | 0.75 / 0.25 | 2 | 1.0000 |
| balanced | 0.6 / 0.4 | 2 | 1.0000 |
| mostly specific | 0.4 / 0.6 | 5 | 1.0000 |
| almost all specific | 0.15 / 0.85 | 5 | 1.0000 |
always — the task is always exactly linear. Only the rank moves.
The afternoon experiment for real DrugMatrix: run ToxCompl (the group already has it), induce , plot . If it’s near rank-one, the augmented pretraining data carries only the generic stress response, and Figure 7’s pretrain row is measuring a matched filter.
2.7 What this does and doesn’t touch
- ✅ It says TransTissue Figure 7’s pretrain row (RF 0.51 / MLP 0.64 / TTF 0.90) measures linear-map approximation, not “intricate relationships between transcriptomic profiles from different tissues” (the paper’s phrase). And TTF’s bottleneck with is structurally matched to the generative process. Matched filter.
- ❌ It says nothing about the fine-tuned on real measured data. That’s real held-out measurement.
- ❌ It does not say TransTissueFormer is a bad model.
It says one figure means something different from what it claims, and a ridge baseline is missing from it.
3. GenTox’s metric theorems
Read GenTox §2 before trusting any Pearson correlation in this field.
3.1 Theorem 1 — PCC is inflated on absolute expression
Let be a base vector with non-vanishing variance, and
with independent sparse perturbations having at most nonzero i.i.d. entries (mean , variance ). Then
Proof sketch. Write centred vectors and
with , and collecting the cross terms. Since and, by Cauchy–Schwarz, , we get . Markov then gives
and the continuous mapping theorem finishes it.
What it means. Two completely unrelated drug profiles share the “this is a liver cell” baseline . Their correlation regardless of the drugs. The shared baseline dominates; the sparse differences vanish.
Their own empirical demonstration — a real trained MLP on TG-GATEs:
| orientation | PCC | -value |
|---|---|---|
| treatment-profile-wise (column) | ||
| gene-profile-wise (row) |
and it learned nothing ( row-wise is pure noise).
NLP analogy: BLEU where every reference shares 92% of its tokens. You’d score 0.95 by copying the input. This is that, proved.
3.2 Theorem 2 — PCC is suppressed on fold-change
Let be fixed, nonzero, sparse with nonzero entries, and . Define , . Then
Proof sketch. since has only nonzeros. The cross term , so . The noise term , so . Hence but , and Slutsky gives
Correlation is governed by
so with constant , large crushes it.
3.3 The two theorems cut opposite ways
| Data | Regime | Consequence |
|---|---|---|
| absolute (TG-GATEs intensity) | Thm 1: | high PCC is meaningless |
| fold-change (DrugMatrix) | Thm 2: | high PCC is hard-won |
This partially defends TransTissueFormer’s . DrugMatrix is fold-change, so Theorem 2’s regime applies, and 0.793 against that headwind is real.
But it does not defend against a mean-predictor baseline, and this is the sharpest gap:
Theorem 2 assumes — i.i.d. Gaussian noise. A mean predictor’s error is , which is structured: sparse, non-Gaussian, and correlated with . Neither theorem covers it.
That’s the hole. It’s why exp01 exists.
3.4 The rank-degeneracy argument (GenTox §2.3)
Consider outputting for ground truth , with a different scalar per column. Since correlation is scale-invariant,
A perfect column-wise score. But now look at rows — gene vs gene across all treatments. Row of the prediction is
each entry scaled by a different arbitrary . Row structure is destroyed.
Why fatal: gene network analysis — what biologists actually want — builds a graph with nodes = genes and edges = co-expression across treatments, i.e. correlations between rows and . A model perfect column-wise and garbage row-wise produces profiles that score beautifully and are useless.
Verified in code/toxsim/metrics.py: the degenerate adversary scores exactly.
always report both orientations. Proposed suite: MAE, rare MAE, , , with MAD as a data characteristic.
3.5 A consequence nobody states
Row-wise PCC is exactly the metric that exposes the mean baseline.
The mean predictor outputs for all — constant along each row. So
Not low. Undefined. A model that learned only the generic stress response has, by construction, zero row-wise information.
Confirmed empirically in exp01: the mean baseline scores and .
GenTox argues from first principles that row-wise metrics are mandatory. TransTissue reports only column-wise. The metric that would settle the question is the one their own group already argued for — in another paper.
4. The CPA correspondence
My observation. Not stated in any of the four papers, and I haven’t searched the literature to confirm nobody else has said it — check before claiming novelty.
CPA (Lotfollahi et al. 2023) decomposes the latent additively:
then decodes. An adversarial classifier forces to carry no drug information, which permits recombination at test time — compositional generalization.
Now compare to ToxCompl:
| ToxCompl | CPA |
|---|---|
| (gene bias) | |
| (treatment bias) | scalar part of |
| the interaction, but bilinear instead of decoded | |
| decoder | identity |
Funk-SVD is the linear special case of CPA. this line of work has been building a linear, transductive CPA and calling it matrix completion. That’s not a criticism — it says the two literatures are the same idea at different points on the nonlinearity axis.
4.1 The proposed generalization
Translation becomes: encode source infer decode with target tissue embedding .
What it buys:
- One model for all 64 tissue pairs, not 32 separate ones.
- Uses unpaired profiles. A brain profile with no liver counterpart still trains and .
- Subsumes Funk-SVD (set , a lookup, and you recover it exactly) — so it extends the group’s work rather than replacing it.
- Plug in GenTox’s GNN compound embedding for generalizes to unseen drugs. This unifies GenTox and TransTissueFormer into one model.
- Zero-shot tissue pairs. BR–LI has pairs. But if trains from any brain data and from any drug data, you can decode brain from liver having never seen a single LI–BR pair.
Point 5 is the paper. It’s zero-shot NMT, and it’s precisely what target-token conditioning unlocked (Johnson et al. 2016).
4.2 The multi-task failure, formally
TransTissue’s multi-task model collapsed to (vs 0.53 single-task). Their diagnosis: “given the same source LI profile the model cannot decide which is the correct target.”
Formally: they fit where ranges over . Under squared loss the optimal single-valued is the conditional mean:
The model is behaving optimally for a mis-specified problem. It’s averaging the organs because you asked it to, and mush is the correct answer to an ill-posed question.
The fix is to condition:
by adding to the bottleneck. One embedding. This is <2es> from Johnson et al. 2016 — mBART and M2M-100 do the same.
The negative result at 0.23 is a conditioning bug, not a finding. That’s the highest-value, lowest-cost thing to bring to the original authors.
Caveat I want to keep attached to this: I have not verified the fix works here. 425 pairs is very little and the conditioning signal could be swamped. But the diagnosis in the paper is the textbook symptom.
5. The simulator’s generative model
code/toxsim/simulate.py. For treatment and tissue :
with , severity , .
Normalize per row so that , giving
I got this wrong the first time — normalizing by column shrinks the specific term by and silently destroys the signal, making translation impossible by accident. The bug produced a plausible-looking result. Check your normalizations.
Tissue relatedness: with shared basis and
Same family similar loadings translatable on tiny data. This encodes the HE/TM ( on 7 pairs) vs LI/KI ( on 425) phenomenon.
Cross-tissue translation is solvable by construction: recover from (possible when has full column rank), then apply . The mean predictor captures only the term. So
We do not know where real DrugMatrix sits on this axis. That’s the whole point of exp01.
6. Missingness is NOT at random
TransTissue §5 states: “Completion algorithm for missing at random patterns can be used for imputation.”
That assumption is load-bearing for Funk-SVD, and I think it’s false.
Evidence (code/toxsim/fit_panels.py): Table 3 decomposes exactly into a non-negative sum of study panels. Solving
where is the vectorised Table 3 and , gives:
- residual
- mean absolute error
- all 24 structural zeros reproduced
using 24 panels out of 47 candidates.
Why the structural zeros matter. Table 3 has despite and . Under any independent-sampling model,
Observing exactly is not a sampling accident. Brain was only ever measured in studies that did not do liver. That’s a study-design fact.
Therefore: missingness depends on study design, and study design depends on what toxicologists expected to be interesting for that compound. So
i.e. the data are Missing Not At Random, and the Funk-SVD imputation is biased in a way that low-rank recovery theory does not cover.
How much does it matter? Unknown — and the simulator is exactly where you’d find out, since it can generate both MAR and MNAR missingness with the same ground truth. That’s a clean, self-contained experiment (agenda Tier 0f).
Caveat: the panel decomposition is not unique (36 equations, 47 candidates — underdetermined). It’s a valid decomposition, not the study design. The original study metadata would settle it.
7. Complexity of the TransTissueFormer architecture
From TransPlatformer Table 6, with = sequence length, = projected rank, = head dimension:
| Method | Complexity | Score matrix |
|---|---|---|
| Standard attention | ||
| Linformer | ||
| TransTissueFormer |
The pipeline:
Standard attention on (Affymetrix) needs a score matrix. Dead on arrival. The bottleneck makes it .
This is Perceiver-shaped, and closer to Perceiver IO than to Linformer/Performer: cross-attend a huge input into a small latent array, compute in latent space, broadcast back out. The papers cite Linformer and Performer but not Perceiver. Worth raising — and note is a very small per-slot embedding by NLP standards. Ask whether that was compute-bound or whether something breaks when it grows.
8. Quick reference — what’s proven, what’s tested, what’s a guess
| Claim | Status |
|---|---|
| Funk-SVD objective, ToxCompl+ attention form | From the papers. Verbatim. |
| GenTox Theorems 1 & 2 | From the paper. Proofs reproduced above. |
| Degenerate scores | Proven + verified in code. |
| Augmented task is exactly affine | Verified in code (exp02): , analytic construction exact. |
| Proven. Algebraic bound. | |
| FALSE. I was wrong. Observed . | |
| Augmented task can be near rank-one | Verified in code. Stronger than the original claim. |
| Row-wise PCC exposes the mean baseline | Proven (§3.5) + verified. is undefined for it. |
| Table 3 decomposes exactly into study panels | Verified in code. Residual 0.0, 24/24 zeros. |
| Missingness is MNAR | Strongly suggested by the above. Not proven. |
| Funk-SVD is the linear special case of CPA | My reading. Check the literature before claiming novelty. |
| Multi-task failure = missing target token | My hypothesis. Diagnosis matches; fix untested. |
| Mean baseline beats TTF on real DrugMatrix | UNKNOWN. Requires real data. This is the point. |
Sources and Confidence
Provenance for every claim across these documents. Three tiers: verified by search, from the papers themselves, and unverified background knowledge. The last tier should be checked before citing.
Verified by web search (July 2026)
Ahlmann-Eltze, Huber & Anders — “Deep-learning-based gene perturbation effect prediction does not yet outperform simple linear baselines” Nature Methods, 2025. https://www.nature.com/articles/s41592-025-02772-6 Benchmarked 5 foundation models + 2 other deep models. Unseen combinatorial perturbations → don’t beat an additive model. Unseen genes → don’t beat predicting the training mean. Authors’ hypothesis: pretraining data is observational. Preprint: https://www.biorxiv.org/content/10.1101/2024.09.16.613342v5 · Code: https://zenodo.org/records/16092690
Kedzierska et al. — “Zero-shot evaluation reveals limitations of single-cell foundation models” Genome Biology, April 2025. https://genomebiology.biomedcentral.com/articles/10.1186/s13059-025-03574-x scGPT and Geneformer zero-shot are outperformed by HVG selection, scVI, and Harmony. Best batch-integration scores across all datasets came from plain HVG selection. Preprint: https://www.biorxiv.org/content/10.1101/2023.10.16.561085v2.full
UCE — Universal Cell Embeddings https://www.biorxiv.org/content/10.1101/2023.11.28.568918v1.full · https://www.nature.com/articles/s41586-026-10689-z 36M cells, 8 species (human, mouse, zebrafish, mouse lemur, crab-eating macaque, rhesus macaque, tropical clawed frog, pig). Genes tokenized via ESM2 protein embeddings (dim 5120). Confirmed: can represent any protein-coding gene from any species by sequence alone, including species absent from training. This is the claim Tier 1 leans on.
Tahoe-100M https://www.biorxiv.org/content/10.1101/2025.02.20.639398v1 · https://huggingface.co/datasets/tahoebio/Tahoe-100M 100M cells, ~1,100 drugs × 50 cancer cell lines, ~60,000 drug-cell combinations. Open-sourced Feb 2025 as the first contribution to Arc Institute’s Virtual Cell Atlas. Vevo Therapeutics + Parse Biosciences GigaLab + Ultima Genomics.
From the four PDFs’ own reference lists
- scGPT — Cui et al., Nature Methods 21:1470–1480, 2024. doi:10.1038/s41592-024-02201-0 — TransTissue
[8]. 33M cells. - CellFM — Zeng et al., Nature Communications 16:4679, 2025. doi:10.1038/s41467-025-59926-5 — TransTissue
[49]. 100M human cells. - CPA — Lotfollahi et al., Molecular Systems Biology 19:e11517, 2023. doi:10.15252/msb.202211517 — TransTissue
[27]. - PerturbNet — Yu, Qian, Song & Welch, Molecular Systems Biology 21:960–982, 2025. doi:10.1038/s44320-025-00131-3 — TransTissue
[47]. - PerturbAtlas — Zhang et al., NAR 53(D1):D1112–D1119, 2025. doi:10.1093/nar/gkae851 — TransTissue
[51]. ⚠️ A database, not a generative method — miscited in TransTissue §7. - Funk-SVD — Piatetsky, “Interview with Simon Funk,” SIGKDD Explorations 9(1), 2007.
- Sennrich et al. back-translation, ACL 2016 — cited in TransTissue as
[36]. - Linformer (arXiv:2006.04768), Performer (arXiv:2009.14794) — TransTissue
[45],[5]. - Open TG-GATEs — Igarashi et al., NAR 43(D1):D921–D927, 2015.
- S1500+ — Mav et al., PLoS One 13(2):e0191105, 2018.
From my training knowledge — NOT independently verified here
Flagged because these should be checked before citing — they come from background knowledge current to roughly mid-2025, not from a verified source.
- Geneformer — Theodoris et al., Nature 2023, ~30M cells, rank-value encoding. Confident on the mechanism, less on the exact cell count.
- scFoundation — ~50M cells, xTrimoGene asymmetric encoder-decoder. Cell count uncertain — verify.
- scBERT — gene2vec + Performer attention.
- GEARS — GNN over gene-ontology graph for unseen genetic perturbations.
- chemCPA — CPA + molecular structure encoder.
- Boiarsky et al. — logistic regression competitive with scGPT/Geneformer for cell-type annotation. Verify the citation.
- LINCS L1000 — ~1.3M signatures, ~978 landmark genes, ~20,000 compounds, ~80 cell lines. These are approximate. Verify all four numbers before using them in Tier 3.
- Rat↔human orthology ~80% clean 1:1, with cytochrome P450 families notably diverged. Directionally right; the exact figure depends on the mapping method and I would not cite 80% without a source.
- Perceiver / Perceiver IO as the closer architectural relative to the n×s bottleneck than Linformer/Performer — my read, not a claim from any paper.
- STATE (Arc Institute), CZI Virtual Cells Platform — exist as of my cutoff; current status unknown.
- Johnson et al. 2016 multilingual NMT with target-language tokens (
<2es>), enabling zero-shot translation. High confidence, but worth citing from the original.
Analysis that is mine, not from any paper
Now VERIFIED in code (code/experiments/)
-
The linearity of the Funk-SVD-augmented task. ✅ CONFIRMED —
exp02_rank_test.py. Ridge on augmented pairs scores PCC 1.0000 / MAE 0.0000; the analytic construction with no fitting also scores 1.0000; recovers at correlation 1.000000. It’s a property of Funk-SVD’s algebra, so it should transfer to real data — but run it there before saying so.⚠️ The rank claim was wrong. The original form asserted . It’s , flat across . is an upper bound; Funk-SVD underuses its capacity and spends it on whatever variance dominates. The corrected claim is stronger (the task can be near rank-one) — but the form is wrong and shouldn’t be repeated.
-
Row-wise PCC is undefined for the mean predictor. ✅ PROVEN + VERIFIED —
16_MATH_NOTES.md§3.5, confirmed inexp01. Constant rows ⟹ ⟹ no denominator. This is what makes row-wise PCC the metric that exposes it. -
The degenerate adversary scores exactly. ✅ VERIFIED —
toxsim/metrics.py. GenTox §2.3’s argument made concrete. -
Table 3 decomposes exactly into study panels. ✅ VERIFIED —
toxsim/fit_panels.py. NNLS: residual 0.0, mean abs error 0.0, all 24 structural zeros reproduced, 24 of 47 candidate panels used. Not in any of the four papers.⚠️ Not unique — 36 equations, 47 candidates, underdetermined. It’s a valid decomposition, not the study design. The original study metadata would settle it.
-
Missingness is MNAR, not MAR. 🟡 Strongly suggested by (4), not proven. TransTissue §5 explicitly assumes MAR. The structural zeros (BR-LI = 0 where independent sampling predicts ~40) are hard to explain otherwise. But “study design drove missingness” → “missingness correlates with the values” still needs its own argument.
6b. No gene-gene attention in TransTissueFormer. ✅ CONFIRMED against Figure 1. The figure draws (B,n) → [n×s] → (B,s) → [1×r] → (B,s,r) → L stacked layers. The transformer operates on 512 pooled slots; genes are gone before layer 1. All gene-gene interaction is linear, in the bottleneck.
6c. The first attention layer is inert. ✅ VERIFIED — code/demo_transtissueformer.py. Reading the 1×r projection as shared (as Figure 1 labels it), all tokens are collinear: token matrix rank 1, attention score matrix rank 1, attention output rank 1. A rank-1 score matrix means every query attends identically up to a scalar.
⚠️ NOT fatal, and this correction matters. The MLP’s nonlinearity breaks the symmetry — rank recovers to full by block 3. The cost is waste, not correctness: one dead attention layer, fixable with an 8,192-parameter slot embedding (0.18% of the model). “The architecture is broken” would be wrong.
⚠️ Figure 1 draws one trapezoid per slot but labels the op once. If the 1×r is per-slot, this is already handled. The paper alone cannot settle it — check the code.
Still UNVERIFIED — check before repeating
-
The Tier 0e protocol concern. Withholding only
G[t,b]leaves the test column’s other tissues in the factorization, whereas deployment has only the source. Follows from Algorithm 1 as written; the implementation may differ from the pseudocode. Stated as a question, not a finding. -
Funk-SVD as the linear special case of CPA.
b_i + b_j + P·Qvsz_basal + z_drug + z_cov. My reading. I have not searched whether anyone has published this — check before claiming novelty. -
The multi-task failure is a missing target-token. 🟡 The formal argument (conditional-mean-under-squared-loss,
16_MATH_NOTES.md§4.2) is solid. Whether adding actually fixes it at n=425 is untested. Stated as an open question, not a prediction. -
“The right FM for toxicogenomics is a perturbation-response model, not a cell-state model.” 🔴 A thesis, not a finding.
-
The NLP analogies throughout. Interpretive framing, not literature. The tissue↔language and back-translation↔matrix-completion mappings are tight; others are merely suggestive. An analogy is a way to see a problem, not evidence about it.
A note on (1)
The rank argument was originally stated as “rank ≈ 301.” Testing confirmed the substance (the map is exactly affine) and refuted the specifics (the rank is ~2, because is only an upper bound). That is the normal outcome of checking a derivation against an implementation — and the reason the agenda puts “run the baselines” before “draw conclusions.”
Chapter 18 — The Foundation Model Landscape for Biology, and What We Can Do With It
A deep but plain-language study of every kind of genomic / DNA / RNA / single-cell / protein foundation model: how many there are, how they differ from GPT, how they’re trained, and — the part your mentor cares about — what we can actually do with them on our toxicogenomics projects.
This chapter is the wide-angle companion to 11_SC_FOUNDATION_MODELS.md, which goes deep on the single-cell models specifically. Read that one for the worked numeric examples; read this one for the whole map.
18.1 What “foundation model” means here, and why the word is slippery
A foundation model is one model pretrained once, on a huge pile of unlabeled data, with a self-supervised objective (predict a hidden part of the input), that you then reuse for many downstream tasks. GPT is the famous example: pretrain on text by predicting the next word, then reuse for translation, summarization, coding.
In biology the word gets attached to models trained on five very different kinds of data. It’s worth separating them up front, because a “genomics foundation model” and a “single-cell foundation model” are almost nothing alike — different input, different objective, different use.
| family | one input example | what the model reads | the “language” |
|---|---|---|---|
| DNA sequence | ...ACGTTGCA... (a chromosome region) | the genome as a string of 4 letters | nucleotides |
| RNA sequence | ...ACGU... (an RNA molecule) | an RNA transcript as a string | nucleotides |
| Protein sequence | ...MKTAYIA... | a protein as a string of 20 amino acids | amino acids |
| Single-cell / transcriptomic | {Alb: 450, Cyp1a1: 3, ...} | a cell as a bag of gene-expression numbers | genes + expression |
| Perturbation / cellular response | (cell state, drug) → new cell state | how a cell moves when you push it | genes + intervention |
The first three read sequences — a molecule spelled out letter by letter. The last two read profiles — a snapshot of how much of each gene is switched on. Our data (DrugMatrix, TG-GATEs) is the profile kind. So the single-cell and perturbation families are the ones we’d use directly, and the sequence families matter mostly as feature providers (especially protein models — hold that thought for §18.5).
18.2 How these differ from GPT — the five real differences
Everyone’s mental model is GPT, so the fastest way to understand a biology FM is to list exactly where it departs from GPT. There are five departures, and every model in this chapter is some combination of them.
Difference 1 — the token is not a word
GPT’s token is a wordpiece. A biology FM’s token is whatever the smallest meaningful unit of its molecule is:
- DNA/RNA models: a nucleotide, or a k-mer (a short run like
ACGTAC), or a BPE-merged chunk of nucleotides. - Protein models: an amino acid.
- Single-cell models: a gene. This is the big one. scGPT’s “vocabulary” is ~60,000 genes instead of ~50,000 wordpieces.
Difference 2 — often there is no order, so no positional encoding
This is the deepest difference, and it’s specific to the profile models.
In a sentence, order is meaning (“dog bites man” ≠ “man bites dog”), so GPT adds a positional encoding to every token. In a cell, the genes have no order — a cell is a set of (gene, amount) pairs, not a sequence. So scGPT and its relatives drop positional encoding entirely. Instead they inject the expression level where GPT would inject position.
The one-line version: scGPT is BERT where “position” has been replaced by “how much of this gene is present.” A cell is a set, not a sequence, so it must be.
The sequence models (DNA/RNA/protein) do have order — a genome is a string — so they keep positional information. But they need it to reach across enormous distances (a regulatory element can sit a million letters from the gene it controls), which drives the architecture choices in Difference 4.
Difference 3 — the objective is usually “fill in the blank,” not “predict the next thing”
GPT is autoregressive: predict the next token, left to right. That’s great for generation.
Most biology FMs are instead masked (BERT-style): hide some tokens and predict them from both sides. Why? Because for DNA, RNA, protein, and cells you usually want a representation (an embedding you can reuse), not left-to-right generation. And because there is no natural “left to right” for a cell.
The exceptions are the generative genome models — Evo / Evo 2 are autoregressive over DNA, precisely because they’re built to design new sequences, which is a generation task like GPT’s.
Difference 4 — the architecture is often not a plain transformer
GPT is a stack of self-attention layers. Self-attention costs in the sequence length . That’s fine at = a few thousand words. It’s fatal at = a million nucleotides. So the sequence models reach for cheaper long-range machinery:
- HyenaDNA replaces attention with long convolutions → handles ~1 million-nucleotide context at single-base resolution.
- Caduceus uses the Mamba state-space architecture, plus a trick so the model reads a strand and its reverse-complement the same way (DNA is double-stranded).
- Evo 2 uses “StripedHyena 2,” a hybrid, to reach a 1-megabase context with 40 billion parameters.
The profile models face the opposite squeeze. A cell has ~20,000 genes, and our own TransTissueFormer has 8,565–31,042. Plain attention over 31,042 genes needs ~2 TB of memory (see 07_TRANSTISSUEFORMER.md §7.4). So they compress first: scFoundation only reads the non-zero genes; TransTissueFormer pools all genes into 512 “slots” before any attention runs.
The pattern across the whole field: plain quadratic attention is the thing nobody can afford, and each model is defined largely by how it escapes it.
Difference 5 — the “value” problem, which has no analog in GPT
A word is a discrete symbol. But a gene comes with a number — its expression level. GPT never has to answer “how do I feed a 450 and a 0.42 into a transformer?” The profile models do, and it’s where they differ most from each other, and where they break on our data:
- scGPT bins the number and looks up a bin-embedding.
- Geneformer throws the number away and keeps only the rank (which gene is most expressed, 2nd, 3rd…).
- scFoundation encodes the number but only for non-zero genes.
This “value encoder” is the single most important thing to understand for our purposes, because it is the part that breaks on toxicogenomics data — and the part we route around. That’s §18.5 and all of 11_SC_FOUNDATION_MODELS.md §3.
18.3 The catalog — how many are there, and what each one is
There are dozens — well over a hundred if you count every variant. The community-maintained Awesome-Bio-Foundation-Models catalog organizes them into exactly six families: DNA & Gene, RNA, Protein, Single-cell, Multimodal, and Pathology. That’s the same split I use below, with two additions (multimodal and pathology) at the end, because pathology models turn out to be directly relevant to toxicology.
The important thing is not the count. It’s that all hundred-plus models cluster into a manageable number of designs — a few objectives, a few architectures, a few answers to the value problem. Learn the design and you’ve learned the family. Here is the working set, grouped by modality, with the one thing that distinguishes each. (Named models beyond the headline ones are listed so you can recognize them in papers; you don’t need all of them.)
A. DNA sequence models — “read the genome as text”
These learn from raw DNA, with no expression data at all. They’re good at variant effects, regulatory-element detection, and sequence design.
| model | size / context | what makes it distinct |
|---|---|---|
| DNABERT / DNABERT-2 | ~117M, short context | BERT on DNA; DNABERT-2 uses byte-pair encoding over many species |
| Nucleotide Transformer | up to 2.5B | large multi-species transformer; strong on chromatin & variant tasks |
| HyenaDNA | ~1M-nt context | drops attention for long convolutions → single-base resolution at huge context |
| Caduceus | Mamba-based | reverse-complement–aware; long-range variant effects |
| Enformer / Borzoi | ~200–500 kb context | predicts expression / regulatory tracks directly from sequence (Borzoi predicts RNA-seq coverage), but at reduced 128 bp / 32 bp output resolution |
| AlphaGenome | 1 Mb input, base-pair output | predicts thousands of regulatory tracks at single-base resolution; the regulatory-variant frontier |
| Evo / Evo 2 | up to 40B, 1 Mb context | generative across DNA/RNA/protein; predicts variant effects with no fine-tuning; can design genomes |
Others you’ll see in this family: GENA-LM (open long-sequence DNA LMs, up to 36 kb, extended by a recurrent memory mechanism; Nucleic Acids Research 2025, open weights), DNAGPT (generative, multi-task), GPN-MSA (alignment-based, genome-wide variant effects), DNABERT-S (species-aware embeddings), EpiGePT (epigenomics), and GROVER. The recurring theme: transformers win short-range classification (promoters, splice sites), long-context architectures (HyenaDNA, Evo, Caduceus) win long-range interactions (enhancer–gene links, variant effects).
The DNA side has two design axes worth naming, because they pull in opposite directions:
- Scale plus long context — bigger models with longer windows. Evo 2 and AlphaGenome.
- Efficient, biologically-principled architecture — smaller models whose built-in assumptions match the structure of DNA. Caduceus and HyenaDNA.
A 2026 independent benchmark (GENEB, §18.4) found the second axis often wins: architecture and pretraining alignment frequently outweigh raw parameter count. Here are the four headline models in detail, because the specifics matter.
Evo 2 — the scale-and-context frontier. Trained on 9.3 trillion DNA base pairs across all domains of life. Two sizes: 7B (trained on 2.4T tokens) and 40B (9.3T tokens), both with a 1-million-token context at single-nucleotide resolution. Training ran in two phases: first an 8,192-token window focused on gene-rich regions, then a midtraining phase that stretched the context to 1 million tokens. The architecture is StripedHyena 2, a hybrid of convolution and attention operators — 1.3× faster than an optimized transformer at 16k context, 3× faster at 1M. It can retrieve a 100 bp “needle” from anywhere inside a 1-million-bp haystack of random DNA. It is fully open: weights, code, and the OpenGenome2 dataset (8.8 trillion nucleotides) are all released. On variant effects it is honestly mixed: for coding single-nucleotide variants the 40B and 7B models ranked only 4th and 5th, behind AlphaMissense, ESM-1b, and GPN-MSA. For noncoding variants it beats all others, gets the highest zero-shot score on splice variants, and set a new state of the art on BRCA1 noncoding variants — all with no task-specific fine-tuning. An honest negative the authors volunteer: Evo 2’s likelihood shows no correlation with the fitness of viruses that infect humans, because those sequences were deliberately excluded from training.
AlphaGenome — regulatory variant effect at base-pair resolution. It reads 1 megabase of DNA and predicts thousands of functional tracks at single-base resolution: 5,930 human (or 1,128 mouse) tracks across 11 modalities — gene expression, splicing, chromatin state, and chromatin-contact maps. It matched or beat the strongest external model on 24 of 26 variant-effect evaluations, and hit state of the art on 22 of 24 track-prediction tasks. It exists to fix a real tradeoff: base-resolution models like SpliceAI were capped at ~10 kb (missing distal regulators), while longer-context models (Enformer, Borzoi) reached 200–500 kb but only at coarse 128 bp / 32 bp output. AlphaGenome gets both at once, via a two-stage pretrain-then-distillation scheme (one student model reproduces an ensemble of teachers), running under 1 second per variant on an H100. The catch for a lab: it is API-only and non-commercial — you cannot freeze and audit the weights. That matters because over 98% of human genetic variation is noncoding, exactly where AlphaGenome is strongest.
Caduceus — the case that architecture beats scale. It is the first reverse-complement (RC) equivariant, bi-directional, long-range DNA model, built on Mamba state-space blocks instead of attention. The biological reasoning is clean: DNA has two strands that are reverse complements carrying the same information, so building that symmetry into the model as an inductive bias should help — and it does. On a hard long-range variant-effect task, Caduceus beat models 10× larger that lacked bi-directionality and equivariance, with the advantage strongest at long distances from the transcription start site. Mamba handles hundreds of thousands of nucleotides without attention’s quadratic cost.
HyenaDNA — the proof that long context need not be expensive. It reached 1-million-token context at single-nucleotide resolution (a 500× jump over prior dense-attention models), scales sub-quadratically, and trains up to 160× faster than a transformer at long sequence lengths. On the Nucleotide Transformer benchmark it hit state of the art on 12 of 18 datasets with 1,500× fewer parameters (≈1.6M vs the 2.5B Nucleotide Transformer) and 3,200× less pretraining data. A caveat from independent evaluations: its accuracy is more mixed than its efficiency — for sequences under ~32 kb, DNABERT-2 or Nucleotide Transformer often score better despite costing more.
DNABERT-2 made the efficiency argument on training cost. Swapping k-mer tokenization for byte-pair encoding (BPE) — which merges the most frequent co-occurring genome segments into a learned vocabulary — it matched the prior state of the art with 21× fewer parameters and ~92× less GPU time, and beat the original DNABERT on 23 of 28 GUE-benchmark datasets. Concretely: ~14 days on 8 gaming GPUs versus 28 days on 128 A100s for the model it matched. (BPE also fixed a subtle bug: overlapping k-mers leak information across adjacent tokens, which can inflate a score without any real learning.)
B. RNA sequence models — “read the transcript”
Same idea as DNA models, applied to RNA molecules. Mostly used for structure prediction and RNA-property tasks, not for expression.
| model | what makes it distinct |
|---|---|
| RNA-FM | BERT on 23M non-coding RNAs; secondary structure, RBP binding, RNA-type classification |
| RiNALMo | 650M params, 36M RNAs; generalizes to unseen RNA families in structure prediction |
| RNABERT | small early RNA BERT; structural alignment & clustering |
| SpliceBERT | pre-mRNA sequences; improves RNA splicing prediction |
| UNI-RNA / ERNIE-RNA | larger general-purpose RNA encoders with structure-enhanced representations |
| 5′UTR-LM | models the 5′ untranslated region; predicts translation efficiency |
| Orthrus / GenerRNA / ATOM-1 | evolutionary/functional RNA models and generative RNA design |
C. Protein language models — “read the protein”
Trained on amino-acid sequences by masked modeling. These matter to us more than they look, because of one downstream use (§18.5): a gene’s protein sequence is a species-agnostic fingerprint of that gene.
| model | what makes it distinct |
|---|---|
| ESM2 | Meta’s protein BERT; the workhorse embedding model. Used inside UCE to tokenize genes |
| ESM3 | multimodal (sequence + structure + function), generative; “simulated 500M years of evolution” |
| ESMFold / OpenFold / AlphaFold family | structure prediction; less relevant to us directly |
| ProtTrans / ProteinBERT / Ankh | earlier and efficient protein encoders (T5/BERT-style) |
| ProtGPT2 / ProGen2 / xTrimoPGLM (100B) / ProLLaMA | generative protein LMs — protein design, the GPT analog for proteins |
| SaProt | structure-aware vocabulary — folds structure into the tokens |
| CaLM | codon-level embeddings (reads the DNA that codes the protein) |
| IgLM / AbLang / AntiBERTa | antibody-specific LMs (a whole sub-industry) |
This is the largest and most mature family by far — the catalog lists ~50 protein models against a handful for cells. That maturity is why the protein route (ESM2 inside UCE) is the most reliable way to get a species-agnostic gene feature for our rat data.
A few specifics worth carrying, because protein models are where FMs first earned real trust:
- ESM-2 / ESMFold. As the model scales from 8M to 15B parameters, an atomic-resolution picture of protein structure emerges in the learned weights — nobody told it structure; it fell out of masked-language pretraining. Because ESMFold works from a single sequence (no multiple-sequence-alignment step), it is 1–2 orders of magnitude faster than prior pipelines. That speed produced the ESM Metagenomic Atlas: structures for 617 million proteins (225M high-confidence) in two weeks on 2,000 GPUs, of which 12.6% had no match to any experimentally determined structure.
- The speed-vs-accuracy tradeoff is quantified. An independent 2025–2026 benchmark on hard targets (1,666 monomers, 994 dimers, all <40% sequence identity) found AlphaFold2/3 correct on 88% of monomers and 77% of dimers, versus ESMFold’s 76% and 41%. The rule that survives: ESMFold for speed and scale, AlphaFold for accuracy, and the gap widens sharply on complexes.
- AlphaFold3 / RoseTTAFold All-Atom push to all-atom modeling — proteins plus DNA, RNA, small molecules, metals, covalent modifications. RFAA does it by expanding the residue alphabet to 28 (20 amino acids + 4 DNA + 4 RNA bases). But know the failure modes: AF3 shows chirality violations in 4.4% of top predictions, can hallucinate structure, and is unreliable on antibodies (each B cell’s sequence is uniquely shuffled, so there’s no usable alignment). And a generalist all-atom model underperforms specialists on any single interaction type — while specialists simply fail when a complex mixes several. “Generalist vs specialist” is the recurring shape of the whole field.
- ESM3 is the multimodal, generative direction (sequence + structure + function jointly). Treat its headline numbers cautiously — they are hard to verify against a primary archived source.
D. Single-cell / transcriptomic models — “read the cell”
This is the family we’d use directly. All of them are BERT-over-genes with different answers to the value problem (Difference 5). 11_SC_FOUNDATION_MODELS.md has the worked numbers; here’s the map.
| model | pretraining scale | the distinguishing choice |
|---|---|---|
| scGPT | 33M cells | bins the expression value; the standard baseline |
| Geneformer | ~30M cells | uses expression rank, not value → normalization-free |
| scFoundation | ~50M cells | encodes only non-zero genes; asymmetric encoder-decoder |
| UCE | 36M cells, 8 species | tokenizes a gene by its protein sequence (via ESM2) → any species, no vocabulary |
| CellFM | 100M cells (~800M params) | bigger scGPT, RetNet backbone |
| scBERT | ~1M cells | the earliest of these; cell-type annotation |
| scPRINT | 50M cells | pretrained specifically for robust gene network prediction |
| xTrimoGene | large | the efficient backbone underneath scFoundation |
| GeneCompass | cross-species, knowledge-informed | injects prior biological knowledge; human + mouse |
| CellPLM / SCimilarity / tGPT | 5–50M cells | further variations on the same theme; benchmarked together |
The independent verdict (2025–2026 benchmarks): across 11 models and ~29 datasets, scGPT, Geneformer, and CellFM come out as the most usable/robust overall, with Geneformer and scFoundation strong on gene-level tasks. But — see §18.4 — “best of the FMs” is not the same as “beats a simple baseline.”
E. Perturbation / cellular-response models — “read how the cell moves”
These are the most directly relevant to toxicology, because toxicology is a perturbation problem: you dose a cell/organ and ask what changes.
| model | what it does |
|---|---|
| GEARS | graph model; predicts expression change from a genetic perturbation, using a gene-gene knowledge graph |
| CPA (Compositional Perturbation Autoencoder) | decomposes a cell into basal state + drug effect + dose — a linear additive latent, exactly the decomposition our ToxCompl uses |
| STATE (Arc Institute) | the current flagship “virtual cell” model: an SE module (“where is this cell in state space”) + an ST module (“how does it move when perturbed”), trained on 167M observational + 100M+ perturbational cells |
| scGPT / scFoundation (perturb mode) | the single-cell FMs repurposed to predict perturbation responses |
STATE’s SE + ST split — “where am I” plus “how do I move” — is the same additive decomposition as CPA’s basal + drug and ToxCompl’s bias + P·Q. Three separate literatures arriving at the same structure is a strong hint it’s the right one (see 11_SC_FOUNDATION_MODELS.md §6).
F. Multimodal models — “read two languages at once”
These bind two of the above modalities into one model, so a representation learned in one lands in the space of the other. Examples: ESM3 (protein sequence + structure + function), ProtST (protein + biomedical text), GeneCompass (expression + prior knowledge, across species). UCE belongs here in spirit — it binds gene identity to protein sequence.
Why we care: multimodal binding is exactly the trick that gets us across the gaps that block us — species (rat↔human via protein), platform (probe↔probe via the shared gene), and eventually modality (expression↔histopathology). Every bridge in §18.6 is a small multimodal model.
G. Pathology models — “read the slide” (more relevant to tox than it looks)
These are foundation models over whole-slide histopathology images (H&E-stained tissue), pretrained on millions of image tiles: UNI, CONCH, Virchow, GigaPath, and others. They’re a different data type entirely (pixels, not sequences), so they don’t touch our expression pipeline directly.
But hold on — histopathology is one of toxicology’s core endpoints. DrugMatrix and TG-GATEs pair each expression profile with a pathologist’s scoring of tissue damage (necrosis, fibrosis). ToxCompl’s own biological validation predicts “apical endpoints” — i.e. histopathology (04_TOXCOMPL.md §4.12). So a pathology FM is the natural encoder for the other half of the tox data. The genuinely ambitious version of our program is multimodal: predict the histopathology embedding from the expression profile, and vice versa — a transcriptome↔pathology bridge. Nobody in the four papers has done this, and it’s the kind of “deep thinking” direction worth raising with your mentor (see §18.6, Experiment 7).
18.4 How they’re trained — the taxonomy, and the honest scorecard
The training recipes, in one place
Strip away the biology and there are only a handful of self-supervised objectives in use. Knowing which one a model uses tells you most of what it can and can’t do.
| objective | “hide X, predict it” | who uses it | gives you |
|---|---|---|---|
| Autoregressive | next token, left→right | GPT, Evo/Evo 2 | generation / design |
| Masked (MLM) | a hidden subset of tokens, from both sides | DNABERT, ESM2, RNA-FM, scBERT | reusable embeddings |
| Masked-value | the expression value of some genes | scGPT, scFoundation | expression prediction + embeddings |
| Rank-based | reconstruct the gene ranking | Geneformer | batch-robust embeddings |
| Contrastive | pull two views of the same thing together | UCE (partly), many GNN drug models | similarity structure |
| Cross-modal | predict one modality from another | UCE (gene ↔ protein), ESM3 | species/modality transfer |
Two axes then separate the good from the mediocre:
- Data scale: 20–50M cells for single-cell models; 9+ trillion nucleotides for Evo 2. Interestingly, single-cell benchmarks suggest 20–30M cells is already “enough” — more data stops helping, which itself says the ceiling is set by something other than scale.
- Observational vs interventional data: this distinction turns out to be decisive, and it’s the crux of the critique below.
Read the literature with two ledgers
Here is the single most useful habit for reading this field, borrowed from a 2026 clinical-genomics review. Keep two ledgers as you read.
- The capability ledger records what a model can demonstrably do at scale. This is what the paper’s abstract and the press release report.
- The validity ledger records what still holds up when you push each claim through an independent test set with an honest baseline the model actually has to beat.
The marketing reports the first ledger. A lab has to act on the second. The two often diverge inside the same model. Example: Evo 2 sets a real state of the art on noncoding BRCA1 variants (capability), while five foundation models fail to beat a linear baseline on perturbation prediction (validity) — both are true, in the same field, sometimes the same model.
The honest-evaluation problem, before any number
The single most important 2026 result for us is not a model. It is GENEB, a benchmark that took 40 genomic foundation models and evaluated their frozen representations across 100 tasks in 13 functional categories, under one common probing protocol. Its conclusions:
- Aggregate leaderboards are unstable — model rankings reshuffle sharply as you move across task categories. No model is best everywhere.
- Scale gives only modest and inconsistent gains. Architectural and pretraining alignment frequently outweigh parameter count. On its size-vs-performance frontier, small architecture-aligned models sit on the frontier while some large models fall below it.
- The same model gets called a breakthrough in one paper and an underperformer in another — not because the evidence conflicts, but because there was no common evaluation framework until now.
- Crucially, none of the 40 models was built by GENEB’s authors or funders. There is no vendor incentive in the result.
Before trusting any single benchmark number, know the five traps that make honest comparison hard. An expert reader assumes you don’t know the field if you skip these.
- Tokenization is not neutral. DNA models disagree on what a token even is. HyenaDNA and Evo work at single-nucleotide resolution; DNABERT-2 uses byte-pair encoding; older models use overlapping k-mers. Overlapping k-mers leak information across adjacent tokens, which can inflate a score with no real learning. And the resolution at which a model tokenizes limits the resolution at which it can call a variant. Two models reporting the same accuracy may be solving slightly different problems.
- Context length is asymmetric. Early transformer DNA models saw 512–4,000 tokens — under 0.001% of the human genome — which structurally prevents modeling long-range effects. But regulatory elements up to 1 million base pairs away matter. A 4 kb model and a 1 Mb model are not competing on a level field for an enhancer question, and many published comparisons pretend otherwise.
- Contamination is the default, not the exception. These models pretrain on public references (GRCh38, ClinVar, gnomAD) and are then tested on benchmarks built from those same references. A high retrospective AUROC may just mean the model memorized labels already in its training distribution. That is not the same as behaving well on a genuinely novel case. This gap — retrospective discrimination vs prospective utility — is the single most important caveat in the whole field.
- Benchmarks are fragmented and unstable. Different papers use different tasks and metrics. Efforts like GUE (DNABERT-2: 36 datasets, 9 tasks, 70–10,000 bp), BEND, and OmniGenBench exist precisely because results didn’t compare across studies.
- DNA is not protein. Protein structure had CASP, a curated competition that made AlphaFold’s progress legible. Genomics never had a folding-competition equivalent. And DNA is genuinely harder: signal spans very long ranges, high-signal regions are sparse, and signal density is lower than in proteins. BEND’s finding is that DNA-LM embeddings approach expert methods on some tasks but capture only limited long-range information. Treat any DNA result presented with protein-level confidence skeptically.
The scorecard, task by task
With those caveats set, here is what actually holds up.
GREEN — variant effect prediction is where the two ledgers nearly agree. This is the one task with a real, standardized, clinically-labeled yardstick, so capability and validity come closest to meeting. On the protein side that yardstick is ProteinGym — 250+ deep-mutational-scanning assays, 2.7M+ mutated sequences, 200+ protein families, plus ~65,000 expert-annotated clinical mutations, evaluating 70+ models. Protein language models are competitive with or ahead of alignment-based methods on clinical missense there. On the DNA side, frontier models are state of the art on noncoding and splice variants (Evo 2, AlphaGenome), but not on coding SNVs, where specialists like AlphaMissense still lead. The calibrated posture: zero-shot variant scores are now good enough to contribute evidence under an ACMG-style framework — especially for noncoding and splice variants where classical tools are weakest — and not good enough to act alone. The maturity is real, and it is bounded.
RED — perturbation prediction: trivial baselines still win. The flagship result is Ahlmann-Eltze, Huber & Anders, Nature Methods 2025. They compared five foundation models plus two other deep networks against deliberately simple baselines for predicting transcriptome changes after gene perturbations. None beat the baselines, in any setting tested. For double perturbations, every model did worse than a simple additive baseline. For single perturbations, none beat the mean predictor or a linear model. The mechanistic finding is the one for us: pretraining on the single-cell atlas gave only a small benefit over random embeddings — only pretraining on perturbation data itself helped. (For scale of the difficulty: they found only 5,035 real genetic interactions out of ~124,000 possible at 5% FDR.) This is the crux: perturbation is interventional, but the atlases these FMs learn from are observational. Observation doesn’t teach intervention.
RED — zero-shot representations: a 2010 heuristic wins. Kedzierska et al., Genome Biology 2025 evaluated Geneformer and scGPT zero-shot (no fine-tuning — the realistic discovery setting). Both were beaten by simply selecting highly variable genes and running established methods (Harmony, scVI) for clustering. HVG selection outperformed both FMs across all metrics. They even varied scGPT’s pretraining scale — 814k, 10.3M, 33M cells — and still the only unseen dataset where scGPT beat both baselines was a single PBMC study. “One PCA still rules them all” reaches the same verdict for perturbation analysis. Lesson: strong fine-tuned benchmark numbers can mask weak general representations.
RED — attention is not a regulatory-network oracle. This one matters for your own papers, so read it carefully. A 2026 systematic study (37 analyses, 153 statistical tests, 4 cell types, 2 perturbation modalities) asked whether scGPT’s and Geneformer’s attention encodes regulatory biology — as both papers claim and many downstream studies assume. It does not. Attention captures co-expression, not unique regulatory signal. Trivial gene-level baselines scored AUROC 0.81–0.88 for predicting CRISPRi targets (variance alone reached 0.881), while attention-derived and correlation edges sat near 0.70. Pairwise attention edge scores added zero predictive value. And causal ablation of the heads claimed to carry regulatory signal produced no degradation at all. The attention does encode some layer-specific structure — it just adds nothing for the prediction task. (The same paper offers a constructive fix, “Cell-State Stratified Interpretability,” which improves gene-network recovery up to 1.85×.)
⚠️ Direct hit on our own program
TransPlatformer reports attention over toxicology genes as a sanity check (
05_TRANSPLATFORMER.md§5.7), and TransTissueFormer leans on attention for interpretation. The 2026 critique says: attention weights here mostly recover co-expression, which you could get from a plain correlation matrix, and they do not demonstrate learned regulatory causation. This lines up with the “attention is not explanation” caution already in05_TRANSPLATFORMER.md§5.7 — but now with hard numbers. Takeaway for our writing: present attention as a smell test, never as evidence of mechanism, and if we want a regulatory-network claim, benchmark it against a co-expression baseline (exactly the control we already argue for elsewhere).
The community bake-off agrees with all of the above. Arc Institute’s Virtual Cell Challenge 2025 drew 1,200+ teams; the wrap-up reported models “not yet consistently outperforming naive baselines,” with winners combining deep learning and classical statistical features.
What the scorecard does not mean
It does not mean FMs are useless. Two things are simultaneously true:
- The value / expression-prediction side is unsolved — a linear baseline is often cheaper and at least as good.
- The gene-embedding side — the co-expression structure learned across tens of millions of cells — is real and reusable.
The catch is that most published attempts throw the good part away with the bad part, because they fine-tune the whole model (value encoder included) on the wrong modality. That is precisely the opening for us (§18.5).
The one-sentence scorecard: as expression predictors, current biology FMs roughly tie linear baselines; as gene-relationship encoders, they carry genuine pretrained structure that almost nobody has isolated and used properly. Note the honest self-critique too: these skeptical results are themselves task-specific (perturbation, zero-shot clustering, attention-as-network). They do not show FMs are worthless for, say, supervised cell-type annotation after fine-tuning. Weight each critique against the claim it actually tests — which is exactly the discipline the two-ledger habit enforces.
18.5 How this maps onto our toxicogenomics projects
Now the part that matters. Our data is bulk (or pseudobulk) fold-change — DrugMatrix, TG-GATEs. Our models are ToxCompl, TransPlatformer, GenTox, TransTissueFormer. Where do these FMs plug in?
The one insight that governs everything: the type error
You cannot feed fold-change into scGPT’s value encoder. Worked in full in 11_SC_FOUNDATION_MODELS.md §3, but the short version:
- scGPT’s bins start at 0 (you can’t have negative RNA counts). A fold-change of −0.71 (gene suppressed 5×) lands in a bin that doesn’t exist.
- A fold-change of +1.85 (gene up 71×, the loudest signal in the profile) bins to the same slot as “a count of 1–5 molecules,” i.e. “essentially off.” No error is raised. The most important signal is silently relabeled as its opposite.
This is a type error, not a domain gap. A domain gap (“trained on news, you have tweets”) is fixed by more training. A type error (“the function expects an int, you passed a list”) is fixed by not passing the list. No amount of fine-tuning fixes it.
This one fact explains why naïve “fine-tune scGPT on tox data” attempts underwhelm, and it tells us exactly what to do: use the part of the FM that never touches the value encoder.
What actually transfers: the gene embedding table
Every single-cell FM contains a gene embedding table — one vector per gene, learned purely from which genes co-occur across tens of millions of cells. It never touches expression values. It encodes “what kind of gene is this, what does it co-express with, what pathway.” That is modality-independent and largely species-conserved. It is the part that transfers, and it’s the part almost nobody in the tox literature has used.
And here’s the structural gift: our own models already have a slot shaped exactly like it.
| our model | the object at its core | shape | today |
|---|---|---|---|
| ToxCompl | gene factor | 375,000 × 300 | random init |
| TransTissueFormer | bottleneck (96.6% of the model) | 8,565 × 512 | random init, from 425 examples |
| GenTox | gene “col NN” lookup | 31,099 × 300 | random init |
scGPT’s gene table is 60,000 × 512. TransTissueFormer’s bottleneck is 8,565 × 512. Same width. You can load one into the other, no adapter, no architecture change — and it dodges the type error completely, because these models multiply raw fold-change straight into the gene embedding; they have no value encoder to break.
The per-model fit table
| FM | can we use it? | how |
|---|---|---|
| scGPT / CellFM gene table | ✅ yes | init our gene factor / bottleneck (§18.6, experiment 1). Human → needs rat ortholog mapping. |
| UCE / ESM2 | ✅ yes, and better for us | gene tokens come from protein sequence → works on rat directly, no ortholog dictionary. The P450s (which toxicology cares about) are exactly where ortholog mapping fails, so this is the structural fit. |
| Geneformer | ⚠️ weak fit | rank-based; 92% of a fold-change profile is tied at ~0, so the ranking is mostly noise |
| scFoundation “skip zeros” | ✅ the idea transfers | in fold-change space, skipping zeros is principled (a zero means “didn’t move,” real signal), not a dropout hack. See 11_SC_FOUNDATION_MODELS.md §8 |
| STATE / CPA / GEARS | 🔵 conceptual | their basal+perturbation decomposition validates ToxCompl’s; STATE’s ST module is the “predict the response” task we’re in |
| Evo 2 / DNA models | 🔵 indirect | not for expression prediction, but a source of sequence-level gene features and variant priors (a second, independent gene-feature basis to test) |
| Tahoe-100M | ✅ data, not a model | 100M drug-perturbed cells → pseudobulk ÷ DMSO → ~60,000 bulk fold-change signatures in our format (11_SC_FOUNDATION_MODELS.md §7) |
18.6 The deep part — what we can actually do, ordered by effort and payoff
Your mentor asked for deep thinking on “what we can do.” Here are concrete, rankable proposals. Each one is designed so that both outcomes publish — a positive result is an FM bridge, a negative result is a documented “we tested it, here’s the evidence,” which is exactly what the critique literature (§18.4) is asking the field to produce.
Experiment 1 — Initialize the gene table from a foundation model 🟢 do this first
The move. Take scGPT’s (or UCE’s) gene embeddings and use them as the initialization of TransTissueFormer’s bottleneck (or ToxCompl’s , or GenTox’s gene lookup). Then train normally.
Why it’s the first experiment. It touches 96.6% of TransTissueFormer’s parameters, which are currently random and fit from 425 examples. It requires no architecture change. And it’s the concrete answer to the papers’ own hand-wave (“we plan to explore the adaptation of these models in future work”) — the adaptation is one tensor load.
The ablation that makes it rigorous (this is the important part — don’t skip it):
| init of the gene table | what it tests |
|---|---|
| random | current baseline |
| PCA / co-expression from DrugMatrix itself | ⭐ the control that matters — does a 33M-cell FM beat the data’s own structure? |
| scGPT (ortholog-mapped) | the obvious FM |
| UCE / ESM2 (protein sequence, no mapping) | the species-agnostic route — the rat answer |
| shuffled scGPT | is it the content, or just some structure? |
| ortholog-only gene subset | isolates the ortholog-mapping penalty |
If scGPT loses to DrugMatrix’s own co-expression, that’s a real result, consistent with §18.4. If UCE’s advantage concentrates in the non-ortholog genes (the P450s), that’s a mechanistic result, not a leaderboard bump. Either way you learn something publishable. Effort: days.
Experiment 2 — Build the fold-change–native pretraining corpus 🟡
The move. Stop trying to reuse a counts-native model. Build a corpus in our modality and pretrain natively, with a signed value encoder (one that has bins for negative fold-changes).
The corpus already exists in pieces:
| source | native format | to fold-change | scale |
|---|---|---|---|
| DrugMatrix | log10 FC | already there | ~2,700 × 8 tissues |
| Open TG-GATEs | intensity | ÷ control | ~2,238 |
| LINCS L1000 Level 5 | z-scores (signed, centered) | already there | ~1.3M |
| Tahoe-100M | single-cell counts | pseudobulk ÷ DMSO | ~60,000 |
That’s ~1.4M interventional differential signatures. This corpus does not currently exist, and nothing prevents it existing. The mechanistic bet (§18.4): FMs underperform because they pretrain on observational data — but LINCS, Tahoe, and DrugMatrix are all interventional. A fold-change-native FM trained on interventional data is the version of the field’s dream that’s actually matched to the question. Effort: weeks–months. Payoff: potentially a paper in its own right.
Experiment 3 — Be inductive on genes, not just drugs 🟡
The move. GenTox already replaced the drug lookup with a function of drug features (a GNN pretrained on 1M compounds — itself a foundation model). It left genes as a random lookup table. Apply the same lesson to genes: replace the gene lookup with a function of gene features (scGPT/UCE embeddings).
Why it’s more than a leaderboard bump. It buys four things a lookup table can never do (detailed in 06_GENTOX.md §6.7): (1) new platforms — a CodeLink probe and an Affymetrix probe for the same gene get the same features, dissolving TransPlatformer’s entire problem; (2) new species — rat→human, which a lookup cannot do at all; (3) the low-data tissues — a brain gene with 65 observations and 300 parameters is underdetermined as a lookup but fine as a shared function; (4) genes never measured. Effort: days–weeks.
Experiment 4 — Add the missing conditioning, then go zero-shot 🟡
The move. TransTissueFormer’s multi-task model collapses (PCC 0.53 → 0.23) because it’s asked to predict a target tissue it’s never told the identity of. Add a target-tissue embedding vector. Then — because TransPlatformer already demonstrated zero-shot transfer to an unseen brain on the platform axis (05_TRANSPLATFORMER.md §5.5) — attempt zero-shot to the empty tissue pairs on the tissue axis. Effort: days for the conditioning, then a real research question for the zero-shot.
Experiment 5 — Use protein / DNA sequence models as a second, independent gene basis 🔵
The move. UCE already shows that a gene’s protein sequence (via ESM2) is a usable gene feature. Push further: test ESM2/ESM3 embeddings and Evo 2 sequence-level features as alternative gene bases in the Experiment 1 ablation. This is where the DNA/protein families earn their place in a tox project — not as expression predictors, but as independent priors on what a gene is, learned from evolution rather than from co-expression. If two totally different pretraining signals (co-expression vs sequence) agree, that’s strong evidence; if they disagree, the disagreement is informative. Effort: adds a row or two to Experiment 1.
Experiment 6 — Report the metrics that would actually reveal all this 🟢
The move. None of the above is interpretable if we keep scoring with column-wise PCC, which a mean-predictor can game. Add: row-wise PCC (undefined for a mean predictor, so it exposes one), macro-F1 over the up/no-change/down categories (the all-zeros predictor can’t game it), and enrichment-consistency (do predicted and true profiles imply the same biology?). This is the highest-value non-modeling contribution available and it makes every other experiment legible. Effort: about a week.
Experiment 7 — The transcriptome ↔ histopathology bridge 🔵 the ambitious one
The move. DrugMatrix and TG-GATEs pair each expression profile with a pathologist’s histopathology score of the same tissue. Encode the slide with a pathology FM (UNI / Virchow / GigaPath), encode the profile with our gene-embedding model, and learn a map between the two spaces — predict tissue damage from expression, or retrieve the matching expression signature from a slide.
Why it’s worth raising even though it’s hard. It turns the program from “predict one expression vector from another” into “predict the outcome that regulators actually act on (organ damage) from molecular data.” That’s the difference between an ML result and a toxicology result. It’s also the honest destination of the “biological validation” ToxCompl already gestures at (04_TOXCOMPL.md §4.12) — done as a learned bridge instead of a manual check. Effort: a real project, not a week. Payoff: the highest of anything here. This is the “deep thinking on what we can do” answer in one sentence: the molecular models and the pathology models are two halves of the same tox problem, and nobody has connected them.
The ordering, in one line
Steal the gene table and ablate it properly (Exp 1 + 6) → be inductive on genes (Exp 3) → add conditioning and reach for zero-shot (Exp 4) → if the signal is there, build the fold-change-native interventional corpus (Exp 2), using sequence models as a second basis (Exp 5).
18.7 The decision map — which model for which question
| if the question is… | reach for… | but remember… |
|---|---|---|
| “give my gene factor a good starting point” | scGPT / CellFM gene table; UCE for rat | route around the value encoder; ablate vs DrugMatrix’s own co-expression |
| “handle rat genes without an ortholog dictionary” | UCE / ESM2 (protein-sequence tokens) | the win should concentrate in the P450s — check that |
| “predict how a cell moves when dosed” | STATE / CPA / GEARS (conceptually) | perturbation prediction is unsolved; expect a tie with linear baselines |
| “predict a variant’s effect / design a sequence” | Evo 2, Nucleotide Transformer | wrong layer for expression tasks; useful as a sequence-feature source |
| “get more interventional training data in our format” | Tahoe-100M (+ LINCS L5) | it’s data, not a model; pseudobulk ÷ DMSO |
| “predict organ damage, not just expression” | a pathology FM (UNI / Virchow) + our gene model | the two halves of tox nobody has joined (Exp 7) |
| “infer a gene regulatory network from attention” | don’t rely on attention edges | a co-expression baseline beats them (§18.4); attention ≈ co-expression, not causation |
| “prove an FM actually helps here” | any of the above + the right baselines | the baseline is the experiment |
Two operating principles run through the whole table, and they are the ones to actually remember:
- Anchor every model to a baseline on your own data before you trust it. The field’s clearest 2025–2026 lesson is that baselines win more often than the marketing admits. The right first experiment makes this a habit: run a frozen open model and a trivial baseline on the same split, and report them side by side — the model only counts if it beats the baseline.
- Prefer open, version-lockable weights for anything you need to reproduce. An API behind a vendor’s terms (AlphaGenome, for now) is a different proposition from weights you can freeze and audit. For a research program that must be replicable, that is not a footnote.
18.8 The practical guide — picking one and running it
The last few sections were about ideas. This one is about hands. The models are open and free. The hard part is matching one to your task and your GPU. This layer is drawn from a practitioner’s guide (rewire.it, 2026), and it lines up neatly with our own plan.
Step 1 — pick by task and sequence length
You don’t need to compare all hundred models. You need the one that fits your task. Here’s the short version.
| your task | use | why |
|---|---|---|
| short DNA (< 4 kb): promoters, variants | DNABERT-2 | small, runs on a 4 GB GPU |
| long DNA (100 kb – 1 Mb): enhancer–gene links | HyenaDNA or Evo | attention can’t reach that far |
| protein: structure, function, variant effect | ESM-2 650M | the default; bigger rarely helps |
| single cell: annotation, integration | scGPT | most robust overall |
| single cell with few labels | Geneformer | transfers well from little data |
The pattern: transformers win short sequences; long-context models (Hyena, Mamba, Evo) win long ones. The cutoff is around 4 kb, where plain attention’s cost stops being affordable.
Step 2 — you will not pretrain. you will reuse.
Pretraining one of these from scratch is a big-lab expense. Look at the numbers:
| model | to pretrain (you won’t) | to run (what you’ll do) |
|---|---|---|
| Nucleotide Transformer 2.5B | 128 A100s × 28 days ≈ 2,000 | 4 GB GPU |
| HyenaDNA | 8 A100s × 7 days ≈ $25,000 | 4 GB GPU (grows with context) |
| ESM-2 650M | — | 8 GB GPU |
| ESM-2 15B | — | 80 GB+ (multi-GPU) |
So nobody starts by pretraining. You download open weights and do one of two things: pull out embeddings, or fine-tune lightly.
Step 3 — three cheap tricks that matter
- Mean pooling. To turn per-token outputs into one vector per sequence, average all the token vectors. Don’t use the
[CLS]token or max pooling. The GenBench study found mean pooling wins, consistently. - LoRA, not full fine-tuning. LoRA updates about 0.1% of the parameters. It fits on one GPU and matches full fine-tuning on most tasks. Full fine-tuning is rarely worth it.
- Try zero-shot first. If you have fewer than ~1,000 labels, just take the embeddings and train a small classifier on top. Fine-tune only if that isn’t accurate enough.
When to fine-tune vs. just take embeddings
| just take embeddings (zero-shot) | fine-tune (LoRA) |
|---|---|
| standard tasks, cross-species, < 1,000 labels | you need maximum accuracy |
| you want a quick, cheap baseline | your sequences are unusual or custom |
What this means for us
The practitioner’s advice and our own type-error argument point the same way — take embeddings, don’t fine-tune the whole model.
- Experiment 1 is exactly the recommended path. We pull out scGPT’s or UCE’s gene embedding table and use it. We do not fine-tune the value encoder — which is the broken part on our data. Cheapest path and safest path, same move.
- It fits on one modest GPU. The weights are open; the gene table is a few GB. This is a graduate-student experiment, not a data-center one.
- The mean-pooling tip is already our architecture. When we need one vector for a whole profile, we average gene vectors weighted by fold-change. That is exactly what TransTissueFormer’s bottleneck computes (
11_SC_FOUNDATION_MODELS.md§5).
The honest limits (same guide)
- Context is tiny next to the genome. Even HyenaDNA’s 1-million-token window is ~0.03% of the human genome. Chromosome-scale modeling is still out of reach.
- Bigger isn’t always better. On some single-cell tasks, small and large models tie — CellPLM ≈ scGPT ≈ Geneformer.
- You get predictions, not explanations. Interpretability is limited.
- Benchmarks don’t transfer. Always validate on your own held-out data. This is the same “baseline-first” point from §18.4, seen from the practical side.
18.9 Summary — what to tell your mentor
- There are six catalogued families of biology foundation model — DNA, RNA, protein, single-cell, multimodal, and pathology — over a hundred models in total, but only a handful of underlying designs. Only single-cell/perturbation read our kind of data directly; protein/DNA models matter as gene-feature providers; and pathology models are the encoder for the other half of tox data (organ damage).
- The differences from GPT are five and specific: the token is a gene (not a word); there’s often no order, so no positional encoding; the objective is usually “fill in the blank,” not “predict the next thing”; the architecture escapes quadratic attention by different tricks; and there’s a “value” problem GPT never faces — which is exactly where these models break on our data.
- The training taxonomy is small — a handful of self-supervised objectives — and the decisive axis turns out to be observational vs interventional data.
- Read the field with two ledgers — capability (what a model does at scale) vs validity (what survives an independent test set with an honest baseline). GENEB (40 models, 100 tasks, no vendor incentive) showed leaderboards are unstable and architecture often beats scale. The honest 2025–2026 scorecard is task-specific: green for variant-effect prediction (protein missense via ProteinGym; noncoding/splice via Evo 2, AlphaGenome — good enough to contribute ACMG evidence, not to act alone); red for perturbation prediction (no FM beat a linear baseline — Nature Methods 2025), zero-shot clustering (highly-variable-gene selection beats scGPT/Geneformer), and attention-as-regulatory-network (attention ≈ co-expression, not causation; trivial baselines 0.81–0.88 AUROC vs attention ~0.70). As gene-relationship encoders, though, FMs carry real reusable structure almost nobody has isolated properly. That gap is our opening.
- A direct hit on our papers: the attention-interpretability sections in TransPlatformer (§5.7) and TransTissueFormer should be softened — attention here recovers co-expression, which a plain correlation matrix gives you, and is not evidence of learned regulatory mechanism.
- The type error (fold-change ≠ counts) is why naïve fine-tuning underwhelms — and why the right move is to take only the gene embedding table, which never touches the value encoder and happens to be exactly the shape of the random tables at the core of all four of our papers.
- In practice it’s cheap and hands-on: you never pretrain (that’s a $1M job); you download open weights, take embeddings, and fine-tune lightly with LoRA if needed. Use mean pooling, start zero-shot, validate on your own held-out data. Our Experiment 1 is exactly this — a single-GPU job, not a data-center one (§18.8).
- The concrete program: initialize the gene table from an FM and ablate it against DrugMatrix’s own structure (Exp 1) — report metrics that can actually see the difference (Exp 6) — go inductive on genes (Exp 3) — add conditioning and reach for zero-shot (Exp 4) — and, if warranted, build the interventional fold-change corpus that doesn’t yet exist (Exp 2), with sequence models as an independent gene basis (Exp 5). Every experiment is designed so both outcomes publish.
Sources
- Awesome-Bio-Foundation-Models catalog (apeterswu) — the six-family taxonomy and full model list this chapter’s catalog draws on
- A Bioinformatician’s Guide to Choosing Genomic Foundation Models (rewire.it, 2026) — the hardware, cost, pooling, and fine-tuning guidance in §18.8
- Genomic Foundation Models in 2026: Two Ledgers, and What Survives a Held-Out Test Set (rewire.it, 2026) — the two-ledger framing, five traps, GENEB, and the task-by-task scorecard in §18.4
- GENEB: a diagnostic benchmark of 40 genomic foundation models (Ledneva et al., arXiv:2606.04525, 2026)
- AlphaGenome: regulatory variant effect at base-pair resolution (Avsec et al., bioRxiv 2025 / Nature 2026)
- Caduceus: reverse-complement equivariant long-range DNA models (Schiff et al., ICML 2024)
- HyenaDNA: long-range genomic modeling at single-nucleotide resolution (Nguyen et al., NeurIPS 2023)
- DNABERT-2: efficient multi-species genome foundation model (Zhou et al., ICLR 2024)
- ProteinGym: standardized benchmark of protein variant-effect predictors (Notin et al., NeurIPS 2023)
- Independent ESMFold vs AlphaFold2/3 benchmark on hard targets (PMC12809598, 2026)
- scFM interpretability critique — attention captures co-expression, not regulatory signal (arXiv:2602.17532, 2026)
- Evo 2: genome modeling and design across all domains of life (bioRxiv 2025 / Nature 2026) · Arc Institute Evo
- Benchmarking DNA Foundation Models for Genomic and Genetic Tasks (bioRxiv)
- Foundation Models for Genomics — overview (Technology Networks)
- Evaluating the Utilities of Foundation Models in Single-Cell Data Analysis (Advanced Science, 2026)
- Benchmarking Transcriptomics Foundation Models for Perturbation Analysis: one PCA still rules them all
- BioLLM: standardized framework for benchmarking single-cell foundation models (Patterns, 2025)
- Deep-learning gene perturbation prediction does not yet outperform linear baselines (Nature Methods, 2025)
- Assessing the limits of zero-shot foundation models in single-cell biology — Kedzierska et al. (Genome Biology, 2025)
- Virtual Cell Challenge 2025 Wrap-Up (Arc Institute) · STATE model
- ESM3: simulating 500 million years of evolution (EvolutionaryScale, 2025)
- RiNALMo: general-purpose RNA language models (Nature Communications, 2025)
- Bridging organ transcriptomics for multi-organ toxicity (TransTox, npj Digital Medicine)
- Machine Learning-Enabled Drug-Induced Toxicity Prediction (Advanced Science, 2025)
The model catalog is enriched from the Awesome-Bio-Foundation-Models list. A linked YouTube talk was also suggested as a source; its transcript couldn’t be extracted automatically (the page is JavaScript-rendered), so its content is not reflected here — I can mine it with the Claude-in-Chrome extension if you’d like it folded in. This chapter surveys a fast-moving field; model sizes and rankings are as of mid-2026 and will shift. The strategic core — type error, gene-table transfer, interventional data, baseline-first evaluation — is architecture-level and durable. Numeric worked examples for the single-cell mechanics live in 11_SC_FOUNDATION_MODELS.md; the four in-house papers are 04–07.
Chapter 19 — Reading the July 2026 Paper Stack
A deep, plain-language read of the 13 papers in the new+paper_jul22 folder. For each one: what it covers, how it works, what it leaves out, whether it’s useful, whether there’s a better way, and how we could use it on our own toxicogenomics program.
Written for an NLP reader. Wherever a biology idea has a clean NLP analog, I use it — because most of this stack is, quite literally, NLP pointed at toxicology.
19.1 What this folder is, and how to read it
Thirteen papers landed together. They are not random. Read as a set, they sketch the exact frontier our program sits on: how do you turn molecular data into a trustworthy statement about toxicity, and can language models help?
Five of the thirteen are NLP papers wearing a lab coat — LLM reasoning, benchmarks, dataset generation, fine-tuning. Two are field surveys (maps). Two are toxicogenomics resources and transfer-learning methods that sit right on top of our own data type. Two are about DNA foundation models — one benchmarks them, one attacks them. One is the perturbation reality-check we already met in Chapter 18. And one is a vision piece about where the whole field goes next.
Here they are at a glance, sorted by how close they sit to what we do.
| # | paper (short) | venue | what it is | closeness to us |
|---|---|---|---|---|
| 1 | CoTox | arXiv 2025 | LLM + chain-of-thought + pathways/GO predicts multi-organ toxicity | 🟢 high |
| 2 | ToxReason | ACL Findings 2026 | benchmark: does an LLM reason toxicity through an AOP, or just guess? | 🟢 high |
| 3 | AOP Gene Mapping (FHAIVE) | bioRxiv 2026 | semantic retrieval + LLM + expert curation maps AOP events → genes | 🟢 high |
| 4 | ToxMech (Ignota) | ICLR 2026 | RAG agents mine literature → a knowledge graph of toxicity mechanisms | 🟡 medium |
| 5 | Gene Prioritization LLM | IEEE 2026 | fine-tune GPT-4 / Claude to rank disease genes | 🟡 medium |
| 6 | Genome LM survey | Brief. Bioinformatics 2026 | the map of DNA/RNA language models | 🟢 high (context) |
| 7 | Biomedical KG survey | arXiv 2025 | the map of biomedical knowledge graphs | 🟡 medium |
| 8 | DILImap / ToxPredictor | Nature Comms 2025 | 300-compound human-hepatocyte RNA-seq + ML for liver injury | 🟢 high |
| 9 | Rat→human transfer (O’Donovan) | PLOS ONE | domain-adaptation network predicts human expression from rat data | 🟢 very high |
| 10 | DNA FM benchmark (Feng) | Nature Comms 2025 | honest zero-shot test of 5 DNA foundation models | 🟢 high |
| 11 | Poisoning the Genome | arXiv 2026 | backdoor attacks on DNA foundation models | 🟡 medium |
| 12 | Perturbation ≤ linear | Nature Methods 2025 | FMs don’t beat linear baselines on perturbation | 🟢 high (already in Ch18) |
| 13 | Exposomics vision (Ruden) | Front. Genet. 2026 | opinion: the next decade of gene–environment research | 🟡 medium |
The one-sentence takeaway of the whole stack: the field is pivoting from “predict a toxicity label” toward “produce the mechanism, and prove it,” and language models are the tool everyone is reaching for — but every serious paper in the pile also shows that a careless LLM produces fluent nonsense, so the interesting work is all in the scaffolding that keeps the model honest (pathways, AOPs, knowledge graphs, expert curation, and hard baselines).
That pivot is exactly the gap in our own program. ToxCompl, TransPlatformer, GenTox, and TransTissueFormer all predict numbers (expression, fold-change). None of them produces a mechanism a toxicologist or regulator can read. This stack is, in effect, the missing half of our book.
Cluster 1 — NLP meets toxicology (the LLM-reasoning stack)
These five are the reason your NLP background is an asset, not a gap. Each one is a familiar NLP recipe — chain-of-thought, benchmarking, retrieval-augmented generation, LLM-as-a-judge, fine-tuning — applied to a toxicology problem. I’ll go slow on these.
First, one piece of vocabulary that runs through all five, because you’ll see it constantly: the Adverse Outcome Pathway (AOP).
The AOP, for an NLP reader
An AOP is toxicology’s version of a reasoning chain. It is a causal story with a fixed grammar:
MIE → KE → KE → … → AO
- MIE = Molecular Initiating Event — the first molecular thing the chemical does (e.g. “activates the glucocorticoid receptor”).
- KE = Key Event — a downstream measurable step (“mitochondrial fatty-acid β-oxidation decreases”).
- AO = Adverse Outcome — the organ-level result a regulator cares about (“liver steatosis”).
If you’ve done multi-hop question answering or chain-of-thought, you already understand this. An AOP is a labeled, expert-curated reasoning chain from a molecular cause to an organ-level effect. Several papers below are, literally, “can the model produce the correct chain, not just the correct final answer?” — which is the faithfulness question your field has been chewing on for years.
There is a public database of these chains, AOP-Wiki, and it is the shared backbone of three papers in this cluster.
19.2 CoTox — chain-of-thought toxicity prediction
Paper: CoTox: Chain-of-Thought-Based Molecular Toxicity Reasoning and Prediction (Park et al., Korea University / AIGEN Sciences, arXiv 2025). Code is public (dmis-lab/CoTox).
In one line. Feed an LLM three things about a drug — its structure (as an IUPAC name), its biological pathways, and its Gene Ontology terms — and prompt it to reason step by step to predict which organs it will poison.
What it covers. Multi-organ toxicity as a set of binary calls: cardiotoxicity, hematological, infertility, liver, pulmonary, renal. Six labels per compound.
How it works — three moves, all of which will feel familiar:
- Fix the input representation. Prior LLM-tox work fed the model SMILES strings (e.g.
CC(=O)Oc1ccccc1C(=O)Ofor aspirin). The insight here: a general LLM was trained on natural language and reads SMILES badly — it’s out-of-distribution text. So CoTox swaps in the IUPAC name (“2-acetyloxybenzoic acid”), which is closer to language the model actually saw in pretraining. This is a pure NLP-tokenization argument: match the input to the pretraining distribution. (Their own ablation is honest, though — see below.) - Add biological context via retrieval. For each drug they pull pathway and Gene Ontology annotations from the Comparative Toxicogenomics Database (CTD), then use GPT-4o itself to filter those down to the toxicity-relevant ones. This is retrieval-augmented prompting: the drug’s known biology is injected into the context so the model isn’t reasoning from structure alone.
- Chain-of-thought prompting. The model is told to act as a toxicology expert and walk through pathways → GO terms → structure → per-organ verdict, emitting a JSON with a “Reasoning” string and a “Prediction” for each organ.
The numbers (F1, averaged over 6 organs, on a 548-compound test set from the UniTox benchmark):
- Structure only, zero-shot: 0.37 (SMILES) / 0.37 (IUPAC) — barely better than guessing.
- Structure only, few-shot: 0.43.
- Biology only (pathways+GO, CoT): jumps a lot — biology matters more than structure for organ-specific toxicity.
- CoTox (structure + biology + CoT): 0.66 — versus XGBoost 0.58 and Chemprop (a graph neural net) 0.62.
- Best organs: hematological (0.82), liver (0.77). Worst: pulmonary and renal (<0.57 everywhere).
What it leaves out. Three honest gaps. First, their own ablation shows the IUPAC-vs-SMILES difference is tiny (±0.03) until biology is added — so the headline “IUPAC helps” is weaker than it sounds; the real lift is the pathway/GO context, not the name format. Second, the biology it retrieves from CTD is already-known associations for known drugs — so this cannot help a genuinely novel compound with no CTD record (the cold-start problem again, from 06_GENTOX.md §6.1). Third, there’s no check that the reasoning is faithful — the model could output a correct label with a wrong rationale. (That exact gap is what the next paper, ToxReason, is built to measure — and they’re from the same group, so read them as a pair.)
Is it useful? Is there a better way? Useful as a proof of concept: with the right context, a prompted GPT-4o beats a trained graph neural net on a 6-organ tox panel, and it hands you a rationale for free. The better way is roughly what the rest of this cluster does: (a) ground the rationale in a real causal structure (AOP) instead of a free-text chain, and (b) replace “GPT-4o filters CTD” with a retrieval step you can audit. CoTox is the “hello world”; the others harden it.
How we could use it. This is the clearest template for adding a mechanistic, readable output to our program. Today TransTissueFormer predicts a kidney fold-change vector and stops. Imagine instead: our model predicts the expression change, we pull the top moved genes and their pathways, and a CoTox-style prompt turns that into “this compound looks nephrotoxic because it hits pathways X and Y.” It bolts a language layer onto our numeric models and produces the kind of output a regulator can act on. It also validates a choice we’ve flagged before: pathways and GO terms carry more organ-specific toxicity signal than raw structure — which is an argument for the enrichment-consistency metric we keep recommending (15_FRONTIER.md F6).
19.3 ToxReason — a benchmark for faithful toxicity reasoning
Paper: ToxReason: A Benchmark for Mechanistic Chemical Toxicity Reasoning via Adverse Outcome Pathway (Park et al., Korea University, ACL Findings 2026). Same lead author as CoTox; this is the rigorous follow-up. Code: dmis-lab/ToxReason.
In one line. A benchmark that checks whether an LLM’s toxicity prediction is backed by a correct causal chain (MIE→KE→AO), not just a lucky final answer.
Why it exists. This is the faithfulness problem, stated for toxicology: “LLMs can generate fluent but biologically unfaithful explanations.” A model can say “toxic to the liver” and be right, while its explanation is nonsense. If you’re going to use the explanation for anything — regulatory evidence, redesigning a molecule — a right-answer/wrong-reason model is dangerous. Existing tox datasets (Tox21, ClinTox) only have labels, so they can’t catch this. Even UniTox (which CoTox used) grounds its explanations in observed clinical effects, not mechanism.
How they build it — a genuinely clever data-construction pipeline, and it’s all standard NLP-style resource engineering:
- Select the reasoning chains. Take organ-level AOPs from AOP-Wiki (release 2.7), keeping ones whose Adverse Outcome is a clinically meaningful organ toxicity and whose MIE is a clear activation/inhibition of a target protein.
- Get the molecular evidence. For each MIE target protein, pull experimental drug–target activity from ChEMBL (does this compound actually hit this protein, and does it activate or inhibit?). Pull chemical–toxicity associations from CTD.
- Infer the chain for a query molecule. For a new compound, find structurally similar compounds (Dice similarity on fingerprints) with known MIE activity, infer its MIEs, then check whether the observed adverse outcome matches the AOP’s predicted AO. The result: ~193 chemicals with full MIE→AO reasoning instances.
- Two training sets, deliberately. An “MIE-matched” set (compounds that satisfy the molecular start of the chain) and a stricter “MIE-AO-matched” set (compounds that satisfy both the molecular start and the organ-level end). Splitting these lets them test whether a model that learns the start also gets the end right.
How they score it — this is the part an NLP reader will love. Prediction quality is plain F1 over three organ toxicities. But reasoning quality is judged by an LLM-as-a-judge, scoring each explanation 0–10 on four axes:
- Logical consistency — does the causal chain go MIE→KE→AO in the right order, without gaps?
- Biological fidelity — correct toxicology terms, correct MIE/KE/AO relationships?
- (plus two more coherence/grounding axes)
The key findings — and these are the important ones:
- Strong prediction does not imply good reasoning. Some models score high on the toxicity F1 while their reasoning scores are poor. They’re getting the answer without the mechanism — exactly the failure the benchmark was built to expose. This is the toxicology version of “accuracy hides unfaithfulness.”
- Reasoning-aware training fixes both at once. When they fine-tune a model to produce good chains (not just good labels), both the reasoning quality and the prediction F1 go up. Teaching the mechanism improves the answer. That’s a strong, publishable result and a hopeful one.
What it leaves out. The benchmark is small (~193 chemicals) and narrow (a handful of organ AOPs with clean single MIEs), because AOP-Wiki only has so many well-formed chains — real toxicity is often many overlapping pathways. And the judge is itself an LLM, which inherits the usual LLM-as-judge caveats (bias toward fluent, confident text). But as a direction, it’s exactly right.
Is it useful? Is there a better way? Very useful — it’s the honest-evaluation move (Chapter 18’s whole theme) applied to LLM toxicology. The “better way” is mostly scale and rigor: a bigger AOP-grounded corpus, and a judge validated against human toxicologists. It pairs naturally with a knowledge graph (paper 4) as the source of ground-truth chains.
How we could use it. Two ways. First, as a design pattern for our own evaluation: we keep arguing that our numeric models need metrics that a mean-predictor can’t game (07_TRANSTISSUEFORMER.md §7.7.7). ToxReason is the same argument one level up — don’t reward the right answer if the reasoning is wrong. If we ever add a mechanistic output layer (from 19.2), ToxReason is the template for grading it. Second, and more concretely: AOPs give us a target vocabulary. Our models predict which genes move; AOP Key Events are defined over genes and pathways; so a predicted expression change can be mapped onto an AOP chain to produce a mechanism. That mapping is exactly what the next paper builds.
19.4 AOP Gene Mapping — retrieval + LLM + expert curation
Paper: Integrating Semantic Retrieval, LLM-based Refinement, and Structured Expert Curation for Scalable AOP Gene Mapping (Schaffert et al., FHAIVE / Tampere University, bioRxiv 2026).
In one line. Build the missing dictionary that connects AOP Key Events (written in English) to actual genes, using a retrieval-then-LLM-then-expert pipeline — so that a list of moved genes can be read as a mechanism.
Why it matters to us specifically. This is the bridge between our world (genes and expression) and the AOP world (mechanisms). AOP Key Events are written as free-text statements (“decreased mitochondrial fatty-acid β-oxidation”). To use them with omics data you need to know which genes correspond to each Key Event. That mapping has been done by hand, which doesn’t scale and misses matches phrased differently. This paper automates it.
How it works — a textbook retrieval-augmented pipeline, and every stage is an NLP component you know:
- Semantic retrieval. Take each Key Event statement. Embed it. Retrieve candidate ontology/pathway terms from a harmonized pool (GO, Reactome, WikiPathways, KEGG, HPO — assembled via MSigDB) by embedding similarity. This is dense retrieval, and it beats keyword matching because it catches terms that mean the same thing in different words (the recall problem they call out explicitly).
- LLM-based refinement. An LLM filters the retrieved candidates — is this pathway term mechanistically consistent with the Key Event, including direction (“increased/decreased”)? This is the re-ranking / filtering stage, and the LLM is doing the semantic judgment that embeddings alone can’t.
- Double-independent expert curation + rules. Two independent expert groups review, and a rule-based consolidation finalizes each mapping and assigns a confidence score. This is the human-in-the-loop layer that keeps the whole thing honest — the same instinct as ToxReason’s judge, but with real experts.
The output is an AOP-wide KE-to-gene resource with explicit confidence levels, which they show aligns better with expert judgment than earlier NLP approaches while needing far less manual work.
What it leaves out. It’s a mapping resource, not a predictor — it tells you which genes belong to a Key Event, not whether a drug triggers it. Coverage is bounded by AOP-Wiki’s completeness. And “confidence” is derived from agreement/rules, not a calibrated probability.
Is it useful? Is there a better way? Very useful, and the design is close to state-of-practice RAG. The obvious upgrade is to close the loop with paper 4’s knowledge graph, so the retrieval pool is a live, growing structure rather than a fixed ontology snapshot.
How we could use it. This is arguably the single most directly usable NLP paper in the folder for us. Our models output a ranked list of genes that changed under a compound. Feed those genes through a KE-to-gene map (this resource) and you get the Key Events the compound is likely triggering — i.e. you convert “these 40 genes moved” into “this looks like the mitochondrial-β-oxidation Key Event on the liver-steatosis pathway.” That is the mechanistic, regulator-facing output our four numeric models don’t produce. Concretely: it turns TransTissueFormer’s predicted profile into an AOP-anchored hypothesis, and it does so with a confidence score we can report.
19.5 ToxMech — RAG agents that build a mechanism knowledge graph
Paper: Generating a Novel Dataset for Mechanisms of Drug-Induced Toxicity using LLM-supported tools (Masarone et al., Ignota Labs / University of Warwick, ICLR 2026).
In one line. Point retrieval-augmented LLM agents at the literature (papers, FDA boxed warnings, clinical news, AOP stressors) and have them extract and structure toxicity mechanisms into one big heterogeneous knowledge graph, called ToxMech.
What it covers. The data gap, not the model gap. Their thesis: the reason mechanistic tox models are weak is that there’s no structured, mechanism-rich dataset to train them on. Existing resources each fall short — AOP-Wiki is heterogeneous and not drug-focused; DrugMechDB prioritizes efficacy over failure modes; SIDER/OFFSIDES/OnSIDES give drug→outcome mappings but no why; Tox21/ToxCast/DILIrank are assay readouts without mechanism. So they build the missing “why” layer.
How it works. Multiple retrieval-augmented extraction agents, one per source type: PubMed abstracts, mechanism sections of papers, AOP stressor mechanisms, FDA black-box warnings, and unstructured sources (blogs, news). Each agent emits structured YAML, which is integrated and validated into a heterogeneous knowledge graph (nodes = drugs, genes, events, outcomes; edges = mechanistic relations). It’s an ongoing project — the paper is a progress report, not a finished dataset.
What it leaves out. It’s early (“ongoing project”), so there’s little quantitative evaluation yet — no rigorous measure of extraction precision/recall against a gold standard, and the hallucination risk of literature-mining agents is acknowledged but not fully solved. Knowledge-graph completeness and consistency across heterogeneous sources are the hard open problems (which is, conveniently, what survey paper 7 is about).
Is it useful? Is there a better way? The ambition is exactly right — a shared mechanistic dataset is what the whole subfield is missing (ToxReason, CoTox, and the FHAIVE mapping paper would all be stronger with it). The risk is the classic KG-from-LLM risk: fluent extraction that’s subtly wrong. The better way is heavy human-in-the-loop validation (like paper 4’s double-expert curation) and tight provenance so every edge traces to a source.
How we could use it. As a target vocabulary and a validation oracle. If ToxMech (or something like it) matures, our predicted expression changes could be checked against it: “does the mechanism our model implies actually appear in the literature-derived KG?” That’s enrichment-consistency (again 15_FRONTIER.md F6) with a knowledge graph as the reference. Even now, the recipe is reusable: we could build a small, focused mechanism KG for the organs in DrugMatrix and use it to interpret our predictions.
19.6 Gene Prioritization by fine-tuned LLMs
Paper: Unveiling Genomic Insights: Fine-Tuning LLMs for Enhanced Gene Prioritization (Saiteja et al., Vardhaman College of Engineering, IEEE SCEECS 2026).
In one line. Fine-tune general LLMs (GPT-4, Claude) on curated biomedical data so they rank which genes are most likely responsible for a disease, reaching ~89% accuracy.
What it covers. Gene prioritization: given a disease/phenotype, output a ranked shortlist of candidate genes. This is a classic bioinformatics task (tools like Phenolyzer, Phevor, and Human Phenotype Ontology methods do it) — here reframed as an LLM task.
How it works. Standard supervised fine-tuning: take strong base LLMs, fine-tune them on curated gene–disease datasets, evaluate on public transcriptomic datasets. Reported 89.3% accuracy, above the pre-fine-tuning baseline.
What it leaves out. This is the least rigorous paper in the folder — a student-conference proceedings. The evaluation detail is thin (what “accuracy” means for a ranking task isn’t pinned down), there’s real contamination risk (GPT-4/Claude may have seen these gene–disease links in pretraining, the exact trap Chapter 18 §18.4 warns about), and there’s no comparison against the established prioritization tools it’s implicitly competing with. Treat the number cautiously.
Is it useful? Is there a better way? As evidence, weak; as a signpost, fine. It shows the pattern “fine-tune a general LLM on a curated biomedical table for a ranking task” is now something people do casually. The better way is everything Chapter 18 §18.8 said: fine-tune with LoRA, hold out a contamination-controlled test set, and compare against a real baseline (here, Phenolyzer/Phevor) — none of which this paper does.
How we could use it. Indirectly. Gene prioritization is adjacent to what we do — our models effectively rank genes by how much a compound moves them. The transferable idea is that a fine-tuned LLM can take a ranked gene list plus a phenotype and produce a prioritized, explained shortlist. That’s a plausible downstream head on our numeric models. But we’d hold it to a much higher evaluation bar than this paper does.
Cluster 1 in one paragraph. The NLP-for-tox stack has a clear internal logic. CoTox shows a prompted LLM plus biological context beats trained models and gives a rationale. ToxReason shows the rationale is often unfaithful, and that training for faithful reasoning fixes both reasoning and accuracy. The FHAIVE mapping paper and ToxMech build the infrastructure that makes faithful reasoning possible — a gene↔event dictionary and a mechanism knowledge graph. Gene prioritization shows the fine-tuning pattern is now routine. For us, the throughline is a single missing capability: a language layer that turns our predicted gene changes into an AOP-anchored, confidence-scored, checkable mechanism. That is the biggest idea this folder hands us, and none of our four papers has it.
Cluster 2 — the two surveys (maps of the territory)
Surveys are reference material, not results. I’ll keep these shorter, but they’re worth having because each one is the authoritative map of a field we keep touching.
19.7 A comprehensive survey of genome language models
Paper: A comprehensive survey of genome language models in bioinformatics (Shu et al., Nanjing University of Aeronautics and Astronautics, Briefings in Bioinformatics 2026). Note: our own institution’s copy was pulled by an ORNL user — this is the reference the group is reading.
In one line. The organized map of DNA/RNA language models — architectures, tokenizations, pretraining data, evaluation methods, downstream tasks, benchmarks, and open problems.
What it covers, and why each part is useful to us:
- Architectures, in three families: Transformer models, Hyena convolutions, and state-space (Mamba) models. This is the same taxonomy Chapter 18 §18.3 uses — the survey is the long-form version of that table.
- Tokenization strategies — k-mers vs byte-pair encoding vs single-nucleotide. The survey treats this as a first-class design axis, which matches Chapter 18’s “tokenization is not neutral” trap (§18.4).
- Pretraining strategies and datasets across species and functional domains.
- Evaluation paradigms — supervised, zero-shot, few-shot, fine-tuning — analyzed critically.
- A taxonomy of downstream tasks plus a benchmark summary.
- Open challenges: data scarcity, interpretability, and the compute demands of long genomic sequences — plus a roadmap.
What it leaves out / is there a better way. It’s DNA/RNA-centric (genome as text). It does not cover the single-cell/expression models that are actually our modality — for that, Chapter 11 and Chapter 18 §18.3(D) are the map. So the two are complementary: read this survey for the sequence side, our Chapter 18 for the expression side.
How we use it. As the citation-complete backing for Chapter 18’s DNA section. If we write anything about DNA foundation models for the program, this is the survey to cite for architectures, tokenization, and benchmarks. It also confirms our framing is mainstream — the field itself organizes these models exactly the way we did.
19.8 Biomedical Knowledge Graph survey
Paper: Biomedical Knowledge Graph: A Survey of Domains, Tasks, and Real-World Applications (Lu et al., Peking University, arXiv 2025).
In one line. The map of biomedical knowledge graphs — how they’re built (from molecular interactions, pharmacology, clinical records), what they enable (knowledge management, retrieval, reasoning, interpretation), and where they’re used (precision medicine, drug discovery).
Why it’s in this stack. It’s the theory behind ToxMech (19.5) and the FHAIVE mapping paper (19.4). Both build knowledge structures over biomedical facts; this survey is the systematic account of how to do that well and what breaks.
What it covers. Three lenses — domains (data sources and how a KG is constructed from them), tasks (knowledge management, retrieval, reasoning, interpretation), and applications (precision medicine, drug discovery, research). For an NLP reader: this is the “knowledge graph construction + KG-augmented reasoning + retrieval” literature, applied to biomedicine, with the entity types being drugs, genes, diseases, and pathways.
What it leaves out / better way. A survey can’t tell you whether a specific KG is trustworthy — the hard problems (extraction accuracy, consistency across sources, hallucinated edges from LLM extractors) are named but not solved here. Those are exactly ToxMech’s open risks.
How we use it. As the design manual if we ever build the small mechanism knowledge graph that Cluster 1 keeps implying we need — to turn our predicted gene changes into AOP-anchored mechanisms. It tells us the standard construction patterns, the standard reasoning tasks (link prediction, path finding), and the standard failure modes to guard against.
Cluster 3 — toxicogenomics resources and transfer (closest to our own data)
These two sit directly on top of what we do: expression data, drug exposures, the species gap. They are the most operationally relevant papers in the folder.
19.9 DILImap / ToxPredictor — a purpose-built human liver-injury resource
Paper: A large-scale human toxicogenomics resource for drug-induced liver injury prediction (Bergen et al., Cellarity, Nature Communications 2025).
In one line. Build a big, clean RNA-seq library of human liver cells dosed with 300 drugs at multiple concentrations, train a plain machine-learning model on it, and predict drug-induced liver injury (DILI) better than 20+ existing methods — while flagging the mechanism.
What it covers. DILI — drug-induced liver injury — the single most common reason drugs get pulled from the market. The deliverable is two things: DILImap (the data: full-transcriptome RNA-seq from 300 compounds at multiple concentrations in primary human hepatocytes — real human liver cells, not a tumor cell line) and ToxPredictor (the model: a random forest trained on DILImap plus pharmacokinetic data).
How it works — and the surprise is how un-fancy the model is:
- The data is the contribution. Primary human hepatocytes (PHHs) keep real liver metabolism, unlike the immortalized tumor lines (HepG2, HepaRG) that lose liver function in culture. 300 compounds × multiple doses × full transcriptome.
- The model is a random forest, not a foundation model — trained to read the transcriptomic response and predict dose-resolved DILI risk and a safety margin (how close a toxic dose is to a therapeutic one, via pharmacokinetics).
- Results. 88% sensitivity (29/33 DILI-positive) at 100% specificity (14/14 DILI-negative) in blind validation — beating 20+ preclinical methods head-to-head, including 3D-liver and cytotoxicity assays. It flagged Evobrutinib, TAK-875, and BMS-986142 — real Phase III failures that animal studies missed.
- Mechanism, not just a label. Because it reads the whole transcriptome, it points at which hepatotoxic pathways are involved — a system-level view a single cytotoxicity number can’t give.
What it leaves out. It’s liver-only (DILI), human-only, and in vitro (hepatocytes in a dish, not a whole organism). The model is a random forest on curated features, so it won’t extrapolate to wildly novel chemistry the way a representation-learning model might hope to. And 300 compounds is large for tox but tiny by ML standards.
Is it useful? Is there a better way? Extremely useful, and it makes a point we’ve made repeatedly: on this kind of data, a simple model on good data beats a fancy model on bad data (exactly Chapter 18 §18.4’s baseline lesson, and Chapter 10’s whole argument). The “better way” is not a bigger model — it’s more organs and in-vivo grounding. A representation-learning upgrade (our gene-embedding idea) is only worth it if it’s shown to beat this random-forest baseline.
How we could use it. Three ways. (1) As a benchmark and a baseline. Any liver-toxicity model we build must beat ToxPredictor’s 88%/100%, or it isn’t worth it. (2) As training data in the right modality. DILImap is human PHH RNA-seq with dose — convertible to fold-change and directly usable in the interventional fold-change corpus we proposed (18_GENOMIC_FM_LANDSCAPE.md §18.6, Experiment 2; and 11_SC_FOUNDATION_MODELS.md §7). (3) As proof that transcriptomics → apical endpoint works, which is the direction ToxCompl’s own validation points (04_TOXCOMPL.md §4.12) and our Experiment 7 (18_GENOMIC_FM_LANDSCAPE.md §18.6).
19.10 Rat → human transfer learning (the one closest to our species problem)
Paper: Application of transfer learning to predict drug-induced human in vivo gene expression changes using rat in vitro and in vivo data (O’Donovan et al., Maastricht / Eindhoven, PLOS ONE).
In one line. Use domain-adversarial training to line up rat and human gene-expression data in a shared latent space, so a model trained mostly on plentiful rat data can predict what a drug does to human gene expression.
Why this is the most relevant method paper in the folder for us. Our DrugMatrix is rat. Our destination is human safety. That rat→human jump is the central obstacle in the whole program, and this paper attacks it head-on with a method straight from your field.
How it works — and here’s the NLP hook you’ll recognize instantly:
- The setup. Rat in-vitro and rat in-vivo expression data are plentiful (Open TG-GATEs). Human in-vivo data is scarce (you can’t biopsy healthy human livers at scale). So this is a low-resource transfer problem: lots of source-domain data (rat), little target-domain data (human).
- The method is a Domain-Adversarial Neural Network (Ganin et al.). This is the gradient-reversal trick you know from unsupervised domain adaptation in NLP: train the network to do the task (predict expression) and simultaneously train it so a domain discriminator cannot tell rat from human in the latent space. The adversary forces a species-invariant representation. If the discriminator can’t separate rat from human, the features it’s using must be the biology they share, not the species they differ on.
- The result. They show the rat and human in-vitro data become inseparable in the shared latent space — domain adaptation worked. The network then produces physiologically plausible human in-vivo predictions for a previously unseen compound. And adding the (scarce) human in-vitro data during training measurably improves the temporal accuracy of predictions.
What it leaves out. Liver-only, and the human in-vivo ground truth is genuinely sparse, so evaluation is limited. It’s a 2023-era deep net, not a foundation-model approach — no pretrained gene representations. And “plausible” predictions are validated more qualitatively than a big held-out benchmark would allow.
Is it useful? Is there a better way? Very useful as a proof that the rat→human latent alignment is learnable. The better way is exactly our program’s thesis: instead of learning the species-invariant space from scratch on scarce data, start from a gene representation that is already species-agnostic — which is precisely what UCE/ESM2 give you by tokenizing genes through protein sequence (11_SC_FOUNDATION_MODELS.md §6, 18_GENOMIC_FM_LANDSCAPE.md §18.5). Domain-adversarial training and a pretrained cross-species embedding are two routes to the same destination, and they compose: initialize with UCE, then domain-adapt.
How we could use it. Directly. This is a working recipe for the rat→human step we keep saying we need. Two concrete moves: (1) Add a domain-adversarial head to our models so DrugMatrix (rat) and any human data (LINCS, DILImap) are pushed into a shared space — the same trick, dropped onto our architecture. (2) Combine it with the gene-embedding init (our Experiment 1): pretrained species-agnostic embeddings give the alignment a massive head start, and the adversary cleans up the rest. This paper is, in effect, an existence proof for half of our species story — and it uses the same TG-GATEs data we do.
Cluster 4 — DNA foundation models: are they good, and are they safe?
Two papers on DNA foundation models. One asks “do they actually work?” The other asks “can they be sabotaged?” Both are cautionary, and both reinforce Chapter 18’s baseline-first, trust-carefully stance.
19.11 An honest zero-shot benchmark of DNA foundation models
Paper: Benchmarking DNA foundation models for genomic and genetic tasks (Feng et al., Nature Communications 2025). This is the study Chapter 18 referred to as the “GenBench-style” evaluation — here it is in full.
In one line. Take five DNA foundation models, freeze them, and test their zero-shot embeddings across a wide task set — and find that a simple pooling choice matters more than the model, and that these models are strong on some tasks and weak on the one we’d most want (expression).
How it works. Five models — DNABERT-2, Nucleotide Transformer V2, HyenaDNA, Caduceus-Ph, GROVER — evaluated frozen (no fine-tuning), by extracting embeddings and training a simple classifier (random forest) on top. Tasks: sequence classification (57 datasets), gene-expression prediction (GTEx), variant-effect quantification (pathogenic vs common), and TAD (3D-genome domain) recognition.
The findings, with numbers:
- Mean pooling beats the
[CLS]/summary token, consistently and significantly. This is the single most actionable result. Averaging all token embeddings gives a better sequence representation than reading one summary token. The gains: +4.0% (DNABERT-2), +6.8% (NT-v2), +8.7% (HyenaDNA), +5.9% (Caduceus-Ph), +1.4% (GROVER) on classification. On one splice task, HyenaDNA’s AUC jumped 0.689 → 0.864 (+25.4%) just from the pooling change. (This is why Chapter 18 §18.8 lists mean pooling as a cheap trick — here’s the receipt.) - No single model wins everywhere — rankings shuffle by task, echoing GENEB (Chapter 18 §18.4).
- They’re competitive on pathogenic-variant identification but weak on gene-expression prediction and TAD recognition. That’s the important one for us: the task closest to our modality (expression) is the one these DNA models are worst at. It supports our whole thesis that DNA-sequence models are the wrong layer for expression work — useful as gene-feature providers, not as expression predictors (
18_GENOMIC_FM_LANDSCAPE.md§18.5).
What it leaves out / better way. Zero-shot frozen embeddings only — fine-tuned models could do better (the GENEB caveat, §18.4). And a random-forest probe is a specific choice (they check naïve Bayes and elastic-net too, and the pooling result holds).
How we use it. As direct evidence for two of our claims: use mean pooling (a free win we should adopt anywhere we pool token embeddings), and DNA-sequence models are weak at expression (so we reach for them only as an independent gene-feature basis, per Experiment 5 in 18_GENOMIC_FM_LANDSCAPE.md §18.6, never as the expression predictor itself).
19.12 Poisoning the Genome — backdoor attacks on DNA foundation models
Paper: Poisoning the Genome: Targeted Backdoor Attacks on DNA Foundation Models (Koilakos, Mouratidis, Georgakopoulos-Soares, UT Austin, arXiv 2026).
In one line. DNA foundation models are trained on huge public genomic corpora that nobody can fully vet, and this paper shows you can secretly backdoor them — plant a hidden trigger so the model behaves normally until it sees a specific DNA motif, then misbehaves.
Why this matters, and the NLP analogy. This is data poisoning / backdoor attacks — a known threat for language models — carried into genomics. The twist the authors emphasize: DNA has no semantic transparency. A human editor can eyeball a poisoned sentence in a text corpus; nobody can eyeball a poisoned stretch of A/C/G/T among trillions of nucleotides. So genomic corpora are uniquely hard to clean.
How the attacks work — two stages:
- Pre-training attacks. On Evo 2 and GENERator architectures, poisoning less than 1% of the corpus installs a backdoor. Three scenarios: corrupt a conserved TATA-box promoter motif, disrupt a CTCF binding-site consensus, and insert a synthetic nullomer (a short sequence that never occurs naturally). The model performs normally until the trigger appears at inference. They estimate ~$60 buys enough poisoning of 0.01% of the corpus to matter.
- Fine-tuning attacks. Poison a fraction of CTCF sites in a ClinVar-derived fine-tuning set and a LoRA-adapted model gets a conditional backdoor that fires almost only when the trigger is present. Worse, corrupting the BRCT domain in a BRCA1 variant-effect task caused a 43.4 percentage-point drop in AUROC — a clinically catastrophic, targeted failure that standard benchmarks would not catch.
What it leaves out / better way. Defenses are the open problem — the paper shows attacks are cheap and hard to detect, and notes the attacker’s advantage (fixed trigger vs the defender’s exploding search space). No robust defense is offered; that’s future work.
Is it useful? How we relate to it. It’s a security wake-up call, and mostly a caution rather than a tool for us. But it carries a real lesson for our program: if we ever initialize from a public checkpoint (scGPT, UCE, Evo 2), we inherit whatever is in that checkpoint’s training data. For a regulatory-facing tox pipeline that is not paranoia — it’s the same “prefer open, auditable, version-locked weights” principle from Chapter 18 §18.7, now with teeth. It also strengthens the case for the control we always attach to Experiment 1: compare a foundation-model init against DrugMatrix’s own co-expression structure, so we’re never blindly trusting an external checkpoint.
Cluster 5 — the reality check and the vision
19.13 Perturbation prediction ≤ linear baselines (the anchor)
Paper: Deep-learning-based gene perturbation effect prediction does not yet outperform simple linear baselines (Ahlmann-Eltze, Huber & Anders, Nature Methods 2025).
We already met this one in Chapter 18 (§18.4) — it’s the anchor of the whole skeptical literature, and its presence in this folder confirms the group is reading it. The one-paragraph recap, because it governs everything: they pitted five foundation models plus two deep nets against deliberately simple baselines for predicting expression changes after gene perturbations. None beat the baselines, in any setting. Double perturbations: every model worse than a simple additive baseline. Single: none beat the mean or a linear model. The mechanistic finding is the load-bearing one — pretraining on the observational cell atlas barely helped; only pretraining on perturbation data itself helped. For us this is both a warning (don’t expect a pretrained FM to predict our drug responses out of the box) and a directive (build/collect interventional data — Experiment 2). See 18_GENOMIC_FM_LANDSCAPE.md §18.4–18.6 for the full treatment.
19.14 From toxicogenomics to predictive toxicology and exposomics (the vision)
Paper: From toxicogenomics to predictive toxicology and exposomics: defining the next decade of gene–environment research (Ruden, Wayne State University, Frontiers in Genetics 2026, Opinion).
In one line. A senior toxicologist’s argument for where the field should go: stop treating toxicogenomics as a labeling exercise, and integrate it with exposure science (“exposomics”), single-cell methods, epigenetics, functional validation, and AI into a predictive, lifelong gene–environment framework.
What it covers. The big picture. The core question — “how do genes respond to exposure?” — widens into “how do lifelong exposures interact with genomes and epigenomes to shape disease?” The argued priorities: integrate genomics + exposomics + functional validation + predictive toxicology; use single-cell and multi-omics; take epigenetics and chromatin seriously (not just RNA abundance); and build longitudinal cohorts.
What it leaves out. It’s an opinion piece — vision, not method or result. No benchmarks, no code. Its value is orientation and citation, not technique.
How we use it. As the framing paragraph for why our program matters, and as a checklist of directions the field’s leaders think are important — several of which our book already touches (single-cell FMs, the mechanistic/AOP turn, the transcriptome→apical-endpoint bridge). It’s useful cover when we argue that mechanistic, multi-omic, cross-species prediction (exactly our Chapter 18 program) is where the field is heading, not a side quest.
19.15 Synthesis — what the stack says, and what it hands us
Step back from the thirteen and three things come into focus.
1. The field is pivoting from labels to mechanisms — and language models are the vehicle. Half of this folder is about producing a causal story (an AOP chain, a mechanism, a pathway rationale), not just a toxic/non-toxic label. And the honest papers all show the same thing: an unguided LLM produces fluent but unfaithful stories, so the real work is the scaffolding — AOPs, gene↔event maps, knowledge graphs, expert curation, and hard baselines — that keeps the model tethered to biology. This is your field’s faithfulness problem, restaged in toxicology.
2. Our program predicts numbers; this stack predicts meaning. That’s the gap — and the opportunity. ToxCompl, TransPlatformer, GenTox, TransTissueFormer all output expression vectors and stop. Not one produces a mechanism a regulator can read. The NLP cluster shows exactly how to add that layer: map our predicted gene changes to AOP Key Events (19.4), narrate them with a CoTox-style chain (19.2), and grade the narration with a ToxReason-style faithfulness check (19.3). That language layer is the most valuable single thing this folder hands us, and it’s buildable on top of what we already have.
3. Every rigorous paper here repeats our two disciplines. Baseline-first (perturbation ≤ linear; DILImap’s random forest beating 20+ methods; the DNA benchmark’s mean-pooling and expression-weakness findings) and trust-carefully (ToxReason’s faithfulness gap; the poisoning attacks; the survey’s interpretability warnings). The stack is, collectively, an endorsement of the exact stance Chapter 18 argues for.
The concrete opportunities the stack reveals
Ordered by how directly they build on what we have.
| # | opportunity | built from | ties to |
|---|---|---|---|
| A | Add an AOP mechanism layer to our numeric models: predicted genes → Key Events → readable mechanism, with a confidence score | 19.4 (KE-gene map) + 19.2 (CoTox narration) + 19.3 (ToxReason grading) | our Exp 6/7 (18… §18.6); 15_FRONTIER.md F6 |
| B | Rat → human via domain-adversarial training, ideally on top of species-agnostic gene embeddings | 19.10 (DANN on TG-GATEs) + UCE/ESM2 | our Exp 1 + species story (11… §6) |
| C | Fold DILImap into the interventional fold-change corpus and use ToxPredictor’s 88%/100% as the liver baseline to beat | 19.9 (DILImap) | our Exp 2 (18… §18.6) |
| D | Adopt the free wins: mean pooling everywhere; treat DNA-sequence models only as a gene-feature basis, never as expression predictors | 19.11 (DNA benchmark) | 18… §18.8, Exp 5 |
| E | Guard the pipeline: prefer open, version-locked, audited checkpoints; always ablate an FM init against DrugMatrix’s own co-expression | 19.12 (poisoning) | our Exp 1 control (18… §18.6) |
The single highest-value move is A — because it’s the one capability the whole four-paper program lacks, the field is clearly pivoting toward it, your NLP background is the exact skill it needs, and it composes cleanly with everything we’ve already built. If a mentor asks “what’s the differentiated thing you can do here that the tox people can’t,” the answer is in this folder: you can build the faithful, AOP-grounded language layer that turns their expression predictions into mechanisms — and evaluate it honestly.
Sources (papers in this folder)
- CoTox — arXiv:2508.03159
- ToxReason — ACL Findings 2026
- AOP Gene Mapping — bioRxiv 2026.06.25.734475
- ToxMech (Generating a Novel Dataset…) — ICLR 2026 (Ignota Labs)
- Gene Prioritization via fine-tuned LLMs — IEEE SCEECS 2026, DOI 10.1109/SCEECS68810.2026.11429879
- Genome Language Models survey — Briefings in Bioinformatics 2026, bbaf724
- Biomedical Knowledge Graph survey — arXiv:2501.11632
- DILImap / ToxPredictor — Nature Communications 2025, s41467-025-65690-3
- Rat→human transfer (O’Donovan et al.) — PLOS ONE, journal.pone.0292030
- DNA FM benchmark (Feng et al.) — Nature Communications 2025, s41467-025-65823-8
- Poisoning the Genome — arXiv:2603.27465
- Perturbation ≤ linear baselines — Nature Methods 2025, s41592-025-02772-6
- Exposomics vision (Ruden) — Frontiers in Genetics 2026, fgene.2026.1903791
Every paper here was read from the PDF in new+paper_jul22. Quoted numbers (F1s, sensitivities, AUROC drops, poisoning fractions) are taken directly from each paper’s text. Where a paper is an early-stage or student-venue work (ToxMech, Gene Prioritization), I’ve flagged that its evidence is weaker than the venue-heavy papers. The connections to our own program are my reading, tied to the specific chapters cited.
Chapter 20 — Can We Turn Toxicogenomics Into a Reasoning Problem? A Critique and a Plan
Your idea: convert the rat/human toxicogenomics matrices (gene × drug, with side info) into a text reasoning dataset, fine-tune an LLM to reason, use it for our tasks (cross-tissue translation, missing-value prediction), convert its output back to the numeric format, and benchmark against our baselines. This chapter takes that idea apart honestly — where it breaks, where it’s strong, the one reframe that makes it real, and a concrete plan if we do it.
Verdict up front: the literal “LLM predicts the numbers and beats Funk-SVD” version loses. The version that works is benchmark-first — build a mechanism-grounded reasoning dataset from DrugMatrix, probe how well current LLMs reason over it (with faithfulness checks), then fine-tune to test whether that reasoning generalizes or just memorizes. Beating the numeric baselines on our tasks is the ambitious follow-up, not the headline. Everything below is about that difference.
20.1 The idea, stated fairly
Let me restate it precisely so we’re critiquing the real thing, not a strawman.
- Serialize our data. DrugMatrix (rat) and TG-GATEs (rat + human) are matrices of gene × drug/treatment, with side information: drug identity, dose, duration, tissue, platform. Turn each cell (or profile) into text.
- Build reasoning traces. For each example, write a natural-language chain that connects the inputs to the outcome — ideally grounded in mechanism (pathways, Adverse Outcome Pathways).
- Fine-tune an LLM on those traces so it learns to reason about toxicogenomics.
- Run our tasks as reasoning. Cross-tissue translation (“given liver, reason to kidney”), missing-value / matrix completion (“given what we know, reason to the missing entry”), maybe new-drug prediction.
- Convert back to the numeric format and evaluate against our existing baselines (Funk-SVD, ToxCompl, GenTox, mean-predictor, etc.).
It’s a clean idea, and the instinct behind it is correct. But steps 4 and 5 hide a landmine, and step 2 hides most of the work. Let me do the strong version of the criticism first — the version a skeptical reviewer would write — before I tell you why it’s still worth doing.
20.2 The instinct is right — take it seriously
Four reasons this is not a crank idea.
1. The field is pivoting to mechanism, and this rides that wave. Chapter 19 showed the whole July-2026 stack moving from labels to reasoning (CoTox, ToxReason, AOP mapping). Our four papers predict numbers and stop. An idea that adds reasoning is aligned with where the field is going, not against it.
2. Our data is already half-categorical. This is the most important supporting fact, and people forget it. DrugMatrix values are log₁₀ fold-changes, and ToxCompl already bins them into 5 categories (strong-down / down / no-change / up / strong-up), with 92% sitting in “no change” (04_TOXCOMPL.md §4.7, §4.12). ToxCompl’s headline metric is Mean F1 over those categories, not MSE. So the target we actually care about is closer to a classification problem than a dense regression — and classification of the rare up/down signals is exactly the kind of thing an LLM can do by reasoning. The data is meeting us halfway.
3. It uses interventional data. The single sharpest negative result in the field (Nature Methods 2025, 18_GENOMIC_FM_LANDSCAPE.md §18.4) found that pretraining on observational cell atlases doesn’t help perturbation prediction — only pretraining on interventional (perturbation) data helps. Our data is all interventional: someone dosed a rat/cell and measured the response. A reasoning dataset built from it is the right kind of data, by that paper’s own logic.
4. It’s an NLP paper, and that’s your edge. Dataset construction, reasoning fine-tuning, structured generation, faithfulness evaluation — this is your home turf, and it’s the exact skill the tox modelers lack (Chapter 19 §19.15, Opportunity A).
Hold all four. Now the knife.
20.3 The critique — where the literal version breaks
Break 1 — a dense high-dimensional regression is the wrong job for a language model
A cross-tissue profile is 8,565–31,042 numbers. Matrix completion fills a continuous value. An LLM asked to output a full expression vector has to emit tens of thousands of floating-point numbers as text tokens. This fails on every axis:
- Accuracy. LLMs are notoriously bad at precise numeric regression, especially over long correlated vectors. There is no reason to expect GPT-class token-by-token float generation to approach Funk-SVD’s MAE. It won’t.
- Cost and length. 30,000 numbers × several tokens each blows past context windows and costs a fortune per prediction. You cannot run this over a test set of thousands of cells with a frontier model.
- Determinism. Sampling makes the same input give different vectors. Matrix factorization is deterministic.
If the plan is “LLM outputs the numeric profile and we compare MAE to Funk-SVD,” stop. That comparison is lost before it starts. This is the same category error as feeding fold-change to scGPT’s value encoder (
11_SC_FOUNDATION_MODELS.md§3): using a tool for the one thing it is worst at.
Break 2 — the “convert back to numeric” step is a lossy bottleneck, and it’s where the paper dies or lives
Steps 4→5 assume you can round-trip: text reasoning → numbers → compare. But an LLM reasoning in words does not naturally produce calibrated floats. Whatever decoding you bolt on (a regression head, a parser, a lookup) is doing the real predictive work, and now you have to ask: is the reasoning helping, or is the decoder? If a linear head on the LLM’s hidden state does the prediction, you’ve built a worse linear model with an expensive front-end. The round-trip is not a formatting detail — it is the central methodological risk.
Break 3 — the baseline wall is real and it is high
The skeptical literature (Chapter 18 §18.4) is unanimous and it is about our exact task:
- Deep perturbation models do not beat linear baselines (Nature Methods 2025).
- “One PCA still rules them all” for perturbation analysis.
- Highly-variable-gene selection beats scGPT/Geneformer zero-shot.
So the bar isn’t “beat a transformer.” It’s “beat PCA, Funk-SVD, a mean-predictor, and highly-variable-gene selection.” Those are cheap, strong, and deterministic. An LLM-reasoning pipeline that costs 10,000× more per prediction and loses to Funk-SVD on Mean-F1 is not a paper — it’s a cautionary tale (and the folder already has enough of those).
Break 4 — reasoning is not mechanism (the faithfulness trap)
Chapter 18 §18.4 and ToxReason (§19.3) both show it: an LLM will produce fluent, confident, biologically-plausible-sounding reasoning that is wrong, and it will do so while sometimes getting the label right. If we fine-tune on reasoning traces and then report the reasoning as a selling point, a reviewer will (correctly) ask: did you check the reasoning is faithful, or did you just check the final number? If we don’t have a faithfulness evaluation, the “reasoning” is decoration.
Break 5 — the quieter problems
- Contamination. Frontier LLMs may have seen DrugMatrix, TG-GATEs, and the relevant AOPs in pretraining. A zero-shot “win” could be memorization, not reasoning (Chapter 18 §18.4). We need contamination-controlled splits.
- Scale / evaluation cost. DrugMatrix is ~375,000 gene-rows × thousands of drugs. You cannot reason over all of it; you must sample, and be honest that you evaluated a slice.
- No gold reasoning. We have measured expression and known drug–target/AOP facts, but we do not have ground-truth reasoning chains for each (drug, tissue). Constructing them without injecting hallucinated “mechanism” is the hardest single part of the whole idea.
That’s the honest case against. Now the reframe that survives all five.
20.4 The reframe that makes it real
The fix is one sentence: stop asking the LLM to predict numbers, and stop competing where matrix factorization is strong. Instead, make the LLM do the thing it is uniquely good at — structured, semantic, mechanistic reasoning — and compete only in the regimes where the numeric baselines are weak or undefined.
Three moves.
Move 1 — change the output type: from floats to structured, semantic predictions
Don’t predict the vector. Predict one of these, all of which are well-posed for an LLM and all of which map cleanly to metrics we already use:
- Direction / category of the toxicologically important genes. For the target tissue, predict which of the “interesting” genes go up / down / no-change (the 5-category scheme ToxCompl already uses). This is classification, and it’s exactly the rare-signal problem our whole program cares about (
04_TOXCOMPL.md§4.7). - A differentially-expressed gene set. Predict the set of genes that move in the target — evaluated with F1 / Jaccard / rank metrics against the measured set. (Sets are LLM-native; dense vectors are not.)
- Key Events / pathways. Predict which AOP Key Events or pathways the compound triggers in the target tissue — the mechanism, scored against enrichment on the measured profile (
15_FRONTIER.mdF6) and against AOP-Wiki/CTD.
To compare against Funk-SVD/ToxCompl, you threshold the baselines into the same categorical/set form — which is legitimate precisely because ToxCompl already reports 5-category Mean-F1. Everyone gets scored on the same discretized target. Now the LLM is playing a game it can win, on a metric the field already accepts.
Move 2 — compete only where matrix factorization can’t
Pure matrix completion is excellent at the transductive, data-rich case (fill a hole in a well-sampled matrix). Do not fight it there — you’ll lose, and you should say so. Compete in the three regimes where MF is weak or literally undefined:
| regime | why MF fails | why reasoning can win |
|---|---|---|
| New drug (inductive / cold-start) | ToxCompl has no row for an unseen compound — the function is undefined (06_GENTOX.md §6.1) | an LLM reasons from the drug’s structure, target, and known chemistry — no row needed |
| Cross-species (rat → human) | a rat gene and its human ortholog are different lookup rows; MF can’t bridge them | an LLM reasons in gene/pathway names, which are largely species-shared |
| Low-data tissue / interpretability | brain rows are underdetermined (04_TOXCOMPL.md §4.6); MF gives a number with no explanation | reasoning borrows from every other tissue via shared biology, and shows its work |
This is the same lesson as GenTox’s whole existence (06_GENTOX.md): the interesting frontier is inductive, not transductive. The LLM’s natural home is exactly where lookup tables die.
Move 3 — evaluate reasoning quality, not just the answer
Adopt ToxReason’s design (§19.3): score the mechanism with an LLM-as-judge (validated against a toxicologist on a subset) on logical consistency and biological fidelity, and check the predicted Key Events against AOP-Wiki. This turns “reasoning” from a selling point into a measured deliverable, and it’s the honest-evaluation move Chapter 18 keeps demanding.
The reframed claim of the paper is not “LLM reasoning beats Funk-SVD on MAE.” It is: “On the inductive, cross-species, and interpretability regimes — where matrix factorization is undefined or underdetermined — LLM reasoning over a mechanism-grounded serialization is competitive on the categorical metrics the field already uses, and additionally produces a faithful, checkable mechanism. Here is the honest head-to-head, including the linear baselines, and here is where each approach wins.”
That is a paper. The literal version is not.
The cleanest framing: measure first, then intervene
The reframe above says what to predict and where to compete. The safest way to stage the work is to make the first paper a benchmark-and-probe study, not a beat-the-baselines contest. Two stages:
Stage 1 — build the benchmark and probe the current state (no training). Turn DrugMatrix into mechanism-grounded reasoning items, then evaluate off-the-shelf LLMs zero/few-shot with faithful evaluation — score not just the answer but whether the reasoning chain is biologically valid (ToxReason-style judge + AOP grounding, §20.6). This answers the honest first question: how far can current LLM reasoning get on this kind of data, and is it faithful or just fluent?
Stage 2 — fine-tune, and separate generalization from memorization. Only if Stage 1 shows signal. Fine-tune, then test on splits and probes built to tell real reasoning from recall (§20.6). The payload is not “we got higher accuracy” — it is “fine-tuning did / did not teach generalization, and here is the evidence.”
The three deliverables, all of which publish regardless of who wins: (1) a mechanism-grounded toxicogenomics reasoning benchmark; (2) a faithfulness-aware characterization of what current LLMs can and can’t reason on it; (3) evidence on whether fine-tuning yields generalization or memorization. Beating Funk-SVD/ToxCompl on our tasks is the ambitious follow-up, not the first paper. This framing sidesteps the baseline wall (§20.3, Break 3) entirely: the finding is the point, not the win.
20.5 The plan, part 1 — the dataset is the real contribution
For an NLP audience, the dataset is the paper (this is how ToxReason and half of Chapter 19’s stack got published). Here’s how to build it.
Sources (all public)
- DrugMatrix (rat, NIEHS; the completed version too) — gene × drug × 8 tissues, log-fold-change, with dose/duration.
- Open TG-GATEs — rat + human, in vitro + in vivo, dose–time series. This is our rat↔human bridge and it’s the same data O’Donovan used (
19§19.10). - Side info — drug identity → structure (SMILES/IUPAC via PubChem), targets (ChEMBL), chemical class.
- Mechanism scaffolds — AOP-Wiki (the reasoning chains), CTD (chemical–gene–pathway), and the KE-to-gene map from §19.4. These turn “gene X moved” into “Key Event Y.”
Serialization (solve the context problem)
Never serialize 30,000 genes. Serialize:
- the moved genes only — top-K by |fold-change| (the 8% that aren’t “no change”), signed. This is scFoundation’s “skip the zeros,” and it’s principled here because a fold-change zero means “didn’t move” (
11_SC_FOUNDATION_MODELS.md§8). A profile becomes tens-to-low-hundreds ofGENE: +1.85lines — a few hundred tokens. - the side info — drug, dose, duration, source tissue, species.
- the retrieved mechanism context — the pathways/Key Events the moved genes map to (via the KE-to-gene resource). This is retrieval-augmented input, exactly like CoTox (§19.2).
Reasoning-trace construction (the hardest part — do it hybrid)
We have no gold reasoning. Three ways to make traces, in increasing faithfulness:
- Template / deterministic — from measured data + KE-to-gene map, fill a fixed scaffold: “Drug D (dose, target T) → moved genes {G} → Key Events {KE} → AOP → outcome/target-tissue prediction.” Faithful by construction, but rigid and unnatural.
- LLM-distilled — prompt a frontier model to narrate the chain (CoTox-style). Natural, but risks hallucinated mechanism.
- Hybrid + verified (recommended) — LLM narrates within the template’s fixed facts, then every mechanistic claim is verified against AOP-Wiki/CTD/ChEMBL; unverifiable claims are dropped or flagged. This is ToxReason’s MIE↔AO matching idea (§19.3) generalized. Faithful and natural.
The verified hybrid traces are both the fine-tuning data and, itself, a citable resource.
Splits (avoid the contamination trap)
- Scaffold / drug-family split — test drugs must be structurally novel vs training (Bemis–Murcko scaffolds), so you measure generalization, not memorization.
- Held-out tissue — for the cross-tissue task, hold out target tissues entirely (mirrors TransPlatformer’s zero-shot design,
05_TRANSPLATFORMER.md§5.5). - Held-out species — train on rat, test on human (the headline cross-species claim).
- Contamination probe — check whether a base (un-fine-tuned) frontier LLM already “knows” the answers; report the gap.
20.6 The plan, part 2 — tasks, models, baselines, metrics
Pick ONE task for paper #1 (resist doing all of them)
The menu, best first:
- A. New-drug direction prediction (inductive). Given an unseen compound’s structure/targets + a tissue, predict the up/down/no-change categories of the key genes (or the DE gene set). Best choice — it’s where MF is undefined, so any competitive number is a clean win, and it’s GenTox’s exact setting reframed.
- B. Cross-species direction transfer (rat → human). Train on rat, predict human direction/gene-set. Highest-impact, hardest ground truth (sparse human in-vivo).
- C. Cross-tissue direction translation. Given source-tissue moved genes → target-tissue moved genes. Directly comparable to TransTissueFormer, but it’s the regime where MF is strong, so hardest to win — save it for later or use it as the “honest loss” comparison.
Recommendation: lead with A, include B as the ambitious result, mention C as the honest hard case.
Feasibility of Task B (rat → human): does the data actually support it?
Task B is the ambitious one, so it deserves a check rather than a promise. Three points, and a toy that makes them concrete (code/demo_rat_human_direction.py).
The data supports it — via TG-GATEs specifically. The whole idea needs the same drugs measured in both species. Open TG-GATEs has exactly that: an overlapping compound set run in rat (in vivo + in vitro) and human (in vitro, primary human hepatocytes). That paired design is the enabler, and it’s the same data O’Donovan already used for rat→human transfer (19_PAPER_STACK_JUL2026.md §19.10) — so this is a demonstrated setup, not a hypothetical one. DrugMatrix is rat-only (training/cross-tissue side); LINCS L1000 and DILImap add human-side data. One honest caveat: “human” here mostly means human hepatocytes in a dish, not human in-vivo.
Why it’s possible: direction is conserved even when magnitude isn’t. Orthologous genes keep their function (that is why rats are used as models), and drug mechanisms are conserved in sign — an AhR agonist induces Cyp1a1, oxidative stress switches on the Nrf2 program, in both species. And our reframe predicts direction (up/down/none), the conserved axis — not magnitude, the divergent one. That is not a lucky coincidence; it is why the reframe makes cross-species tractable.
The toy, showing the mechanism and its limit. Simulate 300 genes in 6 pathways (5 conserved, 1 “species-divergent” like metabolism/P450s), 160 drugs, with rat and human sharing mechanism but differing in magnitude scale, noise, and the divergent template:
| cross-species sign concordance | value |
|---|---|
| conserved genes | 91.6% |
| divergent genes | 55.1% (≈ chance) |
| magnitude correlation (conserved) | only 0.63 |
Direction (92%) transfers far better than magnitude (0.63) — the premise holds. And the inductive test, on 50 unseen drugs (macro-F1 over −1/0/+1):
| method | all | conserved | divergent |
|---|---|---|---|
| predict “no change” | 0.29 | 0.29 | 0.29 |
| copy rat direction (the baseline to beat) | 0.49 | 0.51 | 0.40 |
| learned rat→human (inductive) | 0.56 | 0.56 | 0.55 |
The learned model matches “copy rat” on conserved genes and wins on the divergent ones (0.55 vs 0.40) — by inferring the drug’s mechanism from the conserved part of the rat profile and applying the human-specific template — and it does so on drugs it never saw.
The honest limits (build them into the paper). (1) The real baseline is not “no change,” it is copy-rat-direction; beating that by a real margin is the bar, and that gap is the contribution. (2) The P450 / species-divergent metabolism genes are exactly the toxicologically important ones (18_GENOMIC_FM_LANDSCAPE.md §18.5), and they are where concordance and ortholog mapping are worst — so the result must be stratified (strong on conserved biology, weak on divergent), which is itself a mechanistic finding. (3) In the toy I made divergence a learnable function of mechanism; real divergence is partly irreducible, so real numbers will be lower — measuring how much is learnable vs noise is the empirical question. Net: Task B is feasible for conserved biology, against the copy-rat baseline, stratified by conservation — and that honest framing is what turns it from an overclaim into a credible result.
Models
- Fine-tuned open LLM (Qwen2.5/3, Llama-3.x, 4–14B) with LoRA — cheap, reproducible, runs on one GPU (Chapter 18 §18.8), and lets you evaluate over a real test set without frontier-API costs.
- Prompted frontier LLM (GPT-4o / Claude) — zero/few-shot, as an upper-reference and to justify distillation.
- Optional: a numeric model + LLM narrator hybrid — let Funk-SVD/ToxCompl predict the numbers, and the LLM only explains them (this is Chapter 19’s Opportunity A, and it’s the safest fallback if pure-LLM prediction underperforms).
Baselines (non-negotiable — this is the whole credibility of the paper)
Include all of: mean-predictor, highly-variable-gene selection, Funk-SVD / PCA, ToxCompl (5-category), GenTox (for the inductive task), and a co-expression baseline for any pathway/network claim. The baseline is the experiment (Chapter 18 §18.7). If we skip the linear baselines, no serious venue will believe us.
Metrics
- Prediction: Mean-F1 over the 5 categories (matches ToxCompl); DE-gene-set F1 / Jaccard; directional accuracy on the toxicologically important genes.
- Mechanism: enrichment consistency (do predicted & true profiles imply the same pathways?
15_FRONTIER.mdF6); AOP Key-Event accuracy vs AOP-Wiki. - Faithfulness: ToxReason-style LLM-judge (validated on a human-scored subset).
- Cost: report tokens/compute per prediction honestly, so the interpretability gain is weighed against the price.
Ablations that make it publishable
- reasoning trace on vs off (does the chain help the answer, or is it decoration?);
- mechanism context on vs off (does the retrieved pathway/KE context help — the CoTox result?);
- shuffled mechanism context (content vs any structure — the control we always attach);
- fine-tuned vs prompted (does training on our traces beat a frontier model cold?).
Telling generalization from memorization (the Stage-2 payload)
Accuracy alone can’t tell reasoning from recall, and this is the paper’s core measurement. Four probes:
- Hard splits — scaffold / held-out-drug / held-out-tissue / held-out-species. Does it work on structurally novel inputs, or only near-training ones?
- Contamination probe — DrugMatrix is public and old, so a base LLM may already have seen it. Test whether an un-fine-tuned model already “knows” answers, and report that gap; otherwise a “win” is just recall.
- Corruption tests — shuffle the gene names or scramble the mechanism context. A reasoning model degrades; a memorizing one keeps predicting. This is the cleanest memorization detector.
- Memorization baseline — nearest-training-example retrieval. If the fine-tuned model barely beats “copy the closest training drug,” it memorized.
20.7 What counts as success — and what honest failure looks like
Decide this before running anything (pre-registration is good science and good defense). Because paper #1 is a benchmark-and-probe study, “success” is a finding, not a leaderboard win:
- The benchmark is the floor. A mechanism-grounded toxicogenomics reasoning dataset with a faithful-evaluation protocol is a contribution on its own — this outcome is guaranteed.
- Stage 1 finding: whatever the probe shows — “current LLMs reason partially and faithfully,” or “they answer but their mechanisms are unfaithful” — is a publishable characterization (exactly what ToxReason reported for its own domain).
- Stage 2 finding (the headline): whether fine-tuning yields generalization (holds on novel drugs/tissues, survives the corruption tests) or memorization (collapses on the hard splits) — and either answer is interesting, because nobody has measured it for toxicogenomics.
- Ambitious follow-up: only if Stage 2 shows real generalization do we chase the head-to-head against Funk-SVD/ToxCompl/GenTox on the inductive and cross-species tasks. There, “competitive-not-dominant but interpretable, and winning where MF is undefined” is already a paper; losing everywhere with unfaithful reasoning is still publishable as a Nature-Methods-2025-style negative result.
All outcomes yield something, because the benchmark + the honest characterization is the durable contribution regardless of who wins — the same “both outcomes publish” discipline from Chapter 18 §18.6.
20.8 Risks and mitigations
| risk | severity | mitigation |
|---|---|---|
| LLM loses to linear baselines on prediction | high | reframe to categorical/inductive/interpretability; report honestly; keep the hybrid (LLM-narrates-numbers) fallback |
| “convert back” decoder does the real work | high | ablate reasoning on/off; predict sets/categories, not floats, so there’s no dense decoder |
| hallucinated mechanism in traces | high | verified-hybrid trace construction; faithfulness metric; human-scored subset |
| contamination (frontier LLM memorized data) | medium | scaffold/species splits; base-model probe; lead with fine-tuned open models |
| no gold reasoning | medium | template scaffold + verification against AOP-Wiki/CTD/ChEMBL |
| evaluation cost at scale | medium | fine-tuned small models for the full test set; frontier model on a sampled subset |
| reviewers see “LLM for regression” and reject | medium | never frame it as regression; lead the abstract with the inductive/mechanism claim and the baselines |
20.9 Is it novel? Where it sits, and the venue
Prior art to cite honestly (so a reviewer doesn’t think we missed it):
- Serializing expression as text for LLMs already exists — Cell2Sentence (turning a cell into a ranked gene “sentence”) and GenePT (gene/cell embeddings from text) are the closest. We must cite these and say clearly what’s new.
- LLM tox reasoning — CoTox, ToxReason (§19.2–19.3).
- LLM + biology reasoning — BioReason (DNA FM + LLM).
What’s genuinely new here (the honest novelty statement): nobody has taken the toxicogenomics matrices (with dose/tissue/species side info), serialized them into mechanism-grounded reasoning items, characterized how well current LLMs reason over them with faithfulness checks, and measured whether fine-tuning produces generalization or memorization. The combination — a toxicogenomics reasoning benchmark + AOP-grounded serialization + a faithful probe of current LLMs + a generalization-vs-memorization analysis — is the contribution. Cell2Sentence did the serialization; it didn’t do toxicology, AOPs, faithfulness, or the memorization question.
Distinct from ToxReason (§19.3) — the closest neighbor — on the one thing that matters: ToxReason reasons molecule → organ-toxicity label and never touches expression data; this reasons over the measured transcriptomic response (our DrugMatrix/TG-GATEs data) and predicts the response in a new tissue/species/drug. We reuse ToxReason’s faithful-evaluation machinery; we do not repeat its task.
Venue fit: this is an ACL/EMNLP Findings paper (exactly where ToxReason landed), or NeurIPS Datasets & Benchmarks (the dataset framing), or a bioinformatics venue if we lead with the biology. The dataset-first framing is the safest, because the dataset is bulletproof even if the model result is “partial.”
20.10 Verdict
| variant of the idea | feasible? | why |
|---|---|---|
| Benchmark-first: build the dataset, probe LLM reasoning with faithfulness, then fine-tune to test generalization vs memorization | ✅ yes — best paper #1 | it’s a measurement, not a leaderboard win; sidesteps the baseline wall; all outcomes publish; distinct from ToxReason (reasons over measured transcriptomics, not molecule→toxicity) |
| LLM outputs the full numeric profile, beats Funk-SVD on MAE | ❌ no | dense high-dim regression is the LLM’s worst task; loses to linear baselines; the round-trip decoder does the real work |
| LLM does transductive matrix completion on the well-sampled matrix | ❌ no | MF is strong here; nothing to gain, everything to lose |
| LLM reasoning for categorical/gene-set/mechanism prediction, inductive + cross-species, honest baselines | ✅ yes — the ambitious follow-up | plays to the LLM’s strength, competes where MF is undefined, uses metrics the field accepts — but only worth chasing once the probe shows real generalization |
| Hybrid: numeric model predicts, LLM narrates & checks the mechanism | ✅ yes, lowest-risk fallback | Chapter 19’s Opportunity A; guaranteed-useful interpretability layer even if pure-LLM prediction underperforms |
Bottom line. Your idea is realistic if you stage it right: make paper #1 a benchmark-first probe — build a mechanism-grounded DrugMatrix reasoning dataset, measure how well current LLMs reason over it with faithfulness checks, then fine-tune to test whether that reasoning generalizes or just memorizes. When you do predict, predict meaning (direction, gene sets, Key Events), not floats, and compete where lookup tables fail (new drugs, rat→human), not where they shine. The benchmark + the honest characterization is the durable contribution; beating Funk-SVD/ToxCompl on our tasks is the ambitious follow-up, with inductive rat→human as the most ambitious of all. And it’s distinct from ToxReason because it reasons over measured transcriptomic data, not molecule→toxicity labels.
This chapter is analysis and planning, not a result. Every “it will lose” claim traces to a specific cited finding (Nature Methods 2025, “one PCA,” Kedzierska — all in 18_GENOMIC_FM_LANDSCAPE.md §18.4); every “this can work” claim traces to a mechanism the reframe exploits (ToxCompl’s 5-category metric, GenTox’s inductive setting, the interventional-data argument). The prior-art positioning (Cell2Sentence, GenePT) should be verified against the latest versions before writing the paper’s related-work section.
Chapter 21 — Do Fine-Tuned scFMs Live in a Composable Weight Space? Task Arithmetic, Critiqued and Planned
Your idea: take one single-cell foundation model (scGPT; Geneformer as a replication target), fine-tune it separately into several specialists, and ask whether the resulting checkpoints form a composable weight space — whether task vectors can be added (build one model that does many tasks), negated (subtract a batch/donor confound as a weight-space alternative to batch correction), and composed (, transfer to an unseen tissue). Not a new architecture — a transfer of a mature NLP capability, where either outcome is a result. This chapter takes that plan apart the way Chapter 20 took apart the reasoning-dataset idea: what task arithmetic actually is, what works and what fails in its home domains, whether the transcriptomic setting even satisfies its preconditions, the prior art you must cite, a concrete implementation with downstream tasks, the critics’ strongest objections, and the way out of each.
Verdict up front: the plan is well-posed and worth running — scGPT and Geneformer are genuinely full-fine-tuned from a shared checkpoint, so the arithmetic is at least defined, which is more than can be said for most “transfer an NLP trick” ideas. But the honest expectation, from both the toy in §21.4 and the field’s own skepticism (Chapter 18 §18.4), is: addition will recover a useful-but-lossy fraction of the specialists; negation is the sharpest and most publishable operation (selective confound removal); plain analogy is the riskiest and may fail. The single highest-value reframe is to stop selling “a new merged model that beats specialists” (it won’t) and sell “the first characterization of the fine-tuning geometry of scFMs” — where a negative result is as citable as a positive one. And do not use plain summation: use the interference-aware merges (TIES, DARE) as your real method, or you are testing 2022’s algorithm, not 2025’s.
21.1 The idea, stated fairly
Restating your plan precisely so we critique the real thing:
- One base, several specialists. Take (a published scGPT checkpoint) and full-fine-tune it separately on downstream tasks or tissues from public atlases — e.g. cell-type annotation in distinct tissues — giving .
- Extract task vectors. .
- Test the three operations.
- Addition: , sweep , measure per-task accuracy against specialists and joint multi-task fine-tuning.
- Negation: — does subtracting a capability remove it selectively? The application of interest: subtract a task vector fine-tuned on a batch/donor-confounded objective, as a weight-space alternative to explicit batch correction.
- Composition/analogy: — transfer a capability to an unseen tissue without fine-tuning on it.
- Baselines and read-out. Compare against each specialist, joint multi-task fine-tuning on pooled data, naive uniform averaging (model soup), and the zero-shot base. Report per-task accuracy vs ; the multi-task trade-off surface; negation selectivity; transfer accuracy; and stability across seeds and fine-tuning orders.
The two-outcome framing is the strength of the proposal, and it is exactly the Chapter 18 §18.6 discipline: if task vectors compose, you deliver the first demonstration that the algebra of task arithmetic holds on real scFM checkpoints — extending beyond the additive-only, cross-modal fusion of the Model Synthesizer (§21.6) to same-modality composition and to confound subtraction by negation. If they do not compose, you provide rigorous evidence that fine-tuned scFM checkpoints lack the linear mode connectivity language models exhibit — which would explain the field’s reliance on full fine-tuning and caution against naive checkpoint reuse. Either way you characterize, for the first time, the geometry of the fine-tuning landscape in single-cell foundation models.
Now the machinery, then the knife.
21.2 What task arithmetic is, from zero
The founding paper is Ilharco et al., “Editing Models with Task Arithmetic,” ICLR 2023 (arXiv:2212.04089). One object, three operations, one knob.
The task vector. Fine-tune a pretrained model on task to get . The task vector is the element-wise difference
It is the direction in weight space that fine-tuning moved the checkpoint — a full-dimensional vector, one number per parameter. Editing is done by walking along sums of these directions: .
Addition → one multi-task model. Summing task vectors and adding them back builds a single model competent on all the constituent tasks, with no joint training and no extra inference cost. On the field-standard 8-task CLIP ViT benchmark (Cars, DTD, EuroSAT, GTSRB, MNIST, RESISC45, SUN397, SVHN), adding two task vectors retains ~98.9% of the specialists’ accuracy (in normalized units — merged accuracy divided by the specialist’s, averaged over tasks); adding all eight reaches ~91.2%. That downward drift from 98.9% → 91.2% is the interference story (§21.7): the more you add, the more the directions collide.
Negation → unlearning. Subtracting a task vector suppresses a capability while sparing the rest: . On GPT-2-large, negating a “toxicity” task vector cut toxic generations from 4.8% → 0.8% (~6×) while holding WikiText-103 perplexity within ~0.5 points of the base. This is the operation your batch-confound application rides on.
Analogy → transfer without target data. (“A is to B as C is to D”) improves a fourth task without training on it — but only when the tasks share the relational structure the analogy assumes. This is the fragile operation; it has no free lunch when the tasks are unrelated (see the toy, §21.4).
The knob . A single scalar multiplies the (summed) task vector, chosen by grid search on a held-out validation set, typically , maximizing average validation accuracy. One global is the method’s convenience and its main fragility (§21.7).
The dictionary (for the NLP reader). This is the same move as 09_WALKTHROUGH.md’s NLP↔tox dictionary, one level up: a task vector is a LoRA-like “capability delta,” addition is a model merge / soup, negation is machine unlearning, and is a merge coefficient. Nothing here is single-cell-specific — which is the whole question.
21.3 Why it works — and why that is the entire risk
Task arithmetic is not a law of neural networks. It is a property that holds when the fine-tuned checkpoints all sit in one loss basin around a shared initialization, and it degrades or vanishes when they do not. Three results pin this down, and all three are load-bearing for your proposal.
Weight disentanglement is the real mechanism. Ortiz-Jiménez, Favero & Frossard, “Task Arithmetic in the Tangent Space,” NeurIPS 2023 (arXiv:2305.12827) argue that arithmetic works because distinct directions in weight space govern distinct, localized regions of function/input space — so you can add and negate them without cross-task interference. They show fine-tuning the linearized model (in the neural-tangent-kernel regime) amplifies this disentanglement and improves arithmetic (reported gains ≈ a few accuracy points on the 8-task suite — treat the exact delta as approximate). The important takeaway for you: disentanglement is a property you can measure, and its presence or absence in scFMs is precisely your paper’s finding.
Linear mode connectivity — the shared-basin prerequisite. Frankle et al., ICML 2020 (arXiv:1912.05671) showed that networks sharing enough early training can be linearly interpolated with no loss barrier — they live in the same basin. Fine-tunes of a common checkpoint inherit this. It is the empirical reason a sum of task vectors lands somewhere useful rather than in a random high-loss region.
Permutation symmetry — why different inits can’t be merged naively. Ainsworth, Hayase & Srinivasa, “Git Re-Basin,” ICLR 2023 (arXiv:2209.04836) showed that independently initialized networks are separated by loss barriers largely because their hidden units are in different permutations; align the neurons and the barrier often collapses. The corollary: weight-space arithmetic presupposes a shared initialization and identical architecture. Break that and is a direction in the wrong coordinate system.
This is exactly the risk your proposal names — “the transcriptomic loss landscape may be insufficiently linear for arithmetic to hold.” It is not a vague worry; it is the specific question of whether scFM fine-tunes exhibit the disentanglement and mode-connectivity that CLIP and GPT-2 fine-tunes do. And it is testable directly (interpolate two same-base specialists; look for a barrier — §21.9).
21.4 A toy that shows the premise is the whole ballgame
Following the book’s habit (20 §20.6, 18 §18.8), here is a small, run demonstration — pure NumPy, a two-layer MLP, in code/demo_task_arithmetic.py. It is not biology; it is the mechanism, isolated. A shared “base” is trained on a generic task; specialists A and B are then full-fine-tuned from that base; task vectors are formed and composed. Then the same is tried with different random initializations to show the premise is not free.
Shared-init regime (seed 0):
| model | task A acc | task B acc |
|---|---|---|
| zero-shot base | 0.28 | 0.43 |
| specialist A | 0.97 | 0.41 |
| specialist B | 0.39 | 0.97 |
| addition , best | 0.66 | 0.70 |
| model soup (uniform avg) | 0.66 | 0.71 |
| joint multi-task fine-tune | 0.67 | 0.68 |
Addition recovers a useful but lossy fraction — task A rises 0.28 → 0.66, task B 0.43 → 0.70 — while both stay far below the 0.97 specialists, and it essentially ties naive model soup and joint multi-task training. This is the honest shape of the promise: one model, no joint data, at a real accuracy discount. (The literature’s rosier 98.9%-at-two-tasks is in normalized units on structured vision tasks; this toy uses harsher, unstructured random tasks — the gap is the point, not a contradiction.)
Negation is the clean, selective operation. Start from a model carrying both capabilities, (A=0.69, B=0.66), and subtract :
| (strength of ) | task A (keep) | task B (target ↓) |
|---|---|---|
| 0.0 | 0.69 | 0.66 |
| 0.5 | 0.81 | 0.52 |
| 1.0 | 0.97 | 0.41 |
At , task B falls toward chance (0.41; chance ≈ 0.33) while task A is restored to 0.97 — removing B’s interfering direction cleans up A. This is the selectivity your batch-negation application needs, demonstrated in miniature.
The premise is not free. Interpolating the midpoint of two solutions:
- two shared-init task-A solutions → midpoint acc 0.97 (endpoints 0.97 / 0.98) — flat, one basin.
- two different-init task-A solutions → midpoint acc 0.92 (endpoints 0.97 / 0.98) — a barrier appears.
The barrier is mild in this easy, low-dimensional toy (the real effect is far stronger in large nets — that is what Git Re-Basin and Frankle establish), but it is in the right direction: shared init → mergeable; different init → not, without alignment.
What the toy deliberately does not show: clean analogical transfer. My synthetic tasks are independent random read-outs with no shared relational structure, so has nothing real to exploit — and inventing a number there would be dishonest. In real scFMs, tissues do share biology, which is exactly why analogy might work on transcriptomes even though it can’t in this toy. That is a hypothesis your experiment tests, not a result the toy can borrow.
The lesson to carry into the scFM setting: addition buys you a lossy generalist; negation is the sharp instrument; analogy needs genuine shared structure; and all of it is contingent on the fine-tunes sharing a basin. Your paper’s real question is whether scFM fine-tunes do.
21.5 Does the scFM setting even satisfy the preconditions?
This is where transferring an NLP trick usually dies (see 20 §20.3, and the type-error in 11_SC_FOUNDATION_MODELS.md §3). Here it mostly survives — with two real caveats.
Good news: the arithmetic is genuinely well-posed. Both anchor models are full-fine-tuned from a shared, published checkpoint:
- scGPT (Cui et al., Nature Methods 2024, doi:10.1038/s41592-024-02201-0) — 12 transformer blocks, dim 512, ~51M params [approx], pretrained on >33M human cells. Its methods state all pretrained weights initialize the fine-tuned model across annotation, integration, and perturbation. Checkpoints on GitHub (
bowang-lab/scGPT) / Zenodo, MIT-licensed. - Geneformer (Theodoris et al., Nature 2023, doi:10.1038/s41586-023-06139-9) — encoder-only, rank-value encoding, variants 10M / 104M / 316M on HuggingFace (
ctheodoris/Geneformer). Full fine-tuning is standard for its classification benchmarks.
So and full-fine-tuned are real, shared-init, identical-architecture objects. Unlike the fold-change type-error, there is no category mistake here — the operation is defined.
Caveat 1 — merge within a family, never across. scGPT (value-binning) and Geneformer (rank encoding) have different tokenizations, sizes, and coordinate systems. Treat Geneformer as a replication target (repeat the whole study on it), not as something to merge with scGPT. Cross-family arithmetic is meaningless (§21.3).
Caveat 2 — the skeptic’s trap: is there structure to compose, or is the delta doing all the work? This is the deepest objection and it connects straight to the book’s spine (18_GENOMIC_FM_LANDSCAPE.md §18.4). The critical evaluations are unanimous that scFM bases are weak:
- Kedzierska et al., “Zero-shot evaluation reveals limitations of single-cell foundation models,” Genome Biology 2025 (doi:10.1186/s13059-025-03574-x) — zero-shot scGPT/Geneformer are beaten by plain highly-variable-gene selection on clustering and by Harmony on batch integration.
- Ahlmann-Eltze, Huber & Anders, Nature Methods 2025 (doi:10.1038/s41592-025-02772-6) — for perturbation prediction, no FM beats a simple linear baseline.
The double-edged implication, stated as the analysis it is (not a settled fact): if the base’s representations are weak but full fine-tuning moves the weights a lot, then the task vector may carry almost all the task-specific signal — which cuts both ways. It could mean the deltas are large and information-rich (good for arithmetic), or that each specialist has essentially re-solved its task on top of a near-inert substrate, so the deltas are idiosyncratic and interfere badly (bad for arithmetic). Which of these holds is an empirical question your experiment answers — and it is a genuinely interesting one, because it probes whether scFM “knowledge” lives in a shared, composable substrate or is manufactured fresh per task. Say this explicitly; it is the intellectual core of the paper.
21.6 Prior art — what to cite, and how you go beyond it
The one direct single-cell precedent: the Model Synthesizer. Chen et al., IEEE BIBM 2025 (doi:10.1109/BIBM66473.2025.11356145) decompose weight matrices into Fourier phase and amplitude, and enhance a data-constrained scRNA-seq model by keeping its phase while fusing in the amplitude of a model pretrained on another modality (text). It establishes that weight-space fusion is viable on single-cell models — cite it as the closest prior art. But it leaves your core question open in three specific ways, and naming them is your novelty statement:
- It performs only additive amplitude fusion; it never constructs task vectors and never tests the algebra — negation and analogical composition.
- Its setting is cross-modal amplitude borrowing (text → scRNA-seq), not same-modality composition of two specialists of one single-cell base.
- It uses a BERT-Small backbone configured Geneformer-like, not published scGPT or Geneformer checkpoints.
Integrity flag. As of writing, the Model Synthesizer is very recent and not yet indexed on the open web (the DOI resolves to IEEE Xplore but the text is gated; no Semantic Scholar / Scholar cache hit). Cite it from the PDF you hold, state that it is unreplicated, and — per your own plan — run a forward-citation check on the task-arithmetic literature immediately before submission, because this is a fast-moving area and a same-modality scFM task-arithmetic paper could appear at any time.
Adjacent single-cell work to acknowledge:
- scPEFT (Nature Machine Intelligence 2025, doi:10.1038/s42256-025-01170-z) — LoRA/adapter fine-tuning matches or beats full fine-tuning on scGPT for annotation. Relevant because it means LoRA task vectors exist and can be merged — a lighter, cheaper route to your (see §21.7, “way out”).
- The conceptual “compositional foundation models for cell biology” argument (Cell Systems, 2026) — argues for composition in principle but does no weight-space arithmetic. Cite as motivation, distinguish on method.
The method toolbox you inherit from NLP/vision (none applied to biology — this is the gap): Model Soups (Wortsman et al., ICML 2022, arXiv:2203.05482); Fisher-weighted merging (Matena & Raffel, NeurIPS 2022, arXiv:2111.09832); TIES-Merging (Yadav et al., NeurIPS 2023, arXiv:2306.01708); DARE (Yu et al., ICML 2024, arXiv:2311.03099); AdaMerging (Yang et al., ICLR 2024, arXiv:2310.02575); and compressed task-vector bases (Li et al., TMLR 2025, arXiv:2502.01015).
21.7 Don’t test plain summation — the “way out” for interference
The single most common way this paper gets a weak result is using as the method. That is the 2022 algorithm; its interference is exactly what three years of follow-up work exists to fix. Use these as your real merges, and the framing shifts from “does the naive trick work?” to “which merge operator best exposes the composability of scFM weights?”
| Failure mode of plain arithmetic | Fix to adopt | One-line mechanism |
|---|---|---|
| Sign conflicts / redundant params as tasks pile up | TIES-Merging (2306.01708) | Trim small deltas → elect a majority sign per parameter → average only the agreeing entries |
| Delta redundancy inflating interference | DARE (2311.03099) | Randomly drop 90%+ of delta params, rescale survivors by ; a pre-processing step before any merge |
| One global is brittle | AdaMerging (2310.02575) | Learn per-layer/per-task coefficients unsupervised, by entropy minimization on unlabeled cells |
| Weak disentanglement in the base | Tangent-space fine-tuning (2305.12827) | Fine-tune the linearized model to amplify disentanglement (costly; try if non-linear FT interferes badly) |
| Full-model deltas are huge/idiosyncratic | LoRA task vectors (via scPEFT) | Compose low-rank adapter deltas instead of full-weight deltas — smaller, often less interfering, cheaper |
| Different inits / coordinate mismatch (only if you ever stray outside one base) | Git Re-Basin permutation alignment (2209.04836) | Permute hidden units into correspondence before merging |
The clean experimental design is a merge-operator ablation: plain task arithmetic → soup → TIES → DARE+TIES → AdaMerging, on the same specialists, same eval. The shape of that ladder is itself a finding about scFM weight geometry.
21.8 Implementation and downstream tasks — a concrete example
Here is a runnable program, mirrored on the operations in §21.1, grounded in real datasets.
Base and specialists. Start from the published scGPT whole-human checkpoint as . Full-fine-tune one specialist per tissue for cell-type annotation (scGPT’s standard downstream head), on clean, comparable label spaces:
- Use Tabula Sapiens (Quake et al., Science 2022, doi:10.1126/science.abl4896) — ~500k cells across ~24 organs with shared preprocessing — to build, say, specialists for blood, lung, pancreas, heart. Or use scGPT’s own annotation benchmarks (hPancreas, Myeloid, M.S., Zheng68K) as the tasks.
This yields and their task vectors .
Worked example — the three operations:
- Addition (a cross-tissue generalist). (and its TIES/DARE variants). Question: does one merged annotator label cells across all four tissues at a useful fraction of the four specialists — without pooling the data or paying 4× storage/inference? Expected: yes, lossily (the toy’s 0.68-vs-0.97 shape), with TIES/DARE narrowing the gap.
- Negation (batch-correction by subtraction — the flagship experiment). Batch/donor effects are the central nuisance in scRNA-seq (
01_BACKGROUND.md; benchmarked by scIB — Luecken et al., Nature Methods 2022, doi:10.1038/s41592-021-01336-8). Construct a task vector by fine-tuning the base to predict batch/donor identity (i.e., to lean into the confound), then evaluate : does subtracting the “batch direction” improve integration while preserving cell-type signal? Baselines to beat/complement: Harmony (Korsunsky et al., Nature Methods 2019), scVI, scANVI, scored on the scIB batch-removal vs bio-conservation metrics. A weight-space batch corrector that needs no per-dataset re-embedding would be genuinely novel — and negation is where the toy said your signal is cleanest. - Composition/analogy (transfer to a held-out tissue). to annotate a tissue you never fine-tuned on. Expected: the riskiest operation; report it honestly, including failure. If it works at all, it works because tissues share biology (the structure the toy lacked).
Compute. This is deliberately cheap: specialists are single-GPU full-fine-tunes of a ≤316M model (or LoRA via scPEFT, cheaper still); merging is free (weight arithmetic); AdaMerging needs only unlabeled cells. The whole study fits the “graduate-student experiment, not a data-center one” budget (18 §18.8).
21.9 Baselines and evaluation
Baselines are the credibility of the paper (18 §18.7; 20 §20.6). Non-negotiable set:
- Each individual specialist (the ceiling; normalized accuracy is relative to these).
- Joint multi-task fine-tuning on pooled data (the “if you had all the data and compute” reference).
- Naive uniform weight averaging (model soup, 2203.05482).
- Zero-shot base (the floor).
- For the batch-negation claim: Harmony / scVI / scANVI under scIB metrics — not optional.
- Stronger merges (TIES, DARE, AdaMerging) as method, not just baselines.
Metrics and curves:
- Normalized accuracy — merged / specialist, averaged over tasks; 1.0 = “as good as the experts.”
- The trade-off curve — per-task and average accuracy vs , the whole surface as tasks are co-merged (2 → K).
- Negation selectivity — target task degraded while others preserved; report both, not just the drop (the toy’s two-column table is the template).
- Transfer accuracy to held-out tissues for the composition test.
- Stability across random seeds and fine-tuning orders (order-sensitivity would itself be a red flag about basin structure).
- A direct mode-connectivity probe — interpolate two same-base specialists and look for a loss/accuracy barrier (§21.3). A flat interpolation is positive evidence for composability before you even merge; a barrier predicts arithmetic will struggle and is a clean negative result on its own.
The data-hygiene rule your proposal already states, kept: split so that no cells from a fine-tuning condition appear in the evaluation of a different task, and treat contamination/leakage with the same suspicion as Chapter 20 (20 §20.5) — otherwise a “transfer” is just overlap.
21.10 The critics’ strongest objections — and the way out
| Objection a reviewer will raise | Why it bites | The way out |
|---|---|---|
| “Merged model loses to the specialists — so what?” | Merging essentially never matches experts (§21.2, §21.4) | Don’t sell a better model; sell the geometry characterization. The finding (composable or not) is the contribution, both outcomes publish (§21.11) |
| “You tested plain summation; that’s a 2022 method” | Interference is exactly what TIES/DARE fix | Make the merge-operator ablation the method (§21.7); report the ladder |
| “The scFM base is weak (Kedzierska, Ahlmann-Eltze) — maybe the delta does all the work” | If so, deltas may be idiosyncratic and non-composable | Turn it into the paper’s central question (§21.5); measure delta magnitude, disentanglement, and interpolation barriers directly |
| “Negation of a batch vector is just a worse batch corrector” | Harmony/scVI are strong and cheap | Frame as complementary and novel (no per-dataset re-embedding); win or lose honestly on scIB; even a partial win is interesting |
| “LayerNorm / embedding parameters break additive arithmetic” | Well-known practitioner failure mode | Exclude/handle norm & embedding params explicitly; ablate with/without; report the choice |
| “ is a free knob you tuned on the test set” | Single global is brittle and leak-prone | Tune on a held-out val split only; report the full curve; use AdaMerging (learned, unsupervised) to remove the manual knob |
| “Analogy worked because was already in the sum” (the toy’s circularity trap) | Easy to fool yourself | Design analogy tests where the target task vector is never a summand; predefine the analogy; accept failure as a result |
| “You’re merging across scGPT and Geneformer” | Different tokenization/coordinates → meaningless | Merge within-family only; Geneformer is a replication, not a merge partner (§21.5) |
| “Negation damages general capability at large ” | The GPT-2 result held only at tuned | Sweep ; report the selectivity/collateral trade-off explicitly; pick by preserved-control-task accuracy |
21.11 Novelty, and what publishes either way
The honest novelty statement: nobody has constructed task vectors from real, same-base scFM checkpoints and tested the full algebra — addition, negation (for confound removal), and analogical composition — with interference-aware merges and a mode-connectivity analysis. The Model Synthesizer did additive, cross-modal amplitude fusion on a BERT-Small backbone; it did not do task vectors, negation, analogy, same-modality composition, or published scGPT/Geneformer weights. That gap is the paper.
Why both outcomes are citable (the Chapter 18 §18.6 discipline):
- If it composes: first demonstration that task-arithmetic algebra transfers to scFM weights → reusable “capability modules” for a shared base, plus a weight-space batch-correction primitive.
- If it does not: rigorous evidence that scFM fine-tunes lack the linear mode connectivity language models have → explains the field’s reliance on full fine-tuning, and warns against naive checkpoint reuse. This is a Nature-Methods-2025-style negative result (
18§18.4), and those get read.
Venue fit: a machine-learning-for-genomics venue (ISMB/RECOMB, Bioinformatics, Genome Biology) if led by the biology; a NeurIPS/ICLR workshop on model merging if led by the method and the geometry analysis. The dataset/benchmark framing (a released suite of same-base scFM specialists + a merge-evaluation protocol) is the safest, because — as in Chapter 20 — the resource and the characterization are bulletproof even if the merged model underperforms.
21.12 Verdict
| variant of the idea | feasible? | why |
|---|---|---|
| Characterize the fine-tuning geometry of scFMs via the full task-arithmetic algebra, with TIES/DARE and a mode-connectivity probe | ✅ yes — the paper | well-posed (real shared-base full fine-tunes); both outcomes publish; probes a genuine open question (composable substrate vs per-task delta) |
| Negation as a weight-space batch/confound corrector | ✅ yes — the flagship experiment | negation is the cleanest operation (toy §21.4); novel vs Harmony/scVI; scored on an accepted benchmark (scIB) |
| Addition to beat the specialists | ❌ no | merging never matches experts; sell “cheap lossy generalist,” not “better model” |
| Plain as the method | ⚠️ only as a baseline | that’s the 2022 algorithm; use TIES/DARE/AdaMerging as the real method |
| Analogical transfer to unseen tissues | ⚠️ maybe — the risky bet | needs genuine shared structure across tissues; design it leak-free and accept failure |
| Merging across scGPT ↔ Geneformer | ❌ no | different coordinate systems; replicate on each, never merge across |
Bottom line. Your instinct is sound and — unlike the fold-change type-error — the operation is genuinely defined on scFM weights, so this is one of the rare “transfer an NLP capability” ideas that clears the first bar. Run it, but (1) frame the deliverable as the first map of the scFM fine-tuning landscape, where a negative result is a real finding; (2) make negation-as-batch-correction the flagship, because that is where the signal is cleanest and the novelty sharpest; (3) use interference-aware merges, not plain summation, or you are testing the wrong algorithm; and (4) confront the skeptic’s question — is there a composable substrate, or is each delta doing all the work? — head-on, because that question, not the merged model’s accuracy, is what makes the paper interesting.
This chapter is analysis and planning, not a result. The task-arithmetic mechanics and reported numbers trace to the primary papers (Ilharco 2212.04089; Ortiz-Jiménez 2305.12827; Frankle 1912.05671; Ainsworth 2209.04836; TIES 2306.01708; DARE 2311.03099); the scFM facts to scGPT (Cui, Nat. Methods 2024) and Geneformer (Theodoris, Nature 2023); the skepticism to Kedzierska (Genome Biol. 2025) and Ahlmann-Eltze (Nat. Methods 2025) — the same findings Chapter 18 §18.4 leans on. The toy in code/demo_task_arithmetic.py is illustrative NumPy, deliberately non-biological, and its analogy result is intentionally omitted rather than faked. The Model Synthesizer (BIBM 2025) is recent and unreplicated on the open web; verify it, and run a forward-citation check on the task-arithmetic literature, before submission.
toxsim — a testbed for the TransTissue / ToxCompl / GenTox program
Runnable code for the claims in ../14_RESEARCH_AGENDA.md. Pure numpy + scipy + pandas. No torch, no GPU, no real data required.
Why synthetic data
Most Tier-0 questions are of the form “does a trivial baseline beat the deep model?” — and that can be asked of any dataset with the right shape, real access or not.
More importantly: on real data, if the mean predictor beats TransTissueFormer, you cannot tell whether the model is bad or whether translation is impossible. Here that knob is set explicitly.
The simulator is not a claim about biology. It’s a place to test claims about algorithms. exp02 is the clearest case: it tests a property of Funk-SVD’s output, which is pure algebra, so the toy setting doesn’t threaten the conclusion.
Setup
pip install numpy scipy scikit-learn pandas --break-system-packages
Run
python toxsim/simulate.py # sanity-check vs the real Tables 1 and 3
python toxsim/metrics.py # what do trivial/adversarial models score?
python toxsim/fit_panels.py # fit study panels to Table 3
python experiments/exp01_baselines.py # the mean/zero/identity/ridge baselines
python experiments/exp02_rank_test.py # is the augmented task secretly linear?
Layout
toxsim/
simulate.py synthetic DrugMatrix; matches Tables 1 & 3
metrics.py MAE, rare MAE, MaxAE, sign-flip, row/col PCC
completion.py Funk-SVD (= ToxCompl), Algorithm 1's split, and a strict split
baselines.py zero, mean, identity, scaled identity, ridge
fit_panels.py NNLS fit of study panels to Table 3
experiments/
exp01_baselines.py what do the baselines score?
exp02_rank_test.py is the augmented task secretly linear?
results/ CSVs
What the simulator matches
| property | synthetic | real (TransTissue) |
|---|---|---|
| extremely-under | 0.03% | 0.03% |
| under | 4.03% | 4.09% |
| normal | 92.00% | 91.94% |
| over | 3.91% | 3.88% |
| extremely-over | 0.03% | 0.04% |
| Table 3 pair counts | mean abs err 5.4 | — |
| structural zeros | 24 / 24 | — |
Rows are (tissue, gene), columns are treatments. Missingness comes from study panels fitted to Table 3, so the structural zeros are reproduced exactly — including BR–LI = 0, which is the zero-shot case.
The generative model
is the knob. , .
- → mean predictor wins; “translation” is an illusion
- → translation requires genuinely recovering
We don’t know where real DrugMatrix sits. That’s the point of exp01.
Findings
exp01 — the mean predictor (which never looks at the source) scores in the “mostly generic” regime. TransTissueFormer reports 0.793. Not proof of anything about real data — proof that 0.793 is consistent with a model that learned nothing drug-specific.
Also: the mean predictor’s row-wise PCC is undefined (constant rows). Row-wise PCC is exactly the metric that exposes it. GenTox §2.3 argues for row-wise metrics; TransTissue doesn’t report them.
exp02 — the Funk-SVD-augmented translation task is exactly affine. Ridge scores , MAE . The analytic construction , with no fitting at all, also scores . recovers at correlation .
fit_panels — Table 3 decomposes exactly into 24 study panels (residual 0.0, all 24 structural zeros). Strong evidence missingness is study-design block structure, i.e. MNAR, contra TransTissue §5’s stated MAR assumption.
Bugs found along the way (kept on purpose)
Two real bugs, documented rather than quietly fixed, because both are easy to repeat:
-
Column-normalizing shrank the drug-specific term by , making translation impossible by accident. The bug produced a plausible-looking result — Funk-SVD “worked,” baselines “ran,” nothing crashed. Check your normalizations.
-
Deriving tissue coverage from Table 2 (endpoint counts) instead of Table 3’s diagonal (treatment counts). Endpoints = treatments × probes, so it’s the wrong denominator. Produced BM–SP = 0 pairs where the real data has 161.
And one wrong prediction, in exp02: the original claim was . It’s , flat in . is an upper bound; Funk-SVD doesn’t use its capacity. The corrected version is stronger — the augmented task can be nearly rank-one. See ../16_MATH_NOTES.md §2.5.
The compare_tissue_pairs_confounded function in exp01 is also deliberately wrong — it’s the confounded comparison, kept next to the controlled one, because the confound is the same one lurking in the real HE–TM vs LI–KI observation.
Swapping in real DrugMatrix
Everything downstream needs only:
sim.truth[tissue] # (n_genes, n_treatments) values
sim.mask[tissue] # (n_genes, n_treatments) bool, True = measured
sim.stacked() # -> (G, mask, row_tissue) in DrugMatrix layout
Write a loader exposing those three and every experiment runs unchanged.
Honest limits
- Linear-Gaussian plus spikes. Real biology is not. Anything that only works here is unproven.
- 500 genes, ≤2700 treatments. Real is 8,565 × 2,700 (CodeLink) and 375,000 rows stacked across platforms.
- No platform axis. One platform only; TransPlatformer’s problem isn’t modelled.
- The panel decomposition isn’t unique (36 equations, 47 candidates). It’s a valid decomposition of Table 3, not the study design. The original study metadata would settle it.
- The tissue families are invented. HE/TM sharing 85% of their loadings is my encoding of the paper’s biological argument, not a measurement.
Chapter 22 — Reading scGPT at Author Depth
First of four model readings (scGPT → Tahoe → BulkFormer → EVA), each written to let an ML/NLP reader understand the model the way its authors do, not the way a press release does. This chapter assumes you know transformers cold and biology barely at all; every biological idea is defined where it is used, and the recurring move is the NLP↔transcriptomics dictionary from 09_WALKTHROUGH.md. Where a number is checkpoint- or config-dependent, or the paper prints a mechanism but not a scalar, it is flagged — scGPT is not one model but a family of checkpoints, and pretending otherwise is the first mistake.
One-sentence version: scGPT is a BERT-style encoder over genes-as-tokens whose one real trick is that it does not feed expression as a number — it feeds each gene’s rank stratum within its own cell — and whose pretraining objective is to regenerate masked expression values, once from neighboring genes and once from a single cell-summary vector.
22.1 What problem scGPT solves
The data. A single-cell RNA-seq (scRNA-seq) experiment measures, for one cell, how many mRNA molecules of each gene were captured. The readout for a cell is a vector over ~20,000 human genes of non-negative integer counts, overwhelmingly zero (a typical cell has detectable counts for a few thousand genes; the rest read 0, partly because the gene is off and partly because the assay missed it — “dropout”). Stack many cells and you get a cell × gene count matrix. This is the substrate of essentially every single-cell foundation model, scGPT included. (If you have 01_BACKGROUND.md, this is the “absolute expression, observational, human, in vitro” corner of the data map.)
One training example is therefore one cell: a sparse vector of gene counts, optionally tagged with metadata (which experimental batch it came from, which sequencing modality, and — during fine-tuning — a cell-type label or a perturbation flag). There is no sequence, no time, no pairing. The “example” is a bag of (gene, expression) pairs.
Input → output. scGPT ingests, for a cell, a set of gene tokens plus a discretized version of each gene’s expression, and produces (i) a cell embedding — one -dimensional vector summarizing the whole cell, read off a prepended <cls> token exactly as in BERT — and (ii) a per-gene output used either to predict masked expression values (pretraining) or, after a task head is attached, to predict a label. So it is simultaneously an encoder (cell → vector) and a conditional generator (context → missing expression values).
Downstream tasks it supports (all revisited in §22.5): cell-type annotation (classify a cell), batch integration (embed cells from many experiments so that biology, not the experiment, dominates the geometry), multi-omic integration (fuse RNA with ATAC or protein readouts), perturbation-response prediction (given a control cell and “knock out gene X,” predict the perturbed transcriptome), and gene-regulatory-network (GRN) inference (read gene–gene structure out of attention). One backbone, many heads — the foundation-model pitch.
22.2 How the input is represented
This section is where scGPT earns or loses its identity, so we go slowly, starting from a concrete cell.
A small realistic cell
Take five genes and their normalized expression in one cell (real cells have thousands of non-zero genes; five keeps the arithmetic visible):
| gene | normalized expression |
|---|---|
| ACTB | 8.2 |
| CD3D | 3.1 |
| MT-CO1 | 12.7 |
| GAPDH | 5.0 |
| IL7R | 0.0 |
Two problems have to be solved before a transformer can touch this. First, the numbers are not comparable across cells: a cell sequenced twice as deeply has roughly twice every count, with no biological difference. Second, the vector is mostly zeros and the non-zeros span orders of magnitude. scGPT’s representation is engineered around both.
Step 1 — gene tokenization
Each gene name maps to a fixed integer ID in a shared vocabulary. The vocabulary is built as the union of gene sets across all training studies, so “ACTB” is the same token everywhere, which is what lets a model trained on many datasets be applied to a new one. Alongside real genes sit special tokens: <cls> (prepended; its final hidden state is the cell embedding), <pad> (length-filling), and condition tokens for batch and modality (and, in perturbation mode, a perturbation flag). Note there is no meaningful order among gene tokens — unlike words in a sentence, genes have no left-to-right sequence — which will matter enormously in §22.3.
So our cell becomes the token sequence [<cls>, ACTB, CD3D, MT-CO1, GAPDH, IL7R] → IDs [<cls>, 15, 8891, 21, 44, 6012] (illustrative IDs).
Step 2 — value binning (the actual idea)
Here is the choice that defines scGPT. Expression is not fed as a float. For each cell independently, the non-zero expression values are rank-ordered and cut into quantile bins, each holding an equal fraction of the expressed genes. Zeros are kept as their own value (bin 0). The released models use ; we use non-zero bins here to keep it legible.
Rank the four non-zero genes of our cell and assign quantile bins (bin 4 = highest stratum):
| gene | expr | within-cell rank | bin (B=4) |
|---|---|---|---|
| IL7R | 0.0 | — | 0 |
| CD3D | 3.1 | 1 (lowest) | 1 |
| GAPDH | 5.0 | 2 | 2 |
| ACTB | 8.2 | 3 | 3 |
| MT-CO1 | 12.7 | 4 (highest) | 4 |
The critical property: bin index encodes relative rank within the cell, not absolute amount. If the same cell were sequenced twice as deeply — every count doubled — the ranking is unchanged, so the bins are unchanged. This is a deliberate, cheap normalization against sequencing-depth and batch scale differences, and it is more robust than log-normalizing floats, which does not fully remove depth effects.
The NLP analogy, and its cost. Binning-by-rank is like replacing every word’s exact TF-IDF weight with its quartile among the words present in that document. You gain robustness to document length; you throw away magnitude. We will keep returning to what that discards.
Step 3 — the three summed embeddings
A transformer can only consume vectors of numbers. So for each gene in the cell we must build one vector that packs together everything we know about that gene. For MT-CO1 in our cell we know three facts: which gene it is (MT-CO1), how strongly it is expressed as a bin (bin 4, from Step 2), and which experiment the cell came from (say batch b3). We turn each fact into its own vector and add the three, element-wise, into a single vector :
This is exactly BERT’s move — BERT builds each input as word + position + segment embeddings summed — with the pieces swapped for biology:
- — the gene embedding. A learned lookup table (like a word-embedding matrix) with one row per gene in the vocabulary; you pull out MT-CO1’s row.
- — the expression-bin embedding. A learned table with one row per bin index ; because MT-CO1 landed in bin 4, you pull row 4. (Ordinal-aware: nearby bins get related vectors.)
- — the condition embedding. A learned table with one row per batch/modality (and the perturbation flag in perturbation mode); you pull the batch-b3 row.
Where the numbers come from — and how they are actually learned. This is worth getting right, because it is tempting to assume the numbers are looked up from some biological database. They are not. Each table is a block of learnable parameters — the gene table, for instance, is a matrix of shape (vocabulary size × ), i.e. roughly , one row per gene. Three facts about how that matrix gets its values:
- They start as random noise. Before training, every entry is a small random number, so MT-CO1’s row is initially meaningless.
- They are learned by gradient descent, exactly like every other weight in the model. During pretraining (§22.4), each time the model predicts a masked gene’s value and is wrong, backpropagation nudges all the weights a tiny step to reduce that error — and the embedding rows are just more weights, updated the same way as the attention and MLP matrices. There is no separate “embedding algorithm”; the tables are trained by the ordinary training loop.
- They self-organize into meaning. After millions of cells, the rows settle into an arrangement where genes that play similar roles end up with similar vectors (co-regulated genes cluster together), and bin 4’s row sits in a consistent relation to bin 3’s. Nobody hand-sets these geometries; they emerge because that arrangement is what lowers the loss. This is the same mechanism that produces word embeddings in NLP — “king” landing near “queen” was learned from text, not entered by hand.
So “MT-CO1’s row” is a learned parameter that, by the end of training, encodes how MT-CO1 behaves across the corpus. The individual numbers stay uninterpretable; only their relationships (which rows are close to which) carry meaning.
One nuance you’ll meet in later chapters: not every model starts fully random. Some initialize an embedding table from an external source and then keep training from there — a “warm start.” BulkFormer seeds its gene rows from a protein language model (24_READING_BULKFORMER.md §24.2), and Tahoe-x1 seeds its drug token from a chemical fingerprint (23_READING_TAHOE.md §23.3); scGPT uses the plain random-then-learned route for all three of its tables.
Below the toy vectors are made-up length-4 numbers, purely to show the summing mechanics (a real row is 512 learned numbers). Take:
The addition, done one dimension at a time. “Add the vectors” means add dimension 1 to dimension 1, dimension 2 to dimension 2, and so on:
| dimension | (MT-CO1) | (bin 4) | (b3) | sum = |
|---|---|---|---|---|
| 1 | 0.2 | 0.1 | 0.0 | |
| 2 | −0.1 | 0.1 | 0.2 | |
| 3 | 0.4 | −0.2 | 0.0 | |
| 4 | 0.0 | 0.3 | −0.1 |
So — one dense vector that now means “gene MT-CO1, expressed at a bin-4 level, in a cell from batch b3.” The transformer reads this single vector; it no longer needs the three facts separately.
The whole cell. Do this for every gene (plus <cls>), stack the resulting vectors as rows, and you get the matrix the transformer actually processes — for our toy cell, and in the real model:
dim1 dim2 dim3 dim4
<cls> [ ... ... ... ... ]
ACTB [ ... ... ... ... ]
CD3D [ ... ... ... ... ]
MT-CO1 [ 0.3 0.2 0.2 0.2 ] <- the row we just built
GAPDH [ ... ... ... ... ]
IL7R [ ... ... ... ... ]
What is absent from that sum: a positional embedding. In a sentence you add one because word order carries meaning (“dog bites man” ≠ “man bites dog”). Genes have no order, so scGPT drops positional embeddings entirely — the gene’s identity (its row) plays the role that position plays in text. This is why the next subsection can say the input is an unordered set.
Ordering, masking, padding, metadata — the bookkeeping
Four practical details about how a cell is packaged. Each is stated plainly, then why it matters.
Ordering — the cell is a bag of genes, not a sentence. Because there is no positional embedding (Step 3), the order in which you list the genes does not change anything: feed [ACTB, CD3D, MT-CO1] or [MT-CO1, ACTB, CD3D] and the model produces the same result. Attention lets every gene look at every other gene regardless of listing order, so the model treats the cell as an unordered set. One useful consequence: since order is irrelevant and the model simply attends over whatever genes you hand it, you can feed a subset of genes (say, only the most informative ones) without breaking the model — nothing depends on including all ~20,000.
Masking — the fill-in-the-blank game that trains the model. scGPT learns without human labels by hiding some information and asking the model to reconstruct it — like BERT’s masked-language-modeling, but the thing hidden is the expression level, not the word. Concretely: pick some genes in the cell, and for each one keep its identity but erase its bin value, replacing the value with a special “mask” marker. The row still says “this is gene CD3D”; it just no longer says how much CD3D was expressed. The model must predict that missing bin from the other, unhidden genes. Deciding which genes to hide and predict is the entire self-supervised objective (spelled out in §22.4).
Padding — making every cell the same length. Transformers process cells in fixed-size batches, so every cell must be trimmed or filled to one common length. A cell with too few genes gets <pad> filler tokens appended (they are ignored by attention and loss); a cell with too many genes is truncated to fit. The target length depends on the job — about 3,001 tokens in the annotation setup, 1,536 in the perturbation setup. The often-repeated “1,200 genes” is just one particular choice of highly-variable genes (HVGs — the genes that differ most across cells, a standard way to pick the informative ones), not a fixed rule; think of the input as “roughly 1–3k gene tokens, depending on the configuration.”
Metadata — the model sees almost nothing about the experiment. The only non-expression information that reaches the model is what you encode as a condition token: batch, modality, and (in perturbation mode) the perturbation flag. Everything else about how the data was generated — the drug, the dose, the exposure time, the tissue, the species — is invisible to the model unless you deliberately add a condition token for it. That blind spot is precisely the problem for toxicogenomics, where dose, time, and chemical are the experiment, and it is the gap we build on in §22.8.
What biology is preserved or lost
One term first, because it appears in the table: a gene is “on” (expressed) when the cell is actively transcribing it — copying its DNA into mRNA molecules — so its measured count is nonzero; it is “off” (silent) when the cell is not transcribing it, so its count is zero. In any one cell only a few thousand of the ~20,000 genes are on; the rest read zero. That pattern of which genes are on versus off — a mostly-empty vector — is called the sparsity pattern, and it is itself biologically meaningful (a liver cell and a T cell are “on” for very different gene sets). scGPT’s binning keeps which genes are on and their relative ranking, but flattens how strongly each on-gene is expressed into just 51 rank strata.
| preserved | lost or discarded |
|---|---|
| which genes are on (nonzero) vs off (zero) — the sparsity pattern | absolute magnitude of expression (only within-cell rank survives) |
| the relative ordering of expressed genes within a cell | cross-cell comparability of levels (a bin-4 gene in cell A and bin-4 in cell B need not be equal amounts) |
| gene identity (shared vocabulary across datasets) | fine magnitude differences inside a bin (51 strata is coarse for a dynamic range of 10⁴–10⁵) |
| coarse batch/modality context (condition tokens) | dose, time, chemical, tissue, species — unless custom condition tokens are added |
That right column is the whole argument of the book’s 11_SC_FOUNDATION_MODELS.md §3 restated in scGPT’s own terms: a model that keeps only within-cell rank has, by construction, thrown away exactly the axis (magnitude of change) that a fold-change experiment is about. Hold that thought for §22.7.
22.3 How the architecture works
We now push our cell all the way through, tracking the exact tensor shapes and doing one attention step by hand. Structurally scGPT is BERT; the parts worth your attention are the shapes, the masking scheme, and the heads.
The backbone, and the numbers that define it
The whole-human checkpoint is a 12-layer Transformer encoder: hidden dimension , 8 attention heads (so each head works in dimensions), feed-forward width up to 2048, roughly 51–53M parameters (the CZI model card says 53M; secondary write-ups say ~51M — a minor discrepancy, not worth resolving). FlashAttention is used in pretraining, which is what makes attention over thousands of gene tokens tractable.
Input and output, with actual shapes
Let be the number of tokens in the cell (genes + the <cls> token). Our toy cell has ; a real cell has –. Here is what flows through, with both the toy shape and the real shape:
| stage | what it is | toy shape () | real shape () |
|---|---|---|---|
| input IDs | gene token IDs + bin values + batch | ||
| summed embeddings (§22.2, Step 3) | |||
| after each transformer layer | |||
| the cell embedding (first row) | |||
| per-gene predicted expression | |||
| label (if annotation head) | one class score vector |
Two outputs matter. The first row of the final layer, , is a single -vector summarizing the whole cell — this is what you cluster, classify, or hand to a downstream task. The per-gene head produces one predicted expression per gene — this is what the training objective scores. The shape never changes through the 12 layers ( in, out of each); the layers only re-mix information across genes.
One transformer layer, with a worked attention example
Each layer applies standard multi-head self-attention followed by residual + LayerNorm + a feed-forward MLP. For one head:
each have shape ; the attention matrix is (every token against every token). Let us actually compute the row of for gene CD3D, using toy vectors and identity projections (, so ). Take three tokens:
Step 1 — similarity scores (dot product of CD3D’s query with each key), divided by :
Step 2 — softmax turns those into attention weights that sum to 1:
Step 3 — blend the value vectors with those weights:
So CD3D’s new representation is a weighted mixture: 28% of the cell-summary token, 29% of ACTB, 44% of itself. Biological reading: the attention weight is “how much gene ’s updated representation draws on gene in this cell,” so genes that co-vary — members of the same pathway or regulon — pull toward each other. This is exactly the signal scGPT later reads out as a gene network (§22.5), and exactly the signal skeptics call co-expression, not causation (§22.7). Repeat this for all rows and all 8 heads, concatenate the heads back to width 512, add the residual, LayerNorm, MLP — that is one layer, done 12 times.
The masking scheme — not causal, and that is the point
Because genes have no order, GPT-style left-to-right causal masking is meaningless (there is no “left”). scGPT instead splits the genes into known (expression observed) and unknown (to be predicted), and shapes the attention mask so each unknown gene may attend to the known genes and <cls> (and itself), while unknowns may not attend to one another. Prediction is then iterative over rounds: predict all unknowns, commit the most confident fraction to “known,” repeat — so it generates in confidence order instead of left-to-right order.
Picture it with our cell, taking CD3D and GAPDH as “unknown”:
known: <cls> ACTB MT-CO1 IL7R unknown: CD3D GAPDH
CD3D may attend to -> <cls>, ACTB, MT-CO1, IL7R, (itself) but NOT -> GAPDH
GAPDH may attend to -> <cls>, ACTB, MT-CO1, IL7R, (itself) but NOT -> CD3D
round 1: predict CD3D and GAPDH; commit whichever is more confident (say CD3D) to "known"
round 2: re-predict GAPDH, now allowed to attend to the freshly committed CD3D
The prediction heads
After 12 layers we have . Three heads read from it:
- Expression decoder (
ExprDecoder). A small MLP that turns each gene’s final vector into one predicted expression number (optionally also a probability that the gene is a true zero). It looks at gene ’s own contextualized vector — which already absorbed the other genes through attention. - Cell-conditioned decoder (
MVCDecoder, the GEPC objective) — in plain terms. This head answers a deliberately harder question: can you predict gene ’s level using ONLY the one 512-number cell summary , without looking at gene ’s own row? It builds a query from the cell summary and takes a dot product with each gene’s identity embedding: Why bother? Because if a single vector can regenerate the whole transcriptome gene-by-gene, that vector is a genuinely rich summary of the cell — and it is that summary, , that every downstream task (clustering, annotation) actually consumes. So MVC is a training pressure that says “force all the cell’s information into the one summary vector.” (The name unpacks as Gene Expression Prediction for Cell modeling / Masked Value prediction from the Cell embedding — the “for cell modeling” is the whole point: it exists to make the cell vector good, not to predict genes well per se.) - Classification head (
ClsDecoder). A 3-layer MLP on for cell-type annotation, trained with cross-entropy (fine-tuning only). A separate adversarial batch discriminator also reads for the DAB objective (§22.4).
End-to-end toy, with data
Let us run our real five-gene cell once, masking CD3D, and name the shapes:
INPUT (M=6) : [<cls>, ACTB=bin3, CD3D=MASK, MT-CO1=bin4, GAPDH=bin2, IL7R=bin0], batch=b3
| sum 3 embeddings per token (§22.2)
H^(0) : 6 x 512 (toy: 6 x 4)
| 12 transformer layers, CD3D restricted to attend to the known genes + <cls>
H^(12) : 6 x 512
| read outputs
h_cls = H^(12)[0] -> 1 x 512 (the cell embedding)
x_hat_CD3D = ExprDecoder(H^(12)[CD3D]) -> a scalar, e.g. "bin 1-2"
Concretely: CD3D is a canonical T-cell marker. The unmasked genes in this cell (and the cell summary) look like a T cell, so the model predicts CD3D at a modest positive level (bin 1–2) rather than zero. That prediction is scored against CD3D’s true hidden bin by the training loss (§22.4). The honest caveat, which the whole book keeps pressing: when the model gets CD3D right because it reasoned “T-cell context ⇒ CD3D on,” that is mechanism; when it gets it right merely because CD3D statistically co-occurs with these genes in training, that is correlation — and scGPT cannot tell you which (§22.7).
22.4 How the model is trained
The objectives
Two self-supervised losses do the pretraining, both masked-value regression (masked-position MSE), differing only in what the prediction is conditioned on:
- GEP (Gene Expression Prediction, = MLM). Mask a fraction of a cell’s gene values; predict them from the unmasked genes via the
ExprDecoder. Loss: over the masked set . This teaches gene–gene predictability: “given these genes’ levels, what is that gene’s level?” - GEPC / MVC (Gene Expression Prediction for Cell modeling) — the “regenerate the cell from its summary” objective. Same masked-MSE target, but the prediction is made only from the one cell-summary vector (the inner-product head of §22.3), not from the gene’s own row. In plain terms: hide a gene, then force the model to guess it using nothing but the single 512-number summary of the whole cell. If it can do this for every gene, the summary must contain essentially all the cell’s information — and that summary is exactly what clustering and annotation use downstream. So GEP teaches gene-from-other-genes, while GEPC teaches gene-from-the-cell-vector; the second is what makes the cell embedding good.
Two regularizers/adapters appear (mostly in fine-tuning, some in pretraining variants):
- ECS (Elastic Cell Similarity). A contrastive-style regularizer on cell embeddings with a similarity threshold ( in the code): pull similar cells together, push dissimilar apart, so the embedding space is coherent and well-separated.
- DAB (Domain Adaptation by reverse Back-propagation). A batch classifier tries to read batch label off ; a gradient-reversal layer flips its gradient into the encoder, pressuring the encoder toward batch-invariant embeddings. This is scGPT’s built-in batch-correction knob.
(Supervised heads — cross-entropy for annotation, CCE contrastive — are fine-tuning-only.)
Flag: the paper prints the mechanism (mask “a proportion” of genes) but not, in the prose I can verify, the exact pretraining mask ratio; fine-tuning configs range 0–0.4 depending on task. Treat the specific percentage as unconfirmed.
The data, and what it is supposed to teach
What the corpus is. Pretraining uses >33 million human single cells pulled from CZ CELLxGENE Discover (the Census snapshot of 15 May 2023) — a public aggregator that harmonizes thousands of published scRNA-seq studies into one queryable collection. The whole-human model draws on roughly 51 tissues across ~441 studies, restricted to non-spatial scRNA-seq and (for the main model) normal, non-diseased cells. Every cell is observational: a snapshot of a cell in some tissue, with no experimental intervention applied.
Why this composition matters. Because the corpus is an aggregate of many labs, protocols, and donors, it is enormous and diverse — which is the foundation-model bet — but it is also heavily unbalanced: common, easy-to-sample cell types (blood, immune) are over-represented; rare cell types, hard tissues (brain), and non-human data are scarce or absent. A model trained by masked reconstruction on such a corpus will be best at reconstructing the abundant states and weakest on the rare ones, which is a large part of why the out-of-distribution failures in §22.7 fall where they do.
What the objective is supposed to teach. The intended lesson is a general “grammar” of human cell states: which genes tend to switch on together, what a coherent cell state looks like as a point in embedding space, and how cell types relate. If that grammar is real and transferable, then a single pretrained backbone should give any downstream task (annotation, integration, perturbation) a strong head start — the whole promise of a foundation model.
But the knowledge is partly localized, not universal. scGPT is released not as one model but as a family of checkpoints — a whole-human model plus organ-specific and pan-cancer ones (brain ~13M cells, blood/immune, heart, lung, kidney, and a cancer variant continually pretrained on tumor cells). The revealing fact: the organ-specific checkpoints frequently beat the whole-human one on in-domain tasks. If the pretraining had learned one truly universal cell grammar, a bigger, broader model would dominate; that the specialized ones win in-domain says the “knowledge” is substantially local to the tissues each model saw. Practical consequence: pick the checkpoint that matches your tissue, and do not assume “scGPT” means a single, uniform representation — a point the task-arithmetic chapter (21_TASK_ARITHMETIC.md §21.5) leans on directly.
Shortcuts and weaknesses in the objective
A “shortcut” is a way for the model to lower the training loss without learning the biology you hoped it would — the machine-learning version of a student who aces the exam by memorizing past answers. scGPT’s masked-value objective has three, each with a concrete alternative that would remove it.
Shortcut 1 — predict the average and stop. Gene expression is sparse (mostly zeros) and heavy-tailed (a few genes very high). Under mean-squared error, the single prediction that minimizes loss for a gene before looking at anything else is that gene’s average level across cells. So a model can drive the loss down a long way by learning per-gene averages and barely using the cross-gene context at all — the context is where the biology lives, and the shortcut skips it. Kedzierska et al. (2025) show the sharp symptom: on their probe, scGPT’s own reconstructions underperform a naive “predict the mean” baseline, i.e. the expensive model is not beating the trivial one it should dominate. What could be done instead: add a term the mean cannot satisfy — a contrastive / ranking loss that forces the model to tell this cell’s gene levels apart from a decoy cell’s (a mean-predictor scores identically on both, so it loses), or predict each gene relative to the cell’s own profile rather than in absolute terms. (This is improvement 6 in §22.8.)
Shortcut 2 — the target itself is coarse, so effort has nowhere to go. The thing being predicted is a rank bin (1 of 51), not a real number. Even a model that wanted to learn fine magnitude structure gets no gradient signal for it, because two cells with very different absolute expression can share a bin — the distinction was thrown away in preprocessing (§22.2). The objective’s ceiling is therefore set by the representation, not the architecture. What could be done instead: give the target back its magnitude — predict the bin and a within-bin continuous residual, or replace MSE-on-bins with a proper count likelihood (negative-binomial / zero-inflated, as scVI uses) that models the actual counts and their overdispersion. (Improvement 1 in §22.8.)
Shortcut 3 — observational data can only teach co-occurrence, never intervention. Every training cell is a passive snapshot; none is the result of someone pushing a gene and recording what moved. So even a perfectly trained model learns “gene X and gene Y tend to be on together,” never “if I knock out X, Y falls” — association, not causation. This is the deepest limitation, and it is not fixable by a better loss on the same data; it is a property of the data. It is the exact gap 18_GENOMIC_FM_LANDSCAPE.md §18.4 identifies, and the reason Ahlmann-Eltze et al. (2025, Nature Methods) find foundation models fail to beat simple linear baselines on perturbation prediction — the one task that requires causal content. What could be done instead: pretrain (or continue-pretrain) on interventional corpora — Perturb-seq, and the 100-million-cell drug-perturbation atlas of Chapter 23 (Tahoe) — with an explicit intervention token, so the objective can actually reward getting a perturbation response right. (Improvement 2 in §22.8.)
22.5 How it is used for downstream tasks
The pattern is always BERT’s: keep the pretrained backbone, attach or switch on a head, fine-tune (usually full fine-tuning — all weights move, which is what makes the task-arithmetic idea in 21_TASK_ARITHMETIC.md even well-posed). Each task below is given the same way: what it is, the concrete input, how the model is adapted, the concrete output, and a small example.
Cell-type annotation — put a label on one cell
The task. Given a cell’s expression, name its cell type (“CD8 T cell,” “B cell,” …). This is ordinary classification on top of the cell summary.
Input. One cell, as gene+bin tokens (§22.2). Example:
| cell | some of its gene/bins | true type (to be predicted) |
|---|---|---|
| c | <cls>, CD3D=bin3, CD8A=bin2, GZMB=bin3, MS4A1=bin0, … | CD8 T cell |
(CD3D and CD8A are T-cell genes and are “on”; the B-cell gene MS4A1 is “off” at bin 0 — the pattern that should give it away.)
Adapt. Attach the ClsDecoder on top of and fine-tune with cross-entropy against labeled cells; the reconstruction objectives are switched off.
Output. A probability over the cell types, then its argmax:
cell c -> h_cls (512 numbers) -> ClsDecoder -> [B:0.01, mono:0.02, CD8T:0.93, ...] -> "CD8 T cell"
Use. Train on an annotated reference, then label an unannotated dataset automatically — the standard “annotate my new experiment” workflow.
Batch integration — make cells from different experiments comparable
The task. A batch is a set of cells processed together (one lab, day, machine, donor). Technical differences between batches leave a fingerprint on the counts that has nothing to do with biology, and that fingerprint is often stronger than the difference between two cell types. Integration produces a representation where the fingerprint is removed and the biology remains.
Input. Many cells, each carrying its usual gene/bins plus a batch token naming its experiment. Two labs, three shared cell types:
| cell | gene/bins (biology) | batch token | true type |
|---|---|---|---|
| c1 | CD3D=bin3, CD8A=bin2, … | Lab A | T cell |
| c2 | MS4A1=bin3, CD79A=bin2, … | Lab A | B cell |
| c3 | LYZ=bin4, CD14=bin3, … | Lab A | monocyte |
| c4 | CD3D=bin3, CD8A=bin2, … | Lab B | T cell |
| c5 | MS4A1=bin3, CD79A=bin2, … | Lab B | B cell |
| c6 | LYZ=bin4, CD14=bin3, … | Lab B | monocyte |
Note c1 and c4 are the same kind of cell in two labs; they should end up together.
Adapt. Fine-tune with three losses working together: reconstruction (keep the embedding biologically faithful), DAB (a batch-classifier + gradient-reversal that makes the embedding carry so little lab-identity that even a dedicated detector can’t tell Lab A from Lab B — this erases the fingerprint), and ECS (keep similar cells close so the geometry stays clean).
Output. One 512-number embedding per cell, whose arrangement is the deliverable:
BEFORE (raw): cells split by LAB AFTER (integrated): cells split by TYPE
[ Lab A: c1 c2 c3 ] [ Lab B: c4 c5 c6 ] [ T: c1 c4 ] [ B: c2 c5 ] [ mono: c3 c6 ]
(technical artifact wins) (biology wins; labs mixed within each)
Use / scoring. Cluster or UMAP the embeddings; success is “colored by type → clean clusters” and “colored by lab → labs mixed inside each cluster.” The standard scorecard for that trade-off (biology kept vs batch removed) is scIB (§22.7–22.8).
Caveat (§22.7). Done zero-shot — pretrained embeddings with no DAB/ECS fine-tuning — this can go the wrong way and even amplify batch (Kedzierska et al.), so cells separate by lab even more than the raw data.
Multi-omic integration — fuse different measurement types
The task. The same cell can be measured in more than one way: RNA (gene expression), ATAC (which stretches of DNA are physically open/accessible, a proxy for which genes could be switched on), and surface protein (antibody counts of proteins on the cell’s outside — the “CITE-seq” assay measures RNA and surface protein in the same cell). These are different data types about one cell. Integration puts them into one shared space.
Input. Cells whose tokens can be genes (with expression bins), open-chromatin regions, or proteins (with their own level bins), each tagged by a modality token saying which measurement it is. Example: a CITE-seq cell contributes RNA gene tokens and protein tokens; an ATAC cell contributes region tokens.
Adapt. Add a modality embedding (a fourth thing summed into , alongside gene/value/batch) and fine-tune to fuse.
Output. One shared 512-number embedding per cell, so a T cell measured by RNA-only lands next to a T cell measured by RNA+protein:
RNA-only T cell ┐
RNA+protein T cell ┼─> same region of embedding space (modality no longer decides position)
ATAC T cell ┘
Use. Jointly analyze datasets collected with different technologies — e.g. transfer labels from an RNA reference onto ATAC-only cells.
Perturbation prediction — the toxicology-shaped task
The task. Predict what a cell’s transcriptome becomes after you perturb a gene — knock it out or force it on. This is the one task that requires causal content, and the one closest to toxicogenomics.
Input. A control (untreated) cell’s expression plus a perturbation flag naming the target gene(s) — the flag rides on the value channel of the targeted gene via pert_encoder. Example:
control T cell: CD3D=bin3, IL2=bin1, MYC=bin2, ... + perturbation flag: "knock out CD3D"
Adapt. Fine-tune to reconstruct the treated profile; masked-MSE over all genes (not just a masked subset).
Output. The predicted post-perturbation expression across all genes (shape ) — “if you knock out CD3D in this cell, here is the whole transcriptome afterward”:
predicted after KO of CD3D: CD3D -> ~0 (knocked out), IL2 -> down, MYC -> ~unchanged, ...
You then compare this predicted profile to measured perturbed cells.
Benchmarks. Against GEARS (a graph model) and CPA on the Adamson (87 single-gene) and Norman (single + two-gene combinatorial) Perturb-seq datasets. This is exactly the “apply intervention → predict response” shape of toxicogenomics — and the task where the field’s negative results (18 §18.4) bite hardest: no foundation model reliably beats a simple linear baseline here.
Gene-regulatory-network (GRN) inference — read structure out of attention
The task. Produce a gene–gene graph (which genes act together in a cell state). Unlike the others, this is a read-out, not a fine-tune — no training happens.
Input. A set of cells of a given state; you run them through the frozen model and collect the attention matrices (§22.3).
Output. A graph whose edges come from aggregating attention across cells and heads (plus gene-embedding similarity): gene pairs that consistently attend to each other become edges.
attention (gene x gene), averaged over cells -> threshold -> edges
CD3D <-> CD3E strong => edge MS4A1 <-> CD14 weak => no edge
Caveat. Useful for hypothesis generation, but sensitive to which layer/heads you aggregate, and — the standing critique — the edges largely recover co-expression (genes that move together), which a plain correlation matrix already gives you; it is not demonstrated causal regulation.
Toxicity relevance (why this book cares)
The perturbation task is structurally the toxicogenomics task: intervene on a system, predict the transcriptomic response. But scGPT’s native inputs are absolute-count single cells with a gene-knockout flag, whereas toxicogenomics is bulk log-fold-change under a chemical, at a dose, for a duration, in a tissue (03_TOXICOGENOMICS_RESEARCH.md). Using scGPT here forces a choice: re-encode fold-change into the binned-count world (the type-error of 11 §3), or add chemical/dose/time condition tokens the model never pretrained on. Neither is free — which is exactly what §22.8 tries to fix.
22.6 What is technically distinctive
Separating scGPT from earlier transcriptomic FMs (scBERT, Geneformer) and asking which differences actually carry weight:
- Value binning by within-cell rank (vs Geneformer’s rank-ordering of genes with no value channel, and scBERT’s raw-value binning). scGPT keeps a per-gene value channel but makes it depth-robust. This is the genuine representational idea, and it is plausibly responsible for real robustness gains — but it is also the source of the magnitude blindness in §22.7. Distinctive and double-edged.
- Non-sequential, confidence-ordered generation (the known/unknown iterative scheme). A real architectural adaptation of “generative pretraining” to an unordered set — more thoughtful than bolting causal masking onto genes. Whether it beats plain BERT masking on downstream metrics is not cleanly isolated in the ablations; treat as elegant, not proven-decisive.
- Cell-conditioned reconstruction (MVC/GEPC). Forcing the
<cls>vector to regenerate the transcriptome is a principled pressure toward good cell embeddings and is one of the more defensible design choices. - A batteries-included multi-objective kit (GEP + MVC + ECS + DAB + CLS). Convenient, and DAB/ECS are what let one backbone attempt integration; but multi-objective stacks also make it hard to attribute gains.
Genuine architecture vs. cheaper explanations. Be skeptical in the book’s usual way (18 §18.7). Much of scGPT’s headline performance is a fine-tuned result on favorable in-domain benchmarks, and a large share of “why it works” is plausibly (a) 33M cells of pretraining data and (b) the depth-robust binning preprocessing — i.e. data and preprocessing, not the transformer per se. The zero-shot evidence (next section) supports that reading: strip fine-tuning and the architecture’s advantage over PCA/HVG largely evaporates.
22.7 Limitations and research gaps
This is one of the two sections the whole chapter builds toward. I separate the weaknesses by where they live — representation, architecture, objective, evaluation — then ask the deeper question (mechanism or statistics?) and map exactly where the model breaks out-of-distribution.
Representation — magnitude is gone, and some tasks are only magnitude. Binning-by-rank (§22.2) keeps which genes are high and their order, but discards how high and destroys cross-cell comparability; 51 strata is coarse against a real dynamic range of –. Concrete failure: give a drug at a low dose (say a gene induced 2×) and a high dose (the same gene induced 20×). If the gene is the cell’s top-ranked gene in both, it lands in the same top bin both times — the model literally cannot see the dose difference, because it was erased before the transformer. For dose–response, fold-change, and effect-size tasks — i.e. toxicogenomics — this is a structural handicap, not something more training fixes (11_SC_FOUNDATION_MODELS.md §3).
Architecture — attention has no reason to learn regulation. Self-attention over an unordered gene set is free to encode any statistical co-variation; nothing in the architecture biases it toward causal regulatory structure. So the GRN read-out (§22.5) recovers co-expression — which genes move together — which a plain gene–gene correlation matrix already gives you, at a fraction of the cost. Calling those attention edges a “regulatory network” over-claims: co-movement is not control, and the model has no way to tell an upstream regulator from a downstream responder.
Objective — the loss can be won cheaply and teaches only association. As detailed in §22.4, masked-value MSE is beatable by predicting per-gene means (Kedzierska et al.’s probe shows scGPT’s reconstructions losing to a mean-predictor), and because every training cell is observational, the objective can only ever teach co-occurrence, not intervention — which is why perturbation is the field’s hardest case.
Evaluation — the wins are mostly fine-tuned and in-domain. The headline results come after supervised fine-tuning on benchmarks drawn from the same data distribution. The central independent check, Kedzierska et al., Genome Biology 2025 (doi:10.1186/s13059-025-03574-x), tests the model zero-shot (embeddings straight out of pretraining, no fine-tuning) and finds it beaten by:
- highly-variable-gene selection (a preprocessing step, not even a model) on clustering,
- scVI (Lopez et al., Nature Methods 2018) on cell-type structure, and
- Harmony (Korsunsky et al., Nature Methods 2019) on batch integration,
winning on only one dataset (PBMC 12k), and in some cases producing embeddings whose variance is more batch-explained than the raw data — i.e. it added batch signal. The honest reading: “foundation model” here means “a good initialization for supervised fine-tuning,” not “a strong general-purpose zero-shot representation.” That distinction should frame every claim about scGPT.
Mechanism or statistics? On the current evidence, mostly statistics — and that is not nothing (co-expression manifolds and cell-state geometry are genuinely useful for annotation and integration). But there is no demonstrated grasp of causal regulatory mechanism, and the field-wide perturbation results (Ahlmann-Eltze et al., Nature Methods 2025, doi:10.1038/s41592-025-02772-6) — no foundation model beating a simple linear baseline — are exactly what you would expect from a model that learned association rather than intervention.
Where it breaks out-of-distribution (the map that matters for toxicology).
| unseen axis | why scGPT struggles | concrete failure |
|---|---|---|
| chemical / dose / time | no native token for them; binning erases the dose axis | can’t distinguish a 2× from a 20× induction; a “drug at dose D for time T” has no representation at all |
| tissue | organ-specific checkpoints beat whole-human in-domain (§22.4), so the learned grammar is partly local | a far-from-training tissue (e.g. a specialized rat organ) is reconstructed with the wrong priors |
| species | the gene vocabulary is keyed on human gene IDs; a rat or mouse gene is a different token with a separately-learned (or missing) embedding | rat Cyp1a1 and human CYP1A1 are unrelated tokens — cross-species transfer is weak by construction (contrast UCE/EVA, which tokenize genes by protein sequence so orthologs share a representation — Chapter 25) |
| platform | binning fixes sequencing-depth differences but not deeper protocol differences; zero-shot batch behavior is already shaky | a new assay/protocol shifts the embedding in ways DAB was never trained to remove |
Stack these and you get toxicogenomics — rat, bulk, chemical, dosed, a new platform — which is close to a worst case for stock scGPT on every axis at once. That is not a knock on the model; it is a precise statement of the distance between what it was built for and where the book wants to use it, and it sets up §22.8.
22.8 How the model could be improved
This is the section to take furthest. Each proposal names the gap (from §22.7), the concrete change (with enough how-to to start), the data to use, the metric and baseline that would prove it, and why it would be a contribution rather than a tweak. They are ordered from most self-contained to most ambitious. The discipline throughout (per 21_TASK_ARITHMETIC.md §21.11) is: a bounded change with a defined evaluation beats a speculative redesign.
1. Give the value channel its magnitude back
- Gap. Binning-by-rank erases absolute magnitude, so dose/fold-change/effect-size is invisible (§22.7, Representation).
- How to. Two compatible options. (a) Bin + residual: keep the 51-bin embedding but add a small head that also predicts a continuous within-bin offset, so the target is “bin 4, and 0.7 of the way up it” — restoring magnitude without throwing away the depth-robustness binning bought. (b) Count likelihood: replace MSE-on-bins with a negative-binomial (or zero-inflated NB) likelihood on the raw counts, exactly as scVI does (Lopez et al., Nature Methods 2018, doi:10.1038/s41592-018-0229-2); this models both the magnitude and the overdispersion/dropout that make counts non-Gaussian.
- Data & metric. Fit on the same CELLxGENE cells; evaluate on dose–response recovery using LINCS L1000 (multi-dose compound signatures) and Open TG-GATEs (dose × time), scoring whether the model can now rank doses of the same compound (Spearman of predicted vs true fold-change across doses). Baseline: the stock binned model, which should be at chance on dose ranking by construction.
- Why it’s a contribution. It directly tests the book’s central “type-error” claim (
11§3) and would be the first demonstration that a magnitude-aware head recovers exactly the axis toxicogenomics needs.
2. Pretrain on interventions, not just snapshots
- Gap. Observational-only pretraining teaches association, not causation, so perturbation prediction fails (§22.7, Objective; Ahlmann-Eltze et al. 2025).
- How to. Continue-pretrain scGPT on interventional corpora with an explicit intervention token (a condition embedding that says which gene/drug was applied and, ideally, at what dose), and score the model on predicting the change from control, not the absolute post-state. Use genetic-perturbation Perturb-seq (Adamson, Norman) and the drug-perturbation atlas of the next chapter, Tahoe-100M (~100M cells, ~1,100 drugs × ~50 lines; bioRxiv 2025.02.20.639398) — the largest interventional single-cell resource, and the natural cure for this exact gap.
- Data & metric. Held-out perturbations (unseen genes; unseen drug–line combinations) scored against GEARS (Roohani et al., Nature Biotechnology 2024) and CPA (Lotfollahi et al., Mol. Syst. Biol. 2023) — and, non-negotiably, against the linear baseline (
18§18.4), which is the bar the whole field currently fails to clear. A result that beats the linear model on truly unseen perturbations would be genuinely new. - Why it’s a contribution. It converts “foundation models don’t help perturbation” from a verdict into a testable “…because they were pretrained observationally,” and Tahoe makes the counterfactual runnable.
3. A fold-change adapter so toxicogenomics data can enter at all
- Gap. scGPT ingests binned absolute counts; toxicogenomics is signed log-fold-change — a type mismatch, not a domain gap (
11§3, §22.7). - How to. Add a small input adapter that maps a signed log-fold-change value into the model’s value-embedding space, and give the model a dual value head that distinguishes “absolute level” (native scRNA-seq) from “signed change vs control” (toxicogenomics), so a single backbone can consume both without pretending one is the other. This is a few-parameter change at the input/output, not a new architecture.
- Data & metric. DrugMatrix and Open TG-GATEs (rat + human, dose × time). Evaluate on cross-tissue direction prediction — given the fold-change profile in a source tissue, predict the direction (up/down/none) in a target tissue — against Funk-SVD / ToxCompl (the book’s own baselines,
04_TOXCOMPL.md,07_TRANSTISSUEFORMER.md). - Why it’s a contribution. It is the minimal bridge that lets a pretrained scFM touch toxicogenomics at all, and it makes the type-error claim falsifiable: if the adapter works, the gap was representational; if it doesn’t, the gap is deeper.
4. Tokenize genes by protein sequence for cross-species transfer
- Gap. The human-gene-ID vocabulary makes rat/mouse genes different tokens; cross-species transfer is weak by construction (§22.7, species row).
- How to. Replace (or augment) the learned gene-ID embedding table with protein-sequence embeddings: run each gene’s protein through a protein language model (ESM-2, Lin et al., Science 2023) and use that as , the way UCE (Universal Cell Embeddings, Chapter 25) does. Orthologs — rat Cyp1a1 and human CYP1A1 — then start with nearly identical embeddings because their proteins are nearly identical, so knowledge transfers across species for free.
- Data & metric. rat → human direction transfer on the paired compounds in Open TG-GATEs (the same evaluation already sketched in
20_REASONING_DATASET_IDEA.md§20.6): train on rat, test on human, macro-F1 over up/down/none, stratified by ortholog conservation (expect strong transfer on conserved genes, weak on the divergent P450s). - Why it’s a contribution. It imports the single most transferable idea from UCE/EVA into a value-carrying model like scGPT, and tests it on the species boundary that matters for replacing animal testing.
5. Batch handling that cannot backfire
- Gap. Zero-shot, scGPT can amplify batch signal (§22.7; Kedzierska).
- How to. Move batch correction from an afterthought to part of pretraining: keep DAB/ECS lightly active during pretraining (not just fine-tuning), or add an explicit batch-conditioned decoder so batch is modeled and subtracted rather than left latent in . The design target is a guarantee: the integrated embedding is never worse on batch than the raw data.
- Data & metric. The scIB benchmark (Luecken et al., Nature Methods 2022, doi:10.1038/s41592-021-01336-8): report the batch-removal vs bio-conservation trade-off head-to-head with Harmony and scVI, following the Kedzierska protocol, with the explicit success criterion “never below raw data on batch.”
- Why it’s a contribution. It turns a documented embarrassment (a foundation model losing to a 2019 method) into a measured fix with a falsifiable guarantee.
6. An objective the mean cannot game
- Gap. Masked-MSE is beatable by predicting per-gene means (§22.4, Shortcut 1).
- How to. Add a contrastive / ranking term to the loss: alongside reconstructing the masked values, require the model to score this cell’s true gene profile above a decoy (another cell’s profile, or a shuffled one). A mean-predictor assigns both the same score, so it cannot win the contrastive term — the model is forced to use cross-gene context. This is a light add-on to the existing loss, not a new model.
- Data & metric. Evaluate zero-shot (the setting where the current objective loses) on Kedzierska’s clustering + integration suite; success is beating HVG/scVI/Harmony without fine-tuning — the thing stock scGPT currently cannot do.
- Why it’s a contribution. It attacks the objective’s core shortcut directly and is measured on precisely the benchmark that exposed it.
A note on cost. Several of these (1, 3, 6) are small input/output/loss changes trainable on one GPU, especially if adapted with LoRA rather than full fine-tuning (scPEFT, Nature Machine Intelligence 2025, shows LoRA matches full fine-tuning on scGPT) — so they are graduate-student-scale experiments (18 §18.8), not data-center ones. Directions 2 and 4 are heavier (a pretraining run; a protein-embedding vocabulary) but reuse existing corpora and existing evaluation harnesses. In every case the metric and the baseline exist before the model is built — which, per 21 §21.11, is the line between a research contribution and a redesign with no way to be proven right.
This chapter is exposition, not a result. Architecture and objective details are cross-checked between the scGPT paper (Cui et al., Nature Methods 2024; bioRxiv 2023.04.30.538439v2) and the released configs/CZI model card (12 layers / 512 dim / 8 heads, bins, ~51–53M params, ECS threshold 0.3, ); the pretraining mask ratio and the exact parameter count are flagged as unconfirmed. The zero-shot critique is Kedzierska et al., Genome Biology 2025; the perturbation-baseline critique is Ahlmann-Eltze et al., Nature Methods 2025 — the same findings anchored in 18_GENOMIC_FM_LANDSCAPE.md §18.4. Next: Chapter 23, Tahoe — a perturbation-first, 100-million-cell corpus that targets exactly the interventional gap identified in §22.7–22.8.
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.
Chapter 24 — Reading BulkFormer at Author Depth
Third of the four model readings, and the one closest to home. scGPT and Tahoe both model single cells; classic toxicogenomics — DrugMatrix, Open TG-GATEs, LINCS L1000 — is almost entirely bulk: one expression profile per tissue sample, averaged over millions of cells. BulkFormer is the first foundation model built for that dense bulk modality, and it independently adopts several of the fixes the scGPT and Tahoe chapters proposed — it keeps expression magnitude (continuous values, not binning), it feeds the whole ~20,000-gene profile (no highly-variable-gene subsetting), and it initializes gene identities from protein sequence (the cross-species trick from 22_READING_SCGPT.md §22.8-4). So this chapter is partly “how a bulk FM works” and partly “how close is the field’s best bulk model to something toxicogenomics could actually use?” The honest answer, developed across §24.7–24.8: structurally very close, biologically still off on dose, time, species, and fold-change.
One-sentence version: BulkFormer is a ~147M-parameter encoder that takes an entire dense bulk transcriptome (all 20,010 human protein-coding genes, as continuous log-TPM values), mixes a gene co-expression graph with linear-attention transformer layers, and is pretrained to impute masked genes — a magnitude-preserving, whole-genome bulk model that is the right modality for toxicogenomics but trained on the wrong (observational, human, absolute-expression) data.
24.1 What problem BulkFormer solves
Bulk vs single-cell, for a non-biologist. A single-cell RNA-seq profile (Chapters 22–23) measures one individual cell: sparse, mostly zeros, ~3,000 genes detected. A bulk RNA-seq profile measures a whole tissue sample — a biopsy, a treated cell culture, an organ slice — by grinding up millions of cells and averaging their mRNA together. The result is one dense vector in which essentially every gene is nonzero (BulkFormer requires ≥14,000 detected genes per sample) and the value is a population average. Bulk is cheaper, older, and by far the dominant modality in clinical, pharmaceutical, and toxicological transcriptomics — you dose a rat, harvest its liver, and sequence the bulk.
The gap. Every prior transcriptomic foundation model — Geneformer, scGPT, scFoundation — was pretrained only on sparse single-cell data. BulkFormer’s motivating claim is that this is a modality mismatch: a model tuned to ~3,000-gene sparse cells underperforms on ~16,000-gene dense bulk samples. BulkFormer is the first FM purpose-built for bulk.
What one training example is. One bulk sample = a dense continuous vector over 20,010 protein-coding genes, values in log(TPM + 1) (TPM = “transcripts per million,” a depth-normalized expression unit). Notably — and this becomes a limitation — a training example is expression only: the authors deliberately ignore sample metadata (tissue, disease, sex, age). No condition tokens.
Input → output. In: a dense bulk profile (optionally with some genes masked). Out: (i) a sample embedding and per-gene contextual embeddings for downstream use, and (ii) imputed/denoised expression values for masked or missing genes. The pretraining task is imputation; everything else is a downstream head.
Downstream tasks it supports (all in §24.5): transcriptome imputation, disease annotation, cancer-subtype classification, patient prognosis/survival, compound-perturbation response (LINCS), drug-response/IC50 prediction (GDSC), and gene-essentiality prediction (DepMap).
24.2 How the input is represented
This is where BulkFormer quietly fixes two of scGPT’s problems, so it is worth going slowly. Start from a small bulk sample:
| gene | log(TPM+1) |
|---|---|
| ACTB | 9.8 |
| ALB | 12.1 |
| CYP1A2 | 7.4 |
| TP53 | 4.2 |
| … (≈20,000 more, essentially all nonzero) | … |
Two things are already different from a single cell: the vector is dense (no dropout zeros), and the values are real magnitudes, not a sparse bag.
The three embeddings per gene
Each of the 20,010 gene positions is turned into a vector by combining three pieces (compare scGPT’s three summed embeddings, §22.2, but every piece here is upgraded):
- Gene-identity embedding — from protein sequence (ESM2). Instead of the random-then-learned gene-ID row that scGPT uses (
22_READING_SCGPT.md§22.2), each gene’s identity vector is warm-started — initialized from ESM2, a protein language model, run on that gene’s canonical protein sequence, then trained further. So the gene’s representation starts out encoding what protein it makes rather than starting as noise. This is exactly the cross-species idea the scGPT chapter proposed (§22.8-4): because orthologous proteins have nearly identical sequences, this identity embedding is, in principle, species-transferable — even though BulkFormer itself only trains on human. - Expression-value embedding — continuous, via Rotary Expression Embedding (REE). The log(TPM+1) value enters as a continuous number, encoded with a rotary scheme (REE, an expression-space analogue of rotary positional encoding). Crucially, there is no binning — the magnitude is preserved. This directly avoids scGPT’s “51 rank bins throw away how much” problem (§22.2, §22.7).
- Sample-context embedding. An MLP compresses the entire expression vector into one sample-level vector, broadcast across all positions, so every gene “knows” the global state of the sample it sits in.
Sequence, masking, padding, metadata
- Ordering / sequence. All 20,010 genes are one sequence — the whole transcriptome, no highly-variable-gene subsetting, no chunking. (This is only affordable because of linear attention, §24.3.) As in scGPT, gene identity replaces position; there is no positional embedding over genes.
- Masking. Pretraining masks ~15% of the gene values, replacing each with a placeholder value of −10 (a value far outside the real log-TPM range, so the model can recognize “this one is hidden”). The model predicts the masked genes’ true values. This is masked-value regression, the bulk analogue of scGPT’s GEP.
- Padding. Because every sample uses the same fixed 20,010-gene vocabulary in the same order, there is effectively no variable-length padding — a fixed dense vector every time. (Contrast scGPT’s variable ~1–3k gene subsets.)
- Metadata. None enters the model. Tissue, disease, sex, age, and — critically for us — drug, dose, and time are not represented. A training example is a bare expression vector. The authors list this as an explicit limitation, and it is the single biggest gap for toxicogenomics (§24.7–24.8).
What biology is preserved or lost
| preserved (and better than scGPT) | lost or absent |
|---|---|
| expression magnitude (continuous values, no binning) | fold-change vs a control — inputs are absolute log-TPM, not treated-vs-control |
| the whole transcriptome (all 20,010 genes every time) | cell-type resolution — bulk is a tissue average; distinct cell types are blended |
| protein-informed gene identity (ESM2 → species-transferable in principle) | any metadata — drug, dose, time, tissue, disease all excluded from input |
| a global sample summary (the context embedding) | non-coding genes — protein-coding only; non-human species — human only |
The left column is why BulkFormer is the most toxicogenomics-shaped of the four models: bulk modality, magnitude kept, whole-genome. The right column is why it is still not a toxicogenomics model: no fold-change, no dose/time, human only.
24.3 How the architecture works
BulkFormer’s distinctive move is a hybrid graph + linear-attention transformer, chosen so it can process all ~20,000 genes at once. We walk one sample through.
Why not a plain transformer
Vanilla self-attention costs in sequence length. At genes, an attention matrix is entries per sample per layer — infeasible. Single-cell FMs dodge this by subsetting to ~1–3k highly-variable genes; BulkFormer instead keeps all genes and makes attention itself cheaper.
The two ingredients
Performer (linear attention). Performer approximates softmax attention with a kernel trick that makes cost scale linearly in sequence length, instead of . This is the key enabler of the whole-transcriptome context. (Conceptually: instead of forming the full score matrix, it factorizes attention through random feature maps.)
A gene co-expression graph + GCN. In parallel, BulkFormer builds a fixed gene–gene graph: compute the absolute Pearson correlation between every gene pair across the training corpus, discard edges below |r| = 0.4, and keep each gene’s top-20 strongest neighbors. A graph convolution (GCN) layer then lets each gene mix information with its co-expressed neighbors. This injects an explicit prior — “genes that co-vary are related” — that pure attention would have to learn from scratch.
The block. BulkFormer stacks “blocks,” each = 1 GCN layer + several Performer layers. So every block does both: local structure from the co-expression graph, global mixing from linear attention.
Sizes and shapes
Five released sizes; the main “~150M” model is the 147M variant:
| variant | hidden | layers | heads | params |
|---|---|---|---|---|
| 37M | 128 | 1 | 8 | 37M |
| 93M | 512 | 6 | 8 | 93M |
| 147M (main) | 640 | 12 | 8 | 147M |
End-to-end shapes for one sample (, ):
| stage | what it is | shape |
|---|---|---|
| input | 3 embeddings summed per gene | |
| GCN + Performer blocks | ×12, each mixes graph + global | |
| sample embedding | pooled over genes | |
| per-gene output | linear head → predicted value |
A worked micro-example
Suppose CYP1A2 (a liver drug-metabolism gene) is masked (set to −10) in a liver sample. Two channels help predict it: the GCN lets it borrow from its top-20 co-expressed neighbors — other liver-enriched metabolic genes that are observed — while Performer attention lets it consult the global sample state (the context embedding says “this is a liver-like profile”). The linear head then outputs a continuous predicted log-TPM, e.g. 7.3 against a true 7.4. Biologically: the model reconstructs a gene from the company it keeps. Statistically: this is sophisticated co-expression imputation — which, as §24.7 presses, is also the ceiling of what the objective can teach.
24.4 How the model is trained
The objective
A single objective: masked-value regression. Mask ~15% of a sample’s gene values (→ −10), predict them, minimize MSE on the masked positions:
No contrastive term, no auxiliary loss — just imputation. The intent: to reconstruct a masked gene from the rest of a dense profile, the model must internalize genome-wide co-expression structure.
The data, and what it should teach
Pretraining uses 522,769 human bulk samples assembled from GEO and ARCHS4 (public expression repositories), spanning nine physiological systems, healthy and diseased. Two corrections worth stating plainly, because they matter for this book:
- It is not GTEx/TCGA. Those tissue atlases appear only in downstream evaluation; pretraining is GEO+ARCHS4.
- It is observational. These are tissue/disease snapshots, not controlled perturbations. So, exactly as with scGPT (§22.4), the objective can teach association (co-expression) but not intervention — a point that returns for toxicogenomics.
Shortcuts and weaknesses in the objective
Shortcut 1 — imputation is “smart averaging.” Because bulk genes are strongly co-expressed, a masked gene is often well-predicted by a linear combination of its neighbors. A model can score very high on imputation MSE (BulkFormer reports PCC 0.954) while mostly learning conditional co-expression, not biology. The high score is real but easy to over-read: the baseline (co-expression regression) is already strong. Fix / honest framing: report imputation against a strong co-expression/linear baseline, and weight the evaluation toward genes that are hard to predict from neighbors.
Shortcut 2 — observational data, association only. Nothing in the objective is interventional, so the model cannot learn dose- or drug-driven causal response from pretraining; any such ability must be injected downstream (LINCS/GDSC fine-tuning). Fix: interventional pretraining (§24.8).
Shortcut 3 — the co-expression graph can bake in confounds. The GCN prior is built from corpus-wide correlations, which include batch and technical covariation, not just biology. The model can lean on edges that reflect study/platform structure. Fix: build the graph from batch-corrected data, or learn/prune edges rather than fixing them by raw Pearson.
24.5 How it is used for downstream tasks
Same pattern as before — task → concrete input → adapt → concrete output → example — condensed across the seven reported tasks. Adaptation is a task head or fine-tune on the embeddings; imputation is native.
Transcriptome imputation (the native task)
- In: a bulk profile with missing/low-quality genes.
- Out: filled-in continuous values (per-gene ).
- Example / result: test PCC 0.954; external TCGA PCC 0.914. Use: rescue genes lost to low sequencing depth; harmonize datasets.
Disease annotation & cancer subtype (classification)
- In: a patient’s bulk tumor/tissue profile → sample embedding.
- Adapt: a classifier head on the embedding.
- Out: a disease/subtype label. Example: 23-disease annotation weighted-F1 0.939 (vs scGPT 0.885); 33 cancer subtypes 0.833 (vs scGPT 0.830 — a thin margin, worth noting).
Patient prognosis / survival
- In: tumor bulk profile.
- Out: risk score → survival prediction. Example: across ~10,000 patients / 33 cancers, AUROC 0.747 (modest; the authors concede “considerable room for improvement” given bulk noise). A surfaced biomarker: high H4C1 in kidney cancer ↔ 5.2× mortality.
Compound perturbation (LINCS) — the toxicology-adjacent task
- In: a baseline profile + a compound (LINCS L1000-style).
- Out: predicted perturbed profile. Example: PCC 0.493 / SCC 0.430 (beats PRnet 0.408 — but note the absolute value is modest: predicting perturbation responses remains hard, echoing
18§18.4).
Drug-response (GDSC) & gene essentiality (DepMap)
- Drug response: cell-line bulk profile + drug → IC50; PCC 0.910 (vs scFoundation 0.880). Essentiality: predict DepMap gene-dependency; PCC 0.931.
Toxicity relevance (why this book cares most here)
BulkFormer is the closest of the four models to toxicogenomics by modality: it is bulk, dense, magnitude-preserving, whole-genome, and it already fine-tunes on LINCS compound-perturbation and GDSC drug-response data — it has literally touched L1000-style perturbation transcriptomics. That is far nearer than scGPT (sparse single cells) or even Tahoe (single-cell cancer lines). But the residual gaps are exactly the toxicogenomics axes: pretraining is observational (no learned intervention prior), inputs are absolute log-TPM not fold-change (whereas DrugMatrix/TG-GATEs/L1000 speak in treated-vs-control log-fold-change), there is no dose or time conditioning, and it is human only (DrugMatrix/TG-GATEs are largely rat). So BulkFormer is the best starting point for a toxicogenomics FM and simultaneously a precise inventory of what such a model still needs — which §24.8 turns into a plan.
24.6 What is technically distinctive
Separating real advances from cheaper explanations (18 §18.7):
- Dense-bulk modality. The core positioning: train on ≥14,000-gene dense samples, not sparse cells. A genuine niche, and the reason it beats single-cell FMs on bulk tasks — but that is partly a fair-matchup effect (single-cell FMs are out of their domain on bulk), so read the head-to-heads with that in mind.
- Continuous expression + REE (magnitude kept). The most important representational choice, and a real improvement over binning/rank encoding for a modality where magnitude matters. This is scGPT §22.8-1 done natively.
- Whole-transcriptome context via Performer. Keeping all 20,010 genes (no HVG subsetting) is only possible with linear attention — a real architectural enabler.
- GCN co-expression prior fused per block. A hybrid inductive bias distinct from pure-attention FMs; helps, but also risks baking in correlation/confounds (§24.4, §24.7).
- ESM2 protein-sequence gene initialization. A biological prior on gene identity, and (unused here) a latent route to cross-species transfer.
Genuine advance vs. cheaper explanation. Much of BulkFormer’s edge is (a) matching the model to the modality (bulk) and (b) magnitude-preserving continuous inputs — i.e. representation and data-fit, not a novel attention formula. Several head-to-head margins over single-cell FMs are thin (subtype 0.833 vs 0.830), and the biggest wins (imputation) are against baselines that co-expression already handles well. The honest read: a well-designed, well-matched bulk model, not a paradigm shift — but for toxicogenomics its representational choices are exactly the right ones.
24.7 Limitations and research gaps
Representation. Inputs are absolute log-TPM, not fold-change — the native currency of toxicogenomics (11_SC_FOUNDATION_MODELS.md §3) is treated-vs-control log-fold-change, which BulkFormer does not represent. No metadata at all (drug, dose, time, tissue) enters the model — a deliberate omission the authors flag. Protein-coding only, so regulatory non-coding RNAs (some of them toxicologically relevant) are invisible.
Architecture. The co-expression graph is fixed from raw Pearson correlations, which fold in batch/technical covariation; the GCN can therefore lean on non-biological edges. Bulk itself mixes cell types — a tissue average — and BulkFormer does not deconvolve, so cell-composition shifts (common under toxicant exposure — e.g. immune infiltration) are confounded into the sample vector.
Objective. Masked imputation is largely co-expression smoothing (§24.4) and is observational, so it teaches association, not dose-driven causation. The high imputation numbers should be read against strong co-expression baselines.
Evaluation. Several margins over single-cell FMs are thin, and single-cell FMs are out of domain on bulk (a favorable matchup). Prognosis is modest (AUROC 0.747). Train/val/test split details are under-documented, and there is no independent third-party replication of the core benchmarks yet.
Mechanism vs statistics. On the evidence, statistics: BulkFormer is an excellent model of co-expression structure in human bulk tissue. There is no demonstrated grasp of causal, dose-dependent perturbation mechanism — the perturbation task (LINCS PCC 0.493) is exactly where it is weakest.
Where it fails out-of-distribution. Rat / non-human (human vocabulary + human ESM2 init + human-only training — though the ESM2 route makes this the least hard of the failures to fix). Fold-change / treated-vs-control inputs (never seen). Dose and time (no representation). Interventional / toxicant exposure regimes at cytotoxic endpoints (observational pretraining). Non-coding transcripts. Cell-composition changes (no deconvolution). For toxicogenomics, the modality is right but every experimental axis is unmodeled.
24.8 How the model could be improved
The most detailed section, and unusually actionable here because BulkFormer is already the right modality — the improvements are mostly about adding the toxicogenomics axes, not rebuilding. Each: gap → how-to → data → metric+baseline → why it’s a contribution.
1. A fold-change (treated-vs-control) input/output mode
- Gap. Absolute log-TPM, but toxicogenomics is treated-vs-control log-fold-change (§24.7).
- How to. Add an input mode that ingests a paired (treated, control) profile and a head that outputs signed log-fold-change; reuse the REE continuous encoding for signed values.
- Data & metric. DrugMatrix / Open TG-GATEs / LINCS L1000 (all report fold-change vs control); evaluate signed-direction accuracy and magnitude correlation on held-out compounds against a per-gene mean-shift and a linear baseline.
- Why. It aligns the model’s currency with tox and makes it drop-in comparable to DrugMatrix/TG-GATEs analyses — the cousin of
22§22.8-3 /23§23.8-5, but native to bulk.
2. Dose and time conditioning
- Gap. No dose/time axis (§24.7).
- How to. Add condition tokens (log-dose scalar + exposure-time token) to the currently metadata-free input; train with a monotonicity constraint in dose.
- Data & metric. Open TG-GATEs (dose × time in rat + human hepatocytes); hold out a dose/time and predict it; score dose-ordering and interpolation against linear-in-log-dose.
- Why. Concentration × time is the tox readout; this is the single most valuable addition, and TG-GATEs is purpose-built to evaluate it.
3. Cross-species (rat) via the ESM2 route it already has
- Gap. Human only — but DrugMatrix/TG-GATEs are largely rat (§24.7).
- How to. This is unusually cheap here: BulkFormer already initializes gene identity from ESM2 protein embeddings, so run rat genes’ proteins through the same ESM2 to get an ortholog-aligned rat gene vocabulary, then continue-pretrain on rat bulk. Orthologs land near their human counterparts by construction.
- Data & metric. Rat DrugMatrix/TG-GATEs; evaluate rat→human and human→rat transfer, stratified by ortholog conservation (
20_REASONING_DATASET_IDEA.md§20.6). - Why. It realizes the cross-species idea (
22§22.8-4) on a model that already has the mechanism half-built — the most tractable species bridge among the four models.
4. Interventional pretraining
- Gap. Observational GEO/ARCHS4 pretraining teaches association, not response.
- How to. Continue-pretrain (or co-train) on bulk perturbation corpora — LINCS L1000 (~1M+ bulk-like signatures), DrugMatrix, TG-GATEs — with the fold-change mode (#1) and dose/time tokens (#2), so the objective rewards predicting response.
- Data & metric. Held-out compounds/doses on L1000/TG-GATEs; the linear baseline (
18§18.4) as the honest bar. - Why. It is the direct cure for the perturbation weakness (LINCS PCC 0.493) and turns a tissue-atlas model into a response model.
5. Metadata conditioning (compound, tissue, disease)
- Gap. Model ignores all metadata by design.
- How to. Re-introduce compound (SMILES), tissue, and disease tokens as conditioning, so the model can use context it currently discards; SMILES enables unseen-compound generalization (as in Tahoe-x1,
23). - Data & metric. Tox and drug-response tasks with held-out compounds; measure unseen-compound response against a nearest-training-drug baseline.
- Why. Toxicogenomics is a metadata-conditioned prediction (compound, dose, time, tissue → response); a metadata-free model cannot do it.
6. Deconvolution-aware modeling
- Gap. Bulk mixes cell types; toxicant effects often are cell-composition shifts (immune infiltration, cell death) that a tissue average confounds.
- How to. Add an auxiliary cell-composition head (predict cell-type fractions, supervised by deconvolution references) so the model separates “the same cells changed” from “the mix of cells changed.”
- Data & metric. Tissues with paired bulk + single-cell references; evaluate composition recovery and whether conditioning on it improves response prediction.
- Why. It addresses a bulk-specific confound that directly distorts tox interpretation.
Cost note. #1, #2, #5, #6 are architecture/objective additions trainable by continuing from the released 147M checkpoint (single- to few-GPU with adapters); #3 reuses the existing ESM2 machinery; #4 is the heaviest (a perturbation pretraining run) but uses existing public corpora. Every one names its metric and baseline first (21 §21.11). Taken together, they are close to a blueprint for the toxicogenomics bulk foundation model the book keeps circling — which is precisely why BulkFormer, not scGPT or Tahoe, is the natural chassis to start from.
This chapter is exposition, not a result. BulkFormer facts are from Kang, Fan, Yi, Cui & Cui, “A large-scale foundation model for bulk transcriptomes,” bioRxiv 2025.06.11.659222 (Cell Systems 2026), with code on GitHub (KangBoming/BulkFormer) and weights on Zenodo (record 15559368): 522,769 human bulk samples from GEO+ARCHS4, 20,010 protein-coding genes, log(TPM+1) continuous inputs, ESM2 gene init + Rotary Expression Embedding, a GCN(co-expression) + Performer hybrid, ~147M main model (640-dim, 12-layer, 8-head), masked-value MSE at ~15%. Corrections to common assumptions flagged in-text: pretraining is GEO+ARCHS4 (not GTEx/TCGA, which are downstream), and the model is observational, human, protein-coding, absolute-expression, metadata-free. Uncertain items (⚠️): exact train/val/test split, the enumerated nine physiological systems, final Cell Systems volume/page, and the “150M”→147M-variant mapping. Reported metrics are developer-run with no independent replication yet, and several margins over single-cell FMs are thin. Next: Chapter 25, EVA — where we deliberately set the multimodal parts aside and ask what its transcriptomic representation, cross-species/-platform transfer, and scaling do that earlier single-cell FMs did not.
Chapter 25 — Reading EVA at Author Depth (Transcriptomic Choices Only)
Fourth and last of the model readings, and read differently from the others by design: EVA is a multimodal model (transcriptomics + histology), but this chapter deliberately ignores the imaging and fusion machinery and looks only at the transcriptomic tower, EVA-RNA, asking one question — what does EVA do to a gene-expression model that earlier ones didn’t, and which of those ideas should the next transcriptomic foundation model steal? Two corrections up front, because they reframe everything. First, despite being benchmarked against scGPT/Geneformer/scFoundation/UCE, EVA-RNA is not a single-cell model — it operates on sample-/patient-level transcriptomes (bulk RNA-seq, microarray, and pseudobulked single-cell), so it is closer to BulkFormer (Chapter 24) than to scGPT, and its “wins over single-cell FMs” are partly a home-field comparison (§25.6). Second — and this is why EVA belongs in this book — its genuinely portable innovations are exactly the fixes Chapters 22–24 kept proposing: magnitude-preserving continuous values, a count-aware (ZINB) objective, knowledge-initialized gene embeddings, and an ortholog-unified cross-species vocabulary. EVA is, in effect, a proof-of-concept that several of the book’s recommendations work when combined.
One-sentence version: EVA-RNA is a ~305M-parameter encoder over patient-level transcriptomes that (a) seeds every gene’s identity vector from five external knowledge sources instead of random noise, (b) unifies human and mouse genes through orthology so knowledge transfers across species, (c) embeds expression as a continuous value and reconstructs masked genes with a zero-inflated negative-binomial likelihood — a bundle of representational choices that matter more than its (in-house, immunology-scoped) benchmark numbers suggest.
25.1 What problem EVA-RNA solves
The data type. Not single cells. EVA-RNA consumes a whole-sample transcriptome — one expression vector per patient/sample — drawn from three technologies at once: bulk RNA-seq, microarray (an older hybridization-based expression platform), and pseudobulk (a single-cell dataset collapsed back to one per-sample vector by summing its cells). This “many platforms, one sample-level representation” is the defining scope choice.
The gap it targets. The authors argue prior transcriptomic FMs have two problems for drug development: they live at single-cell resolution and so cannot natively emit a patient-level phenotype (the unit a clinical decision is actually about), and they are evaluated on technical metrics (clustering, label transfer) “disconnected from actual drug development.” EVA targets patient-level, cross-species, cross-platform representations, judged on drug-pipeline tasks (target efficacy, patient stratification, treatment response).
What one training example is. One sample = a set of (gene ID, expression value) pairs — log-CPM for RNA-seq, log-transformed for microarray — prepended with a CLS token, with a random subset of gene values masked for the pretraining task. No metadata tokens.
Input → output. In: genes + values (some masked). Out: per-gene contextual embeddings and a CLS sample embedding (the patient-level vector everything downstream uses); the pretraining head predicts the masked genes’ expression distribution.
Downstream tasks. A 39-task drug-development suite — zero-shot for the transcriptomic tasks — spanning target-efficacy prediction, gene-function prediction, molecular-perturbation response, patient stratification into endotypes, cross-species treatment effect, and clinical treatment outcome (§25.5).
25.2 How the input is represented (where EVA’s real ideas live)
This section carries most of the chapter’s payload, because EVA’s durable contributions are representational. Start from a sample (log-CPM values):
| gene | log-CPM |
|---|---|
| IL6 | 6.9 |
| TNF | 5.4 |
| CD3D | 7.1 |
| … (thousands more) | … |
Each gene becomes identity embedding + value embedding, summed — the familiar §22.2 pattern — but both halves are upgraded.
Idea 1 — knowledge-initialized gene embeddings (EVA’s most reusable trick)
Recall from §22.2 that scGPT’s gene table starts as random noise and must learn everything from expression alone. EVA does the opposite: it warm-starts each gene’s identity vector by concatenating five external descriptions of that gene and compressing them:
- scGPT’s learned gene embeddings (prior-model knowledge),
- ESM-2 protein-language-model embeddings (what protein the gene makes),
- NCBI gene text descriptions (natural-language biology),
- UniProt protein descriptions (more text/functional annotation),
- RotatE knowledge-graph embeddings (the gene’s position in a curated interaction graph).
These are PCA-reduced to a shared size (256 for the 305M model) and mapped through a 2-layer MLP to model width. So before EVA sees a single expression value, every gene already “knows” its protein, its literature description, and its graph neighborhood. The paper’s ablation is the important part: using all five sources gives the fastest convergence and lowest final validation loss versus fewer or random init. This is the generalization of the ESM-2 idea BulkFormer used (§24.2) and the scGPT chapter proposed (§22.8-4) — EVA just uses five priors instead of one, and shows it helps.
Idea 2 — an ortholog-unified cross-species vocabulary
The vocabulary is 66,240 NCBI Gene IDs spanning human and mouse together, linked by 16,168 human–mouse ortholog pairs. So mouse Il6 and human IL6 are not unrelated tokens (scGPT’s problem, §22.7) — they are tied through orthology and share knowledge-initialized neighbors. This is a first-class design choice for cross-species transfer rather than an afterthought, and EVA shows (§25.6) that over training the mouse and human representations actively converge.
Idea 3 — continuous value embedding (no binning)
The expression value is passed through an MLP [1 → 16 → 128 → 384 → 768] + LayerNorm — a continuous scalar mapped to a 768-dim vector. No binning, no rank encoding. Magnitude is preserved, exactly the fix §22.8-1 and Chapter 24 argued for.
Special tokens, platforms, metadata
- Special tokens:
CLS(sample readout),MASK,PAD. - Cross-platform handling: microarray, bulk, and pseudobulk are trained jointly, with per-modality normalization (CPM+log for RNA-seq, log-only for microarray). Notably there is no explicit platform/batch token ⚠️ — the model is expected to learn technology-invariance implicitly from the mixed corpus. (Contrast scGPT’s explicit batch condition token; EVA bets that scale + diversity beats an explicit correction knob.)
- Metadata: none conditioned beyond normalization ⚠️.
- Context length / per-sample gene count: not disclosed in the accessible text ⚠️ — do not assume a number.
What is preserved or lost
| preserved (and ahead of scGPT) | lost or absent |
|---|---|
| magnitude (continuous value MLP, no binning) | single-cell resolution — it is sample/patient-level; within-sample cell structure is gone (pseudobulk discards it) |
| rich gene priors (5 knowledge sources) | explicit platform/batch modeling — invariance is only implicit ⚠️ |
| cross-species links (human↔mouse orthology) | species beyond human/mouse — no rat, the tox workhorse |
| cross-platform bulk+microarray+pseudobulk in one space | dose / time / compound — no perturbation conditioning tokens; immunology-scoped corpus |
25.3 How the architecture works (transcriptomic tower)
The architecture is deliberately ordinary — which is itself a finding: EVA’s gains come from representation and data, not a novel attention mechanism.
The encoder. EVA-RNA is a 32-layer transformer encoder, hidden dim 768, 12 heads, FFN 3,072, pre-LayerNorm, with residual scaling for training stability — about 305M parameters. Attention is standard self-attention; no FlashAttention/sparse/graph trick is credited as core (contrast BulkFormer’s Performer+GCN, §24.3). The prepended CLS token’s final hidden state is the sample embedding; per-gene contextual vectors are also produced.
Shapes (one sample, genes, ):
| stage | what it is | shape |
|---|---|---|
| input | knowledge-init identity + continuous value, summed | |
| 32 encoder layers | standard self-attention | |
| sample embedding | CLS final state | |
| masked-gene head | ZINB distribution per masked gene | masked positions |
Multimodal connection (set aside per the chapter’s remit). In the full system, EVA-RNA (300M) + a histology encoder (85M) + a fusion head (55M) ≈ 440M; the RNA tower’s CLS embedding is aligned to imaging via a contrastive loss. But EVA-RNA is a standalone encoder and is released/usable transcriptomics-only — which is the version this chapter reads. I note the fusion exists and move on.
25.4 How the model is trained
The objective — masked expression with a count likelihood
The primary objective is masked gene-expression prediction, as in scGPT — but the decoder is the notable part. Instead of MSE on a value or a bin, EVA reconstructs each masked gene by predicting a Zero-Inflated Negative Binomial (ZINB) distribution, minimizing its negative log-likelihood:
where the head outputs, per gene, a zero-inflation probability , a mean , and a dispersion . Why this matters: transcriptomic counts are sparse (many zeros, some technical) and overdispersed (variance ≫ mean), and a ZINB models exactly those two facts — the same principled choice scVI uses and that §22.8-1 and §23.8 argued for, here applied at the pretraining objective itself rather than bolted on. A secondary CLS-reconstruction/compression term and a (multimodal, not-our-focus) multi-positive InfoNCE contrastive loss round it out.
The data — large, but mouse-bulk-heavy and immunology-scoped
EVA-RNA pretrains on 545,343 samples ≈ 330 billion gene tokens (~20.5 effective epochs) from an in-house corpus, ImmunAtlas (>50 tissues/conditions, immunology/inflammation-focused, human + mouse, normal + disease). The composition matters and should be stated plainly:
| source | samples | share |
|---|---|---|
| mouse bulk RNA-seq | 437,899 | ~80% |
| human microarray | 55,564 | ~10% |
| human bulk RNA-seq | 42,166 | ~8% |
| human pseudobulk | 8,498 | ~2% |
| mouse pseudobulk | 1,216 | <1% |
So EVA is mouse-bulk-dominated and immunology-specialized — a critical caveat for reading both its cross-species claims (the mouse side is where most data is) and its generality (it is not pan-disease).
What it should teach, and the shortcuts
The objective is meant to teach cross-gene co-expression structure that generalizes across platform and species. The same shortcuts as every masked-expression model apply: predict-the-conditional-mean (a ZINB head with good can score well without deep reasoning), and — because pretraining is observational — association, not intervention, so perturbation/treatment tasks remain the hardest (and, per §25.6, the ones where EVA’s margin nearly vanishes). A shortcut specific to the mixed corpus: with 80% mouse bulk, the model can over-fit mouse-immunology structure and lean on it — the interpretability analysis (§25.6) is partly there to argue this didn’t happen.
25.5 How it is used for downstream tasks
EVA’s transcriptomic tasks are mostly zero-shot: freeze the model, take the CLS sample embedding (or gene embeddings), attach a light readout. Concretely, in the book’s in/out format:
Zero-shot target efficacy.
- In: a disease sample’s expression →
CLSembedding; a candidate drug target (gene). - Out: a score for whether modulating that target would help. Result: EVA 0.693 vs scGPT 0.539 vs a statistical baseline 0.569.
Patient stratification into endotypes.
- In: many patients’ sample embeddings.
- Out: clusters/labels grouping patients by molecular subtype (“endotype”). Result: 0.786 vs scGPT 0.706.
Cross-species treatment effect (the transfer test).
- In: a mouse model-system profile + a treatment.
- Out: predicted effect transferable to human. Result: EVA 0.445 vs scGPT 0.439 vs BulkRNABert 0.435 — essentially a tie, and the most honest number in the paper (cross-species transfer is hard even for a model built for it).
Molecular perturbation / clinical outcome. Predict a gene-perturbation response (0.547) or a clinical treatment outcome (0.650), from the sample embedding + condition.
Toxicity relevance
EVA is, with BulkFormer, one of the two most toxicogenomics-adjacent models in this series, and for overlapping reasons: it is bulk/pseudobulk (the tox modality), magnitude-preserving, and — uniquely here — explicitly cross-species (human↔mouse). Toxicogenomics is fundamentally cross-species (rat/mouse → human), so EVA’s ortholog-unified vocabulary + knowledge-initialized embeddings are the closest existing demonstration of the rat↔human bridge the book keeps proposing (20_REASONING_DATASET_IDEA.md §20.6). The gaps for tox are the now-familiar ones: rat specifically (EVA is human+mouse), dose/time conditioning (absent), fold-change vs control (it uses absolute log-CPM), and it is immunology-scoped rather than liver/kidney-tox. So EVA supplies the transfer machinery toxicogenomics needs without being aimed at tox.
25.6 What is technically distinctive — and why “beats single-cell FMs” needs an asterisk
The user question this chapter exists to answer: what makes EVA better, and is it real?
The design choices the authors credit:
- Multi-technology, multi-resolution training (microarray + bulk + pseudobulk, human + mouse) → cross-platform, patient-level representations.
- Knowledge-initialized gene embeddings (5 sources; ablated to help most).
- ZINB distributional decoder (models sparsity + overdispersion).
- Ortholog-unified cross-species vocabulary (translational mouse→human).
- Continuous value embedding (no binning).
- Decision-relevant evaluation (39 drug-development tasks, not clustering metrics).
The cross-species evidence is genuinely interesting. EVA backs its transfer claim with mechanistic interpretability, not just a score: over training, (a) mouse genes’ input embeddings move closer to their human orthologs (nearest-neighbor rank drops), (b) contextual embeddings shift from per-species clusters early → integrated late, and (c) a sparse autoencoder finds 82 of 1,383 learned “concepts” shared across species and technologies, with immune genes aligning most strongly. This is better evidence of real integration than a single benchmark number — worth borrowing as a validation method (§25.8).
Now the asterisk — be skeptical in the book’s way (18 §18.7). Several things confound the “beats scGPT/Geneformer/UCE” headline:
- It is not the same kind of model. EVA-RNA is sample-level; scGPT/Geneformer/UCE are single-cell. In these comparisons the single-cell models are run off-distribution (asked to emit patient-level representations they were never designed for). A single-cell FM losing at a bulk/patient task is unsurprising and not, by itself, evidence of a better architecture.
- Home-field benchmark. The 39-task suite (PRIMO) is also authored by Scienta, and the tasks are immunology/drug-development framed — EVA’s home domain. Both the model and its yardstick are in-house.
- Domain-matched data. EVA trains on immunology data and is tested on immunology tasks; the baselines are not domain-matched. Much of the margin is plausibly data-and-task fit, not method.
- The transfer number is a tie (0.445 vs 0.439/0.435) — the one head-to-head where the comparison is fairest, and EVA barely wins.
- All results are developer-reported, Feb-2026-new, with no independent replication, and the released open weights are a 48.6M model, smaller than the 305M described ⚠️.
So what is genuinely portable? Strip away the data advantage and the multimodal machinery, and what remains are representational choices that were ablated and are architecture-agnostic: knowledge-initialized gene embeddings, the ortholog-unified vocabulary, the ZINB decoder, and continuous value embedding. Those survive the skepticism — they would help a single-cell model, a bulk model, or a toxicogenomics model regardless of EVA’s benchmark. That is the honest distillation, and it is the whole reason to read EVA.
Scaling (a real, clean result). EVA reports a power law — about 7% validation-loss reduction per 10× compute — with no plateau at 305M (explicitly contrasted with a competitor plateauing at 100M), and pretraining gains that transfer to downstream tasks. This is one of the cleaner scaling demonstrations for a transcriptomic model and is not confounded by the benchmark issues, since it’s measured on held-out loss.
25.7 Limitations and research gaps
Scope. Immunology/inflammation only — not pan-disease; and the corpus is ~80% mouse bulk, so both generality and the human side of cross-species transfer rest on a minority of the data.
Representation. No explicit platform/batch modeling ⚠️ (invariance is implicit — untested against a dedicated batch corrector like Harmony); absolute log-CPM, not fold-change; no dose/time/compound conditioning; context length undisclosed ⚠️.
Modality. It is not single-cell — the pseudobulk step discards within-sample cell structure, so cell-composition effects (central to both immunology and toxicology) are confounded, as in bulk generally (§24.7).
Evaluation. In-house model and in-house benchmark; baselines run off-distribution; no independent replication; released model smaller than reported. The strongest independent-of-benchmark evidence is the interpretability analysis and the scaling curve, not the task scores.
Mechanism vs statistics. As with the others, mostly statistics — a strong cross-platform co-expression model with real (interpretability-supported) cross-species alignment, but the perturbation/treatment tasks (the causal ones) are where its margin collapses.
Where it fails out-of-distribution. Rat (human+mouse only — the tox species is absent); dose–response and time-course (no representation); fold-change inputs (never seen); non-immunology tissues/diseases at the depth it has for immunology; and single-cell tasks (it gave up that resolution by design).
25.8 Ideas to extract for future transcriptomic foundation models
Per the chapter’s remit, this is the deliverable: the transcriptomic ideas worth borrowing, each as the idea → why it helps → how to port → what it buys toxicogenomics. These are the parts of EVA that survive the §25.6 skepticism because they are ablated, representational, and independent of the multimodal system and the home-field benchmark.
1. Warm-start gene embeddings from multiple knowledge sources
- Why. Random gene tables must learn everything from expression; EVA’s ablation shows five priors (protein sequence, text, knowledge graph, prior-model) converge faster to lower loss.
- How to port. Initialize any scFM/bulk-FM’s gene identity table by concatenating ESM-2 + NCBI/UniProt text embeddings + a knowledge-graph embedding (RotatE) (+ optionally an existing model’s gene vectors), PCA-reduce, MLP to width. Fully architecture-agnostic.
- For tox. The text/KG priors carry mechanism knowledge (pathways, targets) that a small tox corpus can’t teach — a cheap, strong prior for DrugMatrix/TG-GATEs-scale data.
2. Ortholog-unified cross-species vocabulary as a first-class design
- Why. Tying mouse↔human genes through orthology (not siloed vocabularies) is what let EVA’s species representations converge over training.
- How to port. Build one vocabulary over the union of species’ genes, linked by ortholog pairs, with knowledge-init embeddings (so orthologs start close via shared protein sequence). Add rat for tox.
- For tox. This is the rat↔human bridge the book keeps proposing (
20§20.6;22§22.8-4;24§24.8-3) — EVA shows it works for mouse↔human, and the ESM-2 route makes adding rat mechanical.
3. A ZINB (count) decoder for the masked-expression objective
- Why. Models sparsity + overdispersion of real counts; better-calibrated than MSE-on-values or MSE-on-bins.
- How to port. Replace the reconstruction head with a ZINB NLL (predict per gene). Works per-cell (single-cell) or per-sample (bulk).
- For tox. Combined with a fold-change head (
24§24.8-1), a count-aware objective is the magnitude-faithful target dose–response needs.
4. Continuous value embedding instead of binning/ranking
- Why. Keeps magnitude, which dose/effect-size tasks require; EVA and BulkFormer both chose it over binning.
- How to port. A small MLP
[1 → … → d]on the (log) value, summed with gene identity. Trivial to adopt; removes scGPT’s §22.2 magnitude loss.
5. Cross-resolution training (bulk + pseudobulk + single-cell together)
- Why. Bridges single-cell mechanism and patient-level phenotype in one representation — a resolution pure scFMs lack.
- How to port. Mix single-cell, pseudobulk, and bulk in pretraining with per-resolution normalization (no separate models). For tox, this could unify single-cell mechanism data with the bulk DrugMatrix/TG-GATEs profiles that regulators actually use.
6. Decision-relevant evaluation, and interpretability-based validation
- Why. EVA’s most defensible evidence is not its (home-field) task scores but its scaling curve and its mechanistic interpretability (ortholog-rank alignment, shared SAE concepts) — proof that cross-species/platform integration is real, not benchmark-fit.
- How to port. For a tox FM: evaluate on decision-relevant endpoints (does it predict the regulatory hazard call?) and validate cross-species integration with the same interpretability probes (do rat and human orthologs align in the learned space?), rather than trusting a single benchmark.
The synthesis this sets up. Notice that EVA is essentially Chapters 22–24’s wish-list assembled in one model: continuous magnitude (fixing scGPT’s binning), a count likelihood (fixing MSE), knowledge-initialized + ortholog-unified embeddings (fixing the species wall), cross-platform/-resolution training (fixing modality silos). It stops short of toxicogenomics on four specific axes — rat, dose, time, fold-change — and it proves those choices out on immunology data with an in-house benchmark. That is the perfect hand-off to the comparison chapter, which lines up all four models on exactly these axes and asks which combination the next transcriptomic (and toxicogenomic) foundation model should actually be.
This chapter is exposition, not a result, and covers only EVA’s transcriptomic tower. Facts are from Bandasack et al., “EVA: Towards a universal model of the immune system,” arXiv:2602.10168 (Feb 2026; earlier bioRxiv 2025.05.02.651839), and the ScientaLab HuggingFace release: EVA-RNA ≈ 305M params (32 layers / 768 dim / 12 heads), 66,240-gene human+mouse vocabulary with 16,168 ortholog pairs, five-source knowledge-initialized gene embeddings, continuous value MLP, ZINB masked-expression decoder, 545,343 training samples (~80% mouse bulk) from the immunology-focused ImmunAtlas. The crucial framing corrections, made throughout: EVA-RNA is a bulk/pseudobulk patient-level model, not single-cell; its wins over single-cell FMs are partly confounded by off-distribution baselines and an in-house (PRIMO) benchmark; and its durable, portable contributions are representational. Uncertain items flagged ⚠️: context length, absence of explicit platform tokens, and the released 48.6M weights being smaller than the described 305M model. All metrics are developer-reported with no independent replication. Next: Chapter 26 — the comparison, lining up scGPT, Tahoe, BulkFormer, and EVA on the axes toxicogenomics needs, and naming the most realistic research directions.
Chapter 26 — Four Models Compared, and Where to Go Next
The four readings (scGPT, Tahoe, BulkFormer, EVA) each stood alone; this chapter lines them up. Five questions, in order: how would each model represent the same expression profile? which are built for single-cell, perturbational, or bulk data? which design choices actually earn their keep? which gaps do all four still share? and — the payoff for this book — which model-level research directions are the most realistic and valuable for the toxicogenomics foundation model the whole volume has been circling? The recurring lesson from 18_GENOMIC_FM_LANDSCAPE.md §18.7 holds throughout: in this field, data and evaluation usually move the needle more than architecture, so a fair comparison has to separate “clever design” from “favorable data/benchmark.”
One-sentence version: the four models are converging — from scGPT’s random-init, magnitude-binned single cells toward EVA’s knowledge-initialized, magnitude-preserving, count-modeled, cross-species samples — and the next transcriptomic (and toxicogenomic) model is mostly a matter of assembling the choices that already work and adding the four axes none of them cover: rat, dose, time, and fold-change.
26.1 The same profile, through four models
Imagine one small liver expression readout — a handful of genes after a compound exposure:
ALB (albumin) high, CYP1A2 (drug metabolism) up, ACTB (housekeeping) mid, TP53 low
Because the four models live at different resolutions, “the same profile” is partly a thought experiment (scGPT/Tahoe want single cells; BulkFormer/EVA want a whole-sample vector). But run it through each and the representational philosophies line up cleanly:
| scGPT | Tahoe (Tx1 / STATE) | BulkFormer | EVA-RNA | |
|---|---|---|---|---|
| resolution | single cell | single cell (cancer lines) | bulk sample | bulk / pseudobulk sample |
| genes used | ~1–3k highly-variable | ~1–2k highest-expressed | all 20,010 | filtered whole-sample set |
| gene token init | random, then learned | random (Tx1) | ESM-2 protein warm-start | 5-source knowledge warm-start |
| value encoding | 51 rank bins (magnitude lost) | ~48 bins (Tx1) | continuous (Rotary Expr. Emb.) | continuous (MLP 1→…→768) |
| what CYP1A2 becomes | gene=CYP1A2 + bin=4 + batch | same + <drug> token (Tx1-3B) | ESM-2(CYP1A2) + continuous 7.4 | 5-prior(CYP1A2) + continuous 7.4 |
| perturbation/metadata | batch only | drug (SMILES/fingerprint) + dose in data | none in input (LINCS only downstream) | none (implicit platform norm) |
| objective | masked-value MSE | masked MSE (+ ST response head) | masked-value MSE | masked ZINB likelihood |
| species | human (ID vocab) | human | human (ID vocab, ESM-2 init) | human + mouse (ortholog-unified) |
| attention | custom known/unknown mask | dense FlashAttention-2 (Tx1); set-of-cells (STATE) | GCN + Performer (linear) | standard self-attention |
Read the middle rows top to bottom and you see the field’s trajectory in one column-sweep: random → warm-started gene identities, binned → continuous values, MSE → count-likelihood objectives, single-species → ortholog-unified. scGPT sits at the “everything learned from scratch, magnitude discarded” end; EVA sits at the “everything primed with priors, magnitude and counts respected, species unified” end. Tahoe’s contribution is orthogonal to that axis — it is the only one whose data carries the intervention (drug + dose) — and BulkFormer’s is the modality (dense bulk) and the whole-genome context.
26.2 Who is built for what: single-cell, perturbational, bulk
The models are often lumped as “transcriptomic FMs,” but they occupy three different data regimes, and confusing them is the source of most unfair comparisons (recall EVA’s off-distribution baselines, §25.6).
| regime | model(s) | what defines it | native unit |
|---|---|---|---|
| single-cell, observational | scGPT | sparse per-cell snapshots, no intervention | one cell |
| single-cell, perturbational | Tahoe (STATE, Tahoe-x1) | per-cell, but each cell was dosed with a drug | one treated cell / a population |
| bulk / patient-level | BulkFormer, EVA-RNA | dense whole-sample averages | one sample/patient |
Consequences that matter for the book:
- Perturbation lives only in Tahoe. scGPT, BulkFormer, and EVA pretrain on observational data; only Tahoe’s corpus was generated by intervention. Every one of the others must bolt on perturbation downstream (BulkFormer via LINCS fine-tuning; EVA via its treatment tasks), and all of them hit the same wall — perturbation prediction barely beats a linear baseline (
18§18.4). - Toxicogenomics is bulk. DrugMatrix, TG-GATEs, and much of L1000 are bulk, so BulkFormer and EVA are the modality match; scGPT and Tahoe are not, and using them for tox means a resolution conversion (pseudobulk) or a type-error (
11_SC_FOUNDATION_MODELS.md§3). - Nobody is both perturbational and bulk and dose/time-resolved — which is exactly the empty cell toxicogenomics needs filled (§26.4–26.5).
26.3 Which design choices actually earn their keep
Separating genuine, portable wins from data/benchmark effects (18 §18.7). Ranked from most to least clearly beneficial:
Clearly worth adopting (ablated or mechanistically sound, architecture-agnostic):
- Continuous, magnitude-preserving value encoding (BulkFormer’s REE, EVA’s MLP) over rank-binning (scGPT, Tahoe-x1). Binning discards the dose/effect-size axis by construction (§22.7); continuous encoding keeps it, and both bulk models chose it. The single most important representational fix.
- Knowledge-initialized gene embeddings — EVA’s five-source warm start (protein + text + knowledge-graph + prior-model), BulkFormer’s ESM-2. EVA’s ablation shows it converges faster to lower loss. A cheap, strong prior that also enables cross-species transfer, and fully portable.
- A count-aware objective (ZINB) — EVA — over MSE-on-values/bins. Respects the sparsity and overdispersion of real counts; the same reason scVI uses it.
- Ortholog-unified cross-species vocabulary — EVA (human+mouse). The first-class way to get transfer, and (with ESM-2 init) nearly free to extend to new species. The book’s rat↔human bridge, demonstrated.
Effective but domain-specific:
- Interventional pretraining data — Tahoe. Not an architecture at all, but the thing most likely to actually improve perturbation prediction; its absence is why the others fail that task.
- Efficient attention for whole-genome context — BulkFormer’s Performer (linear), Tahoe-x1’s dense FlashAttention-2. Enabler, not accuracy driver: it lets you keep all ~20k genes instead of subsetting, which matters for bulk.
- Set-level (cell-as-token) attention — STATE. A genuinely different inductive bias for modeling perturbation as a population shift; promising but not yet clearly decisive.
Probably over-credited:
- Model scale alone. EVA shows clean scaling on held-out loss (no plateau at 305M), but headline task gains across all four are heavily confounded by data and benchmark choice; scale helps, but is not where the big wins have come from.
- The GCN co-expression prior (BulkFormer). Helps, but risks baking in batch/technical correlation (§24.7); a learned or batch-corrected graph would be safer.
- Custom generative masking (scGPT’s known/unknown scheme). Elegant, but Tahoe-x1 dropped it for plain dense attention and got a big efficiency win with no reported accuracy loss — evidence it wasn’t carrying much weight.
The through-line: the wins that survive scrutiny are representational (how you encode genes and values, what objective you use, how you unify species) and data-level (interventional vs observational). The pure-architecture flourishes (custom masks, graph priors, even scale) are the least load-bearing — a direct restatement of the book’s skepticism.
26.4 The gaps all four still share
Line the models up against what toxicogenomics actually requires and the same empty columns appear for every one:
| requirement | scGPT | Tahoe | BulkFormer | EVA | shared gap? |
|---|---|---|---|---|---|
| magnitude preserved | ✗ (bins) | ✗ (bins) | ✓ | ✓ | partial |
| interventional pretraining | ✗ | ✓ | ✗ | ✗ | mostly missing |
| dose and time together | ✗ | dose only, 1 time | ✗ | ✗ | all |
| fold-change vs control input | ✗ | ✗ | ✗ | ✗ | all |
| rat (tox species) | ✗ | ✗ | ✗ | ✗ (human+mouse) | all |
| causal mechanism (not co-expression) | ✗ | weak | ✗ | ✗ | all |
| cell-composition / deconvolution | n/a | n/a | ✗ | ✗ | bulk models |
| beats linear baseline on perturbation | ✗ | contested | ✗ | ✗ (tie) | all |
| independent replication | mixed | ✗ | ✗ | ✗ | most |
Five gaps are shared by every model and are exactly the toxicogenomics axes:
- No dose × time. Tahoe has 3 doses at one time point; the rest have neither. Toxicology is concentration × time — the one thing none of them models jointly.
- No fold-change representation. All four ingest absolute expression; DrugMatrix/TG-GATEs/L1000 speak in signed treated-vs-control log-fold-change (
11§3). Every model would need an input/output mode change to be natively comparable. - No rat. Only EVA is cross-species, and it is human+mouse; the tox workhorse species is absent from all four. (The ESM-2/ortholog route makes this the most fixable of the five.)
- Statistics, not mechanism. Every model is, on the evidence, a strong co-expression learner; none demonstrates causal, dose-dependent regulatory understanding — which is why they all fail the perturbation task against a linear baseline.
- Evaluation you can’t fully trust yet. Favorable/in-house benchmarks, off-distribution baselines, and thin or absent independent replication recur across all four. The honest bar — beat a linear model on truly held-out perturbations — is cleared by none.
That empty region — interventional + bulk + dose/time-resolved + fold-change + rat-capable — is not a niche. It is precisely the toxicogenomics foundation model that does not yet exist, and the reason the book keeps returning to the gap.
26.5 The research directions most worth pursuing
Synthesizing the four improvement sections (§22.8, §23.8, §24.8, §25.8) into one prioritized agenda for a toxicogenomics transcriptomic foundation model, ranked by value × feasibility. Each names the source idea, the datasets, and the metric+baseline — the 21_TASK_ARITHMETIC.md §21.11 discipline (a defined evaluation before the model is built).
Tier 1 — high value, high feasibility (do these first; single- to few-GPU on existing checkpoints):
- Start from BulkFormer or EVA-RNA, not scGPT. They are already the right modality (bulk), magnitude-preserving, and — EVA — cross-species and count-aware. The next tox model is a continuation of these, not a rebuild. (§24.8, §25.8)
- Add a fold-change (treated-vs-control) input/output mode. Use matched controls to predict signed log-fold-change, aligning the model’s currency with tox. Data: DrugMatrix/TG-GATEs/L1000. Metric: signed-direction accuracy + magnitude correlation on held-out compounds vs a per-gene mean-shift and a linear baseline. (§24.8-1, §23.8-5)
- Add dose + time conditioning tokens with a monotonicity constraint. Data: Open TG-GATEs (dose × time). Metric: hold out a dose/time, predict it; dose-ordering + interpolation vs linear-in-log-dose. (§24.8-2, §23.8-3)
- Extend the ortholog-unified vocabulary to rat via ESM-2. EVA’s mouse↔human machinery + BulkFormer’s ESM-2 init make this mechanical: embed rat proteins, align orthologs, continue-pretrain on rat bulk. Data: rat DrugMatrix/TG-GATEs. Metric: rat→human direction transfer, stratified by ortholog conservation (
20§20.6). (§24.8-3, §25.8-2)
Tier 2 — high value, heavier (a pretraining run, but existing corpora):
- Interventional + count-aware pretraining. Continue-pretrain on bulk perturbation corpora (L1000, DrugMatrix, TG-GATEs) with a ZINB objective and the fold-change + dose/time modes above — the one change most likely to finally beat the linear baseline on perturbation. Baseline: the linear model (
18§18.4), non-negotiable. (§23.8-4, §25.8-3) - Knowledge-initialized gene embeddings (5-source) for a tox model, so a small tox corpus inherits mechanism priors (pathways, targets) it can’t learn itself. (§25.8-1)
Tier 3 — important correctness/verification work:
- Deconvolution-aware modeling (bulk mixes cell types; toxicant effects are often composition shifts). Add an auxiliary cell-fraction head. (§24.8-6)
- Shortcut-proof, decision-relevant evaluation — held-out drugs/lines/species, score on DE genes + discrimination, always report the linear baseline, and validate cross-species integration with EVA-style interpretability probes (do rat and human orthologs align in the learned space?). (§23.8-4, §25.8-6)
What the composite looks like. Put Tier 1–2 together and the design writes itself: a BulkFormer/EVA-style bulk encoder — continuous values, ESM-2 + knowledge-initialized rat/mouse/human ortholog-unified gene embeddings, a ZINB objective — pretrained on interventional bulk perturbation data with fold-change output and dose + time conditioning, and evaluated against the linear baseline on held-out compounds and species. Every component already exists in one of the four models; none of the four combines them; and that combination is the toxicogenomics foundation model the book has been arguing for. The contribution is not a new architecture — it is the disciplined assembly of the choices that survived §26.3, aimed at the gap that survived §26.4.
26.6 Closing: convergence, and the one missing model
Read as a group, the four models tell a coherent story. The field started (scGPT) by treating a cell like a bag of ranked gene tokens with everything learned from scratch, and has moved — through Tahoe’s interventional data, BulkFormer’s magnitude-preserving bulk modeling, and EVA’s knowledge-primed, count-aware, cross-species representation — toward models that respect what transcriptomic data actually is. The remaining distance to a toxicogenomics foundation model is short and specific: four axes (rat, dose, time, fold-change), an interventional bulk corpus, and an honest linear-baseline evaluation. None of the four crosses that last stretch, but between them they have built every piece required to. That is the opening the rest of this book’s program (20–21, and the four readings here) is aimed at — and it is, encouragingly, an assembly problem more than an invention problem.
This chapter is synthesis, not new results; every claim traces to the four readings (22_READING_SCGPT.md–25_READING_EVA.md) and the sources cited there. The comparison deliberately foregrounds the book’s standing caveat — data and evaluation usually outweigh architecture — so the “which choices work” ranking (§26.3) credits ablated, portable, representational wins over pure-architecture flourishes, and the shared-gap table (§26.4) is what the research agenda (§26.5) is built to fill. Model facts (bins, params, objectives, species, corpora) are as stated and flagged in the individual chapters; several models’ headline numbers remain developer-reported without independent replication. This closes the four-model reading series.