botanic1-report / sae-features.html
Jean Ogier du Terrail
Point technical report links and BibTeX at bioRxiv v2 (2026.09.04.749355v2, posted 2026-09-09)
fd66581
Raw History Blame
15.3 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Botanic1 sparse features</title>
<meta name="description" content="Sparse autoencoder features of Botanic1-M read out base by base over annotated genomic windows in four plant species.">
<script>(function(){try{var t=new URLSearchParams(location.search).get('__theme');if(t==='dark'||t==='light')document.documentElement.setAttribute('data-theme',t);}catch(e){}})();</script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@500;600;700;800&amp;family=Spectral:ital,wght@0,400;0,500;0,600;1,400&amp;family=IBM+Plex+Mono:wght@400;500;600&amp;display=swap">
<link rel="stylesheet" href="assets/site.css?v=20260908-use-case">
<link rel="stylesheet" href="assets/sae.css?v=20260908-case2">
<link rel="stylesheet" href="assets/sae-sources.css?v=20260908-case2">
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js"></script>
</head>
<body>
<header class="topbar"><div class="inner"><a class="lockup" href="index.html"><div class="wordmark" aria-label="BOTANIC-1"><span class="cell">B</span><span class="cell">O</span><span class="cell">T</span><span class="cell">A</span><span class="cell">N</span><span class="cell">I</span><span class="cell">C</span><span class="cell tok" data-state="masked"><span class="probs"><i></i><i class="top"></i><i></i><i></i></span>?</span></div><span class="org"><svg class="living-models-mark" width="18" height="20" fill="currentColor" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 85.90 91.50"><rect x="55.1000" y="2.1000" width="3.2000" height="53.2000" /><rect x="55.1000" y="61.3000" width="3.2000" height="28.1000" /><rect x="68.9000" y="9.2000" width="3.2000" height="15.5000" /><rect x="68.9000" y="30.6000" width="3.2000" height="51.7000" /><rect x="82.7000" y="24.7000" width="3.2000" height="42.2000" /><rect x="41.4000" y="0.0000" width="3.2000" height="11.6000" /><rect x="41.4000" y="17.5000" width="3.2000" height="74.0000" /><rect x="27.6000" y="2.1000" width="3.2000" height="70.7000" /><rect x="27.6000" y="78.7000" width="3.2000" height="10.6000" /><rect x="13.8000" y="9.2000" width="3.2000" height="25.0000" /><rect x="13.8000" y="40.2000" width="3.2000" height="42.2000" /><rect x="0.0000" y="24.7000" width="3.2000" height="42.2000" /></svg>Living Models</span></a><nav aria-label="Pages"><a href="index.html">Overview</a><a href="factory.html">Model factory</a><a href="leaderboard.html">Leaderboard</a><a href="causal-variants.html">Causal variants</a><a href="sae-features.html" aria-current="page">SAE features</a><a href="use-case.html">Use case</a><a href="corpus.html">Corpus</a><a class="ext" href="https://huggingface.co/collections/living-models/botanic1-6a97f4e3c33f3d109a75057d" target="_blank" rel="noopener">Models</a></nav></div></header>
<div class="page">
<main class="prose">
<p class="kicker">Interpretability</p>
<h1>Sparse features are readable genomic concepts</h1>
<p class="lede">A sparse autoencoder decomposes one layer of a frozen Botanic1-M into 8,192
features, fitted with no genomic annotation at all. Single features nonetheless detect
splice donors and acceptors at MCC 0.871 and 0.873, intron bodies, and each of the three
positions in a codon. Two of them read zero where TAIR10 and Araport11 annotate a splice
donor &mdash; and in 2026 TAIR12 moved that donor to where they fire.</p>
<p>The browser below reads that dictionary out base by base over 21 precomputed windows.
Every value drawn is a measurement; the annotation rows are a separate, paler register and
never an input to a number on this page.</p>
<h2 id="choose">Choose a window</h2>
<p>Each window is 8,191 bp, the model's native context, and each was chosen because it
shows something. Ten are windows where the features track the annotation closely: over 384
windows scanned, the splice features fire at a median 95% of the annotated donors and
acceptors, and these are the clearest of them. Eight are disagreements &mdash; five where a
feature marks a splice site the canonical transcript drops but another annotated isoform
uses, three where it marks a site no annotated transcript uses at all. Each of those eight
also carries a verdict from a register independent of the annotation, and one of the three
is a site an RNA-seq atlas measures in use. Two are loci where the annotation itself moved
between releases. The last is the <em>AT1G65170</em> locus the report's
annotation-correction result is drawn from.</p>
<p>A released annotation says which splice sites someone drew a transcript through. It
does not say which sites are <em>used</em>, and the two questions come apart exactly where
a feature disagrees with the annotation. So each of the eight disagreements carries a second
register, shown under the browser: for Arabidopsis, AtRTD3's 169,503 long-read transcripts,
the 2026 TAIR12 reannotation, and PastDB's usage measurements over 202 RNA-seq samples, all
three on the same TAIR10 coordinates the windows are cut from.</p>
<p class="note">The three verdicts are different claims, and only one of them is a
discovery. <strong>Used</strong> means an independent register records the site in use:
chr1:21,735,155, which no transcript model carries, is an alternative 3&prime; splice site
in PastDB running at up to 7.5% against the dominant site's 99.8%, and both Arabidopsis
alternative-isoform sites are ones TAIR12 keeps while dropping the canonical site the
feature reads near zero at. <strong>Untestable</strong> means the registers cover the locus
and still cannot answer: chr5:5,427,495 sits 23 bp upstream of the start codon of a gene
with one transcript, no annotated 5&prime; UTR and a median expression of 0.00 cRPKM, so no
read can confirm or refute it. <strong>Untested</strong> means no register was consulted at
all &mdash; the rice and maize disagreements, where no long-read transcriptome or splicing
atlas on those assemblies was checked. A feature firing where nothing is annotated is not
evidence of a discovery until a register says so, and it is not presented as one here.</p>
<p class="label" id="win-label">Window</p>
<div class="win-picker" id="win-picker" role="group" aria-labelledby="win-label"></div>
<noscript><p class="small">The window picker requires JavaScript.</p></noscript>
<div class="feat-stage">
<figure class="feat-browser" aria-labelledby="feat-title">
<div class="feat-heading">
<div>
<h2 id="feat-title">A genomic window, feature by feature</h2>
<p id="feat-sub"></p>
</div>
<div class="feat-tools" role="group" aria-label="Window navigation">
<button type="button" class="zoom" id="feat-out" aria-label="Zoom out" disabled>&minus;</button>
<button type="button" class="zoom" id="feat-in" aria-label="Zoom in" disabled>+</button>
<button type="button" id="feat-full" disabled>Whole window</button>
<button type="button" id="feat-panel-toggle" aria-expanded="false" aria-controls="feat-panel" disabled>Top features</button>
<button type="button" id="feat-controls-toggle" aria-expanded="true" aria-controls="feat-controls" disabled>Lanes</button>
<button type="button" class="help" id="feat-help-toggle" aria-expanded="false" aria-controls="feat-help-panel" aria-label="How to read this browser">?</button>
<div class="feat-help-panel" id="feat-help-panel" role="group" aria-labelledby="feat-help-title" hidden>
<p class="fh-title" id="feat-help-title">How to read this browser</p>
<p id="feat-help">Hover a base to inspect it; click or press Enter to pin it, Escape to
unpin. Drag to pan, pinch or + and &minus; to zoom, arrow keys to step base by base (hold
Shift to stride), Home for the whole window. <em>Top features</em> opens a movable panel
ranking the strongest features at the pinned base.</p>
<p class="fh-lanes">Each window opens on one lane per genomic category &mdash; splice
donor, splice acceptor, intron, coding sequence, the three codon positions, and whichever
other annotated element the dictionary marks best here. Each lane is the feature that
matches that category best in <em>this</em> window, searched over every feature the window
stores rather than a shortlist, scored as Matthews correlation against the annotated
category. The threshold is the best of six percentiles of the feature's own values in the
window, so the score describes the picture in front of you and is not an out-of-sample
estimate. Codon positions are derived from the canonical transcripts' coding sequence in
transcription order, because the label tracks carry region and site classes but not
reading frame. <em>Top features</em> ranks the strongest features at the pinned base out
of all 8,192 and any of them can be given a lane: this dictionary keeps 64 features per
base and zeroes the rest, and each window carries a complete track for every feature that
reaches a base's top eight anywhere in it.</p>
</div>
</div>
</div>
<p class="feat-region" id="feat-region">Select a window to read its features base by base.</p>
<div class="feat-scroll"><div id="feat-plot"></div></div>
<div class="feat-readout" id="feat-readout" aria-live="polite" aria-atomic="true"></div>
<aside id="feat-panel" hidden></aside>
<div class="feat-case" id="feat-case" aria-label="What this window shows"></div>
<figcaption>
<span>Activations: <span class="num" id="feat-prov"></span></span>
</figcaption>
<noscript><p class="feat-fallback">Enable JavaScript to read the features base by base.
<a href="https://www.biorxiv.org/content/10.64898/2026.09.04.749355v2">Read the interpretability section in the report &#8599;</a></p></noscript>
</figure>
<aside id="feat-controls" class="feat-dock" aria-labelledby="controls-title">
<p class="dock-title" id="controls-title">Colouring and lanes</p>
<div class="dock-body">
<p class="label" id="mode-label">Colouring</p>
<div class="seg" id="feat-mode" role="group" aria-labelledby="mode-label">
<button type="button" data-mode="selected" aria-pressed="true">Top of the shown lanes</button>
<button type="button" data-mode="global" aria-pressed="false">Top of all 8,192</button>
</div>
<p class="label" id="list-label">Feature lanes</p>
<div class="feat-list" id="feat-list" role="group" aria-labelledby="list-label"></div>
</div>
</aside>
</div>
<h2 id="read">How to read the tracks</h2>
<ul>
<li><strong>Top strip.</strong> Every base takes the colour of the feature that fires
hardest on it, and stays grey where nothing fires. Base letters appear once the view is
narrow enough to hold them.</li>
<li><strong>Annotation rows.</strong> Region bands, single-base site ticks and gene
extents, one set per strand, in the paler register. They come from the species' released
annotation, never from the model.</li>
<li><strong>Feature lanes.</strong> One lane per shown feature. A stem's height is the
activation at that base as a fraction of that feature's peak in this window, so lanes are
scaled independently; the gutter carries each lane's maximum in view. A blank base is a
zero &mdash; the feature did not fire.</li>
<li><strong>Dashed outline.</strong> The anchor: the position the window sampler selected
on. It marks where we looked, not an annotation of that base.</li>
<li><strong>Readout.</strong> Under the plot: the coordinate, the base, the annotation on
both strands, every shown feature firing there, and the strongest feature of all 8,192.</li>
</ul>
<div class="ann-legend" aria-label="Annotation legend">
<span><i style="background:var(--ann-cds)"></i>CDS</span>
<span><i style="background:var(--ann-utr5)"></i>5&prime; UTR</span>
<span><i style="background:var(--ann-utr3)"></i>3&prime; UTR</span>
<span><i style="background:var(--ann-intron)"></i>intron</span>
<span><i style="background:var(--ann-ncrna)"></i>non-coding</span>
<span><i style="background:var(--ann-intergenic)"></i>intergenic</span>
<span><i class="site" style="background:var(--ann-tss)"></i>TSS</span>
<span><i class="site" style="background:var(--ann-tis)"></i>start codon</span>
<span><i class="site" style="background:var(--ann-donor)"></i>donor</span>
<span><i class="site" style="background:var(--ann-acceptor)"></i>acceptor</span>
<span><i class="site" style="background:var(--ann-stop)"></i>stop</span>
<span><i class="site" style="background:var(--ann-tts)"></i>TTS</span>
</div>
<h2 id="named">The twelve named features</h2>
<p>The dictionary carries no names: nothing upstream assigns a feature a meaning. These
twelve have one because the report measures what they detect. The two splice features
and the intron feature are the best detector of their annotation class in every one of the
four annotated genomes, at MCC 0.821 to 0.937 for the splice classes and 0.650 to 0.741
for intron, so the naming does not rest on one genome. f4131 and f2634 are also the pair a
two-level decision tree selects in all five chromosome folds, sorting a candidate
<code>GT</code> into decoy, intermediate-usage or constitutive donor at a balanced accuracy
of 0.841 [0.827, 0.855].</p>
<p class="note">Two features the report names are deliberately absent here. Asked for a
transcription start site or a termination site, the best feature in the dictionary reaches
MCC 0.035 and 0.029 &mdash; consistent with neither site having a sharp sequence consensus in
plants. They are a real negative result, and a lane for either would mark nothing, so neither
is offered.</p>
<noscript><p class="small">The feature tables are built from <code>data/sae/index.json</code> and require JavaScript.</p></noscript>
<div class="tablewrap"><table id="named-table"><caption>Evidence as published. Bold marks the three features that are the best detector of their annotation class in every one of the four annotated genomes.</caption></table></div>
<h2 id="sources">Annotation sources</h2>
<p>The annotation register is read from each species' released annotation, and the browser
names the assembly of every window it draws.</p>
<div id="sources-body"></div>
<p class="note">The report's interpretability section carries the methodology, the full
figure and the annotation history of the locus:
<a href="https://www.biorxiv.org/content/10.64898/2026.09.04.749355v2">Botanic1 technical report &#8599;</a></p>
</main>
<footer class="site-footer">
<p>Living Models, Paris. Botanic1 is released for research use under the Living Models research licence.</p>
<p>Activations are produced by the sparse autoencoder of the report's interpretability section, read out over annotated windows through the interpretability engine.</p>
</footer>
</div>
<div class="tip" id="tip" role="tooltip"></div>
<script src="assets/hero.js"></script>
<script src="assets/sae-browser.js?v=20260908-case2" defer></script>
<script src="assets/sae-tables.js?v=20260908-case" defer></script>
</body>
</html>