Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 33 additions & 8 deletions _fleet/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ python3 scripts/fleet/assemble_page.py --check

Membership updates do not require rescanning the record corpora. The current
September 2026 vocabulary census covers nine Mechs; TaxonMech is shown in the
graph and cards with its published 625,960-taxon total (checked September 15, 2026), but its vocabulary counts have not
graph and cards with its published 625,960-taxon total (checked September 20, 2026), but its vocabulary counts have not
been measured by this pipeline. The heatmap uses the measured `fleet_data.json`
order, and the page states this limitation. Add TaxonMech to the census roots
and scanners before publishing measured vocabulary cells or overlap counts for it.
Expand Down Expand Up @@ -80,13 +80,38 @@ NaturalProductMech and TaxonMech both publish browse sites linked from their
cards; these links are separate from the historical census's record-link routes.

MIBiG and NPAtlas are carried through the whole pipeline alongside the
ontologies, because they are how NaturalProductMech grounds its corpus.
ontologies, because they are how NaturalProductMech cites its corpus. MIBiG is a
seeded grounding source; NPAtlas is a cross-reference target only, since its
licence bars ingestion into a CC BY 4.0 corpus.

## Published-site refresh (September 15, 2026)
`prefix_census.py`'s prefix alternation is a hand-maintained list and is known to
be incomplete: TOGO, UTEX and CCAP are absent although comparable registries
(MediaDive, DSMZ, ATCC, GOLD) are present. TOGO is CultureMech's second-largest
structured namespace at 2,833 occurrences, so the heatmap currently understates
it. Adding a prefix changes the heatmap's columns, so it needs a full rescan.

## Published-site refresh (September 20, 2026)

Cards and graph details use the live sites linked by each card, following their
landing-page redirects. MediaIngredientMech counts come from its published
`data/ingredients.json` (2,951 ingredients, 2,616 MAPPED), as on its landing page.
CultureMech reports 10,657 published-browser recipes, not the older merged-corpus
count. The vocabulary census and overlap assets remain their earlier snapshot;
the page explicitly separates these from the refreshed site totals.
landing-page redirects. Those redirects are client-side meta refreshes, not HTTP
3xx, so `curl -L` stops at the 200-response shell and never reaches the real
browser: fetch the `pages/` (or `app/`) URL directly when checking a card.

Read the number the page *renders*, not the one in its HTML source. Two landing
pages ship a stale static figure that JavaScript overwrites at runtime from the
Mech's own index: ProteinTraitsMech's source says 408,978 records and 29 sources
while `data/facets.json` serves 429,291 and 34, and MediaIngredientMech's source
carries literal ellipsis placeholders filled from `data/ingredients.json`
(2,951 ingredients, 2,616 MAPPED).

CultureMech is the one card that does not take its Mech's headline tile. That
tile reads 10,657 "recipes", which matches no current data layer: it is the
March 2026 normalized count, recorded as `input_recipes` in the Mech's tracked
`data/merge_yaml/merge_stats_2026.json` (2026-03-15), and it was already four
months stale when the tile was written on 2026-06-30, by which time the corpus
was 15,878 normalized and 6,103 merged. Nothing regenerates it. The card states 6,286 canonical media instead, which
is what CultureMech's own `pages/index.html` publishes and what the fleet census
counts; the merged/normalized split is explained in the card's detail text.

The vocabulary census and overlap assets are a separate, dated snapshot; the page
explicitly separates these from the site totals.
2 changes: 1 addition & 1 deletion _fleet/data/fleet_data.json

Large diffs are not rendered by default.

28 changes: 14 additions & 14 deletions _fleet/data/mech_stats.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"as_of": "2026-09-16",
"merged_prs_total": 2778,
"as_of": "2026-09-20",
"merged_prs_total": 2994,
"mechs": [
{
"mech": "CultureMech",
Expand All @@ -13,58 +13,58 @@
{
"mech": "MediaIngredientMech",
"repo": "MediaIngredientMech",
"records": 2957,
"records": 2951,
"reviewed": null,
"status_field": null,
"merged_prs": 359
"merged_prs": 361
},
{
"mech": "CommunityMech",
"repo": "CommunityMech",
"records": 364,
"reviewed": null,
"status_field": null,
"merged_prs": 528
"merged_prs": 534
},
{
"mech": "TraitMech",
"repo": "TraitMech",
"records": 618,
"records": 694,
"reviewed": 427,
"status_field": "mapping_status",
"merged_prs": 517
"merged_prs": 585
},
{
"mech": "ProteinTraitsMech",
"repo": "proteintraitsmech",
"records": 429291,
"reviewed": 39591,
"status_field": "mapping_status",
"merged_prs": 314
"merged_prs": 316
},
{
"mech": "AntibioticMech",
"repo": "AntibioticMech",
"records": 2939,
"reviewed": 80,
"status_field": "curation_status",
"merged_prs": 160
"merged_prs": 243
},
{
"mech": "CellStructureMech",
"repo": "CellStructureMech",
"records": 338,
"records": 421,
"reviewed": 0,
"status_field": "mapping_status",
"merged_prs": 425
"merged_prs": 465
},
{
"mech": "HabitatMech",
"repo": "HabitatMech",
"records": 3206,
"reviewed": 684,
"reviewed": 686,
"status_field": "mapping_status",
"merged_prs": 130
"merged_prs": 144
},
{
"mech": "NaturalProductMech",
Expand All @@ -80,7 +80,7 @@
"records": 625960,
"reviewed": 0,
"status_field": "mapping_status",
"merged_prs": 15
"merged_prs": 16
}
]
}
72 changes: 36 additions & 36 deletions _fleet/data/prefix_census.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@
"HabitatMech": {
"files": 3206,
"prefixes": {
"NCBITaxon": 13226,
"ENVO": 3319,
"NCBITaxon": 13227,
"ENVO": 3368,
"GOLD": 2562,
"BTO": 1363,
"UBERON": 1115,
"PMID": 513,
"FOODON": 200,
"BTO": 1367,
"UBERON": 1123,
"PMID": 516,
"FOODON": 198,
"BacDive": 167,
"PO": 117,
"DOI": 112,
"DOI": 116,
"MESH": 83,
"NCIT": 37,
"CHEBI": 22,
"PATO": 4,
"GO": 2
"NCIT": 38,
"CHEBI": 24,
"GO": 7,
"PATO": 4
}
},
"CommunityMech": {
Expand All @@ -35,12 +35,12 @@
}
},
"TraitMech": {
"files": 618,
"files": 694,
"prefixes": {
"DOI": 6088,
"METPO": 3453,
"RO": 2416,
"NCBITaxon": 955,
"DOI": 6749,
"METPO": 3541,
"RO": 2559,
"NCBITaxon": 975,
"GO": 886,
"CHEBI": 673,
"PMID": 412,
Expand All @@ -54,44 +54,44 @@
}
},
"CellStructureMech": {
"files": 338,
"files": 421,
"prefixes": {
"GO": 5994,
"DOI": 4800,
"NCBITaxon": 1040,
"GO": 8623,
"DOI": 5931,
"NCBITaxon": 1211,
"PMID": 308,
"UniProt": 284,
"PMID": 274,
"ECO": 145,
"PDB": 67,
"InterPro": 56,
"CHEBI": 45,
"InterPro": 58,
"CHEBI": 48,
"Pfam": 22,
"ComplexPortal": 16,
"METPO": 14,
"RO": 7,
"ComplexPortal": 5,
"SO": 5,
"MICRO": 4,
"SO": 4,
"EMDB": 3,
"BFO": 1
}
},
"ProteinTraitsMech": {
"files": 429291,
"prefixes": {
"InterPro": 1478104,
"UniProt": 657598,
"InterPro": 1558488,
"UniProt": 770276,
"PMID": 657527,
"RHEA": 613456,
"Pfam": 521966,
"Pfam": 558504,
"GO": 421586,
"ARO": 397717,
"CHEBI": 374424,
"NCBITaxon": 358314,
"NCBITaxon": 371580,
"RO": 278407,
"PDB": 235957,
"DOI": 193845,
"NCBIfam": 139525,
"EC": 119999,
"NCBIfam": 141317,
"EC": 120016,
"BFO": 74488,
"ComplexPortal": 20753,
"SO": 19302,
Expand Down Expand Up @@ -126,7 +126,7 @@
"ARO": 16653,
"CAS": 1823,
"PMID": 1207,
"NCBITaxon": 956,
"NCBITaxon": 1057,
"PubChem": 592,
"DrugBank": 508,
"UniProt": 278,
Expand All @@ -137,10 +137,10 @@
}
},
"MediaIngredientMech": {
"files": 2957,
"files": 2951,
"prefixes": {
"CHEBI": 7914,
"CAS": 692,
"CHEBI": 7895,
"CAS": 689,
"MICRO": 345,
"MESH": 301,
"NCIT": 287,
Expand Down Expand Up @@ -174,5 +174,5 @@
"CAS": 1
}
},
"_as_of": "2026-09-15"
"_as_of": "2026-09-20"
}
Loading
Loading