gapit 0.6.2__tar.gz → 0.6.4__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.
- {gapit-0.6.2 → gapit-0.6.4}/AGENTS.md +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/CHANGELOG.md +32 -0
- {gapit-0.6.2 → gapit-0.6.4}/CITATION.cff +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/PKG-INFO +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/README.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/SPEC.md +3 -2
- {gapit-0.6.2 → gapit-0.6.4}/docs/agents.md +8 -4
- {gapit-0.6.2 → gapit-0.6.4}/docs/agents.zh.md +7 -3
- {gapit-0.6.2 → gapit-0.6.4}/docs/databases.md +5 -4
- {gapit-0.6.2 → gapit-0.6.4}/docs/databases.zh.md +3 -4
- {gapit-0.6.2 → gapit-0.6.4}/docs/datadir.md +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/docs/datadir.zh.md +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/docs/installation.md +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/docs/installation.zh.md +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/docs/mcp.md +12 -8
- {gapit-0.6.2 → gapit-0.6.4}/docs/mcp.zh.md +12 -8
- {gapit-0.6.2 → gapit-0.6.4}/docs/outputs.md +6 -5
- {gapit-0.6.2 → gapit-0.6.4}/docs/outputs.zh.md +6 -5
- {gapit-0.6.2 → gapit-0.6.4}/docs/quickstart.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/docs/quickstart.zh.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/docs/reads.md +6 -6
- {gapit-0.6.2 → gapit-0.6.4}/docs/reads.zh.md +6 -6
- {gapit-0.6.2 → gapit-0.6.4}/docs/screen.md +6 -4
- {gapit-0.6.2 → gapit-0.6.4}/docs/screen.zh.md +5 -4
- {gapit-0.6.2 → gapit-0.6.4}/docs/summary.md +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/docs/summary.zh.md +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/pixi.lock +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/pixi.toml +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/pyproject.toml +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/__init__.py +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cli.py +2 -1
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_db.py +9 -2
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_screen.py +2 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/db_ops.py +7 -3
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/db_query_ops.py +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/errors.py +79 -4
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/json.py +6 -1
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/schemas.py +5 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/mcp_schemas.py +10 -5
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/mcp_tools.py +29 -6
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/progress.py +49 -2
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/report.py +3 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/screening.py +13 -2
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/screening_reads_positional.py +6 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster2_vp_none.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster2_vp_none.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster2_vp_o3k6.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster2_vp_o3k6.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_exact.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_exact.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_fragmented.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_fragmented.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_typing_ambiguous.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_typing_ambiguous.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_typing_cm_exact.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_typing_cm_exact.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_typing_exact.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_typing_exact.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_vc_inaba.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_vc_inaba.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/fragments_merge.json +3 -2
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/fragments_merge.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_dec_pic_astA.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_dec_pic_astA.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_doumith_4b.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_doumith_4b.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_serotyping_l4b.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_serotyping_l4b.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_serotyping_mixed.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_serotyping_mixed.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_serotyping_vp_typed.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_serotyping_vp_typed.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_shigella_mixed.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_shigella_mixed.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_typing_exact.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/gene_typing_exact.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/reads_tinyamr.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/reads_tinyamr.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/screen_multi.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/screen_multi.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/summary_multi.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/summary_multi.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/typing_markers.json +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/typing_markers.md +1 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_fragments.py +6 -3
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_schema.py +13 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cluster_screen.py +2 -2
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_error_envelope.py +41 -1
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_mcp.py +21 -8
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_progress.py +100 -0
- {gapit-0.6.2 → gapit-0.6.4}/.gitattributes +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/.github/workflows/ci.yml +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/.github/workflows/docs.yml +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/.github/workflows/release.yml +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/.gitignore +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/CODE_QUALITY_REPORT.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/CONTRIBUTING.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/LICENSE +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/PLAN.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/SECURITY.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/custom-db.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/custom-db.zh.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/faq.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/faq.zh.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/gseek-engine.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/gseek-engine.zh.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/index.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/index.zh.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/typing.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/docs/typing.zh.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/mkdocs.yml +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/scripts/cluster_calibration.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/scripts/generate_vp_typing.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/scripts/vp_rules_matrix.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/scripts/vp_typing_support.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/blast.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/bundled.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/bundled_cluster.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cluster.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cluster_math.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/clusterbuild.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_db_build.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_db_install.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_db_outdated.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_db_search.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_screen_positionals.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_screen_reads_args.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_summary.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/cmd_typing.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/config.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/ecoh/bundled.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/ecoh/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/ecoli_dec/bundled.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/ecoli_dec/floors.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/ecoli_dec/records.jsonl +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/ecoli_dec/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/ecoli_dec/typing.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/lm_doumith/bundled.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/lm_doumith/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/lm_doumith/typing.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/ncbi/bundled.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/ncbi/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/resfinder/bundled.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/resfinder/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/vc_serogroup/bundled.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/vc_serogroup/floors.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/vc_serogroup/records.jsonl +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/vc_serogroup/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/vc_serogroup/typing.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/vp_ok/bundled.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/vp_ok/features.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/vp_ok/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/data/dbs/vp_ok/typing.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/db.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/db_build_meta.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/db_build_ops.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/db_txn.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/dbbuild.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/dbcodec.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/dispatch.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/engines.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/fasta.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/__init__.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/cluster.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/cluster2.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/cluster_md.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/csvutil.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/md.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/reads_json.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/reads_tsv.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/summary.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/tsv.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/formats/typing_result.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/fragments.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/gbfeatures.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/gene_floors.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/gffparse.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/gseek_engine.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/hits.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/mcp.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/minimap.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/minimap2_run.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/paf.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/proctools.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/__init__.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/ab_k.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/ab_o.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/argannot.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/bacmet2.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/card.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/cluster_common.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/common.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/ecoh.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/ecoli_kps.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/ecoli_vf.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/kosc_k.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/kosc_o.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/kpsc_k.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/kpsc_o.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/megares.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/ncbi.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/plasmidfinder.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/resfinder.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/upec_expec_vf.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/vfdb.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/providers/victors.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/py.typed +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/readpairs.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/reads.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/records.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/screening_cluster.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/screening_reads.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/seqconvert.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/summary.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/typing_cluster2.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/typing_decide.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/typing_engine.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/typing_gene.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/typing_input.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/typing_models.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/typing_ops.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/typing_results.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/src/gapit/typing_rules.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/bundled_differential/resfinder/HEAD.zip +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/bundled_differential/resfinder/README.md +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/bakta_style.gbk +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/clusters.gff3 +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/clusters_gz.gff3.gz +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/clusters_sidecar.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/clusters_sidecar.gff3 +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/colliding_genes.gbk +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/compound.gbk +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/gz_input.gbk.gz +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/kaptive_style.gbk +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/nofasta.gff3 +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/screening.gbk +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/typing_invalid.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/typing_screen.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/typing_screen_cm.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/typing_screen_v2.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/typing_valid.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/cluster/unnamed_cds.gbk +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/contigs/full.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/contigs/gap.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/contigs/none.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/contigs/partial.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/contigs/sort.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/convert/sample.embl +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/convert/sample.embl.bz2 +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/convert/sample.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/convert/sample.fa.gz +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/convert/sample.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/convert/sample.gbk +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/convert/sample.gbk.gz +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/db/tinyamr/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/fragments/fragdb/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/fragments/split3040.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/fragments/split4060.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/fragments/split5050.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/argannot/ARG-ANNOT_NT_V6_July2019.txt +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/bacmet2/BacMet2_EXP_database.fasta +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/card/card.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/ecoh/EcOH.fasta +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/ecoli_vf/repaired_ecoli_vfs_shortnames.ffn +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/megares/megares_drugs_demo.fasta +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/ncbi/AMR_CDS.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/ncbi/ReferenceGeneCatalog.txt +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/plasmidfinder/plasmids_a.fsa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/plasmidfinder/plasmids_b.fsa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/resfinder/aminoglycoside.fsa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/resfinder/beta-lactam.fsa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/resfinder/phenotypes.txt +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/upec_expec_vf/UPEC_ExPEC_VF.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/vfdb/VFDB_setA_nt.fas +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/victors/gen_downloads.php +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/providers/victors/gen_downloads_protein.php +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/bla_partial.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/junk.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/s1_1.fq.gz +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/s1_2.fq.gz +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/s2_R1.fq.gz +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/s2_R2.fq.gz +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/suly_partial.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_R1.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_R2.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_full.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_full.fq.gz +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_lane1.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_lane2.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_pe1_R1.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_pe1_R2.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_pe2_R1.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads/tetx_pe2_R2.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads2/ont_homologs.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads2/sr_homologs.fq +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads2_db/homologs/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/reads_db/tinyreads/sequences +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/summary/empty.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/summary/multi_sample.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/summary/sample_a.csv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/summary/sample_a.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/summary/sample_b.csv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/summary/sample_b.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/dec_s1_aggR_pic_uidA.fasta +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/dec_s2_pic_astA_uidA.fasta +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/dec_s3_stx2a_escV_aggR_uidA.fasta +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/exact.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/listeria_1c.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/listeria_4b.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/listeria_nogate.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/markers.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/mutated.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/negative.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/partial.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/cholerae.gbk +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/cholerae.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/dec.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/dec.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/doumith.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/doumith.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/lm_doumith.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/lm_doumith.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/meningotype.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/meningotype.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/shigella.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/shigella.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/vp_ok.gbk +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/schemes/vp_ok.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/serotyping.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/typing_markers_v1.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/typing_markers_v2.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/typing_serotyping_v2.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/vp_mixed.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/data/typing/vp_typed.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster2_vp_none.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster2_vp_o3k6.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_exact.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_fragmented.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_typing_ambiguous.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_typing_cm_exact.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_typing_exact.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/cluster_vc_inaba.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/ecoli_dec_typed.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/ecoli_dec_typing.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/features_kaptive_style.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/features_screening.json +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/fragments_merge.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/lm_doumith_typing.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/summary_dutch.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/summary_multi.csv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/summary_multi.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/tinyamr_multi_nopath.csv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/tinyamr_multi_nopath.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/typing_markers.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/golden/typing_serotyping.tsv +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/parity/corpus/01_exact_and_junk.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/parity/corpus/02_mutated.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/parity/corpus/03_truncated.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/parity/corpus/04_reverse.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/parity/corpus/05_threshold.fa +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/parity/make_corpus.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/parity/run_parity.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/parity/run_summary_parity.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_blast_parse.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_blast_pipeline.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_bundled.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_aligner.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_bare_help.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_completion.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_db_build.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_db_build_cluster.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_db_fetch.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_db_path.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_db_query.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_reads.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_reads2.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_reads_glob.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_reads_glob_jobs.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_screen.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_screen_jobs.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_setupdb.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_short_options.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cli_summary.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cluster2_build.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cluster_build_validation.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cluster_calibration.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cluster_db.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cluster_math.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_cluster_typing.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_config.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_csv_contract.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_db.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_db_fetch.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_db_field_validation.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_db_headers.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_db_list_extras.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_db_txn.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_dbbuild.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_dbcodec.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_fasta.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_fragments.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_gapit_db_e2e.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_gbfeatures.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_gene_floors.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_gene_floors_e2e.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_gene_typing.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_gene_typing2.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_gffparse.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_gseek_engine.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_gseek_parity.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_hits.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_json_format.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_lm_doumith.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_mcp_db_tools.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_mcp_protocol.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_mcp_reads.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_md_format.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_minimap.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_mol_type.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_oversubscription.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_paf.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_paf_identity.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_parser_fuzz.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_argannot.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_bacmet2.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_card.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_ecoh.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_ecoli_vf.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_kaptive.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_megares.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_ncbi.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_plasmidfinder.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_resfinder.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_upec_expec_vf.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_vfdb.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_provider_victors.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_providers_common.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_readpairs.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_reads2_homologs.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_reads2_model.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_reads_aggregate.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_reads_integration.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_reads_interval_union.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_reads_streaming.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_records.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_report.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_screen_integration.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_screening_reads_unit.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_seqconvert.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_seqconvert_differential.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_streaming_chunks.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_summary.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_summary_formats.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_tsv.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_typing_command.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_typing_engine.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_typing_models.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_typing_schemes.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_typing_schemes_cluster.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_typing_stage2.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_vc_serogroup.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_version.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_vp_ok.py +0 -0
- {gapit-0.6.2 → gapit-0.6.4}/tests/test_vp_ok_acceptance.py +0 -0
|
@@ -178,7 +178,7 @@ This is what distinguishes gapit from abricate. Treat it as a public API.
|
|
|
178
178
|
|
|
179
179
|
- **Formats**: `--format tsv|csv|json|md` (default `tsv` for abricate compatibility).
|
|
180
180
|
- **JSON**: top-level `"schema": "gapit.report/1"`; schema introspectable via
|
|
181
|
-
`gapit schema report | reads | reads2 | summary |
|
|
181
|
+
`gapit schema report | reads | reads2 | summary | cluster | cluster2 | dblist | dboutdated | datadir | error | version` (plus
|
|
182
182
|
`cluster | cluster2 | features | typing | typing_result | floors`). Keys are snake_case,
|
|
183
183
|
units explicit (`identity_pct`, `coverage_pct`). Semver the schema; never rename or
|
|
184
184
|
retype a field in a minor bump.
|
|
@@ -220,7 +220,7 @@ This is what distinguishes gapit from abricate. Treat it as a public API.
|
|
|
220
220
|
`gapit db path [--json]` introspects it without creating, while `db list`/`setupdb`
|
|
221
221
|
bootstrap a missing root. See `docs/datadir.md` for the database anatomy, sharing and
|
|
222
222
|
Docker policy.
|
|
223
|
-
- **MCP** `[gapit-extension]`: `gapit mcp` / `gapit-mcp` stdio server exposing
|
|
223
|
+
- **MCP** `[gapit-extension]`: `gapit mcp` / `gapit-mcp` stdio server exposing ten tools:
|
|
224
224
|
read-only `screen` (incl. `aligner minimap2` assembly survey), `screen_reads` (FASTQ via
|
|
225
225
|
minimap2), `summary`, `schema`, `db_search`, `db_outdated`, plus `db_list` (may create the
|
|
226
226
|
empty datadir on first use), and the datadir-mutating `db_fetch` (installs databases from
|
|
@@ -5,6 +5,38 @@ All notable changes to gapit are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this
|
|
6
6
|
project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.6.4] - 2026-10-27
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Batch progress vs stdout data.** The progress bar now uses the gside/gmlst
|
|
13
|
+
hand-off: `transient=True`, stdout chunks go through `BatchProgress.write`
|
|
14
|
+
(stop -> `sys.stdout.write` + flush -> start), and stderr notices have a
|
|
15
|
+
`notice()` hand-off. The bar is inactive for a single input. On a shared TTY
|
|
16
|
+
data rows no longer start inside the bar line; stdout bytes are unchanged when
|
|
17
|
+
output is piped. Applies to contig batches and positional FASTQ samples;
|
|
18
|
+
`db fetch` receipts use the same suspend/restore path.
|
|
19
|
+
|
|
20
|
+
## [0.6.3] - 2026-10-26
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- **Complete agent JSON surface.** `gapit.report/1` params now record
|
|
25
|
+
`merge_fragments`; `gapit.dblist/1`, `gapit.dboutdated/1`, and
|
|
26
|
+
`gapit.datadir/1` are registered in `gapit schema`; `gapit.error/1` exposes the
|
|
27
|
+
full machine-readable error-code enum.
|
|
28
|
+
- **MCP `db_path`.** The stdio server exposes the resolved datadir document, and
|
|
29
|
+
`screen` now uses canonical snake_case parameters (`merge_fragments`,
|
|
30
|
+
`min_gene_cov`, `min_gene_id`, `min_cluster_cov`). Legacy camelCase names remain
|
|
31
|
+
accepted as aliases.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- **0.6.3 is the provenance-clean republish.** 0.6.2 was uploaded manually and
|
|
36
|
+
therefore has no PyPI provenance attestation; 0.6.3 is published by the GitHub
|
|
37
|
+
Actions release workflow through PyPI Trusted Publishing. The historical 0.6.2
|
|
38
|
+
release should be yanked/deleted in the PyPI UI.
|
|
39
|
+
|
|
8
40
|
## [0.6.2] - 2026-10-26
|
|
9
41
|
|
|
10
42
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gapit
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.4
|
|
4
4
|
Summary: Mass screening of contigs and reads for known genes — agent-first Python reimplementation of abricate
|
|
5
5
|
Project-URL: Homepage, https://github.com/indexofire/gapit
|
|
6
6
|
Project-URL: Documentation, https://indexofire.github.io/gapit/
|
|
@@ -195,7 +195,7 @@ surfaces each provider's content license where one is pinned.
|
|
|
195
195
|
gapit ships an MCP (Model Context Protocol) stdio server so agent runtimes can
|
|
196
196
|
screen assemblies without parsing CLI output: `gapit mcp` or the `gapit-mcp`
|
|
197
197
|
console script speaks newline-delimited JSON-RPC 2.0 on stdin/stdout (no extra
|
|
198
|
-
dependencies — the protocol is hand-rolled). It exposes
|
|
198
|
+
dependencies — the protocol is hand-rolled). It exposes ten tools:
|
|
199
199
|
`screen` (gapit.report/1 by default; `aligner minimap2` for a fast assembly
|
|
200
200
|
survey), `screen_reads` (FASTQ via minimap2, gapit.reads/1), `summary`
|
|
201
201
|
(gapit.summary/1), `schema`, `db_list`, plus the database tools `db_fetch`,
|
|
@@ -166,7 +166,7 @@ surfaces each provider's content license where one is pinned.
|
|
|
166
166
|
gapit ships an MCP (Model Context Protocol) stdio server so agent runtimes can
|
|
167
167
|
screen assemblies without parsing CLI output: `gapit mcp` or the `gapit-mcp`
|
|
168
168
|
console script speaks newline-delimited JSON-RPC 2.0 on stdin/stdout (no extra
|
|
169
|
-
dependencies — the protocol is hand-rolled). It exposes
|
|
169
|
+
dependencies — the protocol is hand-rolled). It exposes ten tools:
|
|
170
170
|
`screen` (gapit.report/1 by default; `aligner minimap2` for a fast assembly
|
|
171
171
|
survey), `screen_reads` (FASTQ via minimap2, gapit.reads/1), `summary`
|
|
172
172
|
(gapit.summary/1), `schema`, `db_list`, plus the database tools `db_fetch`,
|
|
@@ -421,8 +421,9 @@ path and is not exercised by the offline suite.
|
|
|
421
421
|
table (NAME = the `--db` value, PROVIDER = upstream maintainer org; `installed (N)`
|
|
422
422
|
iff `<datadir>/<name>/gapit-manifest.json` exists, else `available`),
|
|
423
423
|
or `gapit.dblist/1` JSON (`providers[]`: `name`, `vendor`, `description`, `dbtype`,
|
|
424
|
-
`installed`, `records` omitted when unset).
|
|
425
|
-
`gapit schema
|
|
424
|
+
`installed`, `indexed`, `records` omitted when unset). Registered as
|
|
425
|
+
`gapit schema dblist`; `gapit schema dboutdated`/`datadir` expose the sibling
|
|
426
|
+
listings. A missing datadir is bootstrapped (created) before listing, so a fresh
|
|
426
427
|
installation can inspect the catalog; `setupdb` bootstraps it too.
|
|
427
428
|
- `gapit db install SOURCE --sha256 HASH --output TARGET` — verified LOCAL-FILE install
|
|
428
429
|
only (no network, no providers, no archives): streaming SHA256, atomic replace after the
|
|
@@ -13,12 +13,13 @@ Version, as one JSON line:
|
|
|
13
13
|
|
|
14
14
|
```console
|
|
15
15
|
$ gapit --version --json
|
|
16
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.6.
|
|
16
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.6.4"}
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
Output schemas.
|
|
20
|
-
`reads2`, `cluster`, `cluster2`, `summary`, `error`, `version`,
|
|
21
|
-
|
|
19
|
+
Output schemas. Fifteen documents are introspectable: `report`, `typing_result`,
|
|
20
|
+
`reads`, `reads2`, `cluster`, `cluster2`, `summary`, `error`, `version`, `dblist`,
|
|
21
|
+
`dboutdated`, `datadir`, plus the database-side documents `features`, `typing`, and
|
|
22
|
+
`floors`. Each prints its full JSON Schema:
|
|
22
23
|
|
|
23
24
|
```console
|
|
24
25
|
$ gapit schema report # gapit.report/1 (contig screening)
|
|
@@ -30,6 +31,9 @@ $ gapit schema cluster2 # gapit.cluster/2 (multi-scheme cluster screening
|
|
|
30
31
|
$ gapit schema summary # gapit.summary/1
|
|
31
32
|
$ gapit schema error # gapit.error/1
|
|
32
33
|
$ gapit schema version # gapit.version/1
|
|
34
|
+
$ gapit schema dblist # gapit.dblist/1 (database catalog)
|
|
35
|
+
$ gapit schema dboutdated # gapit.dboutdated/1 (staleness report)
|
|
36
|
+
$ gapit schema datadir # gapit.datadir/1 (resolved path/source)
|
|
33
37
|
$ gapit schema features # gapit.features/1 (cluster db feature table)
|
|
34
38
|
$ gapit schema typing # gapit.typing/2 (db scoring spec; /1 still reads)
|
|
35
39
|
$ gapit schema floors # gapit.floors/1 (per-gene identity floors, reads mode)
|
|
@@ -12,11 +12,12 @@ gapit 生来就是被程序驱动的。每个输出都以机器可读为设计
|
|
|
12
12
|
|
|
13
13
|
```console
|
|
14
14
|
$ gapit --version --json
|
|
15
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.6.
|
|
15
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.6.4"}
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
输出 schema
|
|
19
|
-
`summary`、`error`、`version
|
|
18
|
+
输出 schema。十五个文档可自省:`report`、`typing_result`、`reads`、`reads2`、
|
|
19
|
+
`cluster`、`cluster2`、`summary`、`error`、`version`、`dblist`、`dboutdated`、
|
|
20
|
+
`datadir`,外加数据库侧文档 `features`、`typing` 和 `floors`。每个都打印完整的
|
|
20
21
|
JSON Schema:
|
|
21
22
|
|
|
22
23
|
```console
|
|
@@ -29,6 +30,9 @@ $ gapit schema cluster2 # gapit.cluster/2 (multi-scheme cluster screening
|
|
|
29
30
|
$ gapit schema summary # gapit.summary/1
|
|
30
31
|
$ gapit schema error # gapit.error/1
|
|
31
32
|
$ gapit schema version # gapit.version/1
|
|
33
|
+
$ gapit schema dblist # gapit.dblist/1(数据库目录)
|
|
34
|
+
$ gapit schema dboutdated # gapit.dboutdated/1(过期报告)
|
|
35
|
+
$ gapit schema datadir # gapit.datadir/1(解析路径/来源)
|
|
32
36
|
$ gapit schema features # gapit.features/1 (cluster db feature table)
|
|
33
37
|
$ gapit schema typing # gapit.typing/2 (db scoring spec; /1 still reads)
|
|
34
38
|
$ gapit schema floors # gapit.floors/1 (per-gene identity floors, reads mode)
|
|
@@ -308,8 +308,8 @@ databases; an unparseable `fetched_at` is `MANIFEST_MALFORMED` (exit 5). For bun
|
|
|
308
308
|
databases the report is manifest-based as everywhere else: a materialized bundle ages
|
|
309
309
|
from its materialization time, and no bundled-vs-upstream comparison happens in v1
|
|
310
310
|
(see [Bundled databases](#bundled-databases-install-time-ready) — future work). For
|
|
311
|
-
agents, `--json` emits a `gapit.dboutdated/1` document (
|
|
312
|
-
`gapit schema`):
|
|
311
|
+
agents, `--json` emits a `gapit.dboutdated/1` document (introspectable via
|
|
312
|
+
`gapit schema dboutdated`):
|
|
313
313
|
|
|
314
314
|
```console
|
|
315
315
|
$ gapit db outdated --days 3 --json
|
|
@@ -564,7 +564,7 @@ versions. A real one, from the plasmidfinder database:
|
|
|
564
564
|
"upstream_version": "",
|
|
565
565
|
"tool": {
|
|
566
566
|
"name": "gapit",
|
|
567
|
-
"version": "0.6.
|
|
567
|
+
"version": "0.6.4"
|
|
568
568
|
},
|
|
569
569
|
"makeblastdb_version": "blastn: 2.17.0+",
|
|
570
570
|
"minimap2_version": "2.31-r1302"
|
|
@@ -589,7 +589,8 @@ versions. A real one, from the plasmidfinder database:
|
|
|
589
589
|
| `minimap2_version` | string | minimap2 version in the build environment (reads mode indexes in memory; no `.mmi` is built) |
|
|
590
590
|
|
|
591
591
|
`records.jsonl` and the manifest are file contracts. They never appear on stdout and are
|
|
592
|
-
not registered with `gapit schema
|
|
592
|
+
not registered with `gapit schema` (the stdio/listing documents `dblist`, `dboutdated`,
|
|
593
|
+
and `datadir` are).
|
|
593
594
|
|
|
594
595
|
### floors.json — per-gene identity floors
|
|
595
596
|
|
|
@@ -281,8 +281,7 @@ card 2020-01-01T00:00:00Z 2454.55 stale
|
|
|
281
281
|
目录;无法解析的 `fetched_at` 是 `MANIFEST_MALFORMED`(退出码 5)。内置数据库的
|
|
282
282
|
报告与其他库一样以 manifest 为准:已物化的内置库从物化时刻起算年龄,v1 不做
|
|
283
283
|
内置-vs-上游比较(见"内置数据库(即装即用)"一节 —— 属未来工作)。面向 agent,
|
|
284
|
-
`--json` 输出 `gapit.dboutdated/1`
|
|
285
|
-
到 `gapit schema`):
|
|
284
|
+
`--json` 输出 `gapit.dboutdated/1` 文档(可用 `gapit schema dboutdated` 内省):
|
|
286
285
|
|
|
287
286
|
```console
|
|
288
287
|
$ gapit db outdated --days 3 --json
|
|
@@ -527,7 +526,7 @@ manifest,来自 plasmidfinder 数据库:
|
|
|
527
526
|
"upstream_version": "",
|
|
528
527
|
"tool": {
|
|
529
528
|
"name": "gapit",
|
|
530
|
-
"version": "0.6.
|
|
529
|
+
"version": "0.6.4"
|
|
531
530
|
},
|
|
532
531
|
"makeblastdb_version": "blastn: 2.17.0+",
|
|
533
532
|
"minimap2_version": "2.31-r1302"
|
|
@@ -552,7 +551,7 @@ manifest,来自 plasmidfinder 数据库:
|
|
|
552
551
|
| `minimap2_version` | string | 构建环境中的 minimap2 版本(reads 模式在内存中建索引,不生成 `.mmi`) |
|
|
553
552
|
|
|
554
553
|
`records.jsonl` 和 manifest 是文件契约。它们从不出现在 stdout,也未注册到
|
|
555
|
-
`gapit schema
|
|
554
|
+
`gapit schema`(stdio/列表文档 `dblist`、`dboutdated`、`datadir` 已注册)。
|
|
556
555
|
|
|
557
556
|
### floors.json — 按基因设置一致性下限 {#floorsjson}
|
|
558
557
|
|
|
@@ -180,7 +180,7 @@ docker run --rm -it \
|
|
|
180
180
|
--user "$(id -u):$(id -g)" \
|
|
181
181
|
-v gapit-data:/data/gapit \
|
|
182
182
|
-e GAPIT_DATADIR=/data/gapit \
|
|
183
|
-
gapit:0.6.
|
|
183
|
+
gapit:0.6.4 gapit db list
|
|
184
184
|
```
|
|
185
185
|
|
|
186
186
|
For CI, mount or cache a workspace directory and pin versions:
|
|
@@ -189,7 +189,7 @@ For CI, mount or cache a workspace directory and pin versions:
|
|
|
189
189
|
docker run --rm \
|
|
190
190
|
-v "$PWD/.gapit-db:/data/gapit" \
|
|
191
191
|
-e GAPIT_DATADIR=/data/gapit \
|
|
192
|
-
gapit:0.6.
|
|
192
|
+
gapit:0.6.4 gapit screen sample.fna --db ecoli_dec
|
|
193
193
|
```
|
|
194
194
|
|
|
195
195
|
You can bake reference databases into an image for **read-only** screening:
|
|
@@ -164,7 +164,7 @@ docker run --rm -it \
|
|
|
164
164
|
--user "$(id -u):$(id -g)" \
|
|
165
165
|
-v gapit-data:/data/gapit \
|
|
166
166
|
-e GAPIT_DATADIR=/data/gapit \
|
|
167
|
-
gapit:0.6.
|
|
167
|
+
gapit:0.6.4 gapit db list
|
|
168
168
|
```
|
|
169
169
|
|
|
170
170
|
CI 中挂载或缓存 workspace 目录,并固定版本:
|
|
@@ -173,7 +173,7 @@ CI 中挂载或缓存 workspace 目录,并固定版本:
|
|
|
173
173
|
docker run --rm \
|
|
174
174
|
-v "$PWD/.gapit-db:/data/gapit" \
|
|
175
175
|
-e GAPIT_DATADIR=/data/gapit \
|
|
176
|
-
gapit:0.6.
|
|
176
|
+
gapit:0.6.4 gapit screen sample.fna --db ecoli_dec
|
|
177
177
|
```
|
|
178
178
|
|
|
179
179
|
可以为**只读**筛查把参考库烤进镜像:
|
|
@@ -48,9 +48,9 @@ gapit --version
|
|
|
48
48
|
|
|
49
49
|
```console
|
|
50
50
|
$ gapit --version
|
|
51
|
-
gapit 0.6.
|
|
51
|
+
gapit 0.6.4
|
|
52
52
|
$ gapit --version --json
|
|
53
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.6.
|
|
53
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.6.4"}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
## Optional gseek engine
|
|
@@ -46,9 +46,9 @@ gapit --version
|
|
|
46
46
|
|
|
47
47
|
```console
|
|
48
48
|
$ gapit --version
|
|
49
|
-
gapit 0.6.
|
|
49
|
+
gapit 0.6.4
|
|
50
50
|
$ gapit --version --json
|
|
51
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.6.
|
|
51
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.6.4"}
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
## 可选 gseek 引擎
|
|
@@ -30,8 +30,8 @@ the module CLI as `{"command": "gapit", "args": ["mcp"]}`.
|
|
|
30
30
|
|
|
31
31
|
## Tools
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
and
|
|
33
|
+
Ten tools: four analysis tools (`screen`, `screen_reads`, `summary`, `schema`)
|
|
34
|
+
and six database tools (`db_list`, `db_path`, `db_fetch`, `db_build`, `db_search`,
|
|
35
35
|
`db_outdated`) that mirror `gapit db ...` exactly. `db_list`/`db_search`/
|
|
36
36
|
`db_outdated` are read-only (`db_list` may create an empty datadir on first
|
|
37
37
|
use); `db_fetch`/`db_build` mutate the datadir. Argument lists below are
|
|
@@ -39,11 +39,12 @@ transcribed from the live `tools/list` `inputSchema` objects.
|
|
|
39
39
|
|
|
40
40
|
| Tool | Arguments | Returns |
|
|
41
41
|
|---|---|---|
|
|
42
|
-
| `screen` | `files` (array of strings, required), `db` (string, required — no default), `minid` (number), `mincov` (number), `format` (string: `json` \| `tsv` \| `csv` \| `md`, default `json`), `aligner` (string: `blastn` \| `minimap2`, default `blastn`), `
|
|
42
|
+
| `screen` | `files` (array of strings, required), `db` (string, required — no default), `minid` (number), `mincov` (number), `format` (string: `json` \| `tsv` \| `csv` \| `md`, default `json`), `aligner` (string: `blastn` \| `minimap2`, default `blastn`), `merge_fragments` (boolean, default `false`; blastn only — cross-contig fragment merging), `min_breadth` (number 0–100, default `90`; minimap2 only), `min_identity` (number 0–100, default `0`; minimap2 only), `min_mapq` (integer ≥ 0, default `0`; minimap2 only), `all_genes` (boolean; minimap2 only), `min_gene_cov` (number 0–100, default `90`; cluster dbs only), `min_gene_id` (number 0–100, default `90`; cluster dbs only), `min_cluster_cov` (number 0–100, default `96`; cluster dbs only), `datadir` (string) | Report text: `gapit.report/1` JSON by default, TSV/CSV/Markdown per `format`; `aligner minimap2` runs the reads engine and emits `gapit.reads/1`. A cluster-kind `db` emits `gapit.cluster/1`: best-locus call, per-gene verdicts, and — when the database carries a single-scheme `typing.json` — the phenotype call with its `phenotype_detail` score breakdown; a multi-scheme `typing.json` emits `gapit.cluster/2` with a `phenotypes` map of every scheme's call |
|
|
43
43
|
| `screen_reads` | `r1` (array of strings, required — one path per lane), `r2` (array of strings, same count as `r1`), `read_type` (string: `sr` \| `map-ont` \| `map-hifi`, default `sr`), `min_breadth` (number 0–100, default `90`), `min_identity` (number 0–100, default `0`), `min_mapq` (integer ≥ 0, default `0`), `all_genes` (boolean), `format` (string: `json` \| `tsv` \| `csv` \| `md`, default `json`), `db` (string, required — no default), `datadir` (string) | `gapit.reads/1` JSON by default or TSV/CSV/Markdown per `format`; `min_identity`/`min_mapq` > 0 switches to `gapit.reads/2` |
|
|
44
44
|
| `summary` | `files` (array of report table paths, required), `identity` (boolean), `nopath` (boolean) | `gapit.summary/1` JSON |
|
|
45
45
|
| `schema` | `name` (string, required, one of `cluster`, `error`, `features`, `floors`, `reads`, `reads2`, `report`, `summary`, `typing`, `typing_result`, `version`) | The JSON Schema of that output document |
|
|
46
|
-
| `db_list` | `datadir` (string) | `gapit.dblist/1`: database names, install state, record counts |
|
|
46
|
+
| `db_list` | `datadir` (string) | `gapit.dblist/1`: database names, install state, record counts, indexed flag |
|
|
47
|
+
| `db_path` | `datadir` (string) | `gapit.datadir/1`: resolved datadir, existence, and source |
|
|
47
48
|
| `db_fetch` | `name` (string, required — a database NAME, or `all` for the card+vfdb default set), `datadir` (string), `force` (boolean, default `false`) | One JSON receipt line per database (`db`, `records`, `dbtype`, `destination`). Every database downloads from its upstream provider, so installs need network and can take minutes |
|
|
48
49
|
| `db_build` | `name` (string, required), `fasta` (string, required — a LOCAL filesystem path), `tsv` (string), `dbtype` (string: `nucl` \| `prot`), `description` (string), `kind` (string: `gene` \| `cluster`), `typing` (string), `floors` (string), `datadir` (string), `force` (boolean, default `false`) | One JSON receipt line (`db`, `records`, `dbtype`, `destination`) |
|
|
49
50
|
| `db_search` | `term` (string, required), `db` (string), `field` (string: `gene` \| `accession` \| `function` \| `product` \| `any`, default `any`), `exact` (boolean, default `false`), `limit` (integer ≥ 0, default `100`; `0` = unlimited), `datadir` (string) | TSV hit rows with columns `DB`, `GENE`, `ACCESSION`, `FUNCTION`, `PRODUCT`, `LENGTH` |
|
|
@@ -57,6 +58,9 @@ reads-engine parameters); `minid`/`mincov` are ignored by `minimap2`.
|
|
|
57
58
|
|
|
58
59
|
Notes:
|
|
59
60
|
|
|
61
|
+
- Screen parameters use snake_case (`merge_fragments`, `min_gene_cov`,
|
|
62
|
+
`min_gene_id`, `min_cluster_cov`). The pre-0.6.4 camelCase spellings are still
|
|
63
|
+
accepted as aliases for compatibility, but new clients should use snake_case.
|
|
60
64
|
- File paths resolve relative to the server's working directory; absolute
|
|
61
65
|
paths are safest.
|
|
62
66
|
- The datadir comes from `--datadir` (where available), then `$GAPIT_DATADIR`, then
|
|
@@ -98,7 +102,7 @@ EOF
|
|
|
98
102
|
Response line 1, verbatim:
|
|
99
103
|
|
|
100
104
|
```text
|
|
101
|
-
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.6.
|
|
105
|
+
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.6.4"}}}
|
|
102
106
|
```
|
|
103
107
|
|
|
104
108
|
Response line 2 (real output, elided in the middle; each tool carries its full
|
|
@@ -121,7 +125,7 @@ the same run):
|
|
|
121
125
|
```json
|
|
122
126
|
{
|
|
123
127
|
"schema": "gapit.report/1",
|
|
124
|
-
"tool": {"name": "gapit", "version": "0.6.
|
|
128
|
+
"tool": {"name": "gapit", "version": "0.6.4"},
|
|
125
129
|
"created_at": "2026-09-19T01:15:44Z",
|
|
126
130
|
"params": {"db": "tinyamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
|
|
127
131
|
"files": [
|
|
@@ -177,7 +181,7 @@ the same run):
|
|
|
177
181
|
```json
|
|
178
182
|
{
|
|
179
183
|
"schema": "gapit.reads/1",
|
|
180
|
-
"tool": {"name": "gapit", "version": "0.6.
|
|
184
|
+
"tool": {"name": "gapit", "version": "0.6.4"},
|
|
181
185
|
"created_at": "2026-09-22T00:07:35Z",
|
|
182
186
|
"params": {
|
|
183
187
|
"db": "tinyreads",
|
|
@@ -252,7 +256,7 @@ hit is the gene the agent just built the database from (real output):
|
|
|
252
256
|
```json
|
|
253
257
|
{
|
|
254
258
|
"schema": "gapit.report/1",
|
|
255
|
-
"tool": {"name": "gapit", "version": "0.6.
|
|
259
|
+
"tool": {"name": "gapit", "version": "0.6.4"},
|
|
256
260
|
"created_at": "2026-09-20T13:38:39Z",
|
|
257
261
|
"params": {"db": "myamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
|
|
258
262
|
"files": [
|
|
@@ -28,8 +28,8 @@ shell 外调或解析终端输出。协议是手写的换行分隔 JSON-RPC 2.0
|
|
|
28
28
|
|
|
29
29
|
## 工具
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
数据库工具(`db_list`、`db_fetch`、`db_build`、`db_search`、`db_outdated`),与
|
|
31
|
+
十个工具:四个分析工具(`screen`、`screen_reads`、`summary`、`schema`)和六个
|
|
32
|
+
数据库工具(`db_list`、`db_path`、`db_fetch`、`db_build`、`db_search`、`db_outdated`),与
|
|
33
33
|
`gapit db ...` 完全对应。`db_list`/`db_search`/`db_outdated` 是只读的
|
|
34
34
|
(`db_list` 首次使用可能创建空 datadir);`db_fetch`/`db_build` 会修改 datadir。
|
|
35
35
|
下表参数列表转写自线上的
|
|
@@ -37,11 +37,12 @@ shell 外调或解析终端输出。协议是手写的换行分隔 JSON-RPC 2.0
|
|
|
37
37
|
|
|
38
38
|
| 工具 | 参数 | 返回 |
|
|
39
39
|
|---|---|---|
|
|
40
|
-
| `screen` | `files`(字符串数组,必填)、`db`(string,必填 —— 无默认值)、`minid`(number)、`mincov`(number)、`format`(string:`json` \| `tsv` \| `csv` \| `md`,默认 `json`)、`aligner`(string:`blastn` \| `minimap2`,默认 `blastn`)、`
|
|
40
|
+
| `screen` | `files`(字符串数组,必填)、`db`(string,必填 —— 无默认值)、`minid`(number)、`mincov`(number)、`format`(string:`json` \| `tsv` \| `csv` \| `md`,默认 `json`)、`aligner`(string:`blastn` \| `minimap2`,默认 `blastn`)、`merge_fragments`(boolean,默认 `false`;仅 blastn:跨 contig 片段合并)、`min_breadth`(number 0-100,默认 `90`;仅 minimap2)、`min_identity`(number 0-100,默认 `0`;仅 minimap2)、`min_mapq`(integer ≥ 0,默认 `0`;仅 minimap2)、`all_genes`(boolean;仅 minimap2)、`min_gene_cov`(number 0-100,默认 `90`;仅 cluster 数据库)、`min_gene_id`(number 0-100,默认 `90`;仅 cluster 数据库)、`min_cluster_cov`(number 0-100,默认 `96`;仅 cluster 数据库)、`datadir`(string) | 报告文本:默认 `gapit.report/1` JSON,按 `format` 也可为 TSV、CSV 或 Markdown;`aligner minimap2` 跑 reads 引擎并输出 `gapit.reads/1`。cluster 类型的 `db` 输出 `gapit.cluster/1`:最佳位点判定、逐基因判定,数据库携带单 scheme `typing.json` 时还有带 `phenotype_detail` 分数分解的表型判定;多 scheme `typing.json` 则输出 `gapit.cluster/2`,携带每个 scheme 判定的 `phenotypes` 映射 |
|
|
41
41
|
| `screen_reads` | `r1`(字符串数组,必填,每条 lane 一个路径)、`r2`(字符串数组,数量与 `r1` 相同)、`read_type`(string:`sr` \| `map-ont` \| `map-hifi`,默认 `sr`)、`min_breadth`(number 0-100,默认 `90`)、`min_identity`(number 0-100,默认 `0`)、`min_mapq`(integer ≥ 0,默认 `0`)、`all_genes`(boolean)、`format`(string:`json` \| `tsv` \| `csv` \| `md`,默认 `json`)、`db`(string,必填 —— 无默认值)、`datadir`(string) | 默认 `gapit.reads/1` JSON,按 `format` 可为 TSV、CSV 或 Markdown;`min_identity`/`min_mapq` > 0 切换为 `gapit.reads/2` |
|
|
42
42
|
| `summary` | `files`(报告表路径数组,必填)、`identity`(boolean)、`nopath`(boolean) | `gapit.summary/1` JSON |
|
|
43
43
|
| `schema` | `name`(string,必填,取值 `cluster`、`error`、`features`、`floors`、`reads`、`reads2`、`report`、`summary`、`typing`、`typing_result`、`version` 之一) | 该输出文档的 JSON Schema |
|
|
44
|
-
| `db_list` | `datadir`(string) | `gapit.dblist/1
|
|
44
|
+
| `db_list` | `datadir`(string) | `gapit.dblist/1`:数据库名、安装状态、记录数、索引状态 |
|
|
45
|
+
| `db_path` | `datadir`(string) | `gapit.datadir/1`:解析后的数据目录、是否存在、来源 |
|
|
45
46
|
| `db_fetch` | `name`(string,必填——数据库名,或 `all` 表示 card+vfdb 默认集合)、`datadir`(string)、`force`(boolean,默认 `false`) | 每个数据库一行 JSON 回执(`db`、`records`、`dbtype`、`destination`)。每个数据库都从其上游提供商下载,安装需要网络且可能耗时数分钟 |
|
|
46
47
|
| `db_build` | `name`(string,必填)、`fasta`(string,必填,本地文件系统路径)、`tsv`(string)、`dbtype`(string:`nucl` \| `prot`)、`description`(string)、`kind`(string:`gene` \| `cluster`)、`typing`(string)、`floors`(string)、`datadir`(string)、`force`(boolean,默认 `false`) | 一行 JSON 回执(`db`、`records`、`dbtype`、`destination`) |
|
|
47
48
|
| `db_search` | `term`(string,必填)、`db`(string)、`field`(string:`gene` \| `accession` \| `function` \| `product` \| `any`,默认 `any`)、`exact`(boolean,默认 `false`)、`limit`(integer ≥ 0,默认 `100`;`0` = 不限)、`datadir`(string) | TSV 命中行,列为 `DB`、`GENE`、`ACCESSION`、`FUNCTION`、`PRODUCT`、`LENGTH` |
|
|
@@ -54,6 +55,9 @@ shell 外调或解析终端输出。协议是手写的换行分隔 JSON-RPC 2.0
|
|
|
54
55
|
|
|
55
56
|
注意事项:
|
|
56
57
|
|
|
58
|
+
- screen 参数使用 snake_case(`merge_fragments`、`min_gene_cov`、`min_gene_id`、
|
|
59
|
+
`min_cluster_cov`);0.6.4 之前的 camelCase 拼写仍作为兼容别名接受,新客户端
|
|
60
|
+
应使用 snake_case。
|
|
57
61
|
- 文件路径相对服务器的工作目录解析;绝对路径最稳妥。
|
|
58
62
|
- 数据目录来自 `--datadir`(可用时),然后 `$GAPIT_DATADIR`,然后
|
|
59
63
|
`$XDG_DATA_HOME/gapit/db`,最后 `~/.local/share/gapit/db`(见 `./datadir.md`)。
|
|
@@ -94,7 +98,7 @@ EOF
|
|
|
94
98
|
响应第 1 行,原样:
|
|
95
99
|
|
|
96
100
|
```text
|
|
97
|
-
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.6.
|
|
101
|
+
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.6.4"}}}
|
|
98
102
|
```
|
|
99
103
|
|
|
100
104
|
响应第 2 行(真实输出,中段省略;每个工具携带完整的 `inputSchema`):
|
|
@@ -115,7 +119,7 @@ EOF
|
|
|
115
119
|
```json
|
|
116
120
|
{
|
|
117
121
|
"schema": "gapit.report/1",
|
|
118
|
-
"tool": {"name": "gapit", "version": "0.6.
|
|
122
|
+
"tool": {"name": "gapit", "version": "0.6.4"},
|
|
119
123
|
"created_at": "2026-09-19T01:15:44Z",
|
|
120
124
|
"params": {"db": "tinyamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
|
|
121
125
|
"files": [
|
|
@@ -169,7 +173,7 @@ EOF
|
|
|
169
173
|
```json
|
|
170
174
|
{
|
|
171
175
|
"schema": "gapit.reads/1",
|
|
172
|
-
"tool": {"name": "gapit", "version": "0.6.
|
|
176
|
+
"tool": {"name": "gapit", "version": "0.6.4"},
|
|
173
177
|
"created_at": "2026-09-22T00:07:35Z",
|
|
174
178
|
"params": {
|
|
175
179
|
"db": "tinyreads",
|
|
@@ -242,7 +246,7 @@ export GAPIT_DATADIR=/tmp/gapit-mcp-demo/datadir
|
|
|
242
246
|
```json
|
|
243
247
|
{
|
|
244
248
|
"schema": "gapit.report/1",
|
|
245
|
-
"tool": {"name": "gapit", "version": "0.6.
|
|
249
|
+
"tool": {"name": "gapit", "version": "0.6.4"},
|
|
246
250
|
"created_at": "2026-09-20T13:38:39Z",
|
|
247
251
|
"params": {"db": "myamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
|
|
248
252
|
"files": [
|
|
@@ -141,7 +141,7 @@ Real document, same run as the TSV above:
|
|
|
141
141
|
"schema": "gapit.report/1",
|
|
142
142
|
"tool": {
|
|
143
143
|
"name": "gapit",
|
|
144
|
-
"version": "0.6.
|
|
144
|
+
"version": "0.6.4"
|
|
145
145
|
},
|
|
146
146
|
"created_at": "2026-09-19T01:12:20Z",
|
|
147
147
|
"params": {
|
|
@@ -186,6 +186,7 @@ Real document, same run as the TSV above:
|
|
|
186
186
|
| `params.minid` | number | Minimum identity threshold |
|
|
187
187
|
| `params.mincov` | number | Minimum coverage threshold |
|
|
188
188
|
| `params.threads` | integer | BLAST thread count |
|
|
189
|
+
| `params.merge_fragments` | boolean | Present (true) only for `--merge-fragments` runs |
|
|
189
190
|
| `files` | array | One entry per input file, zero-hit files included |
|
|
190
191
|
| `files[].file` | string | Input path as given |
|
|
191
192
|
| `files[].hits` | array | Surviving hits, empty list when none |
|
|
@@ -232,7 +233,7 @@ row by `(%IDENTITY, %COVERAGE)`. Real document (trimmed):
|
|
|
232
233
|
```json
|
|
233
234
|
{
|
|
234
235
|
"schema": "gapit.typing_result/1",
|
|
235
|
-
"tool": {"name": "gapit", "version": "0.6.
|
|
236
|
+
"tool": {"name": "gapit", "version": "0.6.4"},
|
|
236
237
|
"created_at": "2026-10-02T10:04:55Z",
|
|
237
238
|
"source": ["dec.tsv"],
|
|
238
239
|
"db": "ecoli_dec",
|
|
@@ -419,7 +420,7 @@ summarizing two report files, one with a `tetA` hit and one with none:
|
|
|
419
420
|
"schema": "gapit.summary/1",
|
|
420
421
|
"tool": {
|
|
421
422
|
"name": "gapit",
|
|
422
|
-
"version": "0.6.
|
|
423
|
+
"version": "0.6.4"
|
|
423
424
|
},
|
|
424
425
|
"created_at": "2026-09-19T01:11:09Z",
|
|
425
426
|
"params": {
|
|
@@ -495,7 +496,7 @@ Any failure prints one line of JSON to stderr:
|
|
|
495
496
|
| Field | Type | Meaning |
|
|
496
497
|
|---|---|---|
|
|
497
498
|
| `schema` | string | Always `gapit.error/1` |
|
|
498
|
-
| `code` | string | Machine-stable error code, SCREAMING_SNAKE_CASE |
|
|
499
|
+
| `code` | string | Machine-stable error code, SCREAMING_SNAKE_CASE; the enum is exposed by `gapit schema error` |
|
|
499
500
|
| `message` | string | Human-readable description |
|
|
500
501
|
| `context` | object | String-valued details (file paths, digests, db names) |
|
|
501
502
|
|
|
@@ -543,7 +544,7 @@ An agent can discover the whole contract from the binary alone.
|
|
|
543
544
|
|
|
544
545
|
```console
|
|
545
546
|
$ gapit --version --json
|
|
546
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.6.
|
|
547
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.6.4"}
|
|
547
548
|
```
|
|
548
549
|
|
|
549
550
|
`gapit schema <name>` prints the JSON Schema for each document. The eleven names: `report`,
|
|
@@ -130,7 +130,7 @@ non-DEC。零命中文件不产生筛查行,因此不会出现在判定输出
|
|
|
130
130
|
"schema": "gapit.report/1",
|
|
131
131
|
"tool": {
|
|
132
132
|
"name": "gapit",
|
|
133
|
-
"version": "0.6.
|
|
133
|
+
"version": "0.6.4"
|
|
134
134
|
},
|
|
135
135
|
"created_at": "2026-09-19T01:12:20Z",
|
|
136
136
|
"params": {
|
|
@@ -175,6 +175,7 @@ non-DEC。零命中文件不产生筛查行,因此不会出现在判定输出
|
|
|
175
175
|
| `params.minid` | number | 最小一致性阈值 |
|
|
176
176
|
| `params.mincov` | number | 最小覆盖度阈值 |
|
|
177
177
|
| `params.threads` | integer | BLAST 线程数 |
|
|
178
|
+
| `params.merge_fragments` | boolean | 仅 `--merge-fragments` 运行时出现(true) |
|
|
178
179
|
| `files` | array | 每个输入文件一项,含零命中文件 |
|
|
179
180
|
| `files[].file` | string | 按原样的输入路径 |
|
|
180
181
|
| `files[].hits` | array | 幸存命中,无命中时为空列表 |
|
|
@@ -219,7 +220,7 @@ non-DEC。零命中文件不产生筛查行,因此不会出现在判定输出
|
|
|
219
220
|
```json
|
|
220
221
|
{
|
|
221
222
|
"schema": "gapit.typing_result/1",
|
|
222
|
-
"tool": {"name": "gapit", "version": "0.6.
|
|
223
|
+
"tool": {"name": "gapit", "version": "0.6.4"},
|
|
223
224
|
"created_at": "2026-10-02T10:04:55Z",
|
|
224
225
|
"source": ["dec.tsv"],
|
|
225
226
|
"db": "ecoli_dec",
|
|
@@ -402,7 +403,7 @@ typing 的数据库是同一个表头去掉 `PHENOTYPE`。没有位点判定的
|
|
|
402
403
|
"schema": "gapit.summary/1",
|
|
403
404
|
"tool": {
|
|
404
405
|
"name": "gapit",
|
|
405
|
-
"version": "0.6.
|
|
406
|
+
"version": "0.6.4"
|
|
406
407
|
},
|
|
407
408
|
"created_at": "2026-09-19T01:11:09Z",
|
|
408
409
|
"params": {
|
|
@@ -477,7 +478,7 @@ frontmatter 在第一个文件之前即可知,因此 md 与 tsv 行一样逐
|
|
|
477
478
|
| 字段 | 类型 | 含义 |
|
|
478
479
|
|---|---|---|
|
|
479
480
|
| `schema` | string | 恒为 `gapit.error/1` |
|
|
480
|
-
| `code` | string | 机器稳定的错误码,SCREAMING_SNAKE_CASE |
|
|
481
|
+
| `code` | string | 机器稳定的错误码,SCREAMING_SNAKE_CASE;枚举由 `gapit schema error` 暴露 |
|
|
481
482
|
| `message` | string | 人类可读的描述 |
|
|
482
483
|
| `context` | object | 字符串值的细节(文件路径、摘要、数据库名) |
|
|
483
484
|
|
|
@@ -525,7 +526,7 @@ agent 只凭二进制就能发现整个契约。
|
|
|
525
526
|
|
|
526
527
|
```console
|
|
527
528
|
$ gapit --version --json
|
|
528
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.6.
|
|
529
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.6.4"}
|
|
529
530
|
```
|
|
530
531
|
|
|
531
532
|
`gapit schema <name>` 打印每个文档的 JSON Schema。十二个名字:`report`、
|
|
@@ -123,7 +123,7 @@ table, one chunk for the one sample).
|
|
|
123
123
|
## Options
|
|
124
124
|
|
|
125
125
|
Reads mode runs through the same `gapit screen` command; these are the flags that apply
|
|
126
|
-
(transcribed from `gapit screen --help`, gapit 0.6.
|
|
126
|
+
(transcribed from `gapit screen --help`, gapit 0.6.4). Contig-mode flags not listed here
|
|
127
127
|
(`--minid`, `--mincov`, `--fofn`, `--noheader`, `--nopath`) do not apply; `--jobs` applies
|
|
128
128
|
to the wildcard path only.
|
|
129
129
|
|
|
@@ -337,7 +337,7 @@ The short-read fixture behaves the same with one calibration: `sr` soft-clipping
|
|
|
337
337
|
$ gapit screen --r1 ont_homologs.fq --db homologs --read-type map-ont --min-identity 95 --format md --quiet
|
|
338
338
|
---
|
|
339
339
|
schema: gapit.reads/2
|
|
340
|
-
tool: gapit 0.6.
|
|
340
|
+
tool: gapit 0.6.4
|
|
341
341
|
created_at: 2026-09-20T14:23:33Z
|
|
342
342
|
db: homologs
|
|
343
343
|
read_type: map-ont
|
|
@@ -433,7 +433,7 @@ $ gapit screen --r1 tetx_full.fq --db tinyreads --format json
|
|
|
433
433
|
"schema": "gapit.reads/1",
|
|
434
434
|
"tool": {
|
|
435
435
|
"name": "gapit",
|
|
436
|
-
"version": "0.6.
|
|
436
|
+
"version": "0.6.4"
|
|
437
437
|
},
|
|
438
438
|
"created_at": "2026-09-19T01:12:25Z",
|
|
439
439
|
"params": {
|
|
@@ -528,7 +528,7 @@ $ gapit screen --r1 tetx_lane1.fq,tetx_lane2.fq --db tinyreads --format json --q
|
|
|
528
528
|
$ gapit screen --r1 tetx_full.fq --db tinyreads --format md
|
|
529
529
|
---
|
|
530
530
|
schema: gapit.reads/1
|
|
531
|
-
tool: gapit 0.6.
|
|
531
|
+
tool: gapit 0.6.4
|
|
532
532
|
created_at: 2026-09-19T01:12:25Z
|
|
533
533
|
db: tinyreads
|
|
534
534
|
read_type: sr
|
|
@@ -630,7 +630,7 @@ Detected 2 present genes in /tmp/gapit-demo/assembly.fa
|
|
|
630
630
|
"schema": "gapit.reads/1",
|
|
631
631
|
"tool": {
|
|
632
632
|
"name": "gapit",
|
|
633
|
-
"version": "0.6.
|
|
633
|
+
"version": "0.6.4"
|
|
634
634
|
},
|
|
635
635
|
"created_at": "2026-09-19T14:23:00Z",
|
|
636
636
|
"params": {
|
|
@@ -689,7 +689,7 @@ cost of allele-level precision. That trade suggests a two-stage workflow over ma
|
|
|
689
689
|
pipeline, which applies the identity and coverage floors at abricate parity.
|
|
690
690
|
|
|
691
691
|
Real numbers, one K. pneumoniae RefSeq assembly (GCF_000240185.1, 5.3 Mb, `--db ncbi`,
|
|
692
|
-
single-threaded, gapit 0.6.
|
|
692
|
+
single-threaded, gapit 0.6.4):
|
|
693
693
|
|
|
694
694
|
```console
|
|
695
695
|
$ # Stage 1: survey, ~0.9 s
|