⚠️ SERVICE NOTICE: This instance will be decommissioned 1 december of this year (2026).
Please migrate your projects to our new repository:
https://gitrepo.service.rug.nl
- data-raw/microorganisms_files/: registry of all MO codes of every release since v2.0.0
(78,992 codes, built from the git tags), approved renames, and README with the rules;
decision by Matthijs S. Berends: MO codes from before v2.0.0 are not supported
- as.mo(): codes of earlier releases are translated deterministically via the internal
MO_RETIRED_CODES (generated from the registry); unknown codes are no longer guessed
(previously F_TRCHP, Trichophyton in v3.0.1, became Talaromyces chlamydosporus)
- synonym_mo_to_accepted_mo(): a missing target of one source no longer overwrites a valid
target of another source (e.g. Chaetomium abuense), and no 'renamed to itself'
- taxonomy build: codes are reused and reserved from the registry instead of the development
data (fixes 40 codes reused in the 2026 development data), also for phylum to family;
synonym cycles are broken; dangling 'renamed to' identifiers are removed; the build stops
on any broken integrity rule before saving
- run_microorganisms_build.R: runs the build in chunks at its checkpoints in one R process,
with progress logging and resuming from any checkpoint; prompt updated accordingly
- tests: shared integrity rules (helper-microorganisms.R) used by build and testthat, registry
tests over all codes, sentinel organisms, regression tests; current defects of the data on
main are listed in microorganisms_known_defects.csv until the next rebuild
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review of reproduction_of_microorganisms.R against the 2026 intermediates:
- genus homonyms: overrides, LPSN/MycoBank first, status within LPSN/MycoBank,
move misplaced protists, remove true homonyms (Necator, Capillaria, Graphium)
- keep clinically relevant names that are not validly published (Tropheryma)
- one set of relevant genera for all filters; 30 genera added to MO_RELEVANT_GENERA
- MycoBank classification parsed from all columns; empty values never overwrite
- GBIF synonyms in another genus get the lineage of their own genus
- prevalence no longer copied from genus; current names inherit from synonyms
- inferred records follow the relevance filters (no more unrelated lichens)
- ASCII names before deduplication (12 duplicate full names in 2026)
- MO codes: robust code parsing, reserved old codes, single allocator,
domain column used directly (2026 rename would now fail)
- name clean-up applied to taxonomy before MO codes, BacDive rows filled
- unattended running: review() instead of View(), CSV export of reviews,
LPSN cache and retries, stops when raw source files are missing
- reproduction_of_microorganisms_CLAUDE.md: prompt for an unattended run with
findings report and checklist for human review in the PR
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Make the EUCAST Clinical Breakpoint Tables import (2019-2026) fail-safe:
- Add blocking rows (NA breakpoints, reason in `note`) where EUCAST gives
no breakpoint for an organism (IE, "-", Note, brackets, "except"
clauses, table scope), so as.sir() no longer falls back to broader taxa
- Apply restrictions from EUCAST notes via a curated rule table with a
completeness guard (e.g. zone diameters for E. coli only)
- Import PK-PD (non-species related) breakpoints 2019-2023, H.
parainfluenzae MIC breakpoints, and explicit screening thresholds from
notes (high-level aminoglycosides, cefoxitin MIC, unidentified CoNS)
- Parser fixes: lost Staphylococcus sheets 2019/2020, note keys and
bodies, struck-through cells, hidden sheets, missing disk contents,
organism groups, site vocabulary, MIC dilution levels, off-scale
breakpoints stored as 0.0001
- Keep EUCAST antifungal breakpoints 2019-2025 from WHONET; code WHONET
streptomycin as STR1 instead of STR (streptoduocin)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Generalise interpretive rules for multi-guideline support (#268)
- Rename data-raw/eucast_rules.tsv → interpretive_rules.tsv; add rule.provider
column (value: "EUCAST") to distinguish future CLSI rows
- Rename EUCAST_RULES_DF → INTERPRETIVE_RULES_DF in _pre_commit_checks.R;
filter by rule.provider == guideline when applying rules in interpretive_rules()
- Rename custom_eucast_rules() → custom_interpretive_rules() with new S3 class
"custom_interpretive_rules"; old function becomes a deprecated wrapper in
zz_deprecated.R; backward-compat S3 dispatch shims added for old class
- Remove stop_if(guideline == "CLSI", ...) so clsi_rules() no longer errors
- Add .onLoad shim in zzz.R to create INTERPRETIVE_RULES_DF from EUCAST_RULES_DF
for transitional compatibility until sysdata.rda is regenerated
https://claude.ai/code/session_01D46BTsfJSPo3HnLWp3PRkP
* Fix namespace load failure: remove assignInNamespace from .onLoad (#268)
assignInNamespace cannot add NEW bindings to a locked package namespace
(R locks namespace bindings before .onLoad runs). Replace the .onLoad
shim with a runtime fallback inside interpretive_rules(): if
INTERPRETIVE_RULES_DF is absent (pre-regeneration sysdata.rda), derive
it from EUCAST_RULES_DF by adding the rule.provider column. This also
fixes the screening_abx line to reuse the already-resolved
interpretive_rules_df_total instead of a bare INTERPRETIVE_RULES_DF
reference.
https://claude.ai/code/session_01D46BTsfJSPo3HnLWp3PRkP
* fixes
* fixes
---------
Co-authored-by: Claude <noreply@anthropic.com>