vcabeli commited on
Commit
8424395
·
verified ·
1 Parent(s): c0331c1

Simplify landing copy and add workflow tabs

Browse files

Lead with model size, land-plant coverage, and measured results. Link to model-card workflows and the report. Add accessible tabs and responsive landing styles.

Files changed (4) hide show
  1. README.md +11 -8
  2. assets/landing.css +67 -0
  3. assets/landing.js +61 -0
  4. index.html +89 -139
README.md CHANGED
@@ -6,15 +6,19 @@ colorTo: gray
6
  sdk: static
7
  app_file: index.html
8
  pinned: false
9
- short_description: Botanic1 plant genomic foundation models, in short
10
  ---
11
 
12
  # Botanic1
13
 
14
- Static Space for the Botanic1 models (Living Models): what they are, how to use them, how they perform, with the technical report linked for depth. Pages:
15
 
16
- - `index.html`: the overview, quick start, the live overview figure, and one short
17
- result per message with a live figure.
 
 
 
 
18
  - `factory.html`: the model factory, with the report's S1 and data-pipeline figures.
19
  - `leaderboard.html`: the S_bal^test leaderboard, the nine-family scorecard and the
20
  size and training-token views, filterable and sortable.
@@ -32,10 +36,9 @@ token cells whose last cell is masked and then predicted (`assets/hero.js`), and
32
  corpus's dated family tree drawn as a radial medallion on the report page
33
  (`data/tree.json`, built from `figures/data/plants_family_timetree5.nwk`). Manrope for
34
  headings and controls, Spectral for reading, IBM Plex Mono for tokens, labels and
35
- numbers. Figure 1 is drawn live by `assets/figure1.js` from the same JSON the other
36
- pages read: an animated masked-language-modelling strip on a 40 bp window of PHYB,
37
- the six evaluation regimes, a context-size axis that sweeps on scroll, and the
38
- ranking with organisation logos.
39
 
40
  Every page shares the top bar written by `scripts/patch_headers.py`; rerun it after
41
  adding a page.
 
6
  sdk: static
7
  app_file: index.html
8
  pinned: false
9
+ short_description: Genomic language models for land plants
10
  ---
11
 
12
  # Botanic1
13
 
14
+ Static landing page for the Botanic1 models (Living Models), linking to the model cards and technical report. Pages:
15
 
16
+ - `index.html`: a short factual overview, workflow links, and model and dataset
17
+ links, organised in three tabs. The landing page uses `assets/landing.css` and
18
+ `assets/landing.js`; all sections remain readable without JavaScript. A future
19
+ SAE tab can be added with a tab link and matching section, without changing the
20
+ tab controller. Setup, code examples, and model specifications stay in the model
21
+ cards; the usage tab links to the relevant sections.
22
  - `factory.html`: the model factory, with the report's S1 and data-pipeline figures.
23
  - `leaderboard.html`: the S_bal^test leaderboard, the nine-family scorecard and the
24
  size and training-token views, filterable and sortable.
 
36
  corpus's dated family tree drawn as a radial medallion on the report page
37
  (`data/tree.json`, built from `figures/data/plants_family_timetree5.nwk`). Manrope for
38
  headings and controls, Spectral for reading, IBM Plex Mono for tokens, labels and
39
+ numbers. Detailed charts remain on the benchmark and corpus pages. The overview
40
+ states a few results from the report and links to their evaluations. The original
41
+ Figure 1 renderer remains available in `assets/figure1.js`.
 
42
 
43
  Every page shares the top bar written by `scripts/patch_headers.py`; rerun it after
44
  adding a page.
assets/landing.css ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* The landing page shares the Space's identity; detail pages keep their layout. */
2
+ .landing .hero .inner { padding-top: 12px; padding-bottom: 12px; }
3
+ .landing .medallion { width: min(650px, 94vw); }
4
+ .landing .medallion .centre { padding: 36px 22px; }
5
+ .landing .medallion .wordmark { --cell: clamp(29px, 4.6vw, 51px); margin-top: 22px; }
6
+ .landing .hero h1 { margin: 22px auto 0; font-size: clamp(23px, 3.2vw, 32px); line-height: 1.2; }
7
+ .landing .hero-summary { max-width: 37ch; margin: 16px auto 0; color: var(--ink-2); font-size: 18px; line-height: 1.5; text-wrap: balance; }
8
+ .landing .chips { margin-top: 24px; }
9
+ .landing .chips a { font-size: 14px; padding: 11px 20px; }
10
+ .landing-content { max-width: 1060px; padding-bottom: 32px; }
11
+ .landing-tabs { display: flex; flex-wrap: wrap; gap: 10px 32px; border-bottom: 1px solid var(--rule); margin-top: 16px; }
12
+ .landing-tabs a { padding: 16px 0 13px; font-family: var(--sans); font-size: 15px; font-weight: 600; text-decoration: none; border-bottom: 3px solid transparent; color: var(--ink-2); }
13
+ .landing-tabs a:hover { color: var(--ink); }
14
+ .landing-tabs a[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--accent); }
15
+ .landing-panel { padding-top: 32px; scroll-margin-top: 110px; }
16
+ .landing-panel[hidden] { display: none; }
17
+ .facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 64px; }
18
+ .fact { display: flex; flex-direction: column; align-items: flex-start; padding: 0 0 30px; margin-bottom: 28px; border-bottom: 1px solid var(--rule); }
19
+ .fact-label { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-2); margin: 0 0 10px; }
20
+ .fact h2 { margin: 0 0 14px; font-size: 26px; }
21
+ .fact > p:not(.fact-label):not(.fact-note) { margin: 0 0 14px; }
22
+ .fact-note { font-family: var(--sans); font-size: 12px; color: var(--ink-2); margin: auto 0 16px; }
23
+ .text-link { font-family: var(--sans); font-weight: 600; font-size: 13px; }
24
+ .panel-note { font-family: var(--sans); font-size: 13px; line-height: 1.6; color: var(--ink-2); margin: 0; max-width: 86ch; }
25
+ .section-intro h2 { margin: 0 0 12px; font-size: 26px; }
26
+ .section-intro p { margin: 0 0 24px; max-width: 65ch; color: var(--ink-2); }
27
+ .workflow-list { margin: 30px 0; }
28
+ .workflow { display: grid; grid-template-columns: minmax(0, 1fr) 210px; gap: 48px; align-items: center; padding: 24px 0; border-top: 1px solid var(--rule); }
29
+ .workflow h3 { margin: 0 0 10px; }
30
+ .workflow p { margin: 0; max-width: 62ch; }
31
+ .resource-list { margin: 36px 0; }
32
+ .resource-list > a { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 20px; padding: 18px 0; border-top: 1px solid var(--rule); font-family: var(--sans); font-size: 15px; font-weight: 600; text-decoration: none; }
33
+ .resource-list > a:hover > span:first-child { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 4px; }
34
+ .resource-list .small { font-weight: 500; }
35
+ .landing .site-footer { margin-top: 48px; color: var(--ink-2); }
36
+
37
+ @media (max-width: 1000px) {
38
+ .landing .topbar .inner { flex-wrap: wrap; gap: 10px; }
39
+ .landing .topbar nav { gap: 8px 20px; }
40
+ }
41
+ @media (max-width: 640px) {
42
+ .landing .topbar .inner { padding: 10px 18px; }
43
+ .landing .topbar nav { font-size: 12px; gap: 4px 16px; }
44
+ .landing .hero .inner { padding: 18px 0 28px; }
45
+ .landing .medallion { width: 100%; min-height: 430px; }
46
+ .landing .hero-art { inset: 0 -8%; opacity: 0.65; }
47
+ .landing .medallion .centre { padding: 24px 16px; }
48
+ .landing .hero-summary { font-size: 16px; max-width: 31ch; }
49
+ .landing .chips { gap: 8px; }
50
+ .landing .chips a { font-size: 13px; padding: 10px 15px; }
51
+ .landing-content { padding-left: 20px; padding-right: 20px; }
52
+ .landing-tabs { gap: 8px 24px; }
53
+ .landing-tabs a { font-size: 13px; }
54
+ .facts { grid-template-columns: 1fr; gap: 0; }
55
+ .fact h2 { font-size: 24px; }
56
+ .fact { margin-bottom: 24px; padding-bottom: 24px; }
57
+ .fact-note { margin-top: 0; }
58
+ .workflow { grid-template-columns: 1fr; gap: 14px; }
59
+ .resource-list > a { grid-template-columns: 1fr; gap: 5px; }
60
+ .landing .site-footer { gap: 8px; }
61
+ }
62
+ @media (prefers-reduced-motion: reduce) { html:has(.landing) { scroll-behavior: auto; } }
63
+ @media print {
64
+ .landing-tabs { display: none; }
65
+ .landing-panel[hidden] { display: block; }
66
+ .landing .medallion { width: 100%; aspect-ratio: auto; }
67
+ }
assets/landing.js ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Progressive enhancement: without JS, the tab links jump to visible sections.
2
+ Add a link and matching panel to extend the tabs (for example, a future SAE tab). */
3
+ (function () {
4
+ const list = document.querySelector('.landing-tabs');
5
+ if (!list) return;
6
+ const tabs = Array.from(list.querySelectorAll('a[href^="#"]'));
7
+ const panels = tabs.map(tab => document.getElementById(tab.hash.slice(1)));
8
+ if (panels.some(panel => !panel)) return;
9
+
10
+ list.setAttribute('role', 'tablist');
11
+ tabs.forEach((tab, index) => {
12
+ tab.setAttribute('role', 'tab');
13
+ tab.setAttribute('aria-controls', panels[index].id);
14
+ panels[index].setAttribute('role', 'tabpanel');
15
+ panels[index].tabIndex = 0;
16
+ });
17
+
18
+ const activate = (index, focus = false) => {
19
+ tabs.forEach((tab, i) => {
20
+ const selected = i === index;
21
+ tab.setAttribute('aria-selected', String(selected));
22
+ tab.tabIndex = selected ? 0 : -1;
23
+ panels[i].hidden = !selected;
24
+ });
25
+ if (focus) tabs[index].focus();
26
+ };
27
+
28
+ const fromHash = () => {
29
+ const target = document.getElementById(location.hash.slice(1));
30
+ // Keep the original overview's quick-start and download links useful.
31
+ const aliases = { start: 'use', availability: 'models', cite: 'models', more: 'models', zeroshot: 'overview', scaling: 'overview', finetune: 'overview' };
32
+ const alias = aliases[location.hash.slice(1)];
33
+ const index = panels.findIndex(panel => panel.id === alias || panel === target || (target && panel.contains(target)));
34
+ activate(index < 0 ? 0 : index);
35
+ };
36
+
37
+ tabs.forEach((tab, index) => {
38
+ tab.addEventListener('click', event => {
39
+ if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0) return;
40
+ event.preventDefault();
41
+ activate(index);
42
+ // Preserve Hugging Face's query parameters when updating the fragment.
43
+ if (location.hash !== tab.hash) history.pushState(null, '', tab.hash);
44
+ });
45
+ tab.addEventListener('keydown', event => {
46
+ let next;
47
+ if (event.key === 'ArrowRight') next = (index + 1) % tabs.length;
48
+ if (event.key === 'ArrowLeft') next = (index + tabs.length - 1) % tabs.length;
49
+ if (event.key === 'Home') next = 0;
50
+ if (event.key === 'End') next = tabs.length - 1;
51
+ if (event.key === ' ' || event.key === 'Enter') next = index;
52
+ if (next === undefined) return;
53
+ event.preventDefault();
54
+ activate(next, true);
55
+ history.replaceState(null, '', tabs[next].hash);
56
+ });
57
+ });
58
+ window.addEventListener('hashchange', fromHash);
59
+ window.addEventListener('popstate', fromHash);
60
+ fromHash();
61
+ })();
index.html CHANGED
@@ -3,171 +3,121 @@
3
  <head>
4
  <meta charset="utf-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>Botanic1</title>
7
- <meta name="description" content="Botanic1: plant genomic foundation models by Living Models. What the models are, how to use them, and how they perform.">
8
  <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>
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@500;600;700;800&family=Spectral:ital,wght@0,400;0,500;0,600;1,400&family=IBM+Plex+Mono:wght@400;500;600&display=swap">
12
  <link rel="stylesheet" href="assets/site.css">
13
- <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js"></script>
 
 
 
14
  </head>
15
- <body>
16
- <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">Living Models</span></a><nav aria-label="Pages"><a href="index.html" aria-current="page">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="corpus.html">Corpus</a><a class="ext" href="https://huggingface.co/collections/living-models/botanic1-6a97f4e3c33f3d109a75057d">Models</a></nav></div></header>
17
- <section class="hero">
 
 
18
  <div class="inner">
19
  <div class="medallion">
20
  <div class="hero-art" id="hero-art" aria-hidden="true"></div>
21
  <div class="centre">
22
  <p class="org">Living Models</p>
23
  <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>
24
- <p class="eyebrow"><b>Foundation models for plant genomes</b>, from hundreds of base pairs to 128 kbp</p>
25
- <dl class="spec">
26
- <div><dt>context</dt><dd><b>100 bp to 128 kbp</b></dd></div>
27
- <div><dt>tokens</dt><dd>single nucleotide</dd></div>
28
- <div><dt>backbone</dt><dd>bidirectional Mamba2</dd></div>
29
- <div><dt>pre-training</dt><dd>314.6B tokens · <b>320 species</b></dd></div>
30
- <div><dt>sizes</dt><dd>318M to 3.2B</dd></div>
31
- </dl>
32
  <div class="chips">
33
- <a class="primary" href="https://huggingface.co/collections/living-models/botanic1-6a97f4e3c33f3d109a75057d">Models</a>
34
- <a href="https://huggingface.co/spaces/living-models/botanic-gemma-chat">Try it in the chat demo <span class="ext">↗</span></a>
35
  <a href="botanic1-report.pdf">Technical report <span class="ext">PDF</span></a>
36
- <a href="https://huggingface.co/datasets/living-models/Botanic1-pretraining">Pre-training data</a>
37
- <a href="https://huggingface.co/datasets/living-models/Botanic1-causal-variants">Causal-variant benchmark</a>
38
  </div>
39
  </div>
40
  </div>
41
  </div>
42
  </section>
43
 
44
- <div class="page">
45
- <main class="prose">
46
- <div class="titleblock">
47
- <p class="kicker">Overview</p>
48
- <h1>What Botanic1 is</h1>
49
- </div>
50
- <p class="lede">Botanic1 is a family of four genomic language models for plants, from 318M to 3.2B parameters. Each one is a bidirectional Mamba2 encoder pre-trained with masked language modelling on single-nucleotide tokens, over 320 species spanning the land plants, on up to 131,072 bp windows.</p>
51
- <p>The models read raw DNA and return two things. An embedding per nucleotide, which trains small probes or fine-tunes to a new task. And a likelihood for every base, which scores a variant with no annotation, alignment or population data. All four sizes rank at the top of the frozen-model benchmark against 20 plant and generalist genomic language models, after 314.6B training tokens where the closest competitor used about 4 trillion.</p>
52
- <p>Botanic1-S, Botanic1-M and Botanic1-L are released for research use. The <a href="botanic1-report.pdf">technical report</a> has the full evaluation; this page is the short version.</p>
53
-
54
- <h2 id="start">Get started</h2>
55
- <div class="tablewrap">
56
- <table class="models-table">
57
- <thead><tr><th>Model</th><th class="n">Parameters</th><th class="n">Blocks</th><th class="n">Hidden size</th><th class="n">Context</th><th>Repository</th></tr></thead>
58
- <tbody>
59
- <tr class="ours"><td class="name">Botanic1-S</td><td class="n">318M</td><td class="n">24</td><td class="n">1,024</td><td class="n">8,192 bp</td><td><a href="https://huggingface.co/living-models/Botanic1-S">living-models/Botanic1-S</a></td></tr>
60
- <tr class="ours"><td class="name">Botanic1-M</td><td class="n">688M</td><td class="n">52</td><td class="n">1,024</td><td class="n">8,192 bp</td><td><a href="https://huggingface.co/living-models/Botanic1-M">living-models/Botanic1-M</a></td></tr>
61
- <tr class="ours"><td class="name">Botanic1-L</td><td class="n">2.11B</td><td class="n">72</td><td class="n">1,536</td><td class="n">8,192 bp</td><td><a href="https://huggingface.co/living-models/Botanic1-L">living-models/Botanic1-L</a></td></tr>
62
- <tr class="ours"><td class="name">Botanic1-XL</td><td class="n">3.18B</td><td class="n">80</td><td class="n">1,792</td><td class="n">8,192 bp</td><td><a href="https://huggingface.co/living-models/Botanic1-XL">living-models/Botanic1-XL</a></td></tr>
63
- </tbody>
64
- <caption>Single-nucleotide tokeniser (A, T, C, G, N, one token per base). Pure PyTorch; runs on CPU, Apple Silicon and CUDA, where the <code>mamba_ssm</code> kernels are used when installed. Research use only, under the Living Models research licence.</caption>
65
- </table>
66
- </div>
67
- <pre><code>from transformers import AutoModel, AutoTokenizer
68
-
69
- name = "living-models/Botanic1-S"
70
- model = AutoModel.from_pretrained(name, trust_remote_code=True)
71
- tokenizer = AutoTokenizer.from_pretrained(name, trust_remote_code=True)
72
 
73
- # embeddings, (batch, seq_len, hidden): frozen representations for probing or fine-tuning
74
- emb = model.embed_sequences(["ACGTACGTNNACGT"], tokenizer,
75
- average_with_reverse_complement=True)["post_encoder_norm"]
76
-
77
- # zero-shot variant score: log P(alt) - log P(ref) at one position; deleterious variants score negative
78
- llr = model.score_variant_zero_shot(sequence=sequence, tokenizer=tokenizer,
79
- variant_pos=251, variant_char="C")</code></pre>
80
- <p>Botanic1 also runs as a tool inside a Gemma 4 chat agent, with FASTA and VCF upload, in the <a href="https://huggingface.co/spaces/living-models/botanic-gemma-chat">Botanic × Gemma Space</a>. The <a href="factory.html">model factory</a> page describes how the models were built.</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
- <h2 id="overview-figure">How the models were trained and evaluated</h2>
83
- <figure class="wide" id="figure1">
84
- <div class="fig1" id="fig1"></div>
85
- <figcaption><span class="figlabel">Figure 1</span> <b>From pre-training to the leaderboard.</b> <b>a</b>, Training: plant genomes only, masked language modelling on single nucleotides with 15% of positions hidden, a stack of bidirectional Mamba2 blocks released at four sizes. <b>b</b>, The six evaluation regimes, from probes on frozen representations to needle-in-a-haystack retrieval. <b>c</b>, Context sizes, from 100 bp probe tasks to 131,072 bp. <b>d</b>, Downstream task performance for 20 models, each bar topped by its organisation's logo; the axis starts at 0.5. <span class="small">Every mark carries its numbers on hover.</span></figcaption>
86
- </figure>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
- <h2 id="zeroshot">Zero-shot variant scoring</h2>
89
- <p class="kicker">Results</p>
90
- <p>Given the reference sequence around a variant, Botanic1 returns the log-likelihood ratio of the alternate allele against the reference. On 545 experimentally validated causal variants across 14 plant species, each hidden among every documented SNV of its 100 kbp locus, Botanic1-XL places the causal variant in the top 1% of candidates in half of the studies (49.9%) and in the top 0.1% in 16.5%, ahead of PlantCAD2-L (44.6% and 9.0%) and of PhyloP, PhastCons and Ensembl VEP, which need alignments or annotations that Botanic1 does not.</p>
91
- <figure class="wide">
92
- <div id="zeroshot-curve"></div>
93
- <figcaption><span class="figlabel">Figure</span> <b>Recovering experimentally validated causal variants.</b> 545 studies, each scored against every documented SNV in a 100 kb region around the causal variant: the fraction of studies whose causal variant falls inside a shortlist of the given size. Baselines that need alignments or annotations are dashed; the dotted line is a shuffled ranking. Every study is on <a href="causal-variants.html">the causal-variants page</a>.</figcaption>
94
- </figure>
95
- <p>Because the score comes from the sequence alone, it is not affected by linkage disequilibrium or by allele frequencies in any population. Used as a tool by a Gemma 4 chat agent on a published melon sex-determination locus, Botanic1-L let the agent rank the validated causal variant first among 3,061 candidates in all 20 runs; with conventional bioinformatics tools instead, the agent reached it within its top 20 in at most 35% of runs.</p>
 
 
 
96
 
97
- <h2 id="scaling">Bigger is better, and small is already strong</h2>
98
- <p>The four sizes share one recipe and one 314.6B-token horizon. Training loss and downstream task performance both improve with size, from 0.735 for Botanic1-S to 0.748 for Botanic1-XL on the aggregate over nine task families. Under the leaderboard's scoring, the four checkpoints take the top four positions, 0.758 to 0.769, above PlantCAD2-L at 0.756.</p>
99
- <figure class="wide">
100
- <div id="scaling-traces"></div>
101
- <figcaption><span class="figlabel">Figure</span> <b>Scaling.</b> Training loss and downstream task performance against tokens seen for the four sizes; the dashed curve is the shared learning-rate schedule and stars mark the released checkpoints at 314.6B tokens. <span class="small">Hover for the four models at one token count.</span></figcaption>
102
- </figure>
103
- <p>Botanic1-S, at 318M parameters, outperforms models more than ten times larger, including Carbon-8B (0.727) and Evo 2 at 7B (0.695), and does so after 314.6B base pairs where PlantCAD2-L processed 4.03T and NTv3 12.1T. Botanic1-L and Botanic1-XL are significantly above PlantCAD2-L under a paired bootstrap over the nine families; Botanic1-S and Botanic1-M are not.</p>
104
- <div class="card">
105
- <div class="cardhead"><span class="label">Fig · size against score</span><span class="small">downstream task performance · 22 frozen-model metrics · log scale · hover a mark</span></div>
106
- <div id="intro-chart"></div>
107
- <p class="chartnote">Organisation logos are shown for attribution. <a href="leaderboard.html">Full leaderboard</a>, with the nine-family scorecard and the tokens-seen view.</p>
108
  </div>
109
-
110
- <h2 id="finetune">Fine-tuning: easier, and better than other foundation models</h2>
111
- <p>Botanic1-S adapts with full fine-tuning, LoRA or IA<sup>3</sup>. On four regulatory tasks from the Plant Genomic Benchmark it beats AgroNT and PlantCAD2-L in regression (Pearson <span class="math">r</span> 0.861 against 0.834 and 0.790 for terminator strength) and leads poly(A) and lncRNA classification in every setting but one. Fine-tuning PlantCAD2-L with the authors' code needed model modifications to run stably; Botanic1-S and AgroNT did not.</p>
112
- <figure class="wide">
113
- <div id="finetune-chart"></div>
114
- <figcaption><span class="figlabel">Figure</span> <b>Fine-tuning across four plant-regulatory tasks.</b> Held-out test metric per model and adaptation regime; regression tasks report Pearson <span class="math">r</span> and R<sup>2</sup>, classification tasks the mean AUROC over six species. The dashed line is the best task-specific model trained from scratch. <span class="small">Pick a task and metric above; hover a bar for every number of its cell.</span></figcaption>
115
- </figure>
116
- <h3 id="atac">Base-resolution chromatin accessibility</h3>
117
- <p>Fine-tuned to predict ATAC-seq profiles at single-base resolution, Botanic1-S beats ChromBPNet, the specialised model for this task, in Arabidopsis and in maize, on read-count correlation and on profile shape. The same architecture trained from random weights does not, so the gain comes from pre-training.</p>
118
- <figure class="wide">
119
- <div id="atac-chart"></div>
120
- <figcaption><span class="figlabel">Figure</span> <b>Base-resolution ATAC-seq prediction against ChromBPNet.</b> Held-out chromosomes: Arabidopsis chromosome 4 (4,646 peaks) and maize chromosomes 1 and 9 (23,220 peaks). Whiskers are 95% bootstrap intervals; ChromBPNet is scored by its own pipeline, without intervals. <span class="small">Switch the metric above; hover a bar for all four.</span></figcaption>
121
- </figure>
122
-
123
- <h3 id="tf">Genome-wide transcription factor binding</h3>
124
- <p>Fine-tuned on 568 <em>Arabidopsis thaliana</em> DAP-seq assays grouped into 46 transcription factor families, the context-extended Botanic1-S reaches a chromosome 5 macro average precision of 0.72, above NTv3 (0.69 and 0.68), AgroNT (0.63) and DeepCistrome, a bespoke architecture trained from scratch (0.62), at a lower compute budget than all but the smallest NTv3.</p>
125
- <figure class="wide">
126
- <div id="tf-chart"></div>
127
- <figcaption><span class="figlabel">Figure</span> <b>Genome-wide transcription factor family binding in <em>Arabidopsis thaliana</em>.</b> Macro average precision across three seeds on the chromosome 5 test set; circles are the seeds. The dashed line is the bespoke architecture trained from scratch, DeepCistrome. <span class="small">Hover a bar for the seeds and the paired margin against Botanic1-S.</span></figcaption>
128
- </figure>
129
-
130
- <h2 id="more">More in the technical report</h2>
131
- <p><b>BOTANIC-1: a series of long-context plant genomic foundation models in the agentic era.</b> Amélie Barozet<sup>★</sup>, Vincent Cabeli<sup>★</sup>, Jean Ogier du Terrail<sup>★</sup>, Alexey Rukhovich<sup>★</sup>, Thomas Janssoone<sup>‡</sup>, Gary Klajer<sup>‡</sup>, Zeinab Sheikhitarghi<sup>‡</sup>, Gregory Andrews, Cyril Veran, Léonard Strouk. Living Models, Paris. <a href="botanic1-report.pdf">PDF</a>. <span class="small"><sup>★</sup> equal contribution, alphabetical; <sup>‡</sup> core team, alphabetical.</span></p>
132
- <ul class="also">
133
- <li><a href="factory.html">The model factory</a><span class="small">How agents run the experiments, and the data pipeline behind the 320-species corpus.</span></li>
134
- <li><a href="botanic1-report.pdf">Long context up to 131 kbp</a><span class="small">Pseudo-perplexity, needle-in-a-haystack retrieval and chromatin accessibility at long context.</span></li>
135
- <li><a href="botanic1-report.pdf">What the model has learned</a><span class="small">Sparse autoencoder features that read as splice sites, introns and codon position.</span></li>
136
- <li><a href="botanic1-report.pdf">Botanic1 as a tool for an agent</a><span class="small">The melon <em>CmEIN3</em> locus with a Gemma 4 agent calling Botanic1-L.</span></li>
137
- <li><a href="leaderboard.html">Leaderboard</a><span class="small">Downstream task performance, the nine-family scorecard, size and tokens seen.</span></li>
138
- <li><a href="corpus.html">Pre-training corpus</a><span class="small">The 320 species as a treemap, with the weighting and deduplication passages.</span></li>
139
- </ul>
140
-
141
- <h2 id="availability">Downloads</h2>
142
- <ul>
143
- <li><b>Models.</b> Botanic1-S, Botanic1-M, Botanic1-L and Botanic1-XL in the <a href="https://huggingface.co/collections/living-models/botanic1-6a97f4e3c33f3d109a75057d">Botanic1 collection</a>, with the previous generation <a href="https://huggingface.co/living-models/Botanic0-L">Botanic0</a>. Research use only, under the Living Models research licence.</li>
144
- <li><b>Pre-training data.</b> The 8 kbp corpus, with source manifests and assembly metadata: <a href="https://huggingface.co/datasets/living-models/Botanic1-pretraining">living-models/Botanic1-pretraining</a>.</li>
145
- <li><b>Causal-variant benchmark.</b> The 545 tasks, their candidate SNPs and the curation audit: <a href="https://huggingface.co/datasets/living-models/Botanic1-causal-variants">living-models/Botanic1-causal-variants</a>.</li>
146
- <li><b>Technical report.</b> <a href="botanic1-report.pdf">PDF</a>.</li>
147
- </ul>
148
-
149
- <h2 id="cite">Citation</h2>
150
- <pre><code>@article{botanic1,
151
- author = {Barozet, Am{\'e}lie and Cabeli, Vincent and Ogier du Terrail, Jean
152
- and Rukhovich, Alexey and Janssoone, Thomas and Klajer, Gary
153
- and Sheikhitarghi, Zeinab and Andrews, Gregory and Veran, Cyril
154
- and Strouk, L{\'e}onard},
155
- title = {BOTANIC-1: a series of long-context plant genomic foundation
156
- models in the agentic era},
157
- year = {2026},
158
- publisher = {Living Models},
159
- note = {Technical report},
160
- }</code></pre>
161
  </main>
162
-
163
- <footer class="site-footer">
164
- <p>Living Models, Paris. Botanic1 is released for research use under the Living Models research licence. Organisation logos are third-party trademarks shown for attribution.</p>
165
- <p>Numbers on this page are the technical report's; figures are drawn live from its data tables.</p>
166
- </footer>
167
- </div>
168
  <div class="tip" id="tip" role="tooltip"></div>
169
- <script src="assets/hero.js"></script>
170
- <script src="assets/figure1.js"></script>
171
- <script src="assets/sections.js"></script>
172
  </body>
173
  </html>
 
3
  <head>
4
  <meta charset="utf-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Botanic1 | Genomic language models for land plants</title>
7
+ <meta name="description" content="Botanic1: genomic language models trained on 320 plant species, from 318M parameters. Model cards, usage examples, and technical report.">
8
  <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>
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@500;600;700;800&family=Spectral:ital,wght@0,400;0,500;0,600;1,400&family=IBM+Plex+Mono:wght@400;500;600&display=swap">
12
  <link rel="stylesheet" href="assets/site.css">
13
+ <link rel="stylesheet" href="assets/landing.css">
14
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js" defer></script>
15
+ <script src="assets/hero.js" defer></script>
16
+ <script src="assets/landing.js" defer></script>
17
  </head>
18
+ <body class="landing">
19
+ <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">Living Models</span></a><nav aria-label="Pages"><a href="index.html" aria-current="page">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="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>
20
+
21
+ <main>
22
+ <section class="hero" aria-labelledby="intro-title">
23
  <div class="inner">
24
  <div class="medallion">
25
  <div class="hero-art" id="hero-art" aria-hidden="true"></div>
26
  <div class="centre">
27
  <p class="org">Living Models</p>
28
  <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>
29
+ <h1 id="intro-title">Genomic language models<br>for land plants.</h1>
30
+ <p class="hero-summary">Nucleotide embeddings and variant scores, from 318M parameters.</p>
 
 
 
 
 
 
31
  <div class="chips">
32
+ <a class="primary" href="https://huggingface.co/living-models/Botanic1-S" target="_blank" rel="noopener">Model card <span aria-hidden="true">↗</span></a>
 
33
  <a href="botanic1-report.pdf">Technical report <span class="ext">PDF</span></a>
 
 
34
  </div>
35
  </div>
36
  </div>
37
  </div>
38
  </section>
39
 
40
+ <div class="page landing-content">
41
+ <nav class="landing-tabs" aria-label="About Botanic1">
42
+ <a id="tab-overview" href="#overview">Overview</a>
43
+ <a id="tab-use" href="#use">Use the model</a>
44
+ <a id="tab-models" href="#models">Models &amp; data</a>
45
+ </nav>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
+ <section class="landing-panel" id="overview" aria-labelledby="tab-overview">
48
+ <div class="facts">
49
+ <article class="fact">
50
+ <p class="fact-label">Model size</p>
51
+ <h2>318M parameters</h2>
52
+ <p>Botanic1-S scores 0.758 on the aggregate benchmark across nine task families. PlantCAD2-L scores 0.756, Carbon-8B 0.727, and Evo&nbsp;2-7B 0.695.</p>
53
+ <p class="fact-note">Frozen models · aggregate test score (S<sub>bal</sub><sup>test</sup>)</p>
54
+ <a class="text-link" href="leaderboard.html">Scores by task and species <span aria-hidden="true">↗</span></a>
55
+ </article>
56
+ <article class="fact">
57
+ <p class="fact-label">Species coverage</p>
58
+ <h2>320 land plant species</h2>
59
+ <p>Pre-training spans bryophytes, vascular spore plants, gymnosperms, and flowering plants. Splice-site probes trained on Arabidopsis transfer to rice, sorghum, and maize.</p>
60
+ <p class="fact-note">Mean transfer AUPRC: Botanic1-S 0.826 · PlantCAD2-L 0.819</p>
61
+ <a class="text-link" href="corpus.html">Explore the training species <span aria-hidden="true">↗</span></a>
62
+ </article>
63
+ <article class="fact">
64
+ <p class="fact-label">Variant prioritisation</p>
65
+ <h2>Scores from sequence alone</h2>
66
+ <p>Botanic1-XL recovers 49.9% of validated causal variants within the top 1% of candidates, across 545 studies in 14 species. Scoring requires the reference sequence and alternate allele.</p>
67
+ <p class="fact-note">49.9% recall · 95% CI 45.7% to 54.1% · 100 kbp loci</p>
68
+ <a class="text-link" href="causal-variants.html">Explore the variant benchmark <span aria-hidden="true">↗</span></a>
69
+ </article>
70
+ <article class="fact">
71
+ <p class="fact-label">Fine-tuning</p>
72
+ <h2>Regulatory predictions</h2>
73
+ <p>Fine-tuned Botanic1-S predicts chromatin accessibility at single-base resolution in Arabidopsis and maize, with higher read-count correlation and lower profile error than ChromBPNet.</p>
74
+ <p class="fact-note">Held-out chromosomes · ATAC-seq profiles</p>
75
+ <a class="text-link" href="botanic1-report.pdf">Methods and results in the report <span aria-hidden="true">↗</span></a>
76
+ </article>
77
+ </div>
78
+ <p class="panel-note">Evaluations, uncertainty estimates, and species-level results are detailed in the <a href="botanic1-report.pdf">technical report</a>.</p>
79
+ </section>
80
 
81
+ <section class="landing-panel" id="use" aria-labelledby="tab-use">
82
+ <div class="section-intro">
83
+ <h2>Working with Botanic1</h2>
84
+ <p>Choose a workflow. The model card contains the code and setup instructions.</p>
85
+ </div>
86
+ <div class="workflow-list">
87
+ <article class="workflow">
88
+ <div><h3>Score variants</h3><p>Provide a reference sequence, a variant position, and an alternate base. Get a likelihood ratio for each substitution, with no task-specific training.</p></div>
89
+ <a class="text-link" href="https://huggingface.co/living-models/Botanic1-S#2-zero-shot-variant-effect-scoring-llr" target="_blank" rel="noopener">Variant-scoring example <span aria-hidden="true">↗</span></a>
90
+ </article>
91
+ <article class="workflow">
92
+ <div><h3>Extract embeddings</h3><p>Provide DNA sequences. Get a representation at each nucleotide to train a probe for your task.</p></div>
93
+ <a class="text-link" href="https://huggingface.co/living-models/Botanic1-S#1-generating-embeddings" target="_blank" rel="noopener">Embedding example <span aria-hidden="true">↗</span></a>
94
+ </article>
95
+ <article class="workflow">
96
+ <div><h3>Fine-tune on your data</h3><p>Use labelled sequences to adapt the model with full fine-tuning or parameter-efficient methods.</p></div>
97
+ <a class="text-link" href="https://huggingface.co/living-models/Botanic1-S#4-fine-tuning-lora-or-full" target="_blank" rel="noopener">Fine-tuning scripts <span aria-hidden="true">↗</span></a>
98
+ </article>
99
+ </div>
100
+ <p class="panel-note">For an interactive workflow, <a href="https://huggingface.co/spaces/living-models/botanic-gemma-chat" target="_blank" rel="noopener">open the chat demo</a> and upload FASTA or VCF files.</p>
101
+ </section>
102
 
103
+ <section class="landing-panel" id="models" aria-labelledby="tab-models">
104
+ <div class="section-intro">
105
+ <h2>Models, data, and report</h2>
106
+ </div>
107
+ <div class="resource-list">
108
+ <a href="https://huggingface.co/collections/living-models/botanic1-6a97f4e3c33f3d109a75057d" target="_blank" rel="noopener"><span>Model collection <span aria-hidden="true">↗</span></span><span class="small">Checkpoints, model cards, code examples, and licence.</span></a>
109
+ <a href="https://huggingface.co/datasets/living-models/Botanic1-pretraining" target="_blank" rel="noopener"><span>Pre-training corpus <span aria-hidden="true">↗</span></span><span class="small">Sequence windows from 320 species and source assemblies.</span></a>
110
+ <a href="https://huggingface.co/datasets/living-models/Botanic1-causal-variants" target="_blank" rel="noopener"><span>Causal-variant benchmark <span aria-hidden="true">↗</span></span><span class="small">545 studies, candidate SNPs, and the curation audit.</span></a>
111
+ <a href="botanic1-report.pdf"><span>Technical report <span class="small">PDF</span></span><span class="small">Training, evaluation, long context, and interpretability.</span></a>
112
+ </div>
113
+ </section>
114
 
115
+ <footer class="site-footer">
116
+ <p>Living Models · Paris</p>
117
+ <p>Models for research use · <a href="https://huggingface.co/living-models/Botanic1-S/blob/main/LICENSE" target="_blank" rel="noopener">Licence</a> · <a href="botanic1-report.pdf">Technical report</a></p>
118
+ </footer>
 
 
 
 
 
 
 
119
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  </main>
 
 
 
 
 
 
121
  <div class="tip" id="tip" role="tooltip"></div>
 
 
 
122
  </body>
123
  </html>