Skip to content

Two different BacDive strains are both flagged as the type strain of one species #64

Description

@realmarcin

Confirmed by an adversarial review pass (survived 2 of 3 refuters) and re-verified on current main.

Defect

src/taxonmech/seed.py:515

if type_strain_ids & set(ccs):
    entry["is_type_strain"] = True

type_strain_ids is the union of every type-strain designation from every LPSN name on the record. A strain is flagged if it matches any single deposit in that union. A species has exactly one type strain, so a one-deposit match is too weak a rule.

Worked example

data/taxa/bacteria/salmonella_enterica.yaml flags two different strains, both against the same correct LPSN name (lpsn:784857, which lists 8 designations):

strain designation classified_as matched designations
bacdive:5117 LT2 ATCC 43971, CCUG 42060, DSM 17058
bacdive:23943 110 (K 108), CNCT SK 108, … NCBITaxon:59201 DSM 27656

Both render as type strain on the taxon page with nothing to distinguish them. The likely cause is that LPSN's designation list for a species includes deposits belonging to the type strains of its subspecies, and subtree gathering pulls those subspecies strains into the species record.

Why no gate catches it

tests/test_corpus_integrity.py::test_type_strains_match_a_nomenclature_designation restates the seeder's own derivation rule (does the strain match a designation?), so it cannot fail on this.

Suggested fix

Require the match to identify a single strain per name — e.g. flag only the strain matching the most designations of the record's correct name, and record the rest as type_strain_candidate with the matched deposits — plus a corpus test that no record flags two type strains for one correct name.

Requires a corpus rebuild. Sequence after #62.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions