From ed1fcf41ceb1a909a93c6b86f3f6d9dc13d1f9fb Mon Sep 17 00:00:00 2001 From: Jason Stajich Date: Mon, 2 Nov 2026 07:53:56 -0800 Subject: [PATCH] Changelog: merge the two idiomorph-label bullets into one Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24731741..77802a8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ release completed. (Absorbs the planned v0.7.1 site release: the labels and reads pages, the yeast routing and family work (#188, #189) and the browser examples. Unlike v0.7.0, `src` and `db` change: the new `--cross-family-policy` and `--preset v0.8` (off unless asked), a wider MATog scope and a new MATpk family change which families search Ogataea and *P. kudriavzevii* genomes. The site's data and counts are those of the v0.8.0 run (below), made on commit `a2933f7` with `--preset v0.8`.) ### Added -- Idiomorph labels (output only; curator rulings of 2026-10-28, `docs/notes/2026-10-28_idiomorph-naming-proposal.md`): grammar `___` with frozen five-letter lineage codes and reference-organism system codes, in `scripts/idiomorph_label_registry.json` (single source of truth) and `scripts/idiomorph_labels.py`; all 27,885 v0.7.0 loci labelled (`results/2026-10-28_idiomorph_labels_v070/`, `scripts/label_loci_table.py`). The explorer and the reads pages show the labels beside the raw names ("Allele names" switch); labels are derived from the family called and the raw name, and the database, reports and calls are unchanged. +- Idiomorph labels beside the raw names (output only; curator rulings of 2026-10-28, `docs/notes/2026-10-28_idiomorph-naming-proposal.md`): grammar `___` with frozen five-letter lineage codes and reference-organism system codes, in `scripts/idiomorph_label_registry.json` (single source of truth, with cell tokens and gene maps), `scripts/idiomorph_labels.py` and `scripts/label_loci_table.py`; all 27,885 v0.7.0 loci labelled (`results/2026-10-28_idiomorph_labels_v070/`). The site data carry `label_alleles` in `taxa.json`, `call_label` / `alleles_label` in the genome tables and `data/idiomorph_labels.json`. The explorer and the reads pages show labels (for example `Taphr__SchPom_M`, `Sacch__CanAlb_alpha`, `Peziz__AspFum_MAT1-1`) beside the raw names, with the raw name and the reference organism in the tooltip and an "Allele names" switch back to the raw names. Labels are derived from the family called and the raw name; the database, the reports, the calls and the raw columns are unchanged. Duplicate family calls (`scripts/dedupe_family_calls.py`) are not removed from the counts. - `scripts/dedupe_family_calls.py` marks loci called by two families at identical coordinates (185 loci in 164 genomes of v0.7.0) and `scripts/idiomorph_crosscall_flags.py` lists the 181 yeast genomes with loci from two MAT systems (`results/2026-10-28_idiomorph_crosscall_flags/`); neither changes a call (routing re-run: #188, curation: #189). - Taphrinomycotina MAT candidates (466 proteins, polishing probe, Pneumocystis synteny; `results/2026-10-28_taphrinomycotina_mat_candidates/`): analysis only, no records added (#202). - Clone groups from read sketches (`datasets/reads/sra_survey/pilot/clone_pilot/`, `clone_clusters.py`), the raw-reads orchestration scripts archived under `datasets/reads/sra_survey/pilot/orchestration/` (#204) and tests for the reads page builder. @@ -19,7 +19,6 @@ release completed. - Platforms: `pixi.toml` and `pixi.lock` now cover `osx-arm64` and `linux-aarch64` as well as `linux-64`; a `tests` workflow runs the suite (`pixi run -e test pytest tests`) and a smoke test on Linux and macOS; the Docker image is built for `linux/amd64` and `linux/arm64`. The re-lock also moved the `linux-64` pins, so run the regression check against it. - Five accepted tier-3 records (curator sign-off 2026-10-30, J. Stajich): *Saccharomycopsis schoenii* GDD12 MATss (MATa-MATalpha left cluster and MATa right cluster, `db/Ascomycota/Ascoideales/`), *Barnettozyma californica* PB4207 MATbz and *Petasospora fabianii* MATpf (JOY008 MATa, TBRC 4498 MATalpha, `db/Ascomycota/Phaffomycetales/`). The gene models are our own (RNA-seq for *S. schoenii*, sequence-based for the others). With them, 20 of the 21 genomes that lose every MATsc/MTL call under the v0.8 cross-family rules are called again by their own family (trial run, `--preset v0.8`); *Ogataea degrootiae* GCA_019232045.1 stays uncalled. - Raw-reads wave 2 (`datasets/reads/sra_survey/pilot/wave2/`): 55 more tier A, A1 and B species typed (1,468 runs; 13 confirmed, 16 provisional, 7 provisional-homothallic, 49 withheld), yeast idiomorph names (a / alpha, P / M, A / B) carried through, *Botrytis cinerea* typed on all 333 eligible samples. Species reports gain an allele-count table for all studies pooled or study by study, per run or per clone, and clone groups for every species with 10 or more sketched runs (average linkage at 0.998; counts per clone only where the clone number is stable). Output only; the genome tables and the database are unchanged. -- Idiomorph labels beside the raw names (curator rulings of 2026-10-28): `scripts/idiomorph_label_registry.json` (lineage and reference-organism codes, cell tokens, gene maps), `scripts/idiomorph_labels.py`, `scripts/label_loci_table.py`; the site data carry `label_alleles` in `taxa.json`, `call_label` / `alleles_label` in the genome tables and `data/idiomorph_labels.json`, and the explorer shows `Lineage__System_Cell` labels (for example `Taphr__SchPom_M`, `Sacch__CanAlb_alpha`, `Peziz__AspFum_MAT1-1`) with the raw name and the reference organism in the tooltip, and a switch back to the raw names. Output only: the database, the reports and the raw columns are unchanged. All 27,885 v0.7.0 loci are labelled. Duplicate family calls (`scripts/dedupe_family_calls.py`) are not removed from the counts. - Raw-reads pages (`web/intro/reads/`): an overview of the wave 1 read typing (112 species, 1,629 runs, 599 of 605 single-allele calls agree with an assembly call) with the confidence of each species panel (confirmed / provisional / withheld), and one report per species (calls, agreement with assemblies, calls by study, every run, TSV download). Data written at site-build time by `scripts/build_reads_site.py` from `datasets/reads/sra_survey/pilot/wave1/`; the landing page links to it. The counts are of public runs, not population frequencies. The three curated collections (Fola 148 strains, *A. fumigatus* 331 read sets, *Coccidioides* 558 strains) have their own reports on the same pages, built from their committed tables; the old raw-reads table and Coccidioides chart on the landing page are replaced by a pointer. - Logo (a lens finding the locus in the explorer's gene-map colours): `web/intro/logo/` with horizontal, stacked, mono and dark variants and a favicon, wordmark outlines traced from Nunito (SIL OFL). In the site header (theme-aware: the dark file for the dark and neuromancer themes), as the tab icon on the landing page, explorer, About page and browser tool, and at the top of the README. - Cross-family calls and the `family_unconfirmed` flag (#188, #189; curator decisions of 2026-10-29; `src/MATPredict/detect/family_status.py`, `--cross-family-policy {off,on}` and `--preset v0.8` = `--preset v0.7` plus the policy): a locus called by two families is resolved after searching (the scoped family wins; otherwise the family is decided once per genome by the higher mean best core-gene identity, with no margin, and each such call carries `family_ambiguous` with both identities, #219; an out-of-scope MTL call with fewer than two flank genes cannot win against a family whose own flank gene, SLA2 or DIC1, is in the call: it is set aside as `cross_call` with `flank_rule`, left out of the genome mean, and `family_ambiguous.reason` is `cross_call_flank_rule`), an MTL call outside Serinales is `family_unconfirmed` unless two of PAP1, OBP1, PIK1 lie within 15 kb, and the Ogataea MATa and MATalpha cassettes are indicated (`cassette_undetermined`). Default off; the flag is separate from `confidence`. Evidence and replays: `results/2026-10-29_yeast_routing/`.