← Back to Biohub
Predicted expression across 63 tissues and cell lines at transcriptome scale.

VariantFormer is a 1.2-billion-parameter genomic model built to interpret human genetic variation in the context of an individual genome. It learns how combinations of variants, regulatory sequence and tissue context relate to gene activity, producing personalized representations that can be used for expression prediction, variant-effect analysis and downstream disease-risk modeling. In the paper, those representations are used to estimate eQTL effects, study variation across ancestries, stratify Alzheimer’s disease risk and test counterfactual genetic edits.

For the release, gene expression became the clearest way to make those capabilities tangible. A researcher could start with a genome, choose a gene, and see how the model expected its activity to differ across tissues before moving into more specialized workflows.

What I owned

The goal was to turn a flexible research model into a release that made its capabilities clear, differentiated, and useful to researchers outside the team.

Product strategy and positioning
Worked with the AI research team to identify the strongest application for the release and position VariantFormer within the emerging genomic foundation model landscape. The model supported several possible workflows; tissue-specific gene expression became the lead experience because it made the effect of an individual genome immediately legible while demonstrating a capability that was distinct from other models in the space.
Interactive product experience
Designed and built the interactive experience around that use case, including the anatomogram, tissue-level readouts, and tissue clustering. The release site ran on a markdown-based publishing stack and VariantFormer was not available through hosted inference, so we used representative model outputs and browser-side interaction to deliver an application-like experience within the infrastructure we already had.
Technical enablement and scientific communication
Built the end-to-end technical workflow around the model, including the marimo notebook from VCF input through inference and interpretation. I also developed the walkthroughs, demos, and scientific communication materials used to explain the model externally, including artifacts shown at NeurIPS.
Launch strategy and execution
Shaped the external launch across narrative, sequencing, and deliverables. I authored Genomics research for all for the Biohub blog and brought together the interactive experience, technical documentation, demos, and launch materials into a coherent researcher-facing release.

The architecture, training, and scientific research were the AI research team’s work. I owned the product and release layer around that research: positioning the model, defining the lead experience, and carrying it through technical enablement and external release.

Explore predicted expression across tissues

Pick a gene and the body map colours each tissue by predicted expression, with all 63 listed beside it, ranked by value or grouped by body system.

Loading 17,859 genes across 63 tissues…

The explorer with APOE selected: a gene field showing the symbol and its Ensembl accession, and under it two dropdowns, one reading expression and one reading male. Below them two columns starting on the same line. On the left the highest-ranked 27 of the 63 tissues as a histogram, one labelled row each, with bar length and colour carrying the same number, running from pale yellow at the adrenal gland and the liver down through orange to pink at the testis. On the right a human body diagram with its organs coloured on the same scale. Centred under both, the magma ramp with the gene’s lowest and highest values at its ends, 1.03 and 8.31.
APOE, and the 27 highest of its 63 tissues. The interactive version needs a wider screen: it loads about 1.7 MB of predictions, and it shows the tissue detail on hover, which a touch screen cannot do.

About these predictions

One individual
Every value shown is a prediction for a single individual genome. A different genome would produce different predictions.
15 tissues map to broader anatomy
Fifteen of the 63 tissues do not have a dedicated region on the anatomogram, so they are mapped to a broader anatomical region. The interface identifies that region on hover.
10 are cell lines
Ten of the 63 outputs are cultured cell lines rather than anatomical tissues. They appear in the histogram but not on the body map.

How the matrix works

One matrix, two views
The gene explorer and genome-wide map use the same 1.07 MB quantised matrix of saved VariantFormer predictions. The heatmap does not fetch another dataset; it redraws the matrix already in memory as 17,859 genes by 63 tissues.
Rendering 17,859 genes
At full extent, 17,859 rows have to fit into roughly 700 screen pixels, so the browser cannot display every row individually. It samples rows at the overview level, then renders every gene in a selected region when you drag to zoom.
Client-side interaction
Gene selection, tissue ordering, the anatomogram and heatmap all run in the browser. Supporting metadata loads only when needed, and the interactive experience does not require an application backend or send data to a third party.
Attribution
The model, anatomogram artwork and tissue mappings come from czi-ai/variantformer, MIT licensed. Tissue descriptions come from UBERON. The interaction layer on this page is a new browser implementation built against the published model outputs.

Making the model legible

VariantFormer needed a concise way to explain a model whose capabilities span personalized expression prediction, variant effects, and counterfactual editing. I wrote, designed, and produced a 1:25 explainer that became a primary visual asset for the launch and was later shown at NeurIPS. Built in Remotion, it translates the model’s core ideas into a sequence of programmable figures and animations rendered from React.

From individual genetic variation to tissue-specific expression and in-silico editing, compressed into the narrative used to introduce VariantFormer externally.