Spaces:
Running
Running
Add visible assembly colour legend and release title with tweet figures
Browse files- README.md +2 -2
- app.js +1 -1
- carbon-a-strand-poc.png +2 -2
- carbon-a-strand-source.zip +2 -2
- check_presentation.py +1 -1
- index.html +0 -0
- presentation-desktop.png +2 -2
- presentation-mobile.png +2 -2
- presentation-verification.json +2 -2
- provenance.json +5 -1
- sweep-info.png +2 -2
- template.html +9 -7
README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
---
|
| 2 |
-
title: Carbon-A
|
| 3 |
emoji: 🌿
|
| 4 |
colorFrom: green
|
| 5 |
colorTo: blue
|
|
@@ -35,7 +35,7 @@ The original **Genome Atlas silhouettes**, without circle backgrounds, sit on th
|
|
| 35 |
|
| 36 |
## Presentation and video capture
|
| 37 |
|
| 38 |
-
The Space
|
| 39 |
|
| 40 |
Click the page background, then press **Space** to start or replay a four-second clockwise sweep; Space again stops it at the current strand and keeps its details visible; Escape stops it and clears the selection. Space also stops playback when an info-box button has focus. A thin centre hand follows the selected strand, and its assembly info box updates during playback. The final assembly remains selected after the sweep. Clicking anywhere during playback stops it and clears the selection. Playback has no aggregate counters. Only the interaction canvas redraws each frame; the detailed tree stays cached.
|
| 41 |
|
|
|
|
| 1 |
---
|
| 2 |
+
title: "Carbon-A: Discovering Genes Across the Tree of Life"
|
| 3 |
emoji: 🌿
|
| 4 |
colorFrom: green
|
| 5 |
colorTo: blue
|
|
|
|
| 35 |
|
| 36 |
## Presentation and video capture
|
| 37 |
|
| 38 |
+
The Space title is **Carbon-A: Discovering Genes Across the Tree of Life**, with **Releasing 566M gene candidates for over 22k species** below it. These rounded release figures match the final user-approved release tweet from 8 October 2026; the tree remains the documented subset. A compact green/blue legend below the tree describes assembly annotation records and updates with the comparison mode. The page has a centred full-width tree and five resource buttons: **Model, Database, Explorer, Paper and Blog**. The sidebar, animation button and all cumulative sweep counters have been removed. Search, bar settings, comparison modes and zoom controls are available under **View options**. **About the data** retains the subset limitations and icon credits.
|
| 39 |
|
| 40 |
Click the page background, then press **Space** to start or replay a four-second clockwise sweep; Space again stops it at the current strand and keeps its details visible; Escape stops it and clears the selection. Space also stops playback when an info-box button has focus. A thin centre hand follows the selected strand, and its assembly info box updates during playback. The final assembly remains selected after the sweep. Clicking anywhere during playback stops it and clears the selection. Playback has no aggregate counters. Only the interaction canvas redraws each frame; the detailed tree stays cached.
|
| 41 |
|
app.js
CHANGED
|
@@ -105,7 +105,7 @@ function selectAssembly(a,pin=true,redraw=true){if(!a)return;if(pin){pinnedAssem
|
|
| 105 |
$('#sel-status').innerHTML=mode?`<i class="dot ${has?'blue':'green'}"></i>${has?'In the RefSeq comparison corpus':'Outside the RefSeq comparison corpus'}`:r[4]===1?`<i class="dot blue"></i>GenBank annotation record<br><small>${esc(r[7])} · ${esc(r[9])}</small>`:'<i class="dot green"></i>No annotation listed in this GenBank snapshot';
|
| 106 |
$('#sel-data').innerHTML=(species?`<span>${esc(species.common||species.name)} · assembly comparison</span><b>${fmt(mode?species.refMatches:species.existing)} / ${fmt(species.count)} ${mode?'in RefSeq corpus':'with GenBank records'}</b>`:'')+`<span>Predicted coding loci</span><b>${a.loci===null?'Count unavailable':fmt(a.loci)}</b>`+(r[3]?`<span>Assembly length</span><b>${(r[3]/1e6).toLocaleString('en-US',{maximumFractionDigits:2})} Mb</b>`:'')+(r[6]?`<span>RefSeq counterpart</span><b>${esc(r[6])}</b>`:'')+(mode&&r[4]===1?`<span>GenBank annotation provider</span><b>${esc(r[7])}</b>`:'');
|
| 107 |
updateDataAccess(a);$('#sel-loci').hidden=a.accession!=='GCA_000001405.29';if(redraw)scheduleInteraction()}
|
| 108 |
-
function updateLegend(){let n=mode?D.meta.refseq_matches:D.meta.classification_counts['1'];$('#blue-count').textContent=fmt(n);$('#green-count').textContent=fmt(leaves.length-n);$('#blue-label').textContent=mode?'In RefSeq comparison corpus':'GenBank annotation record';$('#green-label').textContent=mode?'Outside that comparison corpus':'No GenBank record listed';$('#scope-note').textContent=mode?'Counts are assemblies, not genes. Blue marks exact paired-accession matches to the project’s 2,055-assembly RefSeq corpus, not all RefSeq annotations. Green does not imply new genes.':'Counts are assemblies, not genes. This view checks GenBank submission metadata; it does not include annotations stored only on paired RefSeq records. Missing metadata is not proof of no prior annotation.';if(selected&&!sweep.running)selectAssembly(selected,false);schedule()}
|
| 109 |
function search(q){q=q.trim().toLowerCase();let out=[];if(q.length>1){out=leaves.filter(a=>a.accession.toLowerCase().includes(q)||a.name.toLowerCase().includes(q)||(nodes.get(a.taxid).common||'').toLowerCase().includes(q)).slice(0,7);}$('#results').replaceChildren(...out.map(a=>{let b=document.createElement('button');b.innerHTML=`<strong>${esc(a.name)}</strong><span>${esc(a.accession)}</span>`;b.onclick=()=>{chooseAssembly(a);$('#results').replaceChildren();$('#search').value=''};return b}));if(q.length>1&&!out.length)$('#results').textContent='No match in this PoC subset.';}
|
| 110 |
function geneModal(){closeViewOptions();stopSweep();const g=D.example;$('#gene-dialog').showModal();$('#gene-summary').textContent=fmt(g.gene_count)+' candidate coding loci in this assembly';const svg=$('#gene-svg');let start=0,end=1000000,width=1100,left=30,right=1080;let x=p=>left+(p-start)/(end-start)*(right-left);let parts=[];for(let p=0;p<=end;p+=100000){parts.push(`<line x1="${x(p)}" y1="38" x2="${x(p)}" y2="198" stroke="${palette.grid}"/><text x="${x(p)}" y="24" text-anchor="middle">${p/1e6} Mb</text>`)}
|
| 111 |
for(let gene of g.genes){if(gene.start>end)continue;let y=gene.strand==='+'?92:158;parts.push(`<g><title>${esc(gene.id)} · ${fmt(gene.start)}–${fmt(gene.end)} bp · ${gene.strand}</title><line x1="${x(gene.start)}" x2="${x(Math.min(end,gene.end))}" y1="${y}" y2="${y}" stroke="${palette.bar}"/>`);for(let [s,e] of gene.cds)if(s<=end)parts.push(`<rect x="${x(s)}" y="${y-7}" width="${Math.max(.6,x(Math.min(end,e))-x(s))}" height="14" fill="${palette.green}"/>`);parts.push('</g>')};svg.innerHTML=parts.join('');$('#gene-count-window').textContent=g.genes.filter(g=>g.start<=end).length+' candidate loci in this 1 Mb window. Bars show predicted coding segments; connecting lines span intervening sequence.';
|
|
|
|
| 105 |
$('#sel-status').innerHTML=mode?`<i class="dot ${has?'blue':'green'}"></i>${has?'In the RefSeq comparison corpus':'Outside the RefSeq comparison corpus'}`:r[4]===1?`<i class="dot blue"></i>GenBank annotation record<br><small>${esc(r[7])} · ${esc(r[9])}</small>`:'<i class="dot green"></i>No annotation listed in this GenBank snapshot';
|
| 106 |
$('#sel-data').innerHTML=(species?`<span>${esc(species.common||species.name)} · assembly comparison</span><b>${fmt(mode?species.refMatches:species.existing)} / ${fmt(species.count)} ${mode?'in RefSeq corpus':'with GenBank records'}</b>`:'')+`<span>Predicted coding loci</span><b>${a.loci===null?'Count unavailable':fmt(a.loci)}</b>`+(r[3]?`<span>Assembly length</span><b>${(r[3]/1e6).toLocaleString('en-US',{maximumFractionDigits:2})} Mb</b>`:'')+(r[6]?`<span>RefSeq counterpart</span><b>${esc(r[6])}</b>`:'')+(mode&&r[4]===1?`<span>GenBank annotation provider</span><b>${esc(r[7])}</b>`:'');
|
| 107 |
updateDataAccess(a);$('#sel-loci').hidden=a.accession!=='GCA_000001405.29';if(redraw)scheduleInteraction()}
|
| 108 |
+
function updateLegend(){let n=mode?D.meta.refseq_matches:D.meta.classification_counts['1'];$('#blue-count').textContent=fmt(n);$('#green-count').textContent=fmt(leaves.length-n);$('#blue-label').textContent=mode?'In RefSeq comparison corpus':'GenBank annotation record';$('#green-label').textContent=mode?'Outside that comparison corpus':'No GenBank record listed';$('#scope-note').textContent=mode?'Counts are assemblies, not genes. Blue marks exact paired-accession matches to the project’s 2,055-assembly RefSeq corpus, not all RefSeq annotations. Green does not imply new genes.':'Counts are assemblies, not genes. This view checks GenBank submission metadata; it does not include annotations stored only on paired RefSeq records. Missing metadata is not proof of no prior annotation.';$('#strand-green-label').textContent=mode?'Outside RefSeq comparison corpus':'No GenBank annotation listed';$('#strand-blue-label').textContent=mode?'In RefSeq comparison corpus':'GenBank annotation listed';$('.strand-legend').title=$('#scope-note').textContent;if(selected&&!sweep.running)selectAssembly(selected,false);schedule()}
|
| 109 |
function search(q){q=q.trim().toLowerCase();let out=[];if(q.length>1){out=leaves.filter(a=>a.accession.toLowerCase().includes(q)||a.name.toLowerCase().includes(q)||(nodes.get(a.taxid).common||'').toLowerCase().includes(q)).slice(0,7);}$('#results').replaceChildren(...out.map(a=>{let b=document.createElement('button');b.innerHTML=`<strong>${esc(a.name)}</strong><span>${esc(a.accession)}</span>`;b.onclick=()=>{chooseAssembly(a);$('#results').replaceChildren();$('#search').value=''};return b}));if(q.length>1&&!out.length)$('#results').textContent='No match in this PoC subset.';}
|
| 110 |
function geneModal(){closeViewOptions();stopSweep();const g=D.example;$('#gene-dialog').showModal();$('#gene-summary').textContent=fmt(g.gene_count)+' candidate coding loci in this assembly';const svg=$('#gene-svg');let start=0,end=1000000,width=1100,left=30,right=1080;let x=p=>left+(p-start)/(end-start)*(right-left);let parts=[];for(let p=0;p<=end;p+=100000){parts.push(`<line x1="${x(p)}" y1="38" x2="${x(p)}" y2="198" stroke="${palette.grid}"/><text x="${x(p)}" y="24" text-anchor="middle">${p/1e6} Mb</text>`)}
|
| 111 |
for(let gene of g.genes){if(gene.start>end)continue;let y=gene.strand==='+'?92:158;parts.push(`<g><title>${esc(gene.id)} · ${fmt(gene.start)}–${fmt(gene.end)} bp · ${gene.strand}</title><line x1="${x(gene.start)}" x2="${x(Math.min(end,gene.end))}" y1="${y}" y2="${y}" stroke="${palette.bar}"/>`);for(let [s,e] of gene.cds)if(s<=end)parts.push(`<rect x="${x(s)}" y="${y-7}" width="${Math.max(.6,x(Math.min(end,e))-x(s))}" height="14" fill="${palette.green}"/>`);parts.push('</g>')};svg.innerHTML=parts.join('');$('#gene-count-window').textContent=g.genes.filter(g=>g.start<=end).length+' candidate loci in this 1 Mb window. Bars show predicted coding segments; connecting lines span intervening sequence.';
|
carbon-a-strand-poc.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
carbon-a-strand-source.zip
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:03fed1dcd66d1cacb7e0bb8c346ba511bdc41e514d0ffa16353098d3daeceee3
|
| 3 |
+
size 15183523
|
check_presentation.py
CHANGED
|
@@ -17,7 +17,7 @@ def check(url=None,headers=None):
|
|
| 17 |
assert page.evaluate('POC.assemblies')==33588
|
| 18 |
assert page.locator('aside,#animate-sweep,.sweep-meter,#seen-species,#seen-assemblies,#seen-loci').count()==0
|
| 19 |
assert page.locator('.resource-links a').all_text_contents()==['Model↗','Database↗','Explorer↗','Paper↗','Blog↗']
|
| 20 |
-
assert page.locator('h1').inner_text()=='Carbon-A
|
| 21 |
assert page.locator('.wordmark em').evaluate('e=>getComputedStyle(e).color')=='rgb(41, 233, 154)'
|
| 22 |
assert page.locator('#view-dialog').is_hidden()
|
| 23 |
assert page.locator('footer').bounding_box()['y']>=page.locator('.stage-wrap').bounding_box()['y']+page.locator('.stage-wrap').bounding_box()['height']
|
|
|
|
| 17 |
assert page.evaluate('POC.assemblies')==33588
|
| 18 |
assert page.locator('aside,#animate-sweep,.sweep-meter,#seen-species,#seen-assemblies,#seen-loci').count()==0
|
| 19 |
assert page.locator('.resource-links a').all_text_contents()==['Model↗','Database↗','Explorer↗','Paper↗','Blog↗']
|
| 20 |
+
assert page.locator('h1').inner_text()=='Carbon-A: Discovering Genes Across the Tree of Life'
|
| 21 |
assert page.locator('.wordmark em').evaluate('e=>getComputedStyle(e).color')=='rgb(41, 233, 154)'
|
| 22 |
assert page.locator('#view-dialog').is_hidden()
|
| 23 |
assert page.locator('footer').bounding_box()['y']>=page.locator('.stage-wrap').bounding_box()['y']+page.locator('.stage-wrap').bounding_box()['height']
|
index.html
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
presentation-desktop.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
presentation-mobile.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
presentation-verification.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
-
"sweep_duration_ms":
|
| 3 |
-
"sweep_frames":
|
| 4 |
"background_redraws": 0,
|
| 5 |
"layout": "desktop and mobile passed",
|
| 6 |
"hover_preview_and_exact_geometry": "passed",
|
|
|
|
| 1 |
{
|
| 2 |
+
"sweep_duration_ms": 4043,
|
| 3 |
+
"sweep_frames": 57,
|
| 4 |
"background_redraws": 0,
|
| 5 |
"layout": "desktop and mobile passed",
|
| 6 |
"hover_preview_and_exact_geometry": "passed",
|
provenance.json
CHANGED
|
@@ -73,6 +73,10 @@
|
|
| 73 |
"layout": "Wide title, centered tree and five resource buttons; no sidebar",
|
| 74 |
"animation": "4-second sweep with matching assembly info each frame; Space starts/stops, retaining the current strand on stop; final assembly remains selected; no counters or playback button.",
|
| 75 |
"data_changed": false,
|
| 76 |
-
"interaction": "Hover previews and highlights strands and assembly details. Click pins; next click anywhere clears. Icons, bars, double-clicks and search do not zoom. Visible Whole tree resets zoom/pan."
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
}
|
| 78 |
}
|
|
|
|
| 73 |
"layout": "Wide title, centered tree and five resource buttons; no sidebar",
|
| 74 |
"animation": "4-second sweep with matching assembly info each frame; Space starts/stops, retaining the current strand on stop; final assembly remains selected; no counters or playback button.",
|
| 75 |
"data_changed": false,
|
| 76 |
+
"interaction": "Hover previews and highlights strands and assembly details. Click pins; next click anywhere clears. Icons, bars, double-clicks and search do not zoom. Visible Whole tree resets zoom/pan.",
|
| 77 |
+
"title": "Carbon-A: Discovering Genes Across the Tree of Life",
|
| 78 |
+
"subtitle": "Releasing 566M gene candidates for over 22k species",
|
| 79 |
+
"subtitle_source": "Final user-approved release tweet, 8 October 2026: 566 million gene candidates across 22k+ species; rounded full-release figures, not counts of the displayed subset.",
|
| 80 |
+
"legend": "Green: no GenBank annotation listed; blue: GenBank annotation listed. Updates to the RefSeq comparison corpus when that mode is selected."
|
| 81 |
}
|
| 82 |
}
|
sweep-info.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
template.html
CHANGED
|
@@ -1,16 +1,18 @@
|
|
| 1 |
-
<!doctype html><html lang="en" data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Carbon-A
|
| 2 |
__FONTS__
|
| 3 |
:root{color-scheme:dark;--green:#29e99a;--blue:#789dff;--ink:#e6f0ed;--muted:#91a5a4;--rule:#233038;--bg:#080e13;--panel:#0d151c;--hover:#16252c;--secondary:#bccdc7;--shadow:#00000050}
|
| 4 |
:root[data-theme="light"]{color-scheme:light;--green:#00b86b;--blue:#4167ec;--ink:#14221c;--muted:#6e7b73;--rule:#e6ece8;--bg:#fff;--panel:#fff;--hover:#f6faf7;--secondary:#435a4c;--shadow:#2035280c}
|
| 5 |
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:13px Inter,Arial,sans-serif}button,input,select{font:inherit;color:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:var(--bg);border:1px solid var(--rule);padding:9px 13px}button:hover{border-color:var(--muted);background:var(--hover)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:3px}button:disabled{opacity:.35;cursor:default}a{color:inherit}input::placeholder{color:var(--muted);opacity:1}[hidden]{display:none!important}
|
| 6 |
.presentation{height:100svh;min-height:650px;display:grid;grid-template-rows:auto minmax(360px,1fr) auto}
|
| 7 |
.hero{padding:30px 28px 8px;text-align:center}
|
| 8 |
-
h1{font-family:Manrope,Arial,sans-serif;font-size:clamp(
|
| 9 |
-
.wordmark{font-weight:800;white-space:nowrap}.wordmark em{font-style:normal;color:var(--green)}.title-separator{
|
|
|
|
| 10 |
.stage-wrap{position:relative;min-width:0;min-height:0;width:100%;max-width:1600px;justify-self:center;overflow:hidden}
|
| 11 |
#stage{position:absolute;inset:6px 24px 0;touch-action:none}canvas{position:absolute;width:100%;height:100%;inset:0}#tree{cursor:default;touch-action:none}#overlay,#interaction,#tree-still{pointer-events:none}#tree-still{visibility:hidden}[data-sweeping="true"] #tree,[data-sweeping="true"] #overlay{visibility:hidden}[data-sweeping="true"] #tree-still{visibility:visible}
|
| 12 |
.home-control{position:absolute;left:24px;bottom:14px;z-index:6;display:flex;align-items:center;gap:8px;background:var(--panel);font-size:12px;padding:10px 14px;border-radius:4px}.home-control svg{width:15px;height:15px;stroke:var(--green);stroke-width:1.5;fill:none}[data-zoomed="true"] #selection{max-height:calc(100% - 82px)}
|
| 13 |
.resources{padding:12px 24px 18px;text-align:center}
|
|
|
|
| 14 |
.resource-links{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}
|
| 15 |
.resource-links a{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:12px 16px;min-width:120px;border:1px solid var(--rule);border-radius:4px;text-decoration:none;font-size:13px;font-weight:500;background:transparent}
|
| 16 |
.resource-links a span{color:var(--green);font-size:15px}.resource-links a:hover{border-color:var(--green);background:var(--hover)}
|
|
@@ -30,17 +32,17 @@ dialog{background:var(--panel);border:1px solid var(--rule);padding:32px;max-wid
|
|
| 30 |
.legend,.locus-controls{border-top:1px solid var(--rule);padding-top:18px;margin-top:18px}.legend select,.locus-controls select{width:100%;border:0;border-bottom:1px solid var(--rule);padding:9px 0;margin:6px 0 12px;background:var(--panel);font-size:12px}.key{display:flex;align-items:center;gap:8px;font-size:11px;margin-bottom:10px}.key strong{margin-left:auto;font-weight:500;font-variant-numeric:tabular-nums}.sample-line{height:2px;width:21px;display:inline-block;background:var(--green);flex-shrink:0}.sample-line.blue{background:var(--blue)}.scope-note,.locus-controls p{font-size:10px;color:var(--muted);line-height:1.5;margin:10px 0 13px}.checkbox{font-size:11px;display:flex;gap:7px;align-items:center}.checkbox input{accent-color:var(--green)}.locus-controls strong{display:block;font-size:11px;font-weight:500;margin-top:10px}.icon-toggle{margin-top:12px}.quick{display:flex;gap:6px;margin:20px 0 6px}.quick button{font-size:11px;padding:8px 10px}.controls{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:18px}.controls button{font-size:11px;padding:7px 10px}.controls span{font-size:10px;padding:0 5px;min-width:42px;text-align:center;color:var(--muted)}
|
| 31 |
#icon-credits{max-height:60vh;overflow:auto}#icon-credits table{border-collapse:collapse;width:100%;font-size:11px;text-align:left}#icon-credits th,#icon-credits td{padding:10px 8px;border-bottom:1px solid var(--rule)}#icon-credits a,#data-dialog a{color:var(--green)}.gene-label{font-size:11px;margin-top:28px;color:var(--muted)}#gene-svg{width:100%;height:auto;font:11px Inter;fill:var(--muted);margin:16px 0}.gene-notes{border-top:1px solid var(--rule);padding-top:15px;font-size:11px}#data-dialog pre{max-height:45vh;overflow:auto;border:1px solid var(--rule);background:var(--bg);padding:18px;font-size:11px;line-height:1.7;white-space:pre}#copy-status{font-size:11px;margin-left:12px;color:var(--green)}#data-dialog .data-setup{font-size:11px}
|
| 32 |
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
|
| 33 |
-
@media(max-width:700px){.presentation{min-height:650px}.hero{padding:25px 22px 4px}h1{font-size:clamp(26px,5.8vw,38px);letter-spacing:-1px}.title-
|
| 34 |
.resources{padding:8px 12px 14px}.utilities{margin-top:8px}#selection{width:275px;right:12px;top:10px;max-height:calc(100% - 20px)}dialog{padding:24px}}
|
| 35 |
@media(prefers-reduced-motion:no-preference){button,.resource-links a{transition:background .15s,border-color .15s}}
|
| 36 |
</style></head><body>
|
| 37 |
<main class="presentation">
|
| 38 |
-
<header class="hero"><h1><span class="wordmark">Carbon-<em>A</em></span><span class="title-separator"
|
| 39 |
<section class="stage-wrap" aria-label="Carbon-A assembly tree">
|
| 40 |
<span id="sweep-announcement" class="visually-hidden" role="status"></span>
|
| 41 |
<div id="stage"><canvas id="tree" aria-label="Interactive taxonomic tree of assembly strands. Hover to preview a strand; click to keep it selected; click anywhere again to clear. Scroll to zoom. Search is in View options."></canvas><canvas id="tree-still" aria-hidden="true"></canvas><canvas id="overlay" aria-hidden="true"></canvas><canvas id="interaction" aria-hidden="true"></canvas><div id="loading">Preparing the assembly tree…</div></div>
|
| 42 |
<button id="home" class="home-control" hidden aria-label="Return to the whole tree"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="m2 9 8-7 8 7M4 8v9h5v-5h2v5h5V8"/></svg>Whole tree</button><div id="layer-tooltip" hidden></div><section id="selection" hidden><button id="sel-close" aria-label="Close assembly details">×</button><div id="sel-state">Selected</div><h2 id="sel-name"></h2><a id="sel-id" target="_blank" rel="noopener"></a><div id="sel-lineage"></div><div id="sel-status"></div><div id="sel-data"></div><div class="data-access"><a id="sel-files" target="_blank" rel="noopener">Annotation files ↗</a><br><button id="sel-download">Get annotation data ↗</button><p id="sel-availability"></p></div><button id="sel-focus">Zoom to this strand ↗</button><button id="sel-loci" hidden>See coding regions →</button></section></section>
|
| 43 |
-
<footer class="resources"><nav class="resource-links" aria-label="Carbon-A resources"><a href="https://huggingface.co/HuggingFaceBio/Carbon-A-1.2B" target="_blank" rel="noopener">Model<span aria-hidden="true">
|
| 44 |
</main>
|
| 45 |
<dialog id="view-dialog"><button id="view-close" class="dialog-close" aria-label="Close view options">×</button><h2>Explore the tree</h2><div class="searchbox"><input id="search" type="search" aria-label="Search assemblies or species" placeholder="Search a species or assembly…" disabled autocomplete="off"><div id="results"></div></div><section class="locus-controls"><label class="tag" for="locus-mode">Coding loci at the strand tips</label><select id="locus-mode"><option value="5">Binned · 5 assemblies per bar</option><option value="20">Binned · 20 assemblies per bar</option><option value="50">Binned · 50 assemblies per bar</option><option value="200">Binned · 200 assemblies per bar</option><option value="raw">Individual assemblies</option><option value="off">Hide locus bars</option></select><strong id="locus-readout"></strong><p id="locus-explain"></p><label class="checkbox icon-toggle"><input type="checkbox" id="show-icons" checked>Genome Atlas silhouettes</label></section><section class="legend"><label class="tag" for="scope">Compare assembly records</label><select id="scope"><option value="0">GenBank annotation records</option><option value="1">RefSeq comparison corpus</option></select><div class="key"><i class="sample-line blue"></i><span id="blue-label"></span><strong id="blue-count"></strong></div><div class="key"><i class="sample-line"></i><span id="green-label"></span><strong id="green-count"></strong></div><label class="checkbox"><input id="existing-only" type="checkbox">Emphasise matching assemblies</label><p id="scope-note" class="scope-note"></p></section><div class="controls"><button id="detail">Strand detail</button><button id="zoomout" aria-label="Zoom out">−</button><span id="zoom-readout">1.0×</span><button id="zoomin" aria-label="Zoom in">+</button><button id="reset">Whole tree</button></div><div class="quick"><button id="human">Find a human assembly ↗</button><button id="gene-open">Its coding regions →</button></div><p>Hover to preview · Click to select · Click anywhere again to clear.<br>Scroll to zoom · Drag to pan · Space to start or stop.</p></dialog>
|
| 46 |
-
<dialog id="gene-dialog"><button class="dialog-close" id="gene-close" aria-label="Close coding-region view">×</button><span class="tag">From an assembly to its annotations</span><h2 style="margin-top:16px">Homo sapiens</h2><p id="gene-summary"></p><div class="gene-label">GCA_000001405.29 · chromosome 1, CM000663.2 · first 1,000,000 bases<br>Upper track: forward strand · lower track: reverse strand</div><svg id="gene-svg" viewBox="0 0 1110 210" role="img" aria-label="Actual predicted coding segments in the first one million bases of human chromosome 1"></svg><p id="gene-count-window"></p><p class="gene-notes">Real coordinates from the published Carbon-A GFF3. These are model predictions, not experimentally confirmed genes. The blue/green tree colours describe annotation records for an assembly; they do not classify individual loci as known or new.</p></dialog><dialog id="about-dialog"><button class="dialog-close" id="about-close" aria-label="Close data information">×</button><h2>What is being drawn</h2><p>Each of the <span id="shown">33,588</span> strands across <span id="taxa-shown">16,976</span> taxa is a distinct accession from the explorer’s covered-assembly table, mapped through the NCBI taxonomy. This is a subset of the release. No assemblies or taxonomic branches have been invented to fill out the release total.</p><ul><li>Tree and common names: the existing HuggingFaceBio GenBank annotation explorer, 7 October 2026.</li><li>Existing annotation evidence: the cached NCBI GenBank assembly summary, 7 October 2026; a named annotation provider is required.</li><li>RefSeq mode counts matching assemblies, not genes: exact versioned matches between an assembly’s paired GCF accession and the project’s 2,055-assembly comparison corpus. It does not cover all RefSeq annotations.</li><li>Gene detail: actual published GFF3 coordinates and metadata for GCA_000001405.29.</li><li>Release totals supplied on 8 October 2026: 48,167 assemblies, 22,617 taxa, 566.34M coding loci and 27.18 Tbp.</li></ul><p>The centre hand follows the highlighted strand. Hover over a strand or inside the centre to preview an assembly; click to keep it selected. Click anywhere again to clear the selection. Clicking icons and bars also selects an assembly without zooming; use the scroll wheel or zoom controls to zoom and Whole tree to return. For video capture, press Space to start or replay a four-second clockwise sweep. Space again stops at the current strand; Escape stops and clears it. The assembly info box follows the highlighted strand and remains on the final assembly when playback finishes. The sweep has no counters.</p><p>Equal-width assembly strands preserve count through shared ancestors. At overview scale many strands fall within a pixel; zoom reveals them separately. Radius and branch length are layout choices, not dates or evolutionary distances.</p><p>For example, the human branch contains 1,412 assemblies: 2 match the project’s RefSeq comparison corpus, while 4 have annotation-provider records in this GenBank snapshot. These small counts describe assembly records, not human genes. RefSeq annotations are maintained separately from GenBank submission annotations. <a href="https://www.ncbi.nlm.nih.gov/refseq/about/human/" target="_blank" rel="noopener">NCBI’s explanation of human reference annotation</a>.</p><p>The outer bars sum measured gene_count values from published per-assembly metadata. Bins contain consecutive assembly tips in taxonomy order. Grey base marks indicate the fraction of assemblies without counts; these are not treated as measured zeros. The radial scale is linear and recalculated for each bin size. Colours within the tree classify assemblies; the green outer bars count all predicted loci, regardless of prior annotation status.</p><p>Silhouettes are the original PhyloPic assets and taxon assignments used by the Genome Atlas. Click an icon to select a strand at that node. <button id="credits-open">Icon credits and licences</button></p><p><a href="https://huggingface.co/spaces/HuggingFaceBio/carbon-a-database-explorer" target="_blank" rel="noopener">Source explorer ↗</a> · <a href="https://www.ncbi.nlm.nih.gov/datasets/docs/v2/reference-docs/ftp-browsing/" target="_blank" rel="noopener">NCBI metadata ↗</a></p></dialog><dialog id="credits-dialog"><button id="credits-close" class="dialog-close" aria-label="Close icon credits">×</button><h2>Genome Atlas silhouettes</h2><p>Original PhyloPic silhouettes, reused with the atlas’s taxonomic assignments. Their fill colour is adapted to the selected theme; original SVG files are preserved in the source data. Each image’s source page and licence are linked below.</p><div id="icon-credits"></div></dialog><dialog id="data-dialog"><button id="data-close" class="dialog-close" aria-label="Close download instructions">×</button><h2>Get annotation data</h2><p id="data-assembly"></p><p id="data-description"></p><p><a id="data-browse" target="_blank" rel="noopener">Browse annotation files ↗</a></p><p class="data-setup">Install <code>huggingface_hub</code> and run <code>hf auth login</code> with an account that can access the bucket.</p><pre><code id="data-code"></code></pre><button id="data-copy">Copy Python code</button><span id="copy-status" role="status"></span><p><a href="https://huggingface.co/docs/huggingface_hub/guides/buckets#download-files" target="_blank" rel="noopener">Hugging Face download documentation ↗</a></p></dialog><script id="dataset" type="application/octet-stream">__DATA__</script><script>__SCRIPT__</script></body></html>
|
|
|
|
| 1 |
+
<!doctype html><html lang="en" data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Carbon-A: Discovering Genes Across the Tree of Life</title><script>try{const t=localStorage.getItem('carbon-a-theme');if(t==='light'||t==='dark')document.documentElement.dataset.theme=t}catch{}if(new URLSearchParams(location.search).get('record')==='1')document.documentElement.dataset.recording='true';</script><style>
|
| 2 |
__FONTS__
|
| 3 |
:root{color-scheme:dark;--green:#29e99a;--blue:#789dff;--ink:#e6f0ed;--muted:#91a5a4;--rule:#233038;--bg:#080e13;--panel:#0d151c;--hover:#16252c;--secondary:#bccdc7;--shadow:#00000050}
|
| 4 |
:root[data-theme="light"]{color-scheme:light;--green:#00b86b;--blue:#4167ec;--ink:#14221c;--muted:#6e7b73;--rule:#e6ece8;--bg:#fff;--panel:#fff;--hover:#f6faf7;--secondary:#435a4c;--shadow:#2035280c}
|
| 5 |
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:13px Inter,Arial,sans-serif}button,input,select{font:inherit;color:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:var(--bg);border:1px solid var(--rule);padding:9px 13px}button:hover{border-color:var(--muted);background:var(--hover)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:3px}button:disabled{opacity:.35;cursor:default}a{color:inherit}input::placeholder{color:var(--muted);opacity:1}[hidden]{display:none!important}
|
| 6 |
.presentation{height:100svh;min-height:650px;display:grid;grid-template-rows:auto minmax(360px,1fr) auto}
|
| 7 |
.hero{padding:30px 28px 8px;text-align:center}
|
| 8 |
+
h1{font-family:Manrope,Arial,sans-serif;font-size:clamp(27px,2.8vw,46px);font-weight:500;line-height:1.2;letter-spacing:-1.35px;margin:0}
|
| 9 |
+
.wordmark{font-weight:800;white-space:nowrap}.wordmark em{font-style:normal;color:var(--green)}.title-separator{font-weight:400}
|
| 10 |
+
.release-subtitle{font-size:clamp(13px,1.25vw,18px);line-height:1.5;color:var(--secondary);margin:13px 0 0}.release-subtitle strong{font-weight:500;color:var(--green);white-space:nowrap}
|
| 11 |
.stage-wrap{position:relative;min-width:0;min-height:0;width:100%;max-width:1600px;justify-self:center;overflow:hidden}
|
| 12 |
#stage{position:absolute;inset:6px 24px 0;touch-action:none}canvas{position:absolute;width:100%;height:100%;inset:0}#tree{cursor:default;touch-action:none}#overlay,#interaction,#tree-still{pointer-events:none}#tree-still{visibility:hidden}[data-sweeping="true"] #tree,[data-sweeping="true"] #overlay{visibility:hidden}[data-sweeping="true"] #tree-still{visibility:visible}
|
| 13 |
.home-control{position:absolute;left:24px;bottom:14px;z-index:6;display:flex;align-items:center;gap:8px;background:var(--panel);font-size:12px;padding:10px 14px;border-radius:4px}.home-control svg{width:15px;height:15px;stroke:var(--green);stroke-width:1.5;fill:none}[data-zoomed="true"] #selection{max-height:calc(100% - 82px)}
|
| 14 |
.resources{padding:12px 24px 18px;text-align:center}
|
| 15 |
+
.strand-legend{display:flex;justify-content:center;align-items:center;gap:12px 25px;flex-wrap:wrap;margin:0 0 18px;font-size:11px;color:var(--secondary)}.strand-legend .legend-heading{color:var(--muted)}.strand-legend .legend-item{display:inline-flex;align-items:center;gap:8px}.strand-legend .sample-line{width:25px}
|
| 16 |
.resource-links{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}
|
| 17 |
.resource-links a{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:12px 16px;min-width:120px;border:1px solid var(--rule);border-radius:4px;text-decoration:none;font-size:13px;font-weight:500;background:transparent}
|
| 18 |
.resource-links a span{color:var(--green);font-size:15px}.resource-links a:hover{border-color:var(--green);background:var(--hover)}
|
|
|
|
| 32 |
.legend,.locus-controls{border-top:1px solid var(--rule);padding-top:18px;margin-top:18px}.legend select,.locus-controls select{width:100%;border:0;border-bottom:1px solid var(--rule);padding:9px 0;margin:6px 0 12px;background:var(--panel);font-size:12px}.key{display:flex;align-items:center;gap:8px;font-size:11px;margin-bottom:10px}.key strong{margin-left:auto;font-weight:500;font-variant-numeric:tabular-nums}.sample-line{height:2px;width:21px;display:inline-block;background:var(--green);flex-shrink:0}.sample-line.blue{background:var(--blue)}.scope-note,.locus-controls p{font-size:10px;color:var(--muted);line-height:1.5;margin:10px 0 13px}.checkbox{font-size:11px;display:flex;gap:7px;align-items:center}.checkbox input{accent-color:var(--green)}.locus-controls strong{display:block;font-size:11px;font-weight:500;margin-top:10px}.icon-toggle{margin-top:12px}.quick{display:flex;gap:6px;margin:20px 0 6px}.quick button{font-size:11px;padding:8px 10px}.controls{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:18px}.controls button{font-size:11px;padding:7px 10px}.controls span{font-size:10px;padding:0 5px;min-width:42px;text-align:center;color:var(--muted)}
|
| 33 |
#icon-credits{max-height:60vh;overflow:auto}#icon-credits table{border-collapse:collapse;width:100%;font-size:11px;text-align:left}#icon-credits th,#icon-credits td{padding:10px 8px;border-bottom:1px solid var(--rule)}#icon-credits a,#data-dialog a{color:var(--green)}.gene-label{font-size:11px;margin-top:28px;color:var(--muted)}#gene-svg{width:100%;height:auto;font:11px Inter;fill:var(--muted);margin:16px 0}.gene-notes{border-top:1px solid var(--rule);padding-top:15px;font-size:11px}#data-dialog pre{max-height:45vh;overflow:auto;border:1px solid var(--rule);background:var(--bg);padding:18px;font-size:11px;line-height:1.7;white-space:pre}#copy-status{font-size:11px;margin-left:12px;color:var(--green)}#data-dialog .data-setup{font-size:11px}
|
| 34 |
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
|
| 35 |
+
@media(max-width:700px){.presentation{min-height:650px}.hero{padding:25px 22px 4px}h1{font-size:clamp(26px,5.8vw,38px);letter-spacing:-1px}.title-topic{display:block;margin-top:6px;font-size:.8em;line-height:1.3;letter-spacing:-.4px;text-wrap:balance}.release-subtitle{max-width:330px;margin:12px auto 0;text-wrap:balance}.strand-legend{gap:8px 16px;margin-bottom:15px;font-size:10px}.strand-legend .legend-heading{flex-basis:100%}.strand-legend .sample-line{width:18px}#stage{inset:0 4px}.resource-links{gap:7px}.resource-links a{min-width:0;padding:10px 11px;gap:12px;font-size:11px}.home-control{left:12px;bottom:10px}
|
| 36 |
.resources{padding:8px 12px 14px}.utilities{margin-top:8px}#selection{width:275px;right:12px;top:10px;max-height:calc(100% - 20px)}dialog{padding:24px}}
|
| 37 |
@media(prefers-reduced-motion:no-preference){button,.resource-links a{transition:background .15s,border-color .15s}}
|
| 38 |
</style></head><body>
|
| 39 |
<main class="presentation">
|
| 40 |
+
<header class="hero"><h1><span class="wordmark">Carbon-<em>A</em></span><span class="title-separator">: </span><span class="title-topic">Discovering Genes Across the Tree of Life</span></h1><p class="release-subtitle">Releasing <strong>566M</strong> gene candidates for over <strong>22k</strong> species</p></header>
|
| 41 |
<section class="stage-wrap" aria-label="Carbon-A assembly tree">
|
| 42 |
<span id="sweep-announcement" class="visually-hidden" role="status"></span>
|
| 43 |
<div id="stage"><canvas id="tree" aria-label="Interactive taxonomic tree of assembly strands. Hover to preview a strand; click to keep it selected; click anywhere again to clear. Scroll to zoom. Search is in View options."></canvas><canvas id="tree-still" aria-hidden="true"></canvas><canvas id="overlay" aria-hidden="true"></canvas><canvas id="interaction" aria-hidden="true"></canvas><div id="loading">Preparing the assembly tree…</div></div>
|
| 44 |
<button id="home" class="home-control" hidden aria-label="Return to the whole tree"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="m2 9 8-7 8 7M4 8v9h5v-5h2v5h5V8"/></svg>Whole tree</button><div id="layer-tooltip" hidden></div><section id="selection" hidden><button id="sel-close" aria-label="Close assembly details">×</button><div id="sel-state">Selected</div><h2 id="sel-name"></h2><a id="sel-id" target="_blank" rel="noopener"></a><div id="sel-lineage"></div><div id="sel-status"></div><div id="sel-data"></div><div class="data-access"><a id="sel-files" target="_blank" rel="noopener">Annotation files ↗</a><br><button id="sel-download">Get annotation data ↗</button><p id="sel-availability"></p></div><button id="sel-focus">Zoom to this strand ↗</button><button id="sel-loci" hidden>See coding regions →</button></section></section>
|
| 45 |
+
<footer class="resources"><div class="strand-legend" aria-label="Assembly strand colours"><span class="legend-heading">Assembly strands</span><span class="legend-item"><i class="sample-line" aria-hidden="true"></i><span id="strand-green-label">No GenBank annotation listed</span></span><span class="legend-item"><i class="sample-line blue" aria-hidden="true"></i><span id="strand-blue-label">GenBank annotation listed</span></span></div><nav class="resource-links" aria-label="Carbon-A resources"><a href="https://huggingface.co/HuggingFaceBio/Carbon-A-1.2B" target="_blank" rel="noopener">Model<span aria-hidden="true">↗</span></a><a href="https://huggingface.co/buckets/HuggingFaceBio/genbank-annotations" target="_blank" rel="noopener">Database<span aria-hidden="true">↗</span></a><a href="https://huggingface.co/spaces/HuggingFaceBio/carbon-a-database-explorer" target="_blank" rel="noopener">Explorer<span aria-hidden="true">↗</span></a><a href="https://huggingface.co/buckets/HuggingFaceBio/Carbon-A-Technical-Report" target="_blank" rel="noopener">Paper<span aria-hidden="true">↗</span></a><a href="https://huggingface.co/blog/HuggingFaceBio/carbon-annotator-genbank-genome-annotation" target="_blank" rel="noopener">Blog<span aria-hidden="true">↗</span></a></nav><div class="utilities"><button id="view-options">View options</button><button id="about">About the data</button><button id="theme-toggle" aria-label="Switch to light mode" title="Switch to light mode"><svg class="theme-sun" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 1v3m0 16v3M1 12h3m16 0h3M4.2 4.2l2.1 2.1m11.4 11.4 2.1 2.1M4.2 19.8l2.1-2.1M17.7 6.3l2.1-2.1"/></svg><svg class="theme-moon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20.5 14.5A9 9 0 0 1 9.5 3.5a9 9 0 1 0 11 11Z"/></svg></button></div></footer>
|
| 46 |
</main>
|
| 47 |
<dialog id="view-dialog"><button id="view-close" class="dialog-close" aria-label="Close view options">×</button><h2>Explore the tree</h2><div class="searchbox"><input id="search" type="search" aria-label="Search assemblies or species" placeholder="Search a species or assembly…" disabled autocomplete="off"><div id="results"></div></div><section class="locus-controls"><label class="tag" for="locus-mode">Coding loci at the strand tips</label><select id="locus-mode"><option value="5">Binned · 5 assemblies per bar</option><option value="20">Binned · 20 assemblies per bar</option><option value="50">Binned · 50 assemblies per bar</option><option value="200">Binned · 200 assemblies per bar</option><option value="raw">Individual assemblies</option><option value="off">Hide locus bars</option></select><strong id="locus-readout"></strong><p id="locus-explain"></p><label class="checkbox icon-toggle"><input type="checkbox" id="show-icons" checked>Genome Atlas silhouettes</label></section><section class="legend"><label class="tag" for="scope">Compare assembly records</label><select id="scope"><option value="0">GenBank annotation records</option><option value="1">RefSeq comparison corpus</option></select><div class="key"><i class="sample-line blue"></i><span id="blue-label"></span><strong id="blue-count"></strong></div><div class="key"><i class="sample-line"></i><span id="green-label"></span><strong id="green-count"></strong></div><label class="checkbox"><input id="existing-only" type="checkbox">Emphasise matching assemblies</label><p id="scope-note" class="scope-note"></p></section><div class="controls"><button id="detail">Strand detail</button><button id="zoomout" aria-label="Zoom out">−</button><span id="zoom-readout">1.0×</span><button id="zoomin" aria-label="Zoom in">+</button><button id="reset">Whole tree</button></div><div class="quick"><button id="human">Find a human assembly ↗</button><button id="gene-open">Its coding regions →</button></div><p>Hover to preview · Click to select · Click anywhere again to clear.<br>Scroll to zoom · Drag to pan · Space to start or stop.</p></dialog>
|
| 48 |
+
<dialog id="gene-dialog"><button class="dialog-close" id="gene-close" aria-label="Close coding-region view">×</button><span class="tag">From an assembly to its annotations</span><h2 style="margin-top:16px">Homo sapiens</h2><p id="gene-summary"></p><div class="gene-label">GCA_000001405.29 · chromosome 1, CM000663.2 · first 1,000,000 bases<br>Upper track: forward strand · lower track: reverse strand</div><svg id="gene-svg" viewBox="0 0 1110 210" role="img" aria-label="Actual predicted coding segments in the first one million bases of human chromosome 1"></svg><p id="gene-count-window"></p><p class="gene-notes">Real coordinates from the published Carbon-A GFF3. These are model predictions, not experimentally confirmed genes. The blue/green tree colours describe annotation records for an assembly; they do not classify individual loci as known or new.</p></dialog><dialog id="about-dialog"><button class="dialog-close" id="about-close" aria-label="Close data information">×</button><h2>What is being drawn</h2><p>Each of the <span id="shown">33,588</span> strands across <span id="taxa-shown">16,976</span> taxa is a distinct accession from the explorer’s covered-assembly table, mapped through the NCBI taxonomy. This is a subset of the release. No assemblies or taxonomic branches have been invented to fill out the release total.</p><ul><li>Tree and common names: the existing HuggingFaceBio GenBank annotation explorer, 7 October 2026.</li><li>Existing annotation evidence: the cached NCBI GenBank assembly summary, 7 October 2026; a named annotation provider is required.</li><li>RefSeq mode counts matching assemblies, not genes: exact versioned matches between an assembly’s paired GCF accession and the project’s 2,055-assembly comparison corpus. It does not cover all RefSeq annotations.</li><li>Gene detail: actual published GFF3 coordinates and metadata for GCA_000001405.29.</li><li>Release totals supplied on 8 October 2026: 48,167 assemblies, 22,617 taxa, 566.34M coding loci and 27.18 Tbp.</li></ul><p>The centre hand follows the highlighted strand. Hover over a strand or inside the centre to preview an assembly; click to keep it selected. Click anywhere again to clear the selection. Clicking icons and bars also selects an assembly without zooming; use the scroll wheel or zoom controls to zoom and Whole tree to return. For video capture, press Space to start or replay a four-second clockwise sweep. Space again stops at the current strand; Escape stops and clears it. The assembly info box follows the highlighted strand and remains on the final assembly when playback finishes. The sweep has no counters.</p><p>Equal-width assembly strands preserve count through shared ancestors. At overview scale many strands fall within a pixel; zoom reveals them separately. Radius and branch length are layout choices, not dates or evolutionary distances.</p><p>For example, the human branch contains 1,412 assemblies: 2 match the project’s RefSeq comparison corpus, while 4 have annotation-provider records in this GenBank snapshot. These small counts describe assembly records, not human genes. RefSeq annotations are maintained separately from GenBank submission annotations. <a href="https://www.ncbi.nlm.nih.gov/refseq/about/human/" target="_blank" rel="noopener">NCBI’s explanation of human reference annotation</a>.</p><p>The outer bars sum measured gene_count values from published per-assembly metadata. Bins contain consecutive assembly tips in taxonomy order. Grey base marks indicate the fraction of assemblies without counts; these are not treated as measured zeros. The radial scale is linear and recalculated for each bin size. Colours within the tree classify assemblies; the green outer bars count all predicted loci, regardless of prior annotation status.</p><p>Silhouettes are the original PhyloPic assets and taxon assignments used by the Genome Atlas. Click an icon to select a strand at that node. <button id="credits-open">Icon credits and licences</button></p><p><a href="https://huggingface.co/spaces/HuggingFaceBio/carbon-a-database-explorer" target="_blank" rel="noopener">Source explorer ↗</a> · <a href="https://www.ncbi.nlm.nih.gov/datasets/docs/v2/reference-docs/ftp-browsing/" target="_blank" rel="noopener">NCBI metadata ↗</a></p></dialog><dialog id="credits-dialog"><button id="credits-close" class="dialog-close" aria-label="Close icon credits">×</button><h2>Genome Atlas silhouettes</h2><p>Original PhyloPic silhouettes, reused with the atlas’s taxonomic assignments. Their fill colour is adapted to the selected theme; original SVG files are preserved in the source data. Each image’s source page and licence are linked below.</p><div id="icon-credits"></div></dialog><dialog id="data-dialog"><button id="data-close" class="dialog-close" aria-label="Close download instructions">×</button><h2>Get annotation data</h2><p id="data-assembly"></p><p id="data-description"></p><p><a id="data-browse" target="_blank" rel="noopener">Browse annotation files ↗</a></p><p class="data-setup">Install <code>huggingface_hub</code> and run <code>hf auth login</code> with an account that can access the bucket.</p><pre><code id="data-code"></code></pre><button id="data-copy">Copy Python code</button><span id="copy-status" role="status"></span><p><a href="https://huggingface.co/docs/huggingface_hub/guides/buckets#download-files" target="_blank" rel="noopener">Hugging Face download documentation ↗</a></p></dialog><script id="dataset" type="application/octet-stream">__DATA__</script><script>__SCRIPT__</script></body></html>
|