dna-decode 0.5.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dna_decode-0.5.1/.claude/settings.local.json +16 -0
- dna_decode-0.5.1/.claude/testable-modules.md +30 -0
- dna_decode-0.5.1/.gitignore +76 -0
- dna_decode-0.5.1/.python-version +1 -0
- dna_decode-0.5.1/2026-05-30-1200-ep4-pathotype/approvals.md +1 -0
- dna_decode-0.5.1/2026-05-30-1200-ep4-pathotype/audit-trail.md +1 -0
- dna_decode-0.5.1/2026-05-30-1200-ep4-pathotype/intent-contract.md +1 -0
- dna_decode-0.5.1/2026-05-30-1200-ep4-pathotype/recommendation.md +1 -0
- dna_decode-0.5.1/2026-05-30-1200-ep4-pathotype/result.md +1 -0
- dna_decode-0.5.1/CHANGELOG.md +455 -0
- dna_decode-0.5.1/CLAUDE.md +296 -0
- dna_decode-0.5.1/FUTURE_FEATURES.md +68 -0
- dna_decode-0.5.1/LESSONS_LEARNED.md +135 -0
- dna_decode-0.5.1/PKG-INFO +457 -0
- dna_decode-0.5.1/QUICKSTART.md +78 -0
- dna_decode-0.5.1/README.md +419 -0
- dna_decode-0.5.1/TODOS.md +130 -0
- dna_decode-0.5.1/bash.exe.stackdump +9 -0
- dna_decode-0.5.1/config/datasources.yaml +98 -0
- dna_decode-0.5.1/data/antiviral_ref/Flu_N1_NA_EU716587_1_H275Y.fna +22 -0
- dna_decode-0.5.1/data/antiviral_ref/Flu_N1_NA_EU716623_1_WT.fna +22 -0
- dna_decode-0.5.1/data/antiviral_ref/N1_NA_NC026434_cds.fna +22 -0
- dna_decode-0.5.1/data/arabidopsis/FT10_pheno_261.csv +1164 -0
- dna_decode-0.5.1/data/arabidopsis/FT16_pheno_262.csv +1124 -0
- dna_decode-0.5.1/data/fungal_ref/Cauris_ERG11_PV630302_K143R.fna +2 -0
- dna_decode-0.5.1/data/fungal_ref/Cauris_ERG11_PV630305_Y132F.fna +2 -0
- dna_decode-0.5.1/data/fungal_ref/Cauris_ERG11_PV630306_WT.fna +2 -0
- dna_decode-0.5.1/data/fungal_ref/Cauris_ERG11_cds.fna +25 -0
- dna_decode-0.5.1/data/fungal_ref/cauris_g1_cohort.tsv +91 -0
- dna_decode-0.5.1/data/fungal_ref/cauris_g1_subset.assembled.tsv +25 -0
- dna_decode-0.5.1/data/fungal_ref/cauris_g1_subset.tsv +26 -0
- dna_decode-0.5.1/data/hiv_ref/HIV1_CA_HXB2_cds.fna +12 -0
- dna_decode-0.5.1/data/hiv_ref/HIV1_IN_HXB2_cds.fna +15 -0
- dna_decode-0.5.1/data/hiv_ref/HIV1_PR_HXB2_cds.fna +7 -0
- dna_decode-0.5.1/data/hiv_ref/HIV1_RT_HXB2_cds.fna +26 -0
- dna_decode-0.5.1/data/sarscov2_ref/SARSCoV2_Mpro_NC045512_cds.fna +15 -0
- dna_decode-0.5.1/dna_decode/__init__.py +7 -0
- dna_decode-0.5.1/dna_decode/amr/__init__.py +1 -0
- dna_decode-0.5.1/dna_decode/amr/cli.py +505 -0
- dna_decode-0.5.1/dna_decode/cli.py +169 -0
- dna_decode-0.5.1/dna_decode/colocalization/__init__.py +8 -0
- dna_decode-0.5.1/dna_decode/colocalization/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/colocalization/cli.py +122 -0
- dna_decode-0.5.1/dna_decode/colocalization/core.py +53 -0
- dna_decode-0.5.1/dna_decode/concordance/__init__.py +7 -0
- dna_decode-0.5.1/dna_decode/concordance/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/concordance/cli.py +104 -0
- dna_decode-0.5.1/dna_decode/concordance/core.py +85 -0
- dna_decode-0.5.1/dna_decode/data/__init__.py +10 -0
- dna_decode-0.5.1/dna_decode/data/annotations.py +258 -0
- dna_decode-0.5.1/dna_decode/data/antimalarial_amr.py +132 -0
- dna_decode-0.5.1/dna_decode/data/antiviral_amr.py +129 -0
- dna_decode-0.5.1/dna_decode/data/ast_data.py +176 -0
- dna_decode-0.5.1/dna_decode/data/bacdive.py +235 -0
- dna_decode-0.5.1/dna_decode/data/bvbrc_genome.py +170 -0
- dna_decode-0.5.1/dna_decode/data/calibrated_amr_rules.json +99 -0
- dna_decode-0.5.1/dna_decode/data/cell_key.py +23 -0
- dna_decode-0.5.1/dna_decode/data/cohort.py +497 -0
- dna_decode-0.5.1/dna_decode/data/experimental_drug_rules.py +80 -0
- dna_decode-0.5.1/dna_decode/data/external_cohort_genomes.py +103 -0
- dna_decode-0.5.1/dna_decode/data/external_crosswalk.py +86 -0
- dna_decode-0.5.1/dna_decode/data/external_mic_ingest.py +65 -0
- dna_decode-0.5.1/dna_decode/data/external_mic_labels.py +223 -0
- dna_decode-0.5.1/dna_decode/data/fungal_amr.py +152 -0
- dna_decode-0.5.1/dna_decode/data/hiv_amr.py +400 -0
- dna_decode-0.5.1/dna_decode/data/mic_tiers.py +350 -0
- dna_decode-0.5.1/dna_decode/data/pilot.py +302 -0
- dna_decode-0.5.1/dna_decode/data/refseq.py +236 -0
- dna_decode-0.5.1/dna_decode/data/resistance_db.py +159 -0
- dna_decode-0.5.1/dna_decode/data/sarscov2_amr.py +138 -0
- dna_decode-0.5.1/dna_decode/data/shipped_decoder_surface.py +73 -0
- dna_decode-0.5.1/dna_decode/data/tb_lineage_barcode.py +69 -0
- dna_decode-0.5.1/dna_decode/data/tb_who_catalogue.py +149 -0
- dna_decode-0.5.1/dna_decode/data/trust_surface.py +258 -0
- dna_decode-0.5.1/dna_decode/disinfinder/__init__.py +7 -0
- dna_decode-0.5.1/dna_decode/disinfinder/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/disinfinder/cli.py +83 -0
- dna_decode-0.5.1/dna_decode/disinfinder/runner.py +38 -0
- dna_decode-0.5.1/dna_decode/eval/__init__.py +9 -0
- dna_decode-0.5.1/dna_decode/eval/amr_rules.py +386 -0
- dna_decode-0.5.1/dna_decode/eval/biosample_resolver.py +302 -0
- dna_decode-0.5.1/dna_decode/eval/calibrate_organism.py +298 -0
- dna_decode-0.5.1/dna_decode/eval/clade_baseline.py +109 -0
- dna_decode-0.5.1/dna_decode/eval/clonality.py +250 -0
- dna_decode-0.5.1/dna_decode/eval/cohort_deconfound.py +158 -0
- dna_decode-0.5.1/dna_decode/eval/cohort_manifest.py +138 -0
- dna_decode-0.5.1/dna_decode/eval/cv.py +287 -0
- dna_decode-0.5.1/dna_decode/eval/expression_context.py +146 -0
- dna_decode-0.5.1/dna_decode/eval/loso_kmer.py +199 -0
- dna_decode-0.5.1/dna_decode/eval/metrics.py +219 -0
- dna_decode-0.5.1/dna_decode/eval/phylogeny.py +268 -0
- dna_decode-0.5.1/dna_decode/eval/point_baseline.py +92 -0
- dna_decode-0.5.1/dna_decode/eval/prospective_lock.py +168 -0
- dna_decode-0.5.1/dna_decode/genome_map/__init__.py +64 -0
- dna_decode-0.5.1/dna_decode/genome_map/amrfinder.py +68 -0
- dna_decode-0.5.1/dna_decode/genome_map/annotate.py +84 -0
- dna_decode-0.5.1/dna_decode/genome_map/build_map.py +396 -0
- dna_decode-0.5.1/dna_decode/genome_map/gate.py +199 -0
- dna_decode-0.5.1/dna_decode/genome_map/ingest.py +74 -0
- dna_decode-0.5.1/dna_decode/genome_map/phenotype_overlay.py +334 -0
- dna_decode-0.5.1/dna_decode/genome_map/tier_vocab.py +45 -0
- dna_decode-0.5.1/dna_decode/genome_map/tiers.py +69 -0
- dna_decode-0.5.1/dna_decode/genome_map/virulence_overlay.py +201 -0
- dna_decode-0.5.1/dna_decode/interp/__init__.py +8 -0
- dna_decode-0.5.1/dna_decode/interp/mutagenesis.py +407 -0
- dna_decode-0.5.1/dna_decode/ktype/__init__.py +1 -0
- dna_decode-0.5.1/dna_decode/ktype/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/ktype/cli.py +86 -0
- dna_decode-0.5.1/dna_decode/ktype/runner.py +74 -0
- dna_decode-0.5.1/dna_decode/mlst/__init__.py +7 -0
- dna_decode-0.5.1/dna_decode/mlst/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/mlst/cli.py +110 -0
- dna_decode-0.5.1/dna_decode/mlst/core.py +57 -0
- dna_decode-0.5.1/dna_decode/mlst/runner.py +58 -0
- dna_decode-0.5.1/dna_decode/models/__init__.py +7 -0
- dna_decode-0.5.1/dna_decode/models/cache.py +434 -0
- dna_decode-0.5.1/dna_decode/models/classical_baselines.py +355 -0
- dna_decode-0.5.1/dna_decode/models/classifiers.py +233 -0
- dna_decode-0.5.1/dna_decode/models/foundation.py +404 -0
- dna_decode-0.5.1/dna_decode/organism_rules/__init__.py +9 -0
- dna_decode-0.5.1/dna_decode/organism_rules/tb_amr.py +97 -0
- dna_decode-0.5.1/dna_decode/organism_rules/tb_goldset.py +107 -0
- dna_decode-0.5.1/dna_decode/organism_rules/tb_lineage.py +56 -0
- dna_decode-0.5.1/dna_decode/organism_rules/tb_vcf.py +197 -0
- dna_decode-0.5.1/dna_decode/pathotype/__init__.py +12 -0
- dna_decode-0.5.1/dna_decode/pathotype/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/pathotype/cli.py +134 -0
- dna_decode-0.5.1/dna_decode/pathotype/detect.py +167 -0
- dna_decode-0.5.1/dna_decode/pathotype/expec_score.py +59 -0
- dna_decode-0.5.1/dna_decode/pathotype/markers.py +81 -0
- dna_decode-0.5.1/dna_decode/pathotype/resolve.py +197 -0
- dna_decode-0.5.1/dna_decode/pathotype/vf_runner.py +357 -0
- dna_decode-0.5.1/dna_decode/plasmid/__init__.py +8 -0
- dna_decode-0.5.1/dna_decode/plasmid/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/plasmid/cli.py +90 -0
- dna_decode-0.5.1/dna_decode/plasmid/runner.py +65 -0
- dna_decode-0.5.1/dna_decode/pointfinder/__init__.py +8 -0
- dna_decode-0.5.1/dna_decode/pointfinder/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/pointfinder/cli.py +99 -0
- dna_decode-0.5.1/dna_decode/pointfinder/runner.py +120 -0
- dna_decode-0.5.1/dna_decode/profile/__init__.py +7 -0
- dna_decode-0.5.1/dna_decode/profile/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/profile/cli.py +218 -0
- dna_decode-0.5.1/dna_decode/resfinder/__init__.py +7 -0
- dna_decode-0.5.1/dna_decode/resfinder/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/resfinder/cli.py +105 -0
- dna_decode-0.5.1/dna_decode/resfinder/runner.py +60 -0
- dna_decode-0.5.1/dna_decode/serotype/__init__.py +6 -0
- dna_decode-0.5.1/dna_decode/serotype/__main__.py +4 -0
- dna_decode-0.5.1/dna_decode/serotype/cli.py +82 -0
- dna_decode-0.5.1/dna_decode/serotype/runner.py +70 -0
- dna_decode-0.5.1/dna_decode/typing/__init__.py +4 -0
- dna_decode-0.5.1/dna_decode/typing/blast_caller.py +96 -0
- dna_decode-0.5.1/dna_decode/typing/codon_map.py +54 -0
- dna_decode-0.5.1/dna_decode/viz/__init__.py +5 -0
- dna_decode-0.5.1/dna_decode/viz/browser.py +138 -0
- dna_decode-0.5.1/docs/ARCHITECTURE.md +291 -0
- dna_decode-0.5.1/dogfood-observations/minister-real-run-ep4-v01-2026-06-03.md +52 -0
- dna_decode-0.5.1/dogfood-observations/soraya-advance-ep4-interpret-2026-06-02.md +18 -0
- dna_decode-0.5.1/dogfood-observations/soraya-advance-ep4-v0resolver-2026-06-02.md +16 -0
- dna_decode-0.5.1/dogfood-observations/soraya-minister-ep4-2026-05-31.md +41 -0
- dna_decode-0.5.1/dogfood-observations/soraya-untilmvp-ep4-v0cli-2026-06-02.md +16 -0
- dna_decode-0.5.1/executed_plans/Clonality_Disclosure_Layer_Plan/execution-log.md +11 -0
- dna_decode-0.5.1/executed_plans/Clonality_Disclosure_Layer_Plan/technical-plan.md +132 -0
- dna_decode-0.5.1/executed_plans/Decoder_Suite_Validation_Report_Card_Productionization_Plan/execution-log.md +6 -0
- dna_decode-0.5.1/executed_plans/Decoder_Suite_Validation_Report_Card_Productionization_Plan/technical-plan.md +131 -0
- dna_decode-0.5.1/executed_plans/Expression_Context_Acinetobacter_Meropenem_Plan/execution-log.md +7 -0
- dna_decode-0.5.1/executed_plans/Expression_Context_Acinetobacter_Meropenem_Plan/technical-plan.md +152 -0
- dna_decode-0.5.1/executed_plans/Genome_Map_Virulence_Overlay_Plan/execution-log.md +12 -0
- dna_decode-0.5.1/executed_plans/Genome_Map_Virulence_Overlay_Plan/technical-plan.md +146 -0
- dna_decode-0.5.1/executed_plans/Oxford_Cohort_External_Revalidation_Plan/execution-log.md +9 -0
- dna_decode-0.5.1/executed_plans/Oxford_Cohort_External_Revalidation_Plan/technical-plan.md +179 -0
- dna_decode-0.5.1/executed_plans/Oxford_MIC_Ingester_Plan/execution-log.md +9 -0
- dna_decode-0.5.1/executed_plans/Oxford_MIC_Ingester_Plan/technical-plan.md +190 -0
- dna_decode-0.5.1/executed_plans/Stage1_Refactor_And_Test_Hardening_Plan.md +329 -0
- dna_decode-0.5.1/executed_plans/TMP_SMX_External_Validation_Cell_Plan/execution-log.md +6 -0
- dna_decode-0.5.1/executed_plans/TMP_SMX_External_Validation_Cell_Plan/technical-plan.md +144 -0
- dna_decode-0.5.1/features/genome-map/feature.md +318 -0
- dna_decode-0.5.1/features/genome-map/technical-plan.md +164 -0
- dna_decode-0.5.1/minister_drive_ep4.py +113 -0
- dna_decode-0.5.1/mission-control-runs/2026-05-22-2115-research-prs-cross-ancestry/audit-trail.md +96 -0
- dna_decode-0.5.1/mission-control-runs/2026-05-22-2115-research-prs-cross-ancestry/intent-contract.md +70 -0
- dna_decode-0.5.1/mission-control-runs/2026-05-23-1400-research-aou-prs-ancestry/audit-trail.md +94 -0
- dna_decode-0.5.1/mission-control-runs/2026-05-23-1400-research-aou-prs-ancestry/brainstorm_payload.md +93 -0
- dna_decode-0.5.1/mission-control-runs/2026-05-23-1400-research-aou-prs-ancestry/intent-contract.md +70 -0
- dna_decode-0.5.1/mission-control-runs/2026-05-27-0140-research-ecoli-pathotype-substrate/audit-trail.md +111 -0
- dna_decode-0.5.1/mission-control-runs/2026-05-27-0140-research-ecoli-pathotype-substrate/intent-contract.md +72 -0
- dna_decode-0.5.1/mission-control-runs/2026-06-06-0339-research-decoder-substrate-feasibility/audit-trail.md +35 -0
- dna_decode-0.5.1/mission-control-runs/2026-06-06-0339-research-decoder-substrate-feasibility/intent-contract.md +27 -0
- dna_decode-0.5.1/mission-control-runs/2026-06-07-1500-research-eukaryotic-multimodal-substrate/audit-trail.md +30 -0
- dna_decode-0.5.1/mission-control-runs/2026-06-07-1500-research-eukaryotic-multimodal-substrate/intent-contract.md +27 -0
- dna_decode-0.5.1/mission-control-runs/2026-06-21-1314-research-viral-antiviral-resistance-gp-datasets/audit-trail.md +45 -0
- dna_decode-0.5.1/mission-control-runs/2026-06-21-1314-research-viral-antiviral-resistance-gp-datasets/intent-contract.md +35 -0
- dna_decode-0.5.1/mission-control-runs/2026-06-22-1000-research-noncircular-label-sources/audit-trail.md +49 -0
- dna_decode-0.5.1/mission-control-runs/2026-06-22-1000-research-noncircular-label-sources/intent-contract.md +37 -0
- dna_decode-0.5.1/plans/AMR_embedding_niche_decision_2026-06-05.md +60 -0
- dna_decode-0.5.1/plans/Audit_Calibration_NT_AutoModel_Plan.md +165 -0
- dna_decode-0.5.1/plans/Audit_Calibration_NT_AutoModel_Ship_Path_Plan.md +194 -0
- dna_decode-0.5.1/plans/BVBRC_Genome_Metadata_Adapter_Plan.md +222 -0
- dna_decode-0.5.1/plans/Cef_Audit_Aware_Packet_Design.md +256 -0
- dna_decode-0.5.1/plans/Cef_Cached_Strain_V0_1_Slice_Plan.md +191 -0
- dna_decode-0.5.1/plans/Cef_Mechanism_Audit_Plan.md +162 -0
- dna_decode-0.5.1/plans/Cef_V0_1_Promotion_Slice_Plan.md +245 -0
- dna_decode-0.5.1/plans/Cipro_Decision_Bundle_Plan.md +142 -0
- dna_decode-0.5.1/plans/Cipro_Decision_Bundle_Technical_Plan.md +479 -0
- dna_decode-0.5.1/plans/Cipro_Post_Falsifier_Ship_Path_Technical_Plan.md +459 -0
- dna_decode-0.5.1/plans/DNA_Decoder_v0_1_Genome_Input_Cipro_Plan.md +179 -0
- dna_decode-0.5.1/plans/EP1_EP2_Cross_Drug_Synthesis_Plan.md +157 -0
- dna_decode-0.5.1/plans/EP2_Cef_Tet_Smoke_Design_Plan.md +169 -0
- dna_decode-0.5.1/plans/EP6_Carbon_Utilization_Substrate.md +92 -0
- dna_decode-0.5.1/plans/EP7_Fungal_AMR_Substrate.md +77 -0
- dna_decode-0.5.1/plans/EP8_Arabidopsis_Embedding_Test.md +44 -0
- dna_decode-0.5.1/plans/EP8_PathB_PreStage_Manifest.md +176 -0
- dna_decode-0.5.1/plans/EP8_PathB_PreStage_brainstorm.md +46 -0
- dna_decode-0.5.1/plans/EP_1A_Public_Genome_Selection_Memo.md +81 -0
- dna_decode-0.5.1/plans/EP_1B_External_Benchmark_Panel_Memo.md +118 -0
- dna_decode-0.5.1/plans/EP_1_5_Architecture_Decision_Packet.md +214 -0
- dna_decode-0.5.1/plans/EP_4_Non_AMR_Phenotype_Candidates.md +146 -0
- dna_decode-0.5.1/plans/EP_4_Pathotype_Discovery_Closeout_Memos_Plan.md +173 -0
- dna_decode-0.5.1/plans/EP_4_Pathotype_Idea_Anchor_Draft.md +144 -0
- dna_decode-0.5.1/plans/Ecoli_G2P_Phase1_Closeout_Plan.md +229 -0
- dna_decode-0.5.1/plans/Ecoli_G2P_Phase1_Ship_Path_Plan.md +175 -0
- dna_decode-0.5.1/plans/Ecoli_G2P_Platform_Technical_Plan.md +583 -0
- dna_decode-0.5.1/plans/Eukaryotic_DualMachine_Coordination.md +48 -0
- dna_decode-0.5.1/plans/Gene_Presence_AUROC_Bug_Fix_Plan.md +114 -0
- dna_decode-0.5.1/plans/Klebsiella_K_antigen_capsule_typing_feasibility_2026-06-24.md +87 -0
- dna_decode-0.5.1/plans/NT_Deferral_Docs_Cleanup_Plan.md +101 -0
- dna_decode-0.5.1/plans/NT_Deferral_Docs_Cleanup_Ship_Path_Plan.md +196 -0
- dna_decode-0.5.1/plans/Non_AMR_Phenotype_Pivot_Assessment_2026-06-24.md +149 -0
- dna_decode-0.5.1/plans/Phase2_Decision_Gate_Plan.md +169 -0
- dna_decode-0.5.1/plans/Phase2_Framing_Brainstorm_Plan.md +137 -0
- dna_decode-0.5.1/plans/Phase2_Framing_Brainstorm_Technical_Plan.md +173 -0
- dna_decode-0.5.1/plans/Post_V0_EP_Ladder_Plan.md +312 -0
- dna_decode-0.5.1/plans/Return_Decision_Tree_Patch_Plan.md +187 -0
- dna_decode-0.5.1/plans/SARSCoV2_Mpro_Cell_Build_Spec_2026-06-23.md +60 -0
- dna_decode-0.5.1/plans/Sidework_Sequence_Plan.md +227 -0
- dna_decode-0.5.1/plans/Sidework_Sequence_Ship_Path_Plan.md +315 -0
- dna_decode-0.5.1/plans/Stage1_N40_Cipro_Engineering_Screen_Plan.md +146 -0
- dna_decode-0.5.1/plans/Stage2_Docker_Tools_Install_Plan.md +197 -0
- dna_decode-0.5.1/plans/Stage2_N150_Prep_Plan.md +199 -0
- dna_decode-0.5.1/plans/TB_AMR_Decoder_CRyPTIC_Technical_Plan.md +162 -0
- dna_decode-0.5.1/plans/TB_AMR_Decoder_RIF_INH_On_CRyPTIC_Plan/technical-plan.md +177 -0
- dna_decode-0.5.1/plans/Trait_Decoding_Roadmap.md +193 -0
- dna_decode-0.5.1/plans/Two_Machine_Capability_Map_And_Transfer_Minimization_Plan_2026-05-31.md +109 -0
- dna_decode-0.5.1/plans/Two_Machine_Operating_Contract.md +192 -0
- dna_decode-0.5.1/plans/Variety_Decoder_Roadmap.md +74 -0
- dna_decode-0.5.1/plans/calibrate_organism_brainstorm.md +58 -0
- dna_decode-0.5.1/plans/cef_falsifier_brainstorm.md +40 -0
- dna_decode-0.5.1/plans/hypothesise_prompt_highest_value_strands_2026-06-08.md +92 -0
- dna_decode-0.5.1/plans/idea_anchor_prompts_2026-06-10.md +170 -0
- dna_decode-0.5.1/plans/v0.1_Ingestion_Contract_Plan.md +201 -0
- dna_decode-0.5.1/plans/v1_Horizon_Framing_Plan.md +166 -0
- dna_decode-0.5.1/project_state/dna-decode-2026-05-11.md +451 -0
- dna_decode-0.5.1/project_state/ecoli-pathotype-prediction-cli-2026-05-26.md +358 -0
- dna_decode-0.5.1/project_state/ep4-v01-expec-recall/big-idea.md +18 -0
- dna_decode-0.5.1/project_state/ep4-v01-expec-recall/round2-commitments-corrected.md +41 -0
- dna_decode-0.5.1/project_state/ep4-v01-vf-diff/big-idea.md +49 -0
- dna_decode-0.5.1/project_state/eukaryotic-trait-decoding-cycle-2026-06-07.md +240 -0
- dna_decode-0.5.1/pyproject.toml +153 -0
- dna_decode-0.5.1/research_outputs/_claim_promotion_register.md +68 -0
- dna_decode-0.5.1/research_outputs/_followup_queue.md +130 -0
- dna_decode-0.5.1/research_outputs/acquirable-ecoli-phenotype-label-sources-2026-06-14.md +70 -0
- dna_decode-0.5.1/research_outputs/acquirable-ecoli-phenotype-label-sources-2026-06-14.raw.md +41 -0
- dna_decode-0.5.1/research_outputs/acquirable-ecoli-phenotype-label-sources-2026-06-14_unsupported.md +18 -0
- dna_decode-0.5.1/research_outputs/acquirable-label-sources-2026-06-16.md +49 -0
- dna_decode-0.5.1/research_outputs/all-of-us-prs-ancestry-stratified-accuracy-2025-2026-05-23.md +84 -0
- dna_decode-0.5.1/research_outputs/all-of-us-prs-ancestry-stratified-accuracy-2025-2026-05-23.raw.md +55 -0
- dna_decode-0.5.1/research_outputs/all-of-us-prs-ancestry-stratified-accuracy-2025-2026-05-23_unsupported.md +26 -0
- dna_decode-0.5.1/research_outputs/cauris-wgs-mic-cohort-sources-2026-06-07.raw.md +54 -0
- dna_decode-0.5.1/research_outputs/dna_decoder_phase4_gate_a_pass_2026-05-28.md +82 -0
- dna_decode-0.5.1/research_outputs/ecoli-amr-revalidation-source-portfolio-2026-06-14.md +65 -0
- dna_decode-0.5.1/research_outputs/ecoli-amr-revalidation-source-portfolio-2026-06-14.raw.md +39 -0
- dna_decode-0.5.1/research_outputs/ecoli-amr-revalidation-source-portfolio-2026-06-14_unsupported.md +12 -0
- dna_decode-0.5.1/research_outputs/ecoli-bacterial-phenotype-decoder-substrate-feasibility-2026-06-05.md +80 -0
- dna_decode-0.5.1/research_outputs/ecoli-bacterial-phenotype-decoder-substrate-feasibility-2026-06-05.raw.md +35 -0
- dna_decode-0.5.1/research_outputs/ecoli-bacterial-phenotype-decoder-substrate-feasibility-2026-06-05_unsupported.md +18 -0
- dna_decode-0.5.1/research_outputs/ecoli-pathotype-labeled-genome-substrate-survey-2026-05-27.md +96 -0
- dna_decode-0.5.1/research_outputs/ecoli-pathotype-labeled-genome-substrate-survey-2026-05-27.raw.md +61 -0
- dna_decode-0.5.1/research_outputs/ecoli-pathotype-labeled-genome-substrate-survey-2026-05-27_unsupported.md +20 -0
- dna_decode-0.5.1/research_outputs/ep1-suspend-gate-pathotype-reuse-feasibility-2026-05-27.md +100 -0
- dna_decode-0.5.1/research_outputs/etec_reference_vonmentzer_2026-05-30.md +50 -0
- dna_decode-0.5.1/research_outputs/etec_reference_vonmentzer_strains_2026-05-30.csv +9 -0
- dna_decode-0.5.1/research_outputs/etec_vonmentzer_collection_gca_2026-05-30.csv +559 -0
- dna_decode-0.5.1/research_outputs/eukaryotic-multimodal-substrate-feasibility-2026-06-07.md +42 -0
- dna_decode-0.5.1/research_outputs/eukaryotic-multimodal-substrate-feasibility-2026-06-07.raw.md +35 -0
- dna_decode-0.5.1/research_outputs/eukaryotic-multimodal-substrate-feasibility-2026-06-07_unsupported.md +10 -0
- dna_decode-0.5.1/research_outputs/expec_rule_external_validity_2026-06-04.md +46 -0
- dna_decode-0.5.1/research_outputs/gate-b-target-contact-shortlist-2026-05-27.md +51 -0
- dna_decode-0.5.1/research_outputs/gate_b_cold_email_packet_2026-05-27.md +138 -0
- dna_decode-0.5.1/research_outputs/horesh-2021-file-f1-audit-2026-05-27.md +142 -0
- dna_decode-0.5.1/research_outputs/horesh-f1-label-provenance-audit-2026-06-04.md +84 -0
- dna_decode-0.5.1/research_outputs/horesh2021-file-f1-label-provenance-audit-2026-05-29.md +103 -0
- dna_decode-0.5.1/research_outputs/horesh_bounded_slice_accession_resolution_2026-05-30.md +49 -0
- dna_decode-0.5.1/research_outputs/horesh_bounded_slice_wgs_accession_candidates_2026-05-30.csv +261 -0
- dna_decode-0.5.1/research_outputs/ncbi-pathogen-detection-host-disease-facet-2026-05-27.md +87 -0
- dna_decode-0.5.1/research_outputs/noncircular-label-sources-2026-06-22.md +51 -0
- dna_decode-0.5.1/research_outputs/noncircular-label-sources-2026-06-22.raw.md +40 -0
- dna_decode-0.5.1/research_outputs/noncircular-label-sources-2026-06-22_unsupported.md +9 -0
- dna_decode-0.5.1/research_outputs/pathotype_bakeoff_kmer_expec_epec_2026-05-31.json +39 -0
- dna_decode-0.5.1/research_outputs/pathotype_cli_demo_AIEY01.json +86 -0
- dna_decode-0.5.1/research_outputs/pathotype_cli_demo_JSIS01.json +86 -0
- dna_decode-0.5.1/research_outputs/pathotype_gate_a_result_2026-05-28.json +9 -0
- dna_decode-0.5.1/research_outputs/pathotype_gate_a_result_2026-05-28.md +10 -0
- dna_decode-0.5.1/research_outputs/pathotype_gate_b_digital_proxy_2026-05-29.md +246 -0
- dna_decode-0.5.1/research_outputs/pathotype_gate_b_one_pager_2026-05-29.md +90 -0
- dna_decode-0.5.1/research_outputs/pathotype_gate_b_response_rubric_2026-05-29.md +108 -0
- dna_decode-0.5.1/research_outputs/pathotype_gate_b_send_kit_2026-05-29.md +123 -0
- dna_decode-0.5.1/research_outputs/pathotype_horesh_bounded_slice_decision_2026-05-30.md +57 -0
- dna_decode-0.5.1/research_outputs/pathotype_kmer_fullspectrum_diag_2026-06-02.json +54 -0
- dna_decode-0.5.1/research_outputs/pathotype_model_interpret_confound_2026-06-02.json +115 -0
- dna_decode-0.5.1/research_outputs/pathotype_model_state_and_bakeoff_plan_2026-05-31.md +32 -0
- dna_decode-0.5.1/research_outputs/pathotype_nt_windowed_arm_2026-06-02.json +55 -0
- dna_decode-0.5.1/research_outputs/pathotype_smoke_lt_vs_st_cohort_2026-05-31.csv +9 -0
- dna_decode-0.5.1/research_outputs/pathotype_smoke_lt_vs_st_result_2026-05-31.json +63 -0
- dna_decode-0.5.1/research_outputs/pathotype_smoke_lt_vs_st_result_2026-05-31.md +8 -0
- dna_decode-0.5.1/research_outputs/pathotype_v0_cohort_eval_2026-06-03.json +312 -0
- dna_decode-0.5.1/research_outputs/pathotype_v0_cohort_eval_baseline_2026-06-03.json +311 -0
- dna_decode-0.5.1/research_outputs/pathotype_v0_marker_screen_2026-06-02.json +1356 -0
- dna_decode-0.5.1/research_outputs/pathotype_vf_sidebyside_feasibility_2026-06-03.md +21 -0
- dna_decode-0.5.1/research_outputs/phase4_pathotype_discovery_handoff_to_workhorse_2026-05-27.md +150 -0
- dna_decode-0.5.1/research_outputs/polygenic-risk-score-cross-ancestry-portability-2025-2026.md +77 -0
- dna_decode-0.5.1/research_outputs/polygenic-risk-score-cross-ancestry-portability-2025-2026.raw.md +54 -0
- dna_decode-0.5.1/research_outputs/polygenic-risk-score-cross-ancestry-portability-2025-2026_unsupported.md +22 -0
- dna_decode-0.5.1/research_outputs/sota-bacterial-amr-prediction-small-cohorts-2026-05-13.md +68 -0
- dna_decode-0.5.1/research_outputs/sota-bacterial-amr-prediction-small-cohorts-2026-05-13.raw.md +46 -0
- dna_decode-0.5.1/research_outputs/sota-bacterial-amr-prediction-small-cohorts-2026-05-13_unsupported.md +26 -0
- dna_decode-0.5.1/research_outputs/tb_goldset_source_shortlist_2026-06-22.md +59 -0
- dna_decode-0.5.1/research_outputs/viral-antiviral-resistance-gp-datasets-2026-06-21.md +68 -0
- dna_decode-0.5.1/research_outputs/viral-antiviral-resistance-gp-datasets-2026-06-21.raw.md +48 -0
- dna_decode-0.5.1/research_outputs/viral-antiviral-resistance-gp-datasets-2026-06-21_unsupported.md +22 -0
- dna_decode-0.5.1/research_outputs/whittam-stec-center-contact-draft-2026-05-27.md +41 -0
- dna_decode-0.5.1/run_mechanism_audit_detached.bat +3 -0
- dna_decode-0.5.1/run_stage1b_detached.bat +4 -0
- dna_decode-0.5.1/scripts/__init__.py +0 -0
- dna_decode-0.5.1/scripts/amr_falsifier.py +248 -0
- dna_decode-0.5.1/scripts/amr_portal_feasibility.py +151 -0
- dna_decode-0.5.1/scripts/amr_portal_score_independent.py +202 -0
- dna_decode-0.5.1/scripts/amr_portal_tb_cohort.py +115 -0
- dna_decode-0.5.1/scripts/amr_predict.py +13 -0
- dna_decode-0.5.1/scripts/assemble_sra_cohort.py +246 -0
- dna_decode-0.5.1/scripts/audit_cohort.py +611 -0
- dna_decode-0.5.1/scripts/bacdive_carbon_util_feasibility.py +264 -0
- dna_decode-0.5.1/scripts/bacdive_li2023_to_long.py +104 -0
- dna_decode-0.5.1/scripts/build_acinetobacter_indep_cohort.py +73 -0
- dna_decode-0.5.1/scripts/build_amr_portal_report_card.py +107 -0
- dna_decode-0.5.1/scripts/build_calibrated_registry.py +92 -0
- dna_decode-0.5.1/scripts/build_cross_kingdom_summary.py +153 -0
- dna_decode-0.5.1/scripts/build_external_validation_report.py +261 -0
- dna_decode-0.5.1/scripts/build_fungal_cohort.py +286 -0
- dna_decode-0.5.1/scripts/build_hiv_report_card.py +164 -0
- dna_decode-0.5.1/scripts/build_mini_cohort.py +121 -0
- dna_decode-0.5.1/scripts/build_oxford_labels.py +146 -0
- dna_decode-0.5.1/scripts/build_pergene_support_cache.py +114 -0
- dna_decode-0.5.1/scripts/build_stage2_n150_cohort.py +158 -0
- dna_decode-0.5.1/scripts/build_tb_goldset_manifest.py +106 -0
- dna_decode-0.5.1/scripts/build_tb_report_card.py +153 -0
- dna_decode-0.5.1/scripts/build_tbportals_candidates.py +416 -0
- dna_decode-0.5.1/scripts/build_validation_report_card.py +293 -0
- dna_decode-0.5.1/scripts/bvbrc_strict_mic_4drug_census.py +664 -0
- dna_decode-0.5.1/scripts/cef_falsifier.py +22 -0
- dna_decode-0.5.1/scripts/cef_mic_audit.py +217 -0
- dna_decode-0.5.1/scripts/check_n40_cohort_genomes.py +49 -0
- dna_decode-0.5.1/scripts/cipro_attribution_preflight.py +338 -0
- dna_decode-0.5.1/scripts/cipro_bounded_falsifier.py +529 -0
- dna_decode-0.5.1/scripts/cipro_curated_baseline.py +504 -0
- dna_decode-0.5.1/scripts/cipro_duplicate_accession_audit.py +181 -0
- dna_decode-0.5.1/scripts/cipro_mechanism_audit.py +411 -0
- dna_decode-0.5.1/scripts/cipro_mechanism_phenotype_merge.py +313 -0
- dna_decode-0.5.1/scripts/cipro_mic_audit.py +269 -0
- dna_decode-0.5.1/scripts/compute_lineage_metrics.py +363 -0
- dna_decode-0.5.1/scripts/cross_machine_sync_check.py +341 -0
- dna_decode-0.5.1/scripts/cryptic_feasibility_probe.py +207 -0
- dna_decode-0.5.1/scripts/diagnose_bvbrc_mlst_gaps.py +107 -0
- dna_decode-0.5.1/scripts/diagnose_gene_presence_auroc.py +155 -0
- dna_decode-0.5.1/scripts/diagnose_gene_presence_synthetic.py +61 -0
- dna_decode-0.5.1/scripts/drug_mechanism_audit.py +494 -0
- dna_decode-0.5.1/scripts/drug_mechanism_phenotype_merge.py +190 -0
- dna_decode-0.5.1/scripts/expec_rule_external_validity.py +106 -0
- dna_decode-0.5.1/scripts/expression_context_validate.py +211 -0
- dna_decode-0.5.1/scripts/external_cohort_preflight.py +207 -0
- dna_decode-0.5.1/scripts/external_cohort_revalidate.py +341 -0
- dna_decode-0.5.1/scripts/fam_subclass_resolver.py +113 -0
- dna_decode-0.5.1/scripts/fetch_arabidopsis_pathb.py +91 -0
- dna_decode-0.5.1/scripts/fetch_prospective_cohort.py +241 -0
- dna_decode-0.5.1/scripts/flu_na_caller.py +46 -0
- dna_decode-0.5.1/scripts/fungal_erg11_caller.py +152 -0
- dna_decode-0.5.1/scripts/g2_dry_manifest.py +244 -0
- dna_decode-0.5.1/scripts/genome_map.py +250 -0
- dna_decode-0.5.1/scripts/genome_map_spike.py +383 -0
- dna_decode-0.5.1/scripts/genome_map_tool_surface.py +256 -0
- dna_decode-0.5.1/scripts/handoff_gate.py +411 -0
- dna_decode-0.5.1/scripts/hiv_nnrti_baseline.py +229 -0
- dna_decode-0.5.1/scripts/hiv_nnrti_validate.py +215 -0
- dna_decode-0.5.1/scripts/hiv_nrti_mutant_catalog.py +190 -0
- dna_decode-0.5.1/scripts/hiv_nrti_validate.py +165 -0
- dna_decode-0.5.1/scripts/hiv_nrti_within_subtype.py +138 -0
- dna_decode-0.5.1/scripts/hiv_pi_mutant_catalog.py +227 -0
- dna_decode-0.5.1/scripts/hiv_rt_caller.py +63 -0
- dna_decode-0.5.1/scripts/hiv_targetsite_baseline.py +167 -0
- dna_decode-0.5.1/scripts/hiv_targetsite_validate.py +183 -0
- dna_decode-0.5.1/scripts/independent_cohort_validate.py +213 -0
- dna_decode-0.5.1/scripts/klebsiella_cipro_transfer.py +189 -0
- dna_decode-0.5.1/scripts/klebsiella_drug_validate.py +196 -0
- dna_decode-0.5.1/scripts/klebsiella_meropenem_validate.py +192 -0
- dna_decode-0.5.1/scripts/ktype_validate.py +144 -0
- dna_decode-0.5.1/scripts/leaderboard.py +248 -0
- dna_decode-0.5.1/scripts/leakage_check_dup_accession.py +92 -0
- dna_decode-0.5.1/scripts/mash_cluster_n147.py +285 -0
- dna_decode-0.5.1/scripts/ncbi_pd_provenance_census.py +172 -0
- dna_decode-0.5.1/scripts/organism_drug_validate.py +192 -0
- dna_decode-0.5.1/scripts/oxford_score.py +167 -0
- dna_decode-0.5.1/scripts/oxford_w0_probe.py +137 -0
- dna_decode-0.5.1/scripts/pathotype_kmer_bakeoff.py +227 -0
- dna_decode-0.5.1/scripts/pathotype_kmer_fullspectrum_diag.py +94 -0
- dna_decode-0.5.1/scripts/pathotype_laptop_pipeline.py +208 -0
- dna_decode-0.5.1/scripts/pathotype_model_interpret_confound.py +161 -0
- dna_decode-0.5.1/scripts/pathotype_nt_windowed_arm.py +180 -0
- dna_decode-0.5.1/scripts/pathotype_nt_windowed_bakeoff.py +129 -0
- dna_decode-0.5.1/scripts/pathotype_v0_cohort_eval.py +125 -0
- dna_decode-0.5.1/scripts/pathotype_v0_marker_screen.py +204 -0
- dna_decode-0.5.1/scripts/pf_kelch13_caller.py +48 -0
- dna_decode-0.5.1/scripts/pilot_gate.py +108 -0
- dna_decode-0.5.1/scripts/pipeline.py +1028 -0
- dna_decode-0.5.1/scripts/plot_nt_embeddings_pca_umap.py +144 -0
- dna_decode-0.5.1/scripts/populate_cache.py +215 -0
- dna_decode-0.5.1/scripts/populate_tb_cohort.py +75 -0
- dna_decode-0.5.1/scripts/populate_tb_regeno_detached.bat +9 -0
- dna_decode-0.5.1/scripts/preflight_runnable.py +504 -0
- dna_decode-0.5.1/scripts/probe_nt_cache.py +136 -0
- dna_decode-0.5.1/scripts/prospective_lock_validate.py +200 -0
- dna_decode-0.5.1/scripts/provenance_disjoint_validate.py +169 -0
- dna_decode-0.5.1/scripts/quantize_fidelity_check.py +283 -0
- dna_decode-0.5.1/scripts/run_oxford_revalidation.py +114 -0
- dna_decode-0.5.1/scripts/run_tb_independent_amr_portal.py +226 -0
- dna_decode-0.5.1/scripts/sarscov2_caller.py +49 -0
- dna_decode-0.5.1/scripts/sarscov2_mpro_validate.py +153 -0
- dna_decode-0.5.1/scripts/sci234_score.py +241 -0
- dna_decode-0.5.1/scripts/score_tb_cryptic.py +231 -0
- dna_decode-0.5.1/scripts/score_tb_cryptic_parquet.py +237 -0
- dna_decode-0.5.1/scripts/score_tb_independent_goldset.py +38 -0
- dna_decode-0.5.1/scripts/slim_ast_csv_for_bundle.py +86 -0
- dna_decode-0.5.1/scripts/smoke_gate_12strain_cipro.py +396 -0
- dna_decode-0.5.1/scripts/smoke_pipeline.py +294 -0
- dna_decode-0.5.1/scripts/stage1_n40_cipro.py +615 -0
- dna_decode-0.5.1/scripts/stage_tb_vcf_subset.py +70 -0
- dna_decode-0.5.1/scripts/tb_coordinate_alignment_probe.py +219 -0
- dna_decode-0.5.1/scripts/tb_indep_finisher.sh +22 -0
- dna_decode-0.5.1/scripts/tb_independence_biosample_check.py +130 -0
- dna_decode-0.5.1/scripts/tb_independent_lineage_collapse.py +103 -0
- dna_decode-0.5.1/scripts/tmp_smx_external_validate.py +188 -0
- dna_decode-0.5.1/scripts/validate_tb_goldset_candidates.py +89 -0
- dna_decode-0.5.1/scripts/verify_quickstart.py +83 -0
- dna_decode-0.5.1/scripts/verify_wheel_ships_cards.py +87 -0
- dna_decode-0.5.1/scripts/within_lineage_diagnostic.py +149 -0
- dna_decode-0.5.1/scripts/xsource_validation.py +224 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1135-ep4-etec-gca/approvals.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1135-ep4-etec-gca/audit-trail.md +14 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1135-ep4-etec-gca/intent-contract.md +8 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1135-ep4-etec-gca/recommendation.md +4 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1135-ep4-etec-gca/result.md +5 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1200-ep4-pathotype/approvals.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1200-ep4-pathotype/audit-trail.md +16 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1200-ep4-pathotype/intent-contract.md +18 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1200-ep4-pathotype/recommendation.md +6 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1200-ep4-pathotype/result.md +12 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1807-ep4-etec-gca2/MOESM4.xlsx +0 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1807-ep4-etec-gca2/MOESM5.xlsx +0 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1807-ep4-etec-gca2/approvals.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1807-ep4-etec-gca2/audit-trail.md +18 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1807-ep4-etec-gca2/intent-contract.md +7 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1807-ep4-etec-gca2/recommendation.md +5 -0
- dna_decode-0.5.1/soraya_runs/2026-05-30-1807-ep4-etec-gca2/result.md +7 -0
- dna_decode-0.5.1/soraya_runs/2026-05-31-1333-ep4-a1-vf-runtime/approvals.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-05-31-1333-ep4-a1-vf-runtime/audit-trail.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-05-31-1333-ep4-a1-vf-runtime/intent-contract.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-05-31-1333-ep4-a1-vf-runtime/recommendation.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-05-31-1333-ep4-a1-vf-runtime/result.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1500-ep4-interpret-confound/approvals.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1500-ep4-interpret-confound/audit-trail.md +21 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1500-ep4-interpret-confound/intent-contract.md +25 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1500-ep4-interpret-confound/recommendation.md +24 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1500-ep4-interpret-confound/result.md +39 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1530-ep4-v0-marker-resolver/approvals.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1530-ep4-v0-marker-resolver/audit-trail.md +20 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1530-ep4-v0-marker-resolver/intent-contract.md +23 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1530-ep4-v0-marker-resolver/recommendation.md +24 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1530-ep4-v0-marker-resolver/result.md +26 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1600-ep4-v0-cli-build/approvals.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1600-ep4-v0-cli-build/audit-trail.md +21 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1600-ep4-v0-cli-build/intent-contract.md +25 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1600-ep4-v0-cli-build/recommendation.md +20 -0
- dna_decode-0.5.1/soraya_runs/2026-06-02-1600-ep4-v0-cli-build/result.md +24 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-0000-ep4-v0-cohort-calibrate/approvals.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-0000-ep4-v0-cohort-calibrate/audit-trail.md +21 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-0000-ep4-v0-cohort-calibrate/intent-contract.md +20 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-0000-ep4-v0-cohort-calibrate/recommendation.md +20 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-0000-ep4-v0-cohort-calibrate/result.md +30 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-1309-ep4-v01-expec-recall/approvals.md +1 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-1309-ep4-v01-expec-recall/audit-trail.md +34 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-1309-ep4-v01-expec-recall/gate-receipts/interrogation-fam-per-gene-expec-scoring-1.json +9 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-1309-ep4-v01-expec-recall/gate-receipts/interrogation-fam-per-gene-expec-scoring-2.json +9 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-1309-ep4-v01-expec-recall/intent-contract.md +22 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-1309-ep4-v01-expec-recall/lifecycle-journal.ndjson +2 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-1309-ep4-v01-expec-recall/recommendation.md +34 -0
- dna_decode-0.5.1/soraya_runs/2026-06-03-1309-ep4-v01-expec-recall/result.md +33 -0
- dna_decode-0.5.1/soraya_runs/2026-06-04-0008-ep4-v01-vf-diff/epoch-snapshot.json +17 -0
- dna_decode-0.5.1/soraya_runs/2026-06-04-0008-ep4-v01-vf-diff/gate-receipts/interrogation-ep4-v01-vf-diff-1.json +9 -0
- dna_decode-0.5.1/soraya_runs/2026-06-04-0008-ep4-v01-vf-diff/gate-receipts/interrogation-ep4-v01-vf-diff-2.json +9 -0
- dna_decode-0.5.1/soraya_runs/2026-06-04-0008-ep4-v01-vf-diff/result.md +35 -0
- dna_decode-0.5.1/soraya_runs/2026-06-08-gw38-wider-amr-campylobacter/intent-contract.md +15 -0
- dna_decode-0.5.1/soraya_runs/2026-06-08-gw38-wider-amr-campylobacter/result.md +34 -0
- dna_decode-0.5.1/soraya_runs/2026-06-08-qh3c-self-calibration-falsifier/falsify.py +169 -0
- dna_decode-0.5.1/soraya_runs/2026-06-08-qh3c-self-calibration-falsifier/falsify_result.json +194 -0
- dna_decode-0.5.1/soraya_runs/2026-06-08-qh3c-self-calibration-falsifier/result.md +31 -0
- dna_decode-0.5.1/soraya_runs/2026-06-09-dkld-antimalarial-g1/result.md +6 -0
- dna_decode-0.5.1/soraya_runs/2026-06-09-eqty-calibrate-brainstorm-fixes/result.md +19 -0
- dna_decode-0.5.1/soraya_runs/2026-06-09-fg1e-antimalarial-cli-wire/result.md +11 -0
- dna_decode-0.5.1/soraya_runs/2026-06-09-mxd8-pfcrt-chloroquine/result.md +10 -0
- dna_decode-0.5.1/soraya_runs/2026-06-09-ruv8-antimalarial-kelch13/result.md +20 -0
- dna_decode-0.5.1/soraya_runs/2026-06-10-3hzi-pfcrt-genome-flip/result.md +10 -0
- dna_decode-0.5.1/soraya_runs/2026-06-10-7qjq-expression-frontier-isaba1/isaba1_falsifier.py +117 -0
- dna_decode-0.5.1/soraya_runs/2026-06-10-7qjq-expression-frontier-isaba1/isaba1_falsifier_result.json +258 -0
- dna_decode-0.5.1/soraya_runs/2026-06-10-7qjq-expression-frontier-isaba1/result.md +9 -0
- dna_decode-0.5.1/soraya_runs/2026-06-10-uzlc-intron-aware-mapping/result.md +10 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-adv1-hiv-ols-baseline/audit-trail.md +12 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-adv1-hiv-ols-baseline/intent-contract.md +33 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-adv1-hiv-ols-baseline/recommendation.md +19 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-adv1-hiv-ols-baseline/result.md +13 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-umvp-prospective-cohort-fetch/intent-contract.md +9 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-umvp-prospective-cohort-fetch/recommendation.md +10 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-umvp-prospective-cohort-fetch/result.md +13 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-umvp-tb-cryptic-baseline/recommendation.md +10 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-umvp-tb-cryptic-baseline/result.md +11 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-umvp-tb-goldset/intent-contract.md +9 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-umvp-tb-goldset/recommendation.md +9 -0
- dna_decode-0.5.1/soraya_runs/2026-06-22-umvp-tb-goldset/result.md +15 -0
- dna_decode-0.5.1/soraya_runs/_bakta_smoke_test.py +20 -0
- dna_decode-0.5.1/soraya_runs/_download_smoke.py +16 -0
- dna_decode-0.5.1/soraya_runs/_vf_diff_driver.py +68 -0
- dna_decode-0.5.1/soraya_runs/self-init-potential.json +7 -0
- dna_decode-0.5.1/test_baseline.json +17 -0
- dna_decode-0.5.1/tests/__init__.py +0 -0
- dna_decode-0.5.1/tests/conftest.py +16 -0
- dna_decode-0.5.1/tests/fixtures/amr_mini/main.tsv +4 -0
- dna_decode-0.5.1/tests/fixtures/ecoli_mini/annotations.gff3 +12 -0
- dna_decode-0.5.1/tests/fixtures/ecoli_mini/genome.fna +21 -0
- dna_decode-0.5.1/tests/fixtures/ktype/genome.fna +2 -0
- dna_decode-0.5.1/tests/fixtures/ktype/wzi_db/wzi.fasta +4 -0
- dna_decode-0.5.1/tests/fixtures/ktype/wzi_db/wzi.txt +3 -0
- dna_decode-0.5.1/tests/test_amr_cli.py +66 -0
- dna_decode-0.5.1/tests/test_amr_cli_antimalarial.py +98 -0
- dna_decode-0.5.1/tests/test_amr_cli_antiviral.py +145 -0
- dna_decode-0.5.1/tests/test_amr_cli_fungal.py +84 -0
- dna_decode-0.5.1/tests/test_amr_cli_hiv.py +124 -0
- dna_decode-0.5.1/tests/test_amr_cli_sarscov2.py +49 -0
- dna_decode-0.5.1/tests/test_amr_portal_feasibility.py +49 -0
- dna_decode-0.5.1/tests/test_amr_portal_score_independent.py +73 -0
- dna_decode-0.5.1/tests/test_amr_portal_tb_cohort.py +25 -0
- dna_decode-0.5.1/tests/test_amr_rules.py +387 -0
- dna_decode-0.5.1/tests/test_amr_rules_expression_override.py +115 -0
- dna_decode-0.5.1/tests/test_audit_cohort.py +473 -0
- dna_decode-0.5.1/tests/test_bacdive.py +138 -0
- dna_decode-0.5.1/tests/test_biosample_resolver.py +289 -0
- dna_decode-0.5.1/tests/test_bootstrap.py +79 -0
- dna_decode-0.5.1/tests/test_build_amr_portal_report_card.py +28 -0
- dna_decode-0.5.1/tests/test_build_cross_kingdom_summary.py +21 -0
- dna_decode-0.5.1/tests/test_build_external_validation_report.py +240 -0
- dna_decode-0.5.1/tests/test_build_fungal_cohort.py +134 -0
- dna_decode-0.5.1/tests/test_build_hiv_report_card.py +43 -0
- dna_decode-0.5.1/tests/test_build_mini_cohort.py +177 -0
- dna_decode-0.5.1/tests/test_build_oxford_labels.py +79 -0
- dna_decode-0.5.1/tests/test_build_tb_report_card.py +23 -0
- dna_decode-0.5.1/tests/test_build_tbportals_candidates.py +148 -0
- dna_decode-0.5.1/tests/test_build_validation_report_card.py +279 -0
- dna_decode-0.5.1/tests/test_calibrate_organism.py +175 -0
- dna_decode-0.5.1/tests/test_calibrate_wiring.py +137 -0
- dna_decode-0.5.1/tests/test_cef_mic_audit.py +55 -0
- dna_decode-0.5.1/tests/test_census_persist.py +57 -0
- dna_decode-0.5.1/tests/test_cipro_bounded_falsifier.py +225 -0
- dna_decode-0.5.1/tests/test_cipro_curated_baseline.py +167 -0
- dna_decode-0.5.1/tests/test_cipro_mechanism_audit.py +289 -0
- dna_decode-0.5.1/tests/test_cipro_mechanism_phenotype_merge.py +192 -0
- dna_decode-0.5.1/tests/test_cipro_mic_audit.py +135 -0
- dna_decode-0.5.1/tests/test_cli_dispatch.py +83 -0
- dna_decode-0.5.1/tests/test_clonality.py +189 -0
- dna_decode-0.5.1/tests/test_cohort_build_dedup.py +132 -0
- dna_decode-0.5.1/tests/test_cohort_deconfound.py +94 -0
- dna_decode-0.5.1/tests/test_cohort_discovery_build_mode.py +196 -0
- dna_decode-0.5.1/tests/test_cohort_manifest.py +65 -0
- dna_decode-0.5.1/tests/test_colocalization.py +82 -0
- dna_decode-0.5.1/tests/test_compute_lineage_metrics.py +313 -0
- dna_decode-0.5.1/tests/test_concordance.py +92 -0
- dna_decode-0.5.1/tests/test_cross_machine_sync_check.py +124 -0
- dna_decode-0.5.1/tests/test_cryptic_feasibility_probe.py +56 -0
- dna_decode-0.5.1/tests/test_data_annotations.py +269 -0
- dna_decode-0.5.1/tests/test_data_ast.py +213 -0
- dna_decode-0.5.1/tests/test_data_bvbrc_genome.py +196 -0
- dna_decode-0.5.1/tests/test_data_cohort.py +440 -0
- dna_decode-0.5.1/tests/test_data_refseq.py +230 -0
- dna_decode-0.5.1/tests/test_data_resistance_db.py +198 -0
- dna_decode-0.5.1/tests/test_disinfinder_decoder.py +55 -0
- dna_decode-0.5.1/tests/test_docker_runner.py +99 -0
- dna_decode-0.5.1/tests/test_drug_mechanism_audit.py +260 -0
- dna_decode-0.5.1/tests/test_drug_mechanism_phenotype_merge.py +42 -0
- dna_decode-0.5.1/tests/test_drug_mechanism_phenotype_merge_contract.py +257 -0
- dna_decode-0.5.1/tests/test_eval.py +270 -0
- dna_decode-0.5.1/tests/test_eval_phylogeny.py +307 -0
- dna_decode-0.5.1/tests/test_experimental_drug_rules.py +65 -0
- dna_decode-0.5.1/tests/test_expression_context.py +121 -0
- dna_decode-0.5.1/tests/test_expression_context_validate.py +78 -0
- dna_decode-0.5.1/tests/test_external_cohort_genomes.py +112 -0
- dna_decode-0.5.1/tests/test_external_cohort_preflight.py +266 -0
- dna_decode-0.5.1/tests/test_external_cohort_revalidate.py +265 -0
- dna_decode-0.5.1/tests/test_external_crosswalk.py +98 -0
- dna_decode-0.5.1/tests/test_external_mic_ingest.py +93 -0
- dna_decode-0.5.1/tests/test_external_mic_labels.py +187 -0
- dna_decode-0.5.1/tests/test_fam_subclass_resolver.py +73 -0
- dna_decode-0.5.1/tests/test_fetch_prospective_cohort.py +99 -0
- dna_decode-0.5.1/tests/test_fungal_amr.py +60 -0
- dna_decode-0.5.1/tests/test_fungal_erg11_caller.py +107 -0
- dna_decode-0.5.1/tests/test_g2_dry_manifest.py +117 -0
- dna_decode-0.5.1/tests/test_genome_map_build.py +208 -0
- dna_decode-0.5.1/tests/test_genome_map_calibrated.py +76 -0
- dna_decode-0.5.1/tests/test_genome_map_cli.py +264 -0
- dna_decode-0.5.1/tests/test_genome_map_gate.py +218 -0
- dna_decode-0.5.1/tests/test_genome_map_ingest.py +204 -0
- dna_decode-0.5.1/tests/test_genome_map_overlay.py +218 -0
- dna_decode-0.5.1/tests/test_genome_map_spike.py +170 -0
- dna_decode-0.5.1/tests/test_genome_map_tiers.py +67 -0
- dna_decode-0.5.1/tests/test_genome_map_tool_surface.py +113 -0
- dna_decode-0.5.1/tests/test_genome_map_virulence_overlay.py +328 -0
- dna_decode-0.5.1/tests/test_handoff_gate.py +263 -0
- dna_decode-0.5.1/tests/test_hiv_amr.py +211 -0
- dna_decode-0.5.1/tests/test_hiv_nnrti_baseline.py +52 -0
- dna_decode-0.5.1/tests/test_hiv_nnrti_validate.py +55 -0
- dna_decode-0.5.1/tests/test_hiv_nrti_mutant_catalog.py +49 -0
- dna_decode-0.5.1/tests/test_hiv_nrti_within_subtype.py +21 -0
- dna_decode-0.5.1/tests/test_hiv_pi_mutant_catalog.py +73 -0
- dna_decode-0.5.1/tests/test_hiv_rt_caller.py +121 -0
- dna_decode-0.5.1/tests/test_hiv_targetsite_caller.py +101 -0
- dna_decode-0.5.1/tests/test_interp_mutagenesis.py +337 -0
- dna_decode-0.5.1/tests/test_intron_aware_mapping.py +78 -0
- dna_decode-0.5.1/tests/test_ktype.py +65 -0
- dna_decode-0.5.1/tests/test_leaderboard.py +93 -0
- dna_decode-0.5.1/tests/test_loso_kmer.py +330 -0
- dna_decode-0.5.1/tests/test_loso_kmer_cache_equivalence.py +64 -0
- dna_decode-0.5.1/tests/test_mash_cluster_n147.py +177 -0
- dna_decode-0.5.1/tests/test_mic_tiers.py +394 -0
- dna_decode-0.5.1/tests/test_mlst_decoder.py +84 -0
- dna_decode-0.5.1/tests/test_models_cache.py +595 -0
- dna_decode-0.5.1/tests/test_models_classical_baselines.py +359 -0
- dna_decode-0.5.1/tests/test_models_classifiers.py +204 -0
- dna_decode-0.5.1/tests/test_models_foundation.py +431 -0
- dna_decode-0.5.1/tests/test_oxford_w0_probe.py +73 -0
- dna_decode-0.5.1/tests/test_pathotype_expec_recall.py +183 -0
- dna_decode-0.5.1/tests/test_pathotype_resolver.py +136 -0
- dna_decode-0.5.1/tests/test_pathotype_vf_diff.py +137 -0
- dna_decode-0.5.1/tests/test_pf_kelch13.py +159 -0
- dna_decode-0.5.1/tests/test_pilot_gate.py +372 -0
- dna_decode-0.5.1/tests/test_pipeline_cli.py +321 -0
- dna_decode-0.5.1/tests/test_pipeline_predict_e2e.py +334 -0
- dna_decode-0.5.1/tests/test_pipeline_predict_genome_input_e2e.py +197 -0
- dna_decode-0.5.1/tests/test_pipeline_predict_v0.py +287 -0
- dna_decode-0.5.1/tests/test_plasmid_decoder.py +89 -0
- dna_decode-0.5.1/tests/test_pointfinder_decoder.py +96 -0
- dna_decode-0.5.1/tests/test_populate_cache.py +276 -0
- dna_decode-0.5.1/tests/test_preflight_runnable.py +198 -0
- dna_decode-0.5.1/tests/test_profile.py +42 -0
- dna_decode-0.5.1/tests/test_profile_amr_section.py +85 -0
- dna_decode-0.5.1/tests/test_prospective_lock.py +139 -0
- dna_decode-0.5.1/tests/test_provenance_disjoint_validate.py +82 -0
- dna_decode-0.5.1/tests/test_quantize_fidelity_check.py +190 -0
- dna_decode-0.5.1/tests/test_resfinder_decoder.py +76 -0
- dna_decode-0.5.1/tests/test_run_oxford_revalidation.py +65 -0
- dna_decode-0.5.1/tests/test_run_tb_independent.py +34 -0
- dna_decode-0.5.1/tests/test_sarscov2_amr.py +61 -0
- dna_decode-0.5.1/tests/test_sarscov2_caller.py +67 -0
- dna_decode-0.5.1/tests/test_sarscov2_mpro_validate.py +48 -0
- dna_decode-0.5.1/tests/test_score_tb_cryptic.py +92 -0
- dna_decode-0.5.1/tests/test_score_tb_cryptic_parquet.py +104 -0
- dna_decode-0.5.1/tests/test_serotype_decoder.py +80 -0
- dna_decode-0.5.1/tests/test_shipped_decoder_surface.py +64 -0
- dna_decode-0.5.1/tests/test_smoke.py +54 -0
- dna_decode-0.5.1/tests/test_smoke_gate_12strain.py +187 -0
- dna_decode-0.5.1/tests/test_stage1_n40_cipro.py +527 -0
- dna_decode-0.5.1/tests/test_tb_amr.py +103 -0
- dna_decode-0.5.1/tests/test_tb_goldset.py +40 -0
- dna_decode-0.5.1/tests/test_tb_goldset_ingest.py +95 -0
- dna_decode-0.5.1/tests/test_tb_independence_biosample_check.py +39 -0
- dna_decode-0.5.1/tests/test_tb_independent_lineage_collapse.py +17 -0
- dna_decode-0.5.1/tests/test_tb_leak_guard.py +60 -0
- dna_decode-0.5.1/tests/test_tb_lineage.py +77 -0
- dna_decode-0.5.1/tests/test_tb_vcf.py +106 -0
- dna_decode-0.5.1/tests/test_tb_who_catalogue.py +104 -0
- dna_decode-0.5.1/tests/test_tmp_smx_external_validate.py +89 -0
- dna_decode-0.5.1/tests/test_trust_surface.py +107 -0
- dna_decode-0.5.1/tests/test_trust_surface_guard.py +83 -0
- dna_decode-0.5.1/tests/test_trust_surface_packaging.py +56 -0
- dna_decode-0.5.1/tests/test_two_machine_operating_contract.py +122 -0
- dna_decode-0.5.1/tests/test_verify_quickstart.py +24 -0
- dna_decode-0.5.1/tests/test_vf_runner_coords.py +209 -0
- dna_decode-0.5.1/tests/test_viz_browser.py +123 -0
- dna_decode-0.5.1/tools/__init__.py +0 -0
- dna_decode-0.5.1/tools/docker_runner.py +112 -0
- dna_decode-0.5.1/uv.lock +1562 -0
- dna_decode-0.5.1/wiki/3 idea anchors for dna project.rtf +0 -0
- dna_decode-0.5.1/wiki/EP2_cef_tet_verdict_2026-05-17.md +94 -0
- dna_decode-0.5.1/wiki/GATE_A_REPORT.md +86 -0
- dna_decode-0.5.1/wiki/GATE_B_REPORT.md +164 -0
- dna_decode-0.5.1/wiki/HANDOFF_2026-06-07.md +93 -0
- dna_decode-0.5.1/wiki/HANDOFF_amr_phase2_RESULT_2026-06-05.md +80 -0
- dna_decode-0.5.1/wiki/HANDOFF_amr_phase2_embedding_frontier_2026-06-04.md +111 -0
- dna_decode-0.5.1/wiki/HANDOFF_ep4_2026-06-03.md +140 -0
- dna_decode-0.5.1/wiki/HANDOFF_ep4_nt_windowed_arm_2026-06-02.md +60 -0
- dna_decode-0.5.1/wiki/HANDOFF_ep4_pathotype_model_2026-05-31.md +54 -0
- dna_decode-0.5.1/wiki/HANDOFF_ep4_v0_resolver_2026-06-03.md +37 -0
- dna_decode-0.5.1/wiki/HANDOFF_session_2026-06-05.md +87 -0
- dna_decode-0.5.1/wiki/HANDOFF_session_2026-06-10.md +83 -0
- dna_decode-0.5.1/wiki/HANDOFF_workhorse_eukaryotic_2026-06-07.md +73 -0
- dna_decode-0.5.1/wiki/MINISTER_LAUNCH_ep4_v01_vf_diff_2026-06-03.md +60 -0
- dna_decode-0.5.1/wiki/MINISTER_MAIDEN_RUN_ep4_v01_expec_2026-06-03.md +58 -0
- dna_decode-0.5.1/wiki/PHASE2_PREFLIGHT.md +108 -0
- dna_decode-0.5.1/wiki/SESSION_HANDOFF_2026-06-16.md +90 -0
- dna_decode-0.5.1/wiki/SESSION_HANDOFF_2026-06-17_genome_map_execute.md +76 -0
- dna_decode-0.5.1/wiki/SESSION_HANDOFF_2026-06-17_tb_decoder_plan.md +77 -0
- dna_decode-0.5.1/wiki/SESSION_HANDOFF_2026-06-21_hiv_viral_decoder.md +158 -0
- dna_decode-0.5.1/wiki/SESSION_HANDOFF_2026-06-21_virulence_overlay_commit.md +132 -0
- dna_decode-0.5.1/wiki/SESSION_HANDOFF_2026-06-23_independent_validation_breakthrough.md +115 -0
- dna_decode-0.5.1/wiki/acinetobacter_meropenem_validate_2026-06-08.json +66 -0
- dna_decode-0.5.1/wiki/acinetobacter_meropenem_validate_2026-06-08.md +70 -0
- dna_decode-0.5.1/wiki/amr_multiorganism_capstone_2026-06-07.md +67 -0
- dna_decode-0.5.1/wiki/amr_portal_feasibility.json +2602 -0
- dna_decode-0.5.1/wiki/amr_portal_feasibility_result_2026-06-23.md +58 -0
- dna_decode-0.5.1/wiki/amr_portal_independent_report_card.json +500 -0
- dna_decode-0.5.1/wiki/amr_portal_independent_report_card.md +41 -0
- dna_decode-0.5.1/wiki/amr_portal_independent_scores.json +643 -0
- dna_decode-0.5.1/wiki/amr_portal_independent_validation_2026-06-23.md +93 -0
- dna_decode-0.5.1/wiki/amr_portal_tb_cohort_stats.json +9 -0
- dna_decode-0.5.1/wiki/amr_portal_tb_independent_runbook_2026-06-23.md +55 -0
- dna_decode-0.5.1/wiki/antimalarial_k13_g1_2026-06-09.md +48 -0
- dna_decode-0.5.1/wiki/antiviral_na_4th_kingdom_2026-06-10.md +62 -0
- dna_decode-0.5.1/wiki/arabidopsis_af001_stop_vs_escalate_decision_2026-06-21.json +39 -0
- dna_decode-0.5.1/wiki/arabidopsis_af001_stop_vs_escalate_decision_2026-06-21.md +74 -0
- dna_decode-0.5.1/wiki/arabidopsis_af002_ft16_bounded_execution_2026-06-21.json +87 -0
- dna_decode-0.5.1/wiki/arabidopsis_af002_ft16_bounded_execution_2026-06-21.md +215 -0
- dna_decode-0.5.1/wiki/bacdive_carbon_util_feasibility_2026-06-06.json +23 -0
- dna_decode-0.5.1/wiki/bacdive_carbon_util_feasibility_2026-06-06.md +35 -0
- dna_decode-0.5.1/wiki/bvbrc_strict_mic_4drug_census_2026-05-18.json +196 -0
- dna_decode-0.5.1/wiki/bvbrc_strict_mic_4drug_census_2026-05-18.md +173 -0
- dna_decode-0.5.1/wiki/calibrate_organism_validation_2026-06-08.json +88 -0
- dna_decode-0.5.1/wiki/calibrate_organism_validation_2026-06-08.md +49 -0
- dna_decode-0.5.1/wiki/calibrated_registry_independent_validation_2026-06-08.json +113 -0
- dna_decode-0.5.1/wiki/calibrated_registry_independent_validation_2026-06-08.md +52 -0
- dna_decode-0.5.1/wiki/calibrated_registry_independent_validation_2026-06-09.json +143 -0
- dna_decode-0.5.1/wiki/calibrated_registry_independent_validation_2026-06-09.md +24 -0
- dna_decode-0.5.1/wiki/campylobacter_ciprofloxacin_validate_2026-06-08.json +66 -0
- dna_decode-0.5.1/wiki/campylobacter_ciprofloxacin_validate_2026-06-08.md +72 -0
- dna_decode-0.5.1/wiki/ceftriaxone_falsifier_2026-06-04.md +7 -0
- dna_decode-0.5.1/wiki/ceftriaxone_mechanism_audit_2026-05-26.json +5476 -0
- dna_decode-0.5.1/wiki/ceftriaxone_mechanism_audit_2026-05-26.md +84 -0
- dna_decode-0.5.1/wiki/cipro_attribution_preflight_2026-05-16.md +87 -0
- dna_decode-0.5.1/wiki/cipro_attribution_preflight_2026-05-16.per_strain.json +1517 -0
- dna_decode-0.5.1/wiki/cipro_bounded_falsifier_coordination_plan_2026-05-22.md +415 -0
- dna_decode-0.5.1/wiki/cipro_bounded_falsifier_subset_2026-05-22.json +44 -0
- dna_decode-0.5.1/wiki/cipro_decision_bundle_pre_conditions_2026-05-17.md +92 -0
- dna_decode-0.5.1/wiki/cipro_ep1_closeout_2026-05-17.md +78 -0
- dna_decode-0.5.1/wiki/cipro_mechanism_audit_2026-05-17.json +5626 -0
- dna_decode-0.5.1/wiki/cipro_mechanism_audit_2026-05-17.md +73 -0
- dna_decode-0.5.1/wiki/cipro_mechanism_audit_smoke.json +57 -0
- dna_decode-0.5.1/wiki/cipro_mechanism_audit_smoke.md +32 -0
- dna_decode-0.5.1/wiki/cipro_mechanism_audit_smoke_st131.json +342 -0
- dna_decode-0.5.1/wiki/cipro_mechanism_audit_smoke_st131.md +34 -0
- dna_decode-0.5.1/wiki/cipro_mechanism_phenotype_audit_2026-05-17.json +1208 -0
- dna_decode-0.5.1/wiki/cipro_mechanism_phenotype_audit_2026-05-17.md +91 -0
- dna_decode-0.5.1/wiki/cipro_mic_audit_2026-05-17.json +1311 -0
- dna_decode-0.5.1/wiki/cipro_mic_audit_2026-05-17.md +83 -0
- dna_decode-0.5.1/wiki/ciprofloxacin_falsifier_2026-06-05.md +21 -0
- dna_decode-0.5.1/wiki/ciprofloxacin_falsifier_2026-06-05.scores.json +862 -0
- dna_decode-0.5.1/wiki/ciprofloxacin_mechanism_audit_2026-06-05.json +2220 -0
- dna_decode-0.5.1/wiki/ciprofloxacin_mechanism_audit_2026-06-05.md +83 -0
- dna_decode-0.5.1/wiki/ciprofloxacin_within_lineage_diagnostic_2026-06-05.md +21 -0
- dna_decode-0.5.1/wiki/codex_active_handoff_packet_2026-05-23.md +155 -0
- dna_decode-0.5.1/wiki/cross_kingdom_validation_summary.json +43 -0
- dna_decode-0.5.1/wiki/cross_kingdom_validation_summary.md +22 -0
- dna_decode-0.5.1/wiki/cryptic_feasibility_probe_2026-06-16.json +136 -0
- dna_decode-0.5.1/wiki/cryptic_feasibility_probe_result_2026-06-16.md +65 -0
- dna_decode-0.5.1/wiki/current_cef_duplicate_accession_audit_2026-05-25.json +23 -0
- dna_decode-0.5.1/wiki/current_cef_duplicate_accession_audit_2026-05-25.md +29 -0
- dna_decode-0.5.1/wiki/decisions-log.md +293 -0
- dna_decode-0.5.1/wiki/decoder_v0_ux_and_success_criterion.md +142 -0
- dna_decode-0.5.1/wiki/decoder_validation_report_card.json +737 -0
- dna_decode-0.5.1/wiki/decoder_validation_report_card.md +85 -0
- dna_decode-0.5.1/wiki/dna_amr_external_validation_2026-06-05.md +48 -0
- dna_decode-0.5.1/wiki/dna_amr_multidrug_validation_2026-06-06.md +107 -0
- dna_decode-0.5.1/wiki/dna_amr_xsource_validation_2026-06-07.json +144 -0
- dna_decode-0.5.1/wiki/dna_amr_xsource_validation_2026-06-07.md +33 -0
- dna_decode-0.5.1/wiki/dna_decoder_cross_session_handoff_2026-06-22.md +218 -0
- dna_decode-0.5.1/wiki/dna_decoder_integrated_handoff_2026-06-22.md +209 -0
- dna_decode-0.5.1/wiki/dna_decoder_progress_report_gmail_2026-05-26.md +201 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_cef_cached_handoff_2026-05-25.md +131 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_cef_cached_release_candidate_2026-05-26.md +209 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_cef_cached_vs_genome_full_validation_2026-05-26.json +683 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_cef_cached_vs_genome_full_validation_2026-05-26.md +68 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_cef_overnight_handoff_2026-05-26.md +74 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_cef_release_template_pending_audit.md +252 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_genome_input_release_candidate_2026-05-25.md +180 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_genome_input_validation_2026-05-25.json +76 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_genome_input_validation_2026-05-25.md +25 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_1_parallel_handoff_2026-05-25.md +204 -0
- dna_decode-0.5.1/wiki/dna_decoder_v0_closeout_handoff_2026-05-24.md +158 -0
- dna_decode-0.5.1/wiki/ebi_amr_portal_finding_2026-06-23.md +68 -0
- dna_decode-0.5.1/wiki/ecoli_provdisjoint_label_discordance_2026-06-10.md +55 -0
- dna_decode-0.5.1/wiki/embedding_niche_cross_domain_synthesis_2026-06-12.md +50 -0
- dna_decode-0.5.1/wiki/enterobacter_cloacae_ceftriaxone_validate_2026-06-08.json +47 -0
- dna_decode-0.5.1/wiki/enterobacter_cloacae_ceftriaxone_validate_2026-06-08.md +63 -0
- dna_decode-0.5.1/wiki/ep1_ep2_cross_drug_architectural_finding_2026-05-17.md +125 -0
- dna_decode-0.5.1/wiki/eukaryotic_active_frontier_registry_2026-06-15.json +89 -0
- dna_decode-0.5.1/wiki/evo2_zeroshot_vep_lead_2026-06-19.md +48 -0
- dna_decode-0.5.1/wiki/expression_context_acinetobacter_validation_2026-06-10.json +392 -0
- dna_decode-0.5.1/wiki/expression_context_acinetobacter_validation_2026-06-10.md +22 -0
- dna_decode-0.5.1/wiki/expression_frontier_isaba1_falsifier_2026-06-10.md +58 -0
- dna_decode-0.5.1/wiki/external_validation_milestone_synthesis_2026-06-16.md +46 -0
- dna_decode-0.5.1/wiki/external_validation_oxford_2026-06-15.json +139 -0
- dna_decode-0.5.1/wiki/external_validation_oxfordtmpsmx_tmpsmx20260616_2026-06-16.json +80 -0
- dna_decode-0.5.1/wiki/external_validation_report_card.json +104 -0
- dna_decode-0.5.1/wiki/external_validation_report_card.md +8 -0
- dna_decode-0.5.1/wiki/external_validation_sci234_2026-06-15.json +25 -0
- dna_decode-0.5.1/wiki/external_validation_sci234_2026-06-16.json +152 -0
- dna_decode-0.5.1/wiki/external_validation_sci234_result_2026-06-16.md +65 -0
- dna_decode-0.5.1/wiki/external_validation_sci234tmpsmx_tmpsmx20260616_2026-06-16.json +80 -0
- dna_decode-0.5.1/wiki/external_validation_tmpsmx_result_2026-06-16.md +58 -0
- dna_decode-0.5.1/wiki/fungal_cohort_g1_fluconazole_2026-06-08.json +293 -0
- dna_decode-0.5.1/wiki/fungal_cohort_g1_fluconazole_2026-06-08.md +58 -0
- dna_decode-0.5.1/wiki/fungal_ep7_g1_closeout_2026-06-08.md +78 -0
- dna_decode-0.5.1/wiki/genome_map_idea_anchor_prompt_2026-06-17.md +78 -0
- dna_decode-0.5.1/wiki/genome_map_spike_verdict_2026-06-18.json +26 -0
- dna_decode-0.5.1/wiki/genome_map_spike_verdict_2026-06-18.md +75 -0
- dna_decode-0.5.1/wiki/genome_map_spike_verdict_2026-06-19.json +30 -0
- dna_decode-0.5.1/wiki/genome_map_spike_verdict_2026-06-19.md +66 -0
- dna_decode-0.5.1/wiki/genome_map_tool_surface_2026-06-18.json +158 -0
- dna_decode-0.5.1/wiki/genome_map_usage.md +112 -0
- dna_decode-0.5.1/wiki/genome_map_virulence_overlay_feasibility_2026-06-19.md +94 -0
- dna_decode-0.5.1/wiki/hiv_cai_baseline_vs_ols_2026-06-22.json +42 -0
- dna_decode-0.5.1/wiki/hiv_cai_baseline_vs_ols_2026-06-22.md +13 -0
- dna_decode-0.5.1/wiki/hiv_cai_v0_validation_2026-06-22.json +47 -0
- dna_decode-0.5.1/wiki/hiv_cai_v0_validation_2026-06-22.md +20 -0
- dna_decode-0.5.1/wiki/hiv_decoder_report_card.json +318 -0
- dna_decode-0.5.1/wiki/hiv_decoder_report_card.md +42 -0
- dna_decode-0.5.1/wiki/hiv_insti_baseline_vs_ols_2026-06-22.json +150 -0
- dna_decode-0.5.1/wiki/hiv_insti_baseline_vs_ols_2026-06-22.md +17 -0
- dna_decode-0.5.1/wiki/hiv_insti_v0_validation_2026-06-22.json +114 -0
- dna_decode-0.5.1/wiki/hiv_insti_v0_validation_2026-06-22.md +24 -0
- dna_decode-0.5.1/wiki/hiv_nnrti_baseline_vs_ols_2026-06-21.json +147 -0
- dna_decode-0.5.1/wiki/hiv_nnrti_baseline_vs_ols_2026-06-21.md +19 -0
- dna_decode-0.5.1/wiki/hiv_nnrti_v0_validation_2026-06-21.json +98 -0
- dna_decode-0.5.1/wiki/hiv_nnrti_v0_validation_2026-06-21.md +22 -0
- dna_decode-0.5.1/wiki/hiv_nrti_mutant_catalog_v0_1_2026-06-21.json +239 -0
- dna_decode-0.5.1/wiki/hiv_nrti_mutant_catalog_v0_1_2026-06-21.md +25 -0
- dna_decode-0.5.1/wiki/hiv_nrti_v0_validation_2026-06-21.json +199 -0
- dna_decode-0.5.1/wiki/hiv_nrti_v0_validation_2026-06-21.md +21 -0
- dna_decode-0.5.1/wiki/hiv_nrti_within_subtype_2026-06-21.json +188 -0
- dna_decode-0.5.1/wiki/hiv_nrti_within_subtype_2026-06-21.md +21 -0
- dna_decode-0.5.1/wiki/hiv_pi_baseline_vs_ols_2026-06-22.json +231 -0
- dna_decode-0.5.1/wiki/hiv_pi_baseline_vs_ols_2026-06-22.md +20 -0
- dna_decode-0.5.1/wiki/hiv_pi_v0.1_validation_2026-06-23.json +405 -0
- dna_decode-0.5.1/wiki/hiv_pi_v0.1_validation_2026-06-23.md +38 -0
- dna_decode-0.5.1/wiki/hiv_pi_v0_validation_2026-06-22.json +165 -0
- dna_decode-0.5.1/wiki/hiv_pi_v0_validation_2026-06-22.md +27 -0
- dna_decode-0.5.1/wiki/independent_phenotype_label_census_2026-06-10.md +54 -0
- dna_decode-0.5.1/wiki/independent_phenotype_source_sweep_2026-06-10.md +86 -0
- dna_decode-0.5.1/wiki/klebsiella_ceftriaxone_validate_2026-06-07.json +66 -0
- dna_decode-0.5.1/wiki/klebsiella_ceftriaxone_validate_2026-06-07.md +18 -0
- dna_decode-0.5.1/wiki/klebsiella_cipro_transfer_2026-06-07.json +69 -0
- dna_decode-0.5.1/wiki/klebsiella_cipro_transfer_2026-06-07.md +52 -0
- dna_decode-0.5.1/wiki/klebsiella_ciprofloxacin_validate_2026-06-08.json +66 -0
- dna_decode-0.5.1/wiki/klebsiella_ciprofloxacin_validate_2026-06-08.md +18 -0
- dna_decode-0.5.1/wiki/klebsiella_drug_matrix_2026-06-07.md +60 -0
- dna_decode-0.5.1/wiki/klebsiella_gentamicin_validate_2026-06-07.json +66 -0
- dna_decode-0.5.1/wiki/klebsiella_gentamicin_validate_2026-06-07.md +18 -0
- dna_decode-0.5.1/wiki/klebsiella_meropenem_fn_dissection_2026-06-11.md +54 -0
- dna_decode-0.5.1/wiki/klebsiella_meropenem_validate_2026-06-07.json +66 -0
- dna_decode-0.5.1/wiki/klebsiella_meropenem_validate_2026-06-07.md +20 -0
- dna_decode-0.5.1/wiki/klebsiella_tetracycline_validate_2026-06-07.json +66 -0
- dna_decode-0.5.1/wiki/klebsiella_tetracycline_validate_2026-06-07.md +18 -0
- dna_decode-0.5.1/wiki/ktype_report_card.json +28 -0
- dna_decode-0.5.1/wiki/ktype_report_card.md +24 -0
- dna_decode-0.5.1/wiki/ncbi_pd_provenance_census_2026-06-10.md +75 -0
- dna_decode-0.5.1/wiki/negative_results_map_2026-06-13.md +54 -0
- dna_decode-0.5.1/wiki/new_drug_coverage_brainstorm_prompt_2026-06-16.md +92 -0
- dna_decode-0.5.1/wiki/new_drug_coverage_idea_anchor_prompt_2026-06-16.md +112 -0
- dna_decode-0.5.1/wiki/next_epoch_idea_anchor_prompt_2026-06-13.md +70 -0
- dna_decode-0.5.1/wiki/next_epoch_idea_anchor_prompt_2026-06-14.md +72 -0
- dna_decode-0.5.1/wiki/next_independent_label_cell_feasibility_2026-06-23.md +66 -0
- dna_decode-0.5.1/wiki/nf001_branch_state_decision_2026-06-20.json +66 -0
- dna_decode-0.5.1/wiki/nf001_branch_state_decision_2026-06-20.md +58 -0
- dna_decode-0.5.1/wiki/north_star_distance_brainstorm_2026-06-17.md +60 -0
- dna_decode-0.5.1/wiki/overnight_status_2026-05-23.md +102 -0
- dna_decode-0.5.1/wiki/oxford_external_validation_result_2026-06-15.md +34 -0
- dna_decode-0.5.1/wiki/oxford_revalidation_runbook.md +56 -0
- dna_decode-0.5.1/wiki/pathb_databricks_handoff_2026-06-12.md +286 -0
- dna_decode-0.5.1/wiki/pca_umap_12strain_cipro_2026-05-14.png +0 -0
- dna_decode-0.5.1/wiki/phase1_ship_report.md +105 -0
- dna_decode-0.5.1/wiki/phase2_arabidopsis_result_2026-06-12.md +63 -0
- dna_decode-0.5.1/wiki/phenotype_trait_tool_completion_assessment_2026-06-21.md +157 -0
- dna_decode-0.5.1/wiki/plans-index.md +508 -0
- dna_decode-0.5.1/wiki/post_codex_push_checklist_2026-05-26.md +211 -0
- dna_decode-0.5.1/wiki/project_forward_value_map_2026-06-23.md +182 -0
- dna_decode-0.5.1/wiki/project_frontier_map_2026-06-19.md +78 -0
- dna_decode-0.5.1/wiki/prospective_lock_manifest_2026-06-22.json +60 -0
- dna_decode-0.5.1/wiki/provdisjoint_census_results.json +129 -0
- dna_decode-0.5.1/wiki/provdisjoint_lineage_metrics.json +716 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_campylobacter_cipro_2026-06-10.json +34 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_campylobacter_cipro_2026-06-10.md +18 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_escherichia_coli_shigella_ceftr_2026-06-12.json +37 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_escherichia_coli_shigella_ceftr_2026-06-12.md +18 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_escherichia_coli_shigella_cipro_2026-06-10.json +34 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_escherichia_coli_shigella_cipro_2026-06-10.md +18 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_escherichia_coli_shigella_genta_2026-06-12.json +37 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_escherichia_coli_shigella_genta_2026-06-12.md +18 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_escherichia_coli_shigella_tetra_2026-06-12.json +37 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_escherichia_coli_shigella_tetra_2026-06-12.md +18 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_ceftr_2026-06-10.json +34 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_ceftr_2026-06-10.md +18 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_cipro_2026-06-10.json +34 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_cipro_2026-06-10.md +18 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_genta_2026-06-10.json +34 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_genta_2026-06-10.md +18 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_merop_2026-06-10.json +37 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_merop_2026-06-10.md +18 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_tetra_2026-06-10.json +34 -0
- dna_decode-0.5.1/wiki/provenance_disjoint_validation_klebsiella_tetra_2026-06-10.md +18 -0
- dna_decode-0.5.1/wiki/pseudomonas_aeruginosa_ciprofloxacin_validate_2026-06-07.json +66 -0
- dna_decode-0.5.1/wiki/pseudomonas_aeruginosa_ciprofloxacin_validate_2026-06-07.md +18 -0
- dna_decode-0.5.1/wiki/pseudomonas_aeruginosa_meropenem_validate_2026-06-08.json +66 -0
- dna_decode-0.5.1/wiki/pseudomonas_aeruginosa_meropenem_validate_2026-06-08.md +57 -0
- dna_decode-0.5.1/wiki/pypi_publish_runbook.md +50 -0
- dna_decode-0.5.1/wiki/reproducibility_freeze_2026-06-13.md +92 -0
- dna_decode-0.5.1/wiki/return_decision_tree_2026-05-16.md +102 -0
- dna_decode-0.5.1/wiki/salmonella_ciprofloxacin_validate_2026-06-08.json +66 -0
- dna_decode-0.5.1/wiki/salmonella_ciprofloxacin_validate_2026-06-08.md +66 -0
- dna_decode-0.5.1/wiki/sarscov2_mpro_cov_rdb_validation.json +140 -0
- dna_decode-0.5.1/wiki/sarscov2_mpro_validation_result_2026-06-23.md +50 -0
- dna_decode-0.5.1/wiki/self_calibration_falsifier_2026-06-08.json +194 -0
- dna_decode-0.5.1/wiki/self_calibration_falsifier_2026-06-08.md +72 -0
- dna_decode-0.5.1/wiki/session_handoff_2026-05-15.md +100 -0
- dna_decode-0.5.1/wiki/session_status_and_codex_request_2026-05-24.md +240 -0
- dna_decode-0.5.1/wiki/smoke_gate_12strain_ceftriaxone_2026-05-17.md +39 -0
- dna_decode-0.5.1/wiki/smoke_gate_12strain_cipro_2026-05-14.md +44 -0
- dna_decode-0.5.1/wiki/smoke_gate_12strain_cipro_2026-05-15.md +40 -0
- dna_decode-0.5.1/wiki/smoke_gate_12strain_tetracycline_2026-05-17.md +39 -0
- dna_decode-0.5.1/wiki/stage1_n40_cipro_2026-05-15.md +95 -0
- dna_decode-0.5.1/wiki/stage1_n40_cipro_mean-plus-max_2026-05-16.md +95 -0
- dna_decode-0.5.1/wiki/stage2_install_artifact_2026-05-15.md +82 -0
- dna_decode-0.5.1/wiki/staphylococcus_aureus_oxacillin_validate_2026-06-07.json +66 -0
- dna_decode-0.5.1/wiki/staphylococcus_aureus_oxacillin_validate_2026-06-07.md +51 -0
- dna_decode-0.5.1/wiki/tb_coordinate_alignment_probe_2026-06-16.json +93 -0
- dna_decode-0.5.1/wiki/tb_coordinate_alignment_probe_2026-06-16.md +18 -0
- dna_decode-0.5.1/wiki/tb_cryptic_parquet_baseline_2026-06-22.md +57 -0
- dna_decode-0.5.1/wiki/tb_decoder_idea_anchor_prompt_2026-06-16.md +105 -0
- dna_decode-0.5.1/wiki/tb_goldset_author_emails_2026-06-22.md +119 -0
- dna_decode-0.5.1/wiki/tb_goldset_howto_2026-06-22.md +63 -0
- dna_decode-0.5.1/wiki/tb_goldset_public_source_exhaustion_2026-06-22.md +52 -0
- dna_decode-0.5.1/wiki/tb_goldset_thorpe2024_assessment_2026-06-22.md +56 -0
- dna_decode-0.5.1/wiki/tb_independence_biosample_check.json +24 -0
- dna_decode-0.5.1/wiki/tb_independent_amr_portal_lineage_collapsed.json +113 -0
- dna_decode-0.5.1/wiki/tb_independent_amr_portal_scores.json +43 -0
- dna_decode-0.5.1/wiki/tb_independent_goldset_acquisition_2026-06-17.md +32 -0
- dna_decode-0.5.1/wiki/tb_independent_lineage_finding_2026-06-23.md +49 -0
- dna_decode-0.5.1/wiki/tb_independent_number_2026-06-23.md +66 -0
- dna_decode-0.5.1/wiki/tb_inh_cryptic_parquet_baseline_2026-06-22.json +72 -0
- dna_decode-0.5.1/wiki/tb_portals_goldset_runbook_2026-06-22.md +80 -0
- dna_decode-0.5.1/wiki/tb_report_card.json +72 -0
- dna_decode-0.5.1/wiki/tb_report_card.md +27 -0
- dna_decode-0.5.1/wiki/tb_rif_cryptic_fullcohort_result_2026-06-17.md +52 -0
- dna_decode-0.5.1/wiki/tb_rif_cryptic_parquet_baseline_2026-06-22.json +72 -0
- dna_decode-0.5.1/wiki/tb_rif_cryptic_results_2026-06-17.json +54 -0
- dna_decode-0.5.1/wiki/wave_a_cross_kingdom_unification_closeout_2026-06-21.md +71 -0
- dna_decode-0.5.1/wiki/wave_b_hiv_viral_cell_grounding_2026-06-21.md +136 -0
- dna_decode-0.5.1/wiki/wider_amr_transferability_synthesis_2026-06-08.md +66 -0
- dna_decode-0.5.1/wiki/workhorse_convergence_recovery_checklist_2026-06-23.md +168 -0
- dna_decode-0.5.1/wiki/workhorse_repo_convergence_status_2026-06-22.md +115 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(powershell -NoProfile -File /tmp/bundle_repo.ps1)",
|
|
5
|
+
"Bash(mkdir -p /c/Users/Farshad/AppData/Local/Temp/repo_verify)",
|
|
6
|
+
"Bash(rm -rf /c/Users/Farshad/AppData/Local/Temp/repo_verify/*)",
|
|
7
|
+
"Bash(powershell -NoProfile -Command \"Expand-Archive -Path 'C:\\\\Users\\\\Farshad\\\\Downloads\\\\dna_decode_repo.zip' -DestinationPath 'C:\\\\Users\\\\Farshad\\\\AppData\\\\Local\\\\Temp\\\\repo_verify' -Force\")",
|
|
8
|
+
"Read(//c/Users/Farshad/AppData/Local/Temp/**)",
|
|
9
|
+
"Bash(mkdir -p \"C:/Users/Farshad/AppData/Local/Temp/claude_bundle_for_codex_2026-05-26\")",
|
|
10
|
+
"Bash(rm -rf *)",
|
|
11
|
+
"Bash(mkdir -p plans wiki scripts dna_decode/data dna_decode/eval tests)",
|
|
12
|
+
"Bash(cp __TRACKED_VAR__/plans/Trait_Decoding_Roadmap.md plans/)",
|
|
13
|
+
"Bash(cp __TRACKED_VAR__/plans/EP_4_Non_AMR_Phenotype_Candidates.md plans/)"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Testable Modules
|
|
2
|
+
<!-- Auto-maintained by /test-epilogue — do not edit manually -->
|
|
3
|
+
|
|
4
|
+
- scripts/audit_cohort.py — Phase 2.5 cohort audit report generator; cohort overview + clade composition + metadata completeness + assembly QC quantiles + AST method breakdown + GO/WARN/NO-GO verdict; argparse + cohort-loader + AST-loader integration tests
|
|
5
|
+
- scripts/build_mini_cohort.py — Gate B mini-cohort selector; picks N highest-assembly-quality strains per R/S class from a source cohort parquet (sort: contig_count asc, n50 desc); argparse + ValueError surface for missing class
|
|
6
|
+
- scripts/build_validation_report_card.py — Anchor-4 report-card classify() 7-state cell machine (SCORED/POWERED_UNSCORED/UNDERPOWERED/ABSTAINS_BY_DESIGN/NOT_CENSUSED/LABEL_CONFOUNDED/NO_FREE_PHENOTYPE_SOURCE) + surface-precedence; main() read-only roll-up emit (JSON+MD; WIKI/ROOT redirectable for test); lineage-disclosure layer: load_lineage_metrics (canonical-keyed, malformed->empty) + build_lineage_block (scored/incomplete/not_computed) + _assert_weighted_renderable C3 guard (no weighted point without Wilson CI + eff-N)
|
|
7
|
+
- scripts/cipro_curated_baseline.py — EP1 audit-infrastructure module-level constants + ABLATION_FEATURE_SETS contract + _load_amrfinder_features JSON parsing. 2-layer verdict (original_condition_4 + amended_condition_4 gated on no_POINT >= 0.773 OR mechanism_only >= 0.80). LR + XGB orchestration over multi-block ablation sets skipped.
|
|
8
|
+
- scripts/cipro_mechanism_audit.py — EP1 audit-infrastructure pure-logic: _classify_symbol (gene → mechanism class with tolerant prefix match incl. acrR + bla* + qnr*), _is_synonymous_point (first AA == last AA detection), _parse_amrfinder_outputs (main.tsv POINTX → kind=mutation routing; mutations.tsv class+synonymous filter; cross-TSV dedupe). Docker AMRFinder invocation skipped.
|
|
9
|
+
- scripts/cipro_mechanism_phenotype_merge.py — EP1 audit-infrastructure pure-logic: _classify_noise per-row mapping with strict PRIMARY_CIPRO_MECHANISMS = QRDR | plasmid_protect_modify; co_resistance_modifiers separated; mechanism_opacity_flag separates AMRFinder-incomplete from labels-noisy. Pre-curated-baseline gate orchestration skipped.
|
|
10
|
+
- scripts/cipro_mic_audit.py — EP1 audit-infrastructure pure-logic: _parse_mic (strips <>= operators, handles NA variants) + _confidence_tier (HIGH_R/HIGH_S/DECISIVE/BORDERLINE/AMBIGUOUS/CONFLICT/NO_MIC classification under CLSI 2024 + EUCAST 14.0 breakpoints). Raw AST CSV load skipped.
|
|
11
|
+
- scripts/compute_lineage_metrics.py — per-cohort lineage recompute pure helpers: parse_cohort_dir / find_artifact (latest) / read_selected / _fasta_ok (M1 genome gate) / ensure_cohort_genomes / reconcile_raw_metrics (M4 raises on mismatch; skips no-run-dir accs) / graded_lineage_bucket / build_threshold_results / build_cell (scored vs partial/unreconciled no-tier) / load+upsert+write sidecar (canonical-key idempotent; malformed->fresh) / process_cohort no-artifact FileNotFoundError. Docker Mash in process_cohort/main skipped.
|
|
12
|
+
- scripts/leaderboard.py — formatting, markdown grouping, bundle-reading helpers (subprocess paths mocked)
|
|
13
|
+
- scripts/ncbi_pd_provenance_census.py — census_result_to_sidecar_row group->organism normalizer (refuses error/capped/missing-count rows) + upsert_census_result idempotent powering sidecar (one row per organism×drug; skips degraded; preserves header). Network metadata streaming (census_one/main) skipped.
|
|
14
|
+
- scripts/provenance_disjoint_validate.py — main() fail-closed manifest gate (incomplete manifest + no --allow-incomplete-manifest -> exit 2; override proceeds DEGRADED) + prior_accessions exclusion set wiring into select_disjoint (exact-self cohort not excluded). Network selection + Docker AMRFinder skipped.
|
|
15
|
+
- scripts/pipeline.py — CLI dispatcher with ingest/train/predict/attribute subcommands; argparse validation + exit codes
|
|
16
|
+
- scripts/populate_cache.py — Phase 2 standalone embedding-cache driver; strain_id ↔ assembly_accession mapping; --allow-mock gate; end-to-end mock populate
|
|
17
|
+
- scripts/quantize_fidelity_check.py — top-K intersection + Spearman comparison, GO/NO-GO aggregation, markdown report writer
|
|
18
|
+
- scripts/smoke_gate_12strain_cipro.py — 2026-05-17 patches: --drug-templated output strings (write_packet heading + cohort description + default filename slug) + NT-XGBoost runner fallback to ast_labels iteration when cohort.per_drug_strain_ids[drug] missing. Full LOSO + NT cache run is orchestration (skipped).
|
|
19
|
+
- scripts/smoke_pipeline.py — end-to-end synthetic-fixture smoke run; AUROC + top-1 attribution assertions
|
|
20
|
+
- scripts/tmp_smx_external_validate.py — NON-FROZEN TMP-SMX external scorer pure-logic: score_cohort (4-stratum sul/dfr routing, _binary R/S/None gap, strata_reproduced gate incl. sul-only-empty `so is None` branch) + build_artifact (external-validation-v1 schema + EXPERIMENTAL_SCORED/scorer_local branding + SCORED/INDETERMINATE headline) + frozen-leak guard. _mic/_binary/load_sci234/load_oxford/main I/O skipped.
|
|
21
|
+
- scripts/build_external_validation_report.py — external-validation roll-up pure-logic: load_external_artifacts (run-scoped; refuses glob-all; skips hard_fail/degraded/corrupt) + _publishable + cluster_weighted_with_ci (clonality math + Wilson CI + eff-N) + build_cell (experimental branding passthrough) + render_json/render_md (strict→binary fallback incl. both-empty default-to-strict) + _fmt_ci. Docker Mash (compute_lineage_for_cohort/main) skipped.
|
|
22
|
+
- dna_decode/genome_map/build_map.py — genome-map assembler; build_genome_map per-feature tier precedence (AMR determinant-phenotype > virulence-determinant > function) + phenotype wall + virulence wall (_virulence_field) + M2-isolated virulence metric keys; build_feature_table flattener. PURE (no Docker/IO).
|
|
23
|
+
- dna_decode/genome_map/virulence_overlay.py — VF overlay pure-logic: parse_virulence_hits (per_hit→DeterminantHit, uncalled dropped, tandem kept), join_virulence (VF-namespaced counts + _count_ambiguous_contig_hits M1 + all_virulence_symbol_fallback), genome_pathotype_call (full resolve_call contract; insufficient_context only on unavailable VF/no contigs), cluster_pathotype_context, _pergene_cov_from_per_gene, virulence_organism_in_scope (E.coli/Shigella gate)
|
|
24
|
+
- dna_decode/pathotype/vf_runner.py — canonical-VF blastn caller; parse_blastn_outfmt6 PURE parse (minus-strand normalization, qlen=0 + malformed-line guards, per_gene/per_cluster best-hit + per_hit every-called-HSP) + _interval_dedup (overlap-merge keeps higher-coverage HSP attrs; disjoint copies retained) + _db_sha256 + build_vf_diff side-by-side concordance. Live blastn subprocess (run_canonical_vf) skipped.
|
|
25
|
+
- dna_decode/eval/clonality.py — clonality clustering + cluster-weighted metrics; greedy_representative_clusters_from_matrix (C2 chaining-resistant, NOT single-linkage) / cluster_class (C1 DISCORDANT never majority-voted) / cluster_weighted_confusion (one vote per lineage; missing-pred->ABSTAIN) / wilson_ci (well-behaved at small/extreme N) / effective_lineage_n (normalizes int/str cls) / cluster_members. Docker Mash in greedy_representative_clusters skipped.
|
|
26
|
+
- dna_decode/data/cell_key.py — canonical (organism, drug) join key (strip+lowercase); canonical_cell_key tuple + cell_key_str 'org|drug' — single source of truth shared by report card + lineage sidecar + scored JSONs
|
|
27
|
+
- dna_decode/eval/cohort_manifest.py — accession-manifest leakage registry; build_manifest() scans data/raw/*/selected.tsv + data/processed/*.parquet (incomplete=True fail-closed on any load failure); prior_accessions() exact-self exclusion (not substring); role/organism/drug parsing
|
|
28
|
+
- dna_decode/data/shipped_decoder_surface.py — SHIPPED_DECODER_SURFACE deployed-claim registry; shipped_decoder_rows/surface_index/all_surface_drugs; phenotype_source_status enum (ncbi_pd/label_confounded/no_free_source); CLI-drug coverage anti-drift guard
|
|
29
|
+
- dna_decode/data/bvbrc_genome.py — Phase 2 BV-BRC Genomes-tab CSV adapter; header normalization (Title Case → lowercase_underscore); organism filter (Species → Genome Name fallback); duplicate-key warning; tolerant int parsing
|
|
30
|
+
- dna_decode/viz/browser.py — matplotlib attribution plot rendering + TSV export
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Runtime data + caches (large, gitignored per Step 1 of technical plan)
|
|
2
|
+
# Anchored to repo root — doesn't match dna_decode/data/ subpackage
|
|
3
|
+
# Ignore data/ contents per-entry (NOT the dir itself) so specific subdirs can be re-included
|
|
4
|
+
/data/*
|
|
5
|
+
# Exception: committed public reference alleles for the fungal-AMR real-data test (tiny GenBank CDS)
|
|
6
|
+
!/data/fungal_ref/
|
|
7
|
+
# Exception: committed Arabidopsis Path-B phenotype labels (small public AraPheno CSVs)
|
|
8
|
+
!/data/arabidopsis/
|
|
9
|
+
# Exception: committed public influenza N1 NA reference + real field alleles for the antiviral (4th-kingdom)
|
|
10
|
+
# real-data test (tiny GenBank CDS). Same class as fungal_ref.
|
|
11
|
+
!/data/antiviral_ref/
|
|
12
|
+
# Exception: committed public HIV-1 HXB2 RT CDS reference for the genome-mode caller self-check + planted-
|
|
13
|
+
# mutation test (tiny NCBI CDS, K03455.1:2550-4229). Same class as fungal_ref/antiviral_ref.
|
|
14
|
+
!/data/hiv_ref/
|
|
15
|
+
# Exception: committed public SARS-CoV-2 Mpro (nsp5) reference for the genome-mode caller integrity gate
|
|
16
|
+
# (tiny NCBI CDS, NC_045512.2:10055-10972). Same class as fungal_ref/antiviral_ref/hiv_ref.
|
|
17
|
+
!/data/sarscov2_ref/
|
|
18
|
+
*.h5
|
|
19
|
+
*.parquet
|
|
20
|
+
*.pkl
|
|
21
|
+
*.pt
|
|
22
|
+
*.bin
|
|
23
|
+
|
|
24
|
+
# Python
|
|
25
|
+
__pycache__/
|
|
26
|
+
*.pyc
|
|
27
|
+
*.pyo
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.pytest_cache/
|
|
30
|
+
.mypy_cache/
|
|
31
|
+
.ruff_cache/
|
|
32
|
+
.coverage
|
|
33
|
+
.coverage.*
|
|
34
|
+
htmlcov/
|
|
35
|
+
|
|
36
|
+
# Environments
|
|
37
|
+
.venv/
|
|
38
|
+
venv/
|
|
39
|
+
env/
|
|
40
|
+
.env
|
|
41
|
+
.env.local
|
|
42
|
+
|
|
43
|
+
# IDE
|
|
44
|
+
.vscode/
|
|
45
|
+
.idea/
|
|
46
|
+
*.swp
|
|
47
|
+
.DS_Store
|
|
48
|
+
|
|
49
|
+
# Build outputs
|
|
50
|
+
build/
|
|
51
|
+
dist/
|
|
52
|
+
*.egg
|
|
53
|
+
|
|
54
|
+
# Model checkpoints (large, fetched from HuggingFace)
|
|
55
|
+
*.safetensors
|
|
56
|
+
*.ckpt
|
|
57
|
+
checkpoints/
|
|
58
|
+
|
|
59
|
+
# Logs
|
|
60
|
+
*.log
|
|
61
|
+
logs/
|
|
62
|
+
|
|
63
|
+
# Claude execute-plan scaffolding — recreated by /execute-plan runs
|
|
64
|
+
.claude/execute-plan-state/
|
|
65
|
+
|
|
66
|
+
# Generated audit / analysis reports (re-runnable via scripts/audit_cohort.py etc.)
|
|
67
|
+
/reports/
|
|
68
|
+
|
|
69
|
+
# AMRFinder runs (generated artifacts; tens of MB per strain)
|
|
70
|
+
/data/amrfinder_runs/
|
|
71
|
+
|
|
72
|
+
# Project-state scratch/working copies (stale duplicates of the live ledger; not history)
|
|
73
|
+
/project_state/*-scratch.md
|
|
74
|
+
|
|
75
|
+
# genome-map spike per-genome feature maps (large, regenerable via scripts/genome_map_spike.py)
|
|
76
|
+
wiki/genome_map_spike_*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- approvals.md for 2026-05-30-1200-ep4-pathotype -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- audit-trail.md for 2026-05-30-1200-ep4-pathotype -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- intent-contract.md for 2026-05-30-1200-ep4-pathotype -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- recommendation.md for 2026-05-30-1200-ep4-pathotype -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- result.md for 2026-05-30-1200-ep4-pathotype -->
|
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `dna_decode`. Format loosely follows [Keep a Changelog](https://keepachangelog.com/);
|
|
4
|
+
this is a solo research-tool repo so the granularity is per-release-theme, not per-PR.
|
|
5
|
+
|
|
6
|
+
## [Unreleased] — Anchor-4: standing decoder-suite validation report card (2026-06-10)
|
|
7
|
+
|
|
8
|
+
- **NEW `dna_decode/eval/cohort_manifest.py`** — data-driven accession-manifest registry. `build_manifest()`
|
|
9
|
+
scans EVERY `data/raw/*/selected.tsv` + EVERY `data/processed/*.parquet`; `prior_accessions(exclude_cohort
|
|
10
|
+
=name)` excludes prior accessions by **EXACT-self cohort identity (not substring)**, and `Manifest.incomplete
|
|
11
|
+
=True` on any load failure. REPLACES the hardcoded `_FLAGSHIP_PARQUET_COHORTS` list (3 cohorts) in
|
|
12
|
+
`scripts/provenance_disjoint_validate.py` — leakage exclusion now covers all 8 parquet cohorts (744
|
|
13
|
+
accessions vs ~175 before).
|
|
14
|
+
- **`scripts/provenance_disjoint_validate.py` now FAILS CLOSED on an incomplete manifest** (`INCOMPLETE_MANIFEST`,
|
|
15
|
+
exit 2) unless `--allow-incomplete-manifest` is passed (which stamps degraded independence into the artifact).
|
|
16
|
+
Artifact carries `manifest_complete` / `manifest_degraded`.
|
|
17
|
+
- **`scripts/ncbi_pd_provenance_census.py` now SELF-PERSISTS its powering verdict** to
|
|
18
|
+
`wiki/provdisjoint_census_results.json` (group→organism normalizer; idempotent upsert per `(organism, drug)`;
|
|
19
|
+
REFUSES to persist error/row-capped rows so a degraded run can't overwrite a good powering verdict).
|
|
20
|
+
Previously stdout-only.
|
|
21
|
+
- **NEW `dna_decode/data/shipped_decoder_surface.py`** — the authoritative DEPLOYED-CLAIM surface registry
|
|
22
|
+
(organism, drug, engine, organism_scope, phenotype_source_status, census_group).
|
|
23
|
+
- **`scripts/build_validation_report_card.py`** — rows now = shipped surface ∪ observed cells (a new decoder
|
|
24
|
+
can't ship invisibly); added a 7th cell-state `LABEL_CONFOUNDED` (oxacillin×S.aureus, unreliable mecA
|
|
25
|
+
surrogate); `NO_FREE_PHENOTYPE_SOURCE` is now surface-driven. Honest per-cell tier + no aggregate headline
|
|
26
|
+
preserved. Writes `wiki/decoder_validation_report_card.{md,json}`. Current card: 25 cells (6 SCORED /
|
|
27
|
+
4 NOT_CENSUSED / 1 UNDERPOWERED / 2 ABSTAINS_BY_DESIGN / 1 LABEL_CONFOUNDED / 11 NO_FREE_PHENOTYPE_SOURCE).
|
|
28
|
+
|
|
29
|
+
## [Unreleased] — intron-aware multi-HSP codon mapping (engine)
|
|
30
|
+
|
|
31
|
+
- **`observed_substitutions` (the shared target-site codon-mapper) is now INTRON-AWARE.** It stitches the
|
|
32
|
+
query(CDS-reference)-position → subject-nucleotide map across ALL HSPs on the gene's best contig (not just
|
|
33
|
+
the single best HSP). Because codon numbering is by *query* position (contiguous CDS), a codon that spans
|
|
34
|
+
an exon-exon boundary — its 3 nts in two different HSPs (exons separated by an intron in the genome) — is
|
|
35
|
+
still translated correctly. This generically improves **every** genome-mode caller (fungal ERG11, K13)
|
|
36
|
+
for multi-exon / split-across-contigs genes, and **unblocks intron-containing targets** (pfcrt has 13
|
|
37
|
+
exons; GenBank deposits are ~2471 bp genomic). Intronless genes are the single-HSP special case →
|
|
38
|
+
identical prior behavior (guarded by the existing fungal/K13 tests; 967 passed, 0 regressions). Validated
|
|
39
|
+
on the real (non-repetitive) 3D7 K13 CDS artificially split into exons: exon1 + deep-exon2 mutations both
|
|
40
|
+
detected across the intron; a mid-codon boundary assembles to WT with no spurious call. 2 tests
|
|
41
|
+
(`tests/test_intron_aware_mapping.py`). Known limit: a periodic CDS self-aligns at its period (use a real
|
|
42
|
+
non-repetitive reference — real CDSs are).
|
|
43
|
+
- **pfcrt genome mode FLIPPED ON** (same run) — committed the 3D7 pfcrt CDS reference
|
|
44
|
+
(`data/antimalarial_ref/Pf3D7_pfcrt_cds.fna`, NCBI RefSeq XM_001348968, 424aa, WT Lys@76) so
|
|
45
|
+
`dna-amr --drug chloroquine --genome-fasta X.fna` works (`--pfcrt-ref` to override). **Validated on REAL
|
|
46
|
+
13-exon genomic pfcrt alleles** (the 2471 bp GenBank field isolates): the intron-aware mapper recovered
|
|
47
|
+
**K76T across the introns** + the full canonical CQ-R haplotype (A220S/Q271E/I356T/R371I = CVIET-type) on
|
|
48
|
+
all 6 tested; WT 3D7 → S. Genome-mode ref is picked by target gene (K13 → `--k13-ref`, pfcrt →
|
|
49
|
+
`--pfcrt-ref`); the intron guard is replaced by a ref-existence check. Real genomic fixture committed
|
|
50
|
+
(`Pf_pfcrt_MN419894_K76T.fna`). This is the first REAL multi-exon end-to-end validation of the engine.
|
|
51
|
+
|
|
52
|
+
## [Unreleased] — antimalarial vertical: P. falciparum K13 (the 3rd kingdom, protozoan)
|
|
53
|
+
|
|
54
|
+
- **`dna_decode/data/antimalarial_amr.py`** + **`scripts/pf_kelch13_caller.py`** — extends the proven
|
|
55
|
+
deterministic target-site method (bacterial AMRFinder → fungal ERG11) to *Plasmodium falciparum*
|
|
56
|
+
artemisinin partial resistance via the WHO-validated **Pfkelch13 (K13)** propeller markers (C580Y, R561H,
|
|
57
|
+
R539T, I543T, A675V, R622I, …). Hand-curated catalog (no AMRFinder-equivalent for Plasmodium); the caller
|
|
58
|
+
REUSES the fungal caller's gene-generic `observed_substitutions` (BLAST K13-CDS-vs-genome → gap-aware
|
|
59
|
+
codon-map → catalog), so the only new surface is the catalog + a thin wrapper. Artemisinin partial
|
|
60
|
+
resistance is a clearance phenotype, not an MIC — the validated K13 marker IS the genotypic call; an S
|
|
61
|
+
call surfaces non-K13 / partner-drug blind spots. Real 3D7 K13 reference committed
|
|
62
|
+
(`data/antimalarial_ref/Pf3D7_K13_cds.fna`, NCBI XM_001350122.1, 726aa, WT Cys@580); G0-completion test
|
|
63
|
+
validates C580Y numbering on the **real** reference. Offline-safe (absent BLAST+ → INDETERMINATE).
|
|
64
|
+
6 tests. **3rd kingdom decoded** (bacteria → fungi → protozoa).
|
|
65
|
+
- **Wired into the unified `dna-amr` CLI** (`--drug artemisinin|artesunate|dihydroartemisinin`) — routes to
|
|
66
|
+
the K13 engine (`--genome-fasta` real-BLAST, or `--observed K13:C580Y` wheel-only), mirroring the fungal
|
|
67
|
+
productization; emits the same `amr-mechanism-call-v1` record; `--organism` default relabels to
|
|
68
|
+
`Plasmodium_falciparum`. Shared `_target_site_record` + `_emit_target_site` now back both the fungal and
|
|
69
|
+
antimalarial branches (extracted, not duplicated). 4 CLI tests. So `dna-amr` now spans **3 kingdoms**.
|
|
70
|
+
- **+ chloroquine (pfcrt K76T)** — extends the antimalarial vertical to the iconic chloroquine-resistance
|
|
71
|
+
marker (`dna-amr --drug chloroquine --observed pfcrt:K76T` → R). `gene_for_drug` routes drug→target
|
|
72
|
+
gene; K76T → CQ-R is unambiguous (pfmdr1 partner-drug markers deliberately omitted — their direction
|
|
73
|
+
flips between amodiaquine and lumefantrine). Shipped first as `--observed`-only; **genome mode was then
|
|
74
|
+
flipped on** once the intron-aware mapper + committed pfcrt CDS reference landed (see the intron-aware
|
|
75
|
+
entry above) — `dna-amr --drug chloroquine --genome-fasta X.fna` now works on real 13-exon genomic pfcrt.
|
|
76
|
+
5 tests.
|
|
77
|
+
|
|
78
|
+
## [Unreleased] — self-calibrating AMR rule (`calibrate_organism`)
|
|
79
|
+
|
|
80
|
+
- **`dna_decode/eval/calibrate_organism.py`** — auto-selects the per-organism AMR rule config from a
|
|
81
|
+
≥~15R/15S labeled cohort: chooses the determinant COUNTER (`qrdr_point` vs broad drug-class) and the
|
|
82
|
+
count THRESHOLD by leave-one-out balanced accuracy, and auto-excludes INTRINSIC gene families (≥90% of
|
|
83
|
+
both R and S, grouped at gene-family granularity so polymorphic intrinsics like blaOXA-51-family are
|
|
84
|
+
caught). Returns a `CalibratedRule` (`.predict()` applies it); ABSTAINS with verdict `EXPRESSION_FLOOR`
|
|
85
|
+
when no presence config clears the 0.70 LOO floor (expression-driven R that gene-presence cannot decode).
|
|
86
|
+
Motivated by the wider-AMR boundary taxonomy (CONTENT/TUNING/EXPRESSION) — the counter, not just the
|
|
87
|
+
threshold, is organism-specific (the Klebsiella-vs-Salmonella cipro contrast). Validated on cached cohorts
|
|
88
|
+
(`wiki/calibrate_organism_validation_2026-06-08.md`): Campylobacter→1, Klebsiella→2 (+oqxAB excluded),
|
|
89
|
+
Salmonella→broad@1 (deployed 0.567→1.0) all LOO 1.0; Acinetobacter + Pseudomonas meropenem → abstain.
|
|
90
|
+
16 unit tests.
|
|
91
|
+
- **Wired into `call_resistance(..., organism=...)`** (opt-in) via a committed registry
|
|
92
|
+
`dna_decode/data/calibrated_amr_rules.json` (built by `scripts/build_calibrated_registry.py`). When an
|
|
93
|
+
organism is passed AND has a registry entry: a CALIBRATED entry applies its counter/threshold/intrinsic
|
|
94
|
+
exclusions; an EXPRESSION_FLOOR entry returns **`prediction: "ABSTAIN"`** (refuses to predict an
|
|
95
|
+
expression-driven organism×drug rather than over-call). `organism=None` (or unknown organism, or an
|
|
96
|
+
explicit `resistance_threshold`) keeps the unchanged `DRUG_RULE` default — backward-compatible. Registry
|
|
97
|
+
is IN-SAMPLE (N≈30) and opt-in by design; abstain verdicts are conservative. 9 wiring tests.
|
|
98
|
+
- **Design-review hardening (2026-06-09):** (a) `INSUFFICIENT_EVIDENCE` verdict + `MIN_CLASS_COUNT` guard —
|
|
99
|
+
a one-class/under-powered cohort no longer yields a bogus `EXPRESSION_FLOOR` (fixed a degenerate
|
|
100
|
+
Pseudomonas registry entry); (b) `loo_balanced_accuracy` now truly balanced (was plain accuracy), `None`
|
|
101
|
+
when a class is absent; (c) deployed config is the deterministic full-cohort `_select_best_config` pick
|
|
102
|
+
(removed the modal/tie-break ambiguity), LOO separately estimates the selection procedure; (d)
|
|
103
|
+
`build_calibrated_registry` resolves runs via the validator `reuse_glob` (Pseudomonas under-load fix —
|
|
104
|
+
all 5 entries now on valid 15R/15S); (e) promotion gate adds a **specificity floor** + min-10/class and
|
|
105
|
+
treats config-match as a **flag, not a gate** (non-inferior OOS perf suffices) — all 3 cipro configs
|
|
106
|
+
`promotion_eligible=True`. M2 (AMRFinder `Method`-column propagation) documented + deferred. 947 tests.
|
|
107
|
+
|
|
108
|
+
## [Unreleased] — cross-decoder analyses (concordance + profile + co-localization)
|
|
109
|
+
|
|
110
|
+
Three ANALYSES that compose the shipped decoders (no new DB) — variety roadmap Waves 1-2.
|
|
111
|
+
|
|
112
|
+
- **`dna-coloc`** (`dna-decode coloc`, Wave 2) — links each acquired resistance gene to plasmid replicon(s)
|
|
113
|
+
on the SAME assembly contig → "is *this* AMR gene plasmid-borne?". Enabled by a new opt-in engine
|
|
114
|
+
positions-mode (`call_alleles(..., with_positions=True)` returns each hit's subject contig+coords;
|
|
115
|
+
default-off, every existing caller unchanged). Same-contig is suggestive, not proof (caveat shipped).
|
|
116
|
+
Pure core + real-BLAST e2e (blaNDM-1 on plasmid-contig → plasmid-borne; sul1 on chrom-contig → not).
|
|
117
|
+
|
|
118
|
+
- **`dna-concordance`** (`dna-decode concordance`) — compares the two independent acquired-gene callers,
|
|
119
|
+
AMRFinder (`dna-amr` main.tsv) vs ResFinder (`dna-resfinder` blastn), at the gene-family level (allele
|
|
120
|
+
variant stripped; `sul1`≠`sul2`, `blaNDM-1`≈`blaNDM-19`) + Jaccard agreement. The cross-check `resfinder`
|
|
121
|
+
was built to enable.
|
|
122
|
+
- **`dna-profile`** (`dna-decode profile`) — runs every assembly-FASTA decoder (pathotype + serotype +
|
|
123
|
+
plasmid + resfinder) on one genome → a single unified report; each section degrades independently.
|
|
124
|
+
- Kept out of the `TRAITS` decoder registry (new `ANALYSES` dict; disjoint namespaces). 15 new tests.
|
|
125
|
+
|
|
126
|
+
## [Unreleased] — MLST sequence-typing decoder (the blocked one, unblocked via PubMLST)
|
|
127
|
+
|
|
128
|
+
- **`dna-mlst`** (`dna-decode mlst`) — 8th decoder. 7-gene MLST: exact per-locus allele (blastn 100/100 on
|
|
129
|
+
the shared engine) → profile → Sequence Type via the PubMLST profiles table. v0: E. coli Achtman
|
|
130
|
+
(adk/fumC/gyrB/icd/mdh/purA/recA, 16,242 STs). The earlier blocker was DB-discovery (CGE `mlst_db` raw
|
|
131
|
+
paths 404); resolved by using **PubMLST's REST API** (`pubmlst_ecoli_achtman_seqdef` scheme 4).
|
|
132
|
+
`dna-mlst --fetch-db` installs the scheme (DB on demand, gitignored). Novel/incomplete profiles report
|
|
133
|
+
"ST not called", never guessed. **Validated end-to-end: K-12 MG1655 → ST10** (real DB + real genome) +
|
|
134
|
+
synthetic real-BLAST e2e + pure-core tests. New shared `mlst/core.py` (profiles parse + ST lookup). 5 tests.
|
|
135
|
+
|
|
136
|
+
## [Unreleased] — DisinFinder biocide-resistance decoder (roadmap W4) + profile completion
|
|
137
|
+
|
|
138
|
+
- **`dna-disinfinder`** (`dna-decode disinfinder`) — 7th decoder. Acquired biocide/disinfectant resistance
|
|
139
|
+
genes (quaternary-ammonium qac* + formaldehyde formA) via the DisinFinder DB on the shared engine (reuses
|
|
140
|
+
resfinder's CGE gene parser). Hospital infection-control relevant; qac genes often share plasmids with AMR
|
|
141
|
+
→ pair with `dna-coloc`. Offline-safe; DB on demand. 3 tests.
|
|
142
|
+
- **`dna-profile` now also runs `pointfinder`** — the run-all covers all 5 assembly-FASTA decoders
|
|
143
|
+
(pathotype/serotype/plasmid/resfinder/pointfinder).
|
|
144
|
+
- MLST (roadmap remainder) stays deferred: DB raw-paths 404 + it needs exact-allele/profile→ST semantics
|
|
145
|
+
(a distinct batch, not the presence/codon pattern).
|
|
146
|
+
|
|
147
|
+
## [Unreleased] — PointFinder chromosomal point-mutation decoder (roadmap W3)
|
|
148
|
+
|
|
149
|
+
- **`dna-pointfinder`** (`dna-decode pointfinder`) — 6th decoder. Chromosomal AMR point mutations via the
|
|
150
|
+
PointFinder DB: blastn each reference gene CDS vs the assembly, map the subject amino acid at each
|
|
151
|
+
catalogued codon (new shared `typing/codon_map.py` — gap-aware codon→subject-AA, the proven fungal-ERG11
|
|
152
|
+
pattern, now in-package), call a mutation when the subject AA matches a `Res_codon` in
|
|
153
|
+
`resistens-overview.txt`. v0 scope: E. coli FQ QRDR (gyrA/parC/gyrB/parE). An INDEPENDENT point-mutation
|
|
154
|
+
caller (`caller_is_independent_baseline: true`) complementing `amr` (AMRFinder POINT) + `resfinder`
|
|
155
|
+
(acquired only). Epistasis (`Required_mut`) recorded, not enforced. Offline-safe; DB on demand.
|
|
156
|
+
Validated on synthetic (S83L) + the real committed E. coli DB (gyrA codon83=S/87=D). 5 tests.
|
|
157
|
+
|
|
158
|
+
## [Unreleased] — typing-decoder family (plasmid + serotype + resfinder on one shared engine)
|
|
159
|
+
|
|
160
|
+
Three new deterministic curated-DB decoders — the tool grows from 2 traits to 5, all on one engine.
|
|
161
|
+
|
|
162
|
+
- **Shared engine** `dna_decode/typing/blast_caller.py` (`call_alleles`) — the generic best-HSP-per-allele
|
|
163
|
+
blastn core (reuses pathotype/vf_runner's resolvers). The CGE curated-DB pattern (pathotype + plasmid)
|
|
164
|
+
is now config-per-decoder, not a from-scratch build. Plasmid refactored onto it (DRY).
|
|
165
|
+
- **`dna-serotype`** (`dna-decode serotype`) — E. coli O:H serotyping via SerotypeFinder allele DB
|
|
166
|
+
(best O-antigen + best H-antigen → `O25:H4`, partial → `O104:H?`). A genuinely new trait.
|
|
167
|
+
- **`dna-resfinder`** (`dna-decode resfinder`) — acquired-AMR-gene detection via ResFinder allele DB,
|
|
168
|
+
per-class. Deliberately an **independent** caller vs the AMRFinder-based `dna-amr`
|
|
169
|
+
(`caller_is_independent_baseline: true`) — the cross-tool concordance check the AMR decoder lacked.
|
|
170
|
+
- All offline-safe (status `unavailable`, exit 3); DBs downloaded on demand (not committed). ~16 new tests.
|
|
171
|
+
|
|
172
|
+
### plasmid replicon-typing decoder (earlier in this Unreleased cycle)
|
|
173
|
+
|
|
174
|
+
New deterministic trait decoder `dna-plasmid` (`dna-decode plasmid`) — the tool grows beyond AMR.
|
|
175
|
+
|
|
176
|
+
- **New capability:** plasmid incompatibility (Inc) replicon typing from a genome assembly via the curated
|
|
177
|
+
PlasmidFinder allele DB + real blastn (identity 95 / coverage 60, PlasmidFinder defaults). Reports the Inc
|
|
178
|
+
replicons present (IncF/IncH/IncI/IncX/IncN/…) — composing with `dna-amr`: AMR says *what* resistance,
|
|
179
|
+
plasmid typing says whether it likely rides a known mobile element.
|
|
180
|
+
- Sibling architecture to `dna-pathotype` (curated-DB blastn caller; reuses `pathotype/vf_runner`'s blastn
|
|
181
|
+
resolvers — DRY). Offline-safe: no blastn / no DB → `status: "unavailable"` (exit 3), never a crash.
|
|
182
|
+
`caller_is_independent_baseline: false` (faithful to PlasmidFinder's own method, not an independent check).
|
|
183
|
+
- DB downloaded on demand (not committed), like the VirulenceFinder DB. 7 tests
|
|
184
|
+
(`tests/test_plasmid_decoder.py`); cli-dispatch registry contract updated to the 3-decoder set.
|
|
185
|
+
|
|
186
|
+
## [0.5.0] — 2026-06-08 — Fungal AMR decoder (the kingdom jump)
|
|
187
|
+
|
|
188
|
+
`dna-amr` now decodes **fungal** azole/echinocandin resistance, not just bacterial — the determinant-scan
|
|
189
|
+
method validated across the bacteria→fungi kingdom boundary.
|
|
190
|
+
|
|
191
|
+
- **New capability:** `dna-amr --drug fluconazole|voriconazole|caspofungin|micafungin` routes to a
|
|
192
|
+
BLAST-ERG11/FKS1 target-site engine (vs the AMRFinder engine for bacterial drugs — there is no
|
|
193
|
+
AMRFinder-for-fungi). Two source modes: `--genome-fasta` (BLAST the committed C. auris ERG11 reference)
|
|
194
|
+
and `--observed GENE:SUB[,...]` (pure, wheel-only, no BLAST). Emits the same `amr-mechanism-call-v1`
|
|
195
|
+
record as the bacterial path (uniform tool surface); S calls surface the efflux/aneuploidy blind spots.
|
|
196
|
+
- **Validation (Gate G1, `wiki/fungal_ep7_g1_closeout_2026-06-08.md`):** on a de-confounded C. auris
|
|
197
|
+
WGS+MIC cohort (S. Africa bloodstream, PRJNA737309 + AraPheno-style Table S1 MICs), the deterministic
|
|
198
|
+
caller found the catalogued ERG11 mutation in **100% of fluconazole-MIC-R isolates across two clades**
|
|
199
|
+
(clade I Y132F, clade III F126L/VF125AL) — sensitivity 1.0. Specificity is label-limited (reduced-
|
|
200
|
+
susceptibility F126L carriers fall below the CDC tentative breakpoint), the documented "suspect the
|
|
201
|
+
label" pattern; the genotype is the trustworthy output.
|
|
202
|
+
- **Infra shipped:** `dna_decode/data/fungal_amr.py` (hand-curated catalog + CDC tentative breakpoints),
|
|
203
|
+
`scripts/fungal_erg11_caller.py` (BLAST→codon-map→catalog), `scripts/build_fungal_cohort.py` (cohort
|
|
204
|
+
validation + within-clade de-confound + LABEL_LIMITED_FAILURE verdict), `scripts/assemble_sra_cohort.py`
|
|
205
|
+
(targeted ERG11 read-mapping, ~4 min/isolate vs ~45 min full assembly). Committed real C. auris reference
|
|
206
|
+
+ 3 public allele fixtures (`data/fungal_ref/`).
|
|
207
|
+
- **Eukaryotic Path B (Arabidopsis flowering-time embedding test, Gate G2)** pre-staged + brainstorm-revised
|
|
208
|
+
+ CPU-only dry-manifest gate coded (`scripts/g2_dry_manifest.py`); GPU run deferred to the workhorse.
|
|
209
|
+
- ~43 new tests (fungal catalog/caller/cohort/CLI + dry-manifest). Bacterial path unchanged.
|
|
210
|
+
|
|
211
|
+
## [0.4.0] — 2026-06-07 — Multi-Organism AMR Decoder (capstone)
|
|
212
|
+
|
|
213
|
+
Milestone release consolidating the AMR arc. No new code — a capstone over v0.3.x.
|
|
214
|
+
|
|
215
|
+
`dna-amr` is a deterministic, interpretable AMR R/S decoder validated across **6 drugs × 4 organisms ×
|
|
216
|
+
4 mechanism classes, spanning the gram divide** (E. coli, K. pneumoniae, P. aeruginosa, S. aureus),
|
|
217
|
+
deployed as `dna-amr` / `dna-decode`. Every per-drug rule beats naive AMRFinder on independent data.
|
|
218
|
+
|
|
219
|
+
- **One engineering principle** held across every organism/mechanism: count the drug's SPECIFIC
|
|
220
|
+
resistance determinants (target point-mutations / drug-specific Subclass / acquired gene-family), not
|
|
221
|
+
the broad drug-class bag — intrinsic chromosomal genes (efflux) are the cross-organism gotcha.
|
|
222
|
+
- **Honest limits, named in every output:** `undetectable_mechanisms` (efflux/porin/regulatory expression
|
|
223
|
+
phenotypes) + label-quality caveats (oxacillin → use cefoxitin). The recurring binding constraint is the
|
|
224
|
+
de-confounded, reliably-labeled substrate — not the method.
|
|
225
|
+
- Capstone: `wiki/amr_multiorganism_capstone_2026-06-07.md`. 108 tests green.
|
|
226
|
+
|
|
227
|
+
**This is the milestone.** Further organism/drug breadth is diminishing-returns (re-confirms the same two
|
|
228
|
+
findings). The genuinely-different next leaps (cross-lab validation, a non-AMR sampling-independent
|
|
229
|
+
substrate, multimodal/eukaryotic) require resources beyond autonomous code work.
|
|
230
|
+
|
|
231
|
+
## [0.3.7] — 2026-06-07
|
|
232
|
+
|
|
233
|
+
1st Gram-positive: S. aureus oxacillin (MRSA/mecA) — genotype transfers; honest label finding.
|
|
234
|
+
|
|
235
|
+
### Added
|
|
236
|
+
- **oxacillin** (6th drug, 1st Gram-positive): mecA-based MRSA rule (threshold 1 + METHICILLIN-subclass,
|
|
237
|
+
excludes blaZ penicillinase). Added to mic_tiers (breakpoints, classes, mec loci, primary mechanism) +
|
|
238
|
+
DRUG_RULE. `supported_drugs()` now 6. +2 tests (104 → 106 → 108 green).
|
|
239
|
+
- **S. aureus oxacillin validation (4th organism, 1st Gram-positive):** N=30.
|
|
240
|
+
`wiki/staphylococcus_aureus_oxacillin_validate_2026-06-07.md`.
|
|
241
|
+
|
|
242
|
+
### Finding (the honest result)
|
|
243
|
+
- **mecA genotype detection TRANSFERS to Gram-positive: sens 1.000** (all 15 R strains carry mecA). The
|
|
244
|
+
acquired-gene + Subclass-refinement approach works on a Gram-positive, as on the gram-negatives.
|
|
245
|
+
- **spec 0.333 is oxacillin-LABEL noise, NOT a rule defect:** 10/15 "oxacillin-susceptible"-labeled strains
|
|
246
|
+
carry full-length mecA — far above genuine OS-MRSA (<5%). Oxacillin direct AST is the documented unreliable
|
|
247
|
+
comparator for mecA; CLSI/EUCAST recommend **cefoxitin** as the surrogate. The proper-label re-test is
|
|
248
|
+
**substrate-blocked** (cefoxitin = only 3R on this NCBI dataset).
|
|
249
|
+
- **Terminal:** Gram-positive mecA detection generalizes; phenotype-label validation is the limit — the
|
|
250
|
+
project's recurring "substrate/label is the binding constraint" lesson, now confirmed on a Gram-positive.
|
|
251
|
+
|
|
252
|
+
## [0.3.6] — 2026-06-07
|
|
253
|
+
|
|
254
|
+
3rd organism (Pseudomonas) + cross-organism shipped in the CLI.
|
|
255
|
+
|
|
256
|
+
### Added
|
|
257
|
+
- **`dna-amr --organism <O>`** (genome mode) — passes through to AMRFinder `-O` (organism-specific QRDR
|
|
258
|
+
point-mutation detection); recorded in `provenance.amrfinder_organism`. Default Escherichia. Closes the
|
|
259
|
+
gap where cross-organism support lived only in validation scripts, not the shipped CLI. +2 CLI tests.
|
|
260
|
+
- **Pseudomonas aeruginosa cipro VALIDATED** (3rd organism): N=30 acc 0.867 / sens 0.80 / spec 0.933
|
|
261
|
+
(beats naive AMRFinder 0.767). The QRDR-POINT rule transfers UNCHANGED to a *less-similar* gram-negative
|
|
262
|
+
(MexAB-OprM efflux, intrinsic AmpC — no oqxAB). 3 FN = efflux-mediated cipro-R (expected blind spot).
|
|
263
|
+
`wiki/pseudomonas_aeruginosa_ciprofloxacin_validate_2026-06-07.md`.
|
|
264
|
+
- **`scripts/organism_drug_validate.py`** — generalized any-NCBI-organism × any-drug validator
|
|
265
|
+
(auto-discovers latest PDG metadata, reuses cached runs). Every future organism is now a one-command run.
|
|
266
|
+
|
|
267
|
+
### Result
|
|
268
|
+
dna-amr validated across **3 organisms** (E. coli, K. pneumoniae, P. aeruginosa). The "count the drug's
|
|
269
|
+
specific determinants, not the broad class bag" principle holds across all three — strong evidence it is
|
|
270
|
+
organism-general, not E. coli-specific.
|
|
271
|
+
|
|
272
|
+
## [0.3.5] — 2026-06-07
|
|
273
|
+
|
|
274
|
+
Klebsiella full drug matrix complete — dna-amr validated 5 drugs × 2 organisms.
|
|
275
|
+
|
|
276
|
+
### Added
|
|
277
|
+
- **Klebsiella cef + gent + tet validated** (rules applied unchanged from E. coli):
|
|
278
|
+
- ceftriaxone: acc 0.800 / sens 1.0 / spec 0.6 ✅
|
|
279
|
+
- gentamicin: acc 0.867 / sens 0.867 / spec 0.867 ✅
|
|
280
|
+
- tetracycline: acc 0.800 / spec 1.0 / **sens 0.600** ⚠️ PARTIAL (efflux blind spot — see below)
|
|
281
|
+
- `scripts/klebsiella_drug_validate.py` (drug-agnostic; reuses cached Klebsiella runs across cohorts).
|
|
282
|
+
- Consolidated: `wiki/klebsiella_drug_matrix_2026-06-07.md`.
|
|
283
|
+
- **`gene_prefixes` rule refinement** (`amr_rules.py`): tetracycline now counts only acquired `tet*` genes,
|
|
284
|
+
excluding intrinsic K. pneumoniae OqxAB efflux (AMRFinder-tagged TETRACYCLINE but present in susceptible
|
|
285
|
+
isolates). Same cross-organism principle as cipro QRDR-POINT. **Also improved E. coli tet 0.833 → 0.917.**
|
|
286
|
+
|
|
287
|
+
### Findings
|
|
288
|
+
- **tetracycline / Klebsiella is the honest PARTIAL:** the acquired-`tet*` rule is precise (spec 1.0) but
|
|
289
|
+
sens 0.600 — 6/15 R strains are efflux-mediated (oqxAB overexpression), undetectable by ANY
|
|
290
|
+
curated-determinant rule (an expression phenotype, surfaced in `undetectable_mechanisms`). A documented
|
|
291
|
+
biological limit, not a rule defect.
|
|
292
|
+
- **Cross-organism principle confirmed 3× (cipro/tet/the gent+cef+mero Subclass refinements):** count the
|
|
293
|
+
drug's specific resistance determinants, not the broad drug-class bag; intrinsic chromosomal determinants
|
|
294
|
+
(efflux) are the organism-specific gotcha.
|
|
295
|
+
|
|
296
|
+
### Result
|
|
297
|
+
dna-amr spans **5 drugs × 2 organisms × 4 mechanism classes**; 4/5 Klebsiella drugs clear the bar
|
|
298
|
+
zero-tuning, all beat naive AMRFinder. +3 tet tests (104 green).
|
|
299
|
+
|
|
300
|
+
## [0.3.4] — 2026-06-07
|
|
301
|
+
|
|
302
|
+
Klebsiella meropenem — 2nd organism, NEW mechanism class (carbapenem). Phase 3 slice 2.
|
|
303
|
+
|
|
304
|
+
### Added
|
|
305
|
+
- **meropenem decoder** (5th drug): acquired-carbapenemase rule (threshold 1 + CARBAPENEM-subclass
|
|
306
|
+
refinement — blaKPC/NDM/OXA-48). **Klebsiella N=30 acc 0.867 / sens 1.0 / spec 0.733** (vs naive
|
|
307
|
+
AMRFinder 0.533; the CARBAPENEM-subclass refinement lifts spec 0.067→0.733 by excluding ESBL/AmpC that
|
|
308
|
+
raise meropenem MIC without hydrolyzing it). `wiki/klebsiella_meropenem_validate_2026-06-07.md`.
|
|
309
|
+
Carbapenem is the defining K. pneumoniae clinical threat — a mechanism class E. coli AMR never covered.
|
|
310
|
+
- meropenem added to `mic_tiers.py` (breakpoints CLSI R≥4/S≤1 + EUCAST; AMRFinder classes;
|
|
311
|
+
carbapenemase loci catalog; primary mechanism). `supported_drugs()` now returns 5.
|
|
312
|
+
- `scripts/klebsiella_meropenem_validate.py` (reuses cached cipro-cohort AMRFinder runs on strain overlap).
|
|
313
|
+
- +2 tests (carbapenemase counted / ESBL excluded). 102 green.
|
|
314
|
+
|
|
315
|
+
### Honest scope
|
|
316
|
+
The meropenem rule is blind to porin-loss-mediated carbapenem resistance (no carbapenemase gene) — the
|
|
317
|
+
expected FN mode; surfaced in `undetectable_mechanisms`. 4 FP (susceptible strains carrying a carbapenemase
|
|
318
|
+
gene — likely low-expression / borderline MIC).
|
|
319
|
+
|
|
320
|
+
## [0.3.3] — 2026-06-07
|
|
321
|
+
|
|
322
|
+
Cross-organism: Klebsiella + the QRDR-POINT cipro rule (roadmap Phase 3, slice 1).
|
|
323
|
+
|
|
324
|
+
### Added
|
|
325
|
+
- **Cross-organism transfer (Klebsiella pneumoniae cipro):** N=30 NCBI cohort, **acc 1.000** with the
|
|
326
|
+
deployed rule. The method generalizes across organisms. `scripts/klebsiella_cipro_transfer.py`,
|
|
327
|
+
`wiki/klebsiella_cipro_transfer_2026-06-07.md`. `_run_amrfinder` gained an `organism` param
|
|
328
|
+
(`-O Klebsiella_pneumoniae`).
|
|
329
|
+
- `qrdr_point_count` / `qrdr_point_determinants` in `amr_rules.py` — count fluoroquinolone QRDR
|
|
330
|
+
target-alteration POINT mutations (gyrA/parC/parE) only.
|
|
331
|
+
|
|
332
|
+
### Changed (ratified — changes the deployed cipro number)
|
|
333
|
+
- **cipro `DRUG_RULE` switched to the QRDR-POINT rule globally** (`counter='qrdr_point'`): count QRDR
|
|
334
|
+
target POINT mutations ≥2, not the broad QUINOLONE-class determinant bag. Rationale: the broad rule
|
|
335
|
+
FAILED on Klebsiella (acc 0.5 — intrinsic chromosomal OqxAB efflux, absent in E. coli, saturates the
|
|
336
|
+
count). The canonical target-mutation count is cross-organism-robust. Net effect:
|
|
337
|
+
- Klebsiella cipro 0.5 → **1.000**
|
|
338
|
+
- E. coli cipro in-cohort 0.939 → 0.925 (−1.4pp; dropped cases were qnr/efflux-mediated)
|
|
339
|
+
- E. coli cipro **cross-source (NCBI) 0.955 → 1.000** (+4.5pp — QRDR-POINT generalizes better; the
|
|
340
|
+
in-cohort −1.4pp was tuning-cohort overfit).
|
|
341
|
+
- **Platform finding:** cross-organism transfer requires counting the drug's TARGET-alteration mutations,
|
|
342
|
+
not the broad drug-class bag; intrinsic chromosomal determinants are the organism-specific gotcha.
|
|
343
|
+
- Tests: cipro tests updated to QRDR-POINT (point-mutation rows); +4 new (qrdr helpers + intrinsic-exclusion);
|
|
344
|
+
cohort regression re-pinned to 0.925/0.875/0.973. 24 total green.
|
|
345
|
+
|
|
346
|
+
## [0.3.2] — 2026-06-06
|
|
347
|
+
|
|
348
|
+
Trust-hardening + honesty taxonomy (adversarial-review follow-through). No new science — makes the
|
|
349
|
+
shipped decoders auditable + honest about their blind spots.
|
|
350
|
+
|
|
351
|
+
### Added
|
|
352
|
+
- **Blind-spot honesty:** every SUSCEPTIBLE `dna-amr` call now carries `undetectable_mechanisms`
|
|
353
|
+
(`efflux` / `porin_loss` / `regulatory` — expression/regulatory resistance absent from AMRFinder's
|
|
354
|
+
curated determinants) + a caveat that a negative means "no curated determinant found", not "definitely
|
|
355
|
+
susceptible". `UNDETECTABLE_MECHANISMS` in `amr_rules.py`.
|
|
356
|
+
- **Discordance taxonomy:** `discordance_bucket(prediction, true_label)` + `evaluate_cohort` now emit a
|
|
357
|
+
failure-mode breakdown — `FN_undetected_mechanism` (R missed → the blind spots) vs
|
|
358
|
+
`FP_determinant_without_phenotype` (called R but susceptible → label noise / silent-or-low-expression /
|
|
359
|
+
borderline MIC). The "failure-tolerant tool" deliverable: names where it fails.
|
|
360
|
+
- **Provenance pin:** output JSON `provenance.amrfinder_image` records the pinned AMRFinderPlus image
|
|
361
|
+
(`ncbi/amr:4.2.7-2026-03-24.1`; tag encodes the DB date) so an R/S verdict is reproducible against a
|
|
362
|
+
known determinant source. `AMRFINDER_IMAGE_PINNED` in `amr_rules.py`.
|
|
363
|
+
- **Value-add headline** in `wiki/dna_amr_multidrug_validation_2026-06-06.md`: explicit naive-AMRFinder
|
|
364
|
+
vs dna-amr table (cef +0.28 acc/+0.50 spec; gent +0.43/+0.57) — proves the per-drug policy adds value
|
|
365
|
+
over vanilla "any determinant → R", not just re-prints AMRFinder hits.
|
|
366
|
+
- 5 new tests (blind-spots on S/R calls, discordance taxonomy, cohort discordance breakdown). 20 total.
|
|
367
|
+
|
|
368
|
+
### Fixed
|
|
369
|
+
- Stale gentamicin "NOT yet cohort-validated" claims (`amr_rules.py` docstring + wiki caveat) reconciled
|
|
370
|
+
with the N=128 acc 0.945 validation that DRUG_RULE/README/CHANGELOG already recorded (claim-hygiene).
|
|
371
|
+
|
|
372
|
+
### Validated (cross-source — closes the same-database gap)
|
|
373
|
+
- **Independent NCBI Pathogen Detection validation** (`scripts/xsource_validation.py`,
|
|
374
|
+
`wiki/dna_amr_xsource_validation_2026-06-07.md`): 22 E. coli, balanced ~11R/11S per drug, **zero
|
|
375
|
+
accession overlap** with the 176 BV-BRC cohort accessions (enforced at selection). Result: cipro 0.955,
|
|
376
|
+
cef 0.864, gent 1.000, tet 0.909 — comparable to / better than in-cohort. **Answers the product
|
|
377
|
+
question:** dna-amr beats naive "any-determinant→R" AMRFinder on UN-tuned data by +0.09 (cipro) /
|
|
378
|
+
+0.23 (cef) / +0.41 (gent) / +0.0 (tet) accuracy — the per-drug threshold + Subclass refinement IS the
|
|
379
|
+
value-add, not determinant discovery. Sensitivity 1.0 on all 4 drugs (FN=0); all errors are FP
|
|
380
|
+
(determinant-present-but-susceptible). Honest scope: NCBI Pathogen Detection is a different
|
|
381
|
+
source/curation, not a controlled different-lab study.
|
|
382
|
+
|
|
383
|
+
## [0.3.1] — 2026-06-06
|
|
384
|
+
|
|
385
|
+
The "one coherent tool" consolidation (after the v0.3.0 build settled the embedding question).
|
|
386
|
+
|
|
387
|
+
### Added
|
|
388
|
+
- **Unified `dna-decode` console entry** (`dna_decode/cli.py`) — single tool that dispatches to the
|
|
389
|
+
trait decoders: `dna-decode amr …`, `dna-decode pathotype …`, `dna-decode list` (capability +
|
|
390
|
+
validation status), `dna-decode --version`. Thin pass-through (argv delegated verbatim); the
|
|
391
|
+
per-decoder entries (`dna-amr`, `dna-pathotype`) stay independently usable + unchanged. 6 dispatch tests.
|
|
392
|
+
|
|
393
|
+
### Changed
|
|
394
|
+
- Project ledger (`project_state/dna-decode-2026-05-11.md`) updated to record the strategic inflection:
|
|
395
|
+
embedding frontier closed (0-for-3), deterministic mechanism-feature decoders are the product.
|
|
396
|
+
|
|
397
|
+
## [0.3.0] — 2026-06-06
|
|
398
|
+
|
|
399
|
+
The "deterministic decoders win" release. The frozen-genome-embedding (NT mean-pool) thesis was tested
|
|
400
|
+
to a decisive conclusion and the project committed to deterministic, interpretable mechanism-feature
|
|
401
|
+
decoders as the shipping path.
|
|
402
|
+
|
|
403
|
+
### Added
|
|
404
|
+
- **Multi-drug deterministic AMR caller** (`dna-amr`). Extended from cipro-only to **all 4 drugs**, with
|
|
405
|
+
per-drug validated rules baked into `dna_decode/eval/amr_rules.py::DRUG_RULE`:
|
|
406
|
+
- ciprofloxacin — threshold 2 (QRDR point-mutations) — N=147 acc 0.939.
|
|
407
|
+
- ceftriaxone — threshold 1 + **extended-spectrum subclass refinement** (CEPHALOSPORIN/CARBAPENEM;
|
|
408
|
+
excludes intrinsic blaTEM-1/blaEC that are ampicillin-R not ceftriaxone-R) — N=60 acc 0.933.
|
|
409
|
+
- tetracycline — threshold 1 (acquired tet genes) — N=12 acc 0.833 (small N, provisional).
|
|
410
|
+
- gentamicin — threshold 1 + **GENTAMICIN-subclass refinement** (excludes aph/aadA
|
|
411
|
+
streptomycin-kanamycin genes that don't confer gentamicin-R) — N=128 acc 0.945.
|
|
412
|
+
- General fix: a broad AMR class over-calls (cef spec 0.41, gent spec 0.39) because it counts genes for
|
|
413
|
+
OTHER class members; AMRFinder's Subclass field is the drug-specific discriminator. One-line refinement.
|
|
414
|
+
- `call_resistance(tsv, drug)` now auto-selects the per-drug rule; explicit threshold still overrides.
|
|
415
|
+
- Validation: `wiki/dna_amr_multidrug_validation_2026-06-06.md`.
|
|
416
|
+
- **De-confound gate** (`dna_decode/eval/cohort_deconfound.py`) — within-lineage label-contrast
|
|
417
|
+
precondition (3-state DE_CONFOUNDED/WARN/CONFOUNDED + promotability) for any embedding-vs-classical
|
|
418
|
+
falsifier. The reusable guard against study==class confounding.
|
|
419
|
+
- **AMR embedding falsifier** (`scripts/amr_falsifier.py`) + **QRDR-POINT knowledge baseline**
|
|
420
|
+
(`dna_decode/eval/point_baseline.py`) + within-lineage diagnostic.
|
|
421
|
+
- **dna-amr external validation** — held-out N=29 acc 0.862 / sens 0.882 / spec 0.833
|
|
422
|
+
(`wiki/dna_amr_external_validation_2026-06-05.md`).
|
|
423
|
+
- **EP-6 carbon-utilization substrate infra** — `dna_decode/data/bacdive.py` loader +
|
|
424
|
+
`scripts/bacdive_carbon_util_feasibility.py` census + `scripts/bacdive_li2023_to_long.py` adapter.
|
|
425
|
+
|
|
426
|
+
### Findings (recorded, not code)
|
|
427
|
+
- **AMR embedding thesis FALSIFIED on the cleanest substrate.** Cipro N=147 (de-confounded): NT-XGBoost
|
|
428
|
+
0.914 beats k-mer (+8.9 pp) but **LOSES to QRDR-POINT 0.943**; NT within-lineage concordance = chance
|
|
429
|
+
(0.605, p=0.365) → it learned lineage, not mechanism. Decision: `plans/AMR_embedding_niche_decision_2026-06-05.md`.
|
|
430
|
+
- **Carbon-utilization (EP-6) E. coli-INFEASIBLE.** Data acquired (Li et al. 2023 OSF jwkr7); E. coli
|
|
431
|
+
slice = 27 strains, 0 carbon sources clear the ≥100 floor. The embedding-niche test needs a THIRD
|
|
432
|
+
requirement beyond sampling-independent-label + no-catalog: **organism-specific depth at scale**.
|
|
433
|
+
`wiki/bacdive_carbon_util_feasibility_2026-06-06.md`.
|
|
434
|
+
|
|
435
|
+
### Changed
|
|
436
|
+
- `dna-amr` CLI `--resistance-threshold` now defaults to the per-drug validated config (was hard-coded 2).
|
|
437
|
+
- README decoder table + `plans/Trait_Decoding_Roadmap.md` Phase 2/4 updated.
|
|
438
|
+
|
|
439
|
+
## [0.2.0] — 2026-06-05
|
|
440
|
+
|
|
441
|
+
- In-package `dna-amr` console entry (deterministic AMR mechanism caller, cipro-validated).
|
|
442
|
+
- `dna-pathotype` console entry (deterministic VirulenceFinder-marker pathotype resolver + abstention +
|
|
443
|
+
canonical-VF diff; ExPEC recall 0.917).
|
|
444
|
+
- Packaging: both decoders ship in the wheel (`[project.scripts]`).
|
|
445
|
+
|
|
446
|
+
## [pathotype-v0] / [phase-1-shipped] — 2026-05/06
|
|
447
|
+
|
|
448
|
+
- Phase-1 closeout: NT-frozen-pooling characterized (passes concentrated-signal mechanisms, fails
|
|
449
|
+
distributed). v0 cipro decoder + pathotype v0 resolver shipped. See git history + `wiki/`.
|
|
450
|
+
|
|
451
|
+
## [expression-context-v0] — 2026-06-10
|
|
452
|
+
|
|
453
|
+
- `dna_decode/eval/expression_context.py` — deterministic IS-element-upstream-of-target detector (blastn ISAba1+OXA-51 vs assembly; all-hits, no truncation; same-contig + strand-aware upstream proximity; offline-safe). Reads regulatory CONTEXT, not gene presence, to cross the EXPRESSION abstain floor.
|
|
454
|
+
- `amr_rules.call_resistance` gains an optional `genome_fasta` + a GATED EXPRESSION_FLOOR ABSTAIN->R override (registry `expression_context.enabled`; ships **off/experimental** — opt-in only, never default-on; default decoder behavior unchanged).
|
|
455
|
+
- Independent-cohort validation (15R/15S disjoint from the cached 30): **HOLD — UNDERPOWERED, not a falsification**. A mechanism audit found 14/15 R carry strong acquired carbapenemases (non-target); only 1 strain is intrinsic-only-R (the signal's target subset), detector-negative. The validator was stratified by acquired-carbapenemase and now gates on `target_R_rescues>=1 AND n_target_R>=10` — the cohort cannot test the signal (intrinsic-only carbapenem-R Acinetobacter is rare; acquired OXA-23 dominates). Override remains disabled (opt-in/off). 18 new tests, 0 regressions.
|