gapit 0.5.3__tar.gz → 0.5.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.5.3 → gapit-0.5.4}/CHANGELOG.md +13 -0
- {gapit-0.5.3 → gapit-0.5.4}/PKG-INFO +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/docs/agents.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/docs/agents.zh.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/docs/databases.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/docs/databases.zh.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/docs/installation.md +2 -2
- {gapit-0.5.3 → gapit-0.5.4}/docs/installation.zh.md +2 -2
- {gapit-0.5.3 → gapit-0.5.4}/docs/mcp.md +4 -4
- {gapit-0.5.3 → gapit-0.5.4}/docs/mcp.zh.md +4 -4
- {gapit-0.5.3 → gapit-0.5.4}/docs/outputs.md +4 -4
- {gapit-0.5.3 → gapit-0.5.4}/docs/outputs.zh.md +4 -4
- {gapit-0.5.3 → gapit-0.5.4}/docs/quickstart.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/docs/quickstart.zh.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/docs/reads.md +14 -6
- {gapit-0.5.3 → gapit-0.5.4}/docs/reads.zh.md +13 -6
- {gapit-0.5.3 → gapit-0.5.4}/docs/screen.md +12 -2
- {gapit-0.5.3 → gapit-0.5.4}/docs/screen.zh.md +12 -2
- {gapit-0.5.3 → gapit-0.5.4}/docs/summary.md +2 -2
- {gapit-0.5.3 → gapit-0.5.4}/docs/summary.zh.md +2 -2
- {gapit-0.5.3 → gapit-0.5.4}/pixi.lock +2 -2
- {gapit-0.5.3 → gapit-0.5.4}/pixi.toml +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/pyproject.toml +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/recipe/meta.yaml +3 -3
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/__init__.py +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/db_ops.py +12 -3
- gapit-0.5.4/src/gapit/progress.py +119 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/screening.py +37 -27
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/screening_reads_positional.py +46 -36
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_exact.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_exact.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_fragmented.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_fragmented.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_typing_ambiguous.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_typing_ambiguous.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_typing_cm_exact.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_typing_cm_exact.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_typing_exact.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_typing_exact.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_vc_inaba.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_vc_inaba.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/fragments_merge.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/fragments_merge.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_dec_pic_astA.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_dec_pic_astA.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_doumith_4b.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_doumith_4b.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_serotyping_l4b.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_serotyping_l4b.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_serotyping_mixed.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_serotyping_mixed.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_serotyping_vp_typed.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_serotyping_vp_typed.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_shigella_mixed.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_shigella_mixed.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_typing_exact.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/gene_typing_exact.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/reads_tinyamr.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/reads_tinyamr.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/screen_multi.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/screen_multi.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/summary_multi.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/summary_multi.md +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/typing_markers.json +1 -1
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/typing_markers.md +1 -1
- gapit-0.5.4/tests/test_progress.py +271 -0
- {gapit-0.5.3 → gapit-0.5.4}/.gitattributes +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/.github/workflows/ci.yml +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/.github/workflows/docs.yml +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/.github/workflows/release.yml +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/.gitignore +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/AGENTS.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/LICENSE +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/PLAN.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/README.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/SPEC.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/docs/custom-db.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/docs/custom-db.zh.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/docs/faq.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/docs/faq.zh.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/docs/index.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/docs/index.zh.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/docs/typing.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/docs/typing.zh.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/mkdocs.yml +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/scripts/cluster_calibration.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/blast.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/bundled.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cli.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cluster.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cluster_math.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/clusterbuild.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_db.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_db_build.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_db_install.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_db_outdated.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_db_search.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_screen.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_screen_positionals.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_screen_reads_args.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_summary.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/cmd_typing.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/config.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/ecoh/bundled.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/ecoh/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/ecoli_dec/bundled.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/ecoli_dec/floors.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/ecoli_dec/records.jsonl +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/ecoli_dec/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/ecoli_dec/typing.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/lm_doumith/bundled.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/lm_doumith/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/lm_doumith/typing.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/ncbi/bundled.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/ncbi/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/resfinder/bundled.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/resfinder/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/upec_expec_vf/bundled.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/data/dbs/upec_expec_vf/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/db.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/db_build_meta.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/db_build_ops.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/db_query_ops.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/dbbuild.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/dbcodec.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/dispatch.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/engines.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/errors.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/fasta.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/__init__.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/cluster.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/cluster_md.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/json.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/md.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/reads_json.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/reads_tsv.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/schemas.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/summary.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/tsv.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/formats/typing_result.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/fragments.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/gbfeatures.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/gene_floors.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/gffparse.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/hits.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/mcp.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/mcp_schemas.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/mcp_tools.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/minimap.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/minimap2_run.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/paf.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/proctools.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/__init__.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/ab_k.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/ab_o.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/argannot.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/bacmet2.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/card.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/cluster_common.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/common.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/ecoh.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/ecoli_kps.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/ecoli_vf.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/kosc_k.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/kosc_o.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/kpsc_k.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/kpsc_o.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/megares.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/ncbi.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/plasmidfinder.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/resfinder.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/upec_expec_vf.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/vfdb.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/providers/victors.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/py.typed +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/readpairs.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/reads.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/records.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/report.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/screening_cluster.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/screening_reads.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/seqconvert.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/summary.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/typing_decide.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/typing_engine.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/typing_gene.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/typing_input.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/typing_models.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/typing_ops.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/typing_results.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/src/gapit/typing_rules.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/bundled_differential/resfinder/HEAD.zip +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/bundled_differential/resfinder/README.md +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/bakta_style.gbk +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/clusters.gff3 +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/clusters_gz.gff3.gz +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/clusters_sidecar.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/clusters_sidecar.gff3 +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/compound.gbk +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/gz_input.gbk.gz +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/kaptive_style.gbk +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/nofasta.gff3 +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/screening.gbk +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/typing_invalid.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/typing_screen.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/typing_screen_cm.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/typing_screen_v2.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/typing_valid.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/cluster/unnamed_cds.gbk +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/contigs/full.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/contigs/gap.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/contigs/none.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/contigs/partial.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/contigs/sort.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/convert/sample.embl +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/convert/sample.embl.bz2 +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/convert/sample.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/convert/sample.fa.gz +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/convert/sample.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/convert/sample.gbk +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/convert/sample.gbk.gz +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/db/tinyamr/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/fragments/fragdb/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/fragments/split3040.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/fragments/split4060.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/fragments/split5050.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/argannot/ARG-ANNOT_NT_V6_July2019.txt +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/bacmet2/BacMet2_EXP_database.fasta +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/card/card.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/ecoh/EcOH.fasta +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/ecoli_vf/repaired_ecoli_vfs_shortnames.ffn +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/megares/megares_drugs_demo.fasta +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/ncbi/AMR_CDS.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/ncbi/ReferenceGeneCatalog.txt +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/plasmidfinder/plasmids_a.fsa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/plasmidfinder/plasmids_b.fsa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/resfinder/aminoglycoside.fsa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/resfinder/beta-lactam.fsa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/resfinder/phenotypes.txt +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/upec_expec_vf/UPEC_ExPEC_VF.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/vfdb/VFDB_setA_nt.fas +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/victors/gen_downloads.php +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/providers/victors/gen_downloads_protein.php +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/bla_partial.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/junk.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/s1_1.fq.gz +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/s1_2.fq.gz +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/s2_R1.fq.gz +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/s2_R2.fq.gz +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/suly_partial.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_R1.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_R2.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_full.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_full.fq.gz +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_lane1.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_lane2.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_pe1_R1.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_pe1_R2.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_pe2_R1.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads/tetx_pe2_R2.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads2/ont_homologs.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads2/sr_homologs.fq +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads2_db/homologs/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/reads_db/tinyreads/sequences +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/summary/empty.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/summary/multi_sample.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/summary/sample_a.csv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/summary/sample_a.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/summary/sample_b.csv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/summary/sample_b.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/dec_s1_aggR_pic_uidA.fasta +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/dec_s2_pic_astA_uidA.fasta +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/dec_s3_stx2a_escV_aggR_uidA.fasta +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/exact.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/listeria_1c.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/listeria_4b.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/listeria_nogate.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/markers.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/mutated.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/negative.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/partial.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/cholerae.gbk +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/cholerae.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/dec.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/dec.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/doumith.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/doumith.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/lm_doumith.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/lm_doumith.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/meningotype.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/meningotype.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/shigella.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/shigella.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/vp_ok.gbk +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/schemes/vp_ok.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/serotyping.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/typing_markers_v1.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/typing_markers_v2.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/typing_serotyping_v2.json +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/vp_mixed.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/data/typing/vp_typed.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_exact.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_fragmented.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_typing_ambiguous.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_typing_cm_exact.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_typing_exact.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/cluster_vc_inaba.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/ecoli_dec_typed.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/ecoli_dec_typing.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/fragments_merge.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/lm_doumith_typing.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/summary_dutch.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/summary_multi.csv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/summary_multi.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/tinyamr_multi_nopath.csv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/tinyamr_multi_nopath.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/typing_markers.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/golden/typing_serotyping.tsv +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/parity/corpus/01_exact_and_junk.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/parity/corpus/02_mutated.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/parity/corpus/03_truncated.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/parity/corpus/04_reverse.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/parity/corpus/05_threshold.fa +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/parity/make_corpus.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/parity/run_parity.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/parity/run_summary_parity.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_blast_parse.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_blast_pipeline.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_bundled.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_aligner.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_bare_help.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_completion.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_db_build.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_db_build_cluster.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_db_fetch.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_db_query.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_fragments.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_reads.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_reads2.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_reads_glob.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_reads_glob_jobs.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_schema.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_screen.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_screen_jobs.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_setupdb.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_short_options.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cli_summary.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cluster_calibration.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cluster_db.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cluster_math.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cluster_screen.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_cluster_typing.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_config.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_db.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_db_fetch.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_db_headers.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_db_list_extras.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_dbbuild.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_dbcodec.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_error_envelope.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_fasta.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_fragments.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_gapit_db_e2e.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_gbfeatures.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_gene_floors.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_gene_floors_e2e.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_gene_typing.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_gene_typing2.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_gffparse.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_hits.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_json_format.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_lm_doumith.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_mcp.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_mcp_db_tools.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_mcp_protocol.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_mcp_reads.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_md_format.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_minimap.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_mol_type.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_oversubscription.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_paf.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_paf_identity.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_argannot.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_bacmet2.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_card.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_ecoh.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_ecoli_vf.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_kaptive.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_megares.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_ncbi.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_plasmidfinder.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_resfinder.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_upec_expec_vf.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_vfdb.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_provider_victors.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_providers_common.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_readpairs.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_reads2_homologs.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_reads2_model.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_reads_aggregate.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_reads_integration.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_reads_interval_union.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_reads_streaming.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_records.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_report.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_screen_integration.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_screening_reads_unit.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_seqconvert.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_seqconvert_differential.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_streaming_chunks.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_summary.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_summary_formats.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_tsv.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_typing_command.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_typing_engine.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_typing_models.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_typing_schemes.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_typing_schemes_cluster.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_typing_stage2.py +0 -0
- {gapit-0.5.3 → gapit-0.5.4}/tests/test_version.py +0 -0
|
@@ -5,6 +5,19 @@ 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.5.4] - 2026-10-03
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Rich progress bar on long batch runs** (stderr only; modeled on the gmlst UX).
|
|
13
|
+
Multi-file contig screening, the positional-FASTQ wildcard batch, and
|
|
14
|
+
`gapit db fetch all` now show a spinner + bar + M/N + percent + elapsed bar on an
|
|
15
|
+
interactive stderr, with the description tracking the current file/sample/database and
|
|
16
|
+
replacing the per-file stderr notes while it runs. Under `--quiet` or a non-TTY stderr
|
|
17
|
+
(pipes, CI) the bar is disabled and today's plain notes print byte-identically; stdout
|
|
18
|
+
data streams are untouched in every case (the bar never captures stdout — rich's Live
|
|
19
|
+
redirection is pinned off), so output bytes are identical with the bar on or off.
|
|
20
|
+
|
|
8
21
|
## [0.5.3] - 2026-10-03
|
|
9
22
|
|
|
10
23
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gapit
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.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/
|
|
@@ -13,7 +13,7 @@ Version, as one JSON line:
|
|
|
13
13
|
|
|
14
14
|
```console
|
|
15
15
|
$ gapit --version --json
|
|
16
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.5.
|
|
16
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.5.4"}
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
Output schemas. Eleven documents are introspectable: `report`, `typing_result`, `reads`,
|
|
@@ -12,7 +12,7 @@ gapit 生来就是被程序驱动的。每个输出都以机器可读为设计
|
|
|
12
12
|
|
|
13
13
|
```console
|
|
14
14
|
$ gapit --version --json
|
|
15
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.5.
|
|
15
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.5.4"}
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
输出 schema。十一个文档可自省:`report`、`typing_result`、`reads`、`reads2`、`cluster`、
|
|
@@ -496,7 +496,7 @@ versions. A real one, from the plasmidfinder database:
|
|
|
496
496
|
"upstream_version": "",
|
|
497
497
|
"tool": {
|
|
498
498
|
"name": "gapit",
|
|
499
|
-
"version": "0.5.
|
|
499
|
+
"version": "0.5.4"
|
|
500
500
|
},
|
|
501
501
|
"makeblastdb_version": "blastn: 2.17.0+",
|
|
502
502
|
"minimap2_version": "2.31-r1302"
|
|
@@ -48,9 +48,9 @@ gapit --version
|
|
|
48
48
|
|
|
49
49
|
```console
|
|
50
50
|
$ gapit --version
|
|
51
|
-
gapit 0.5.
|
|
51
|
+
gapit 0.5.4
|
|
52
52
|
$ gapit --version --json
|
|
53
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.5.
|
|
53
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.5.4"}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
## External binaries
|
|
@@ -46,9 +46,9 @@ gapit --version
|
|
|
46
46
|
|
|
47
47
|
```console
|
|
48
48
|
$ gapit --version
|
|
49
|
-
gapit 0.5.
|
|
49
|
+
gapit 0.5.4
|
|
50
50
|
$ gapit --version --json
|
|
51
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.5.
|
|
51
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.5.4"}
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
## 外部二进制
|
|
@@ -94,7 +94,7 @@ EOF
|
|
|
94
94
|
Response line 1, verbatim:
|
|
95
95
|
|
|
96
96
|
```text
|
|
97
|
-
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.5.
|
|
97
|
+
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.5.4"}}}
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
Response line 2 (real output, elided in the middle; each tool carries its full
|
|
@@ -117,7 +117,7 @@ the same run):
|
|
|
117
117
|
```json
|
|
118
118
|
{
|
|
119
119
|
"schema": "gapit.report/1",
|
|
120
|
-
"tool": {"name": "gapit", "version": "0.5.
|
|
120
|
+
"tool": {"name": "gapit", "version": "0.5.4"},
|
|
121
121
|
"created_at": "2026-09-19T01:15:44Z",
|
|
122
122
|
"params": {"db": "tinyamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
|
|
123
123
|
"files": [
|
|
@@ -173,7 +173,7 @@ the same run):
|
|
|
173
173
|
```json
|
|
174
174
|
{
|
|
175
175
|
"schema": "gapit.reads/1",
|
|
176
|
-
"tool": {"name": "gapit", "version": "0.5.
|
|
176
|
+
"tool": {"name": "gapit", "version": "0.5.4"},
|
|
177
177
|
"created_at": "2026-09-22T00:07:35Z",
|
|
178
178
|
"params": {
|
|
179
179
|
"db": "tinyreads",
|
|
@@ -248,7 +248,7 @@ hit is the gene the agent just built the database from (real output):
|
|
|
248
248
|
```json
|
|
249
249
|
{
|
|
250
250
|
"schema": "gapit.report/1",
|
|
251
|
-
"tool": {"name": "gapit", "version": "0.5.
|
|
251
|
+
"tool": {"name": "gapit", "version": "0.5.4"},
|
|
252
252
|
"created_at": "2026-09-20T13:38:39Z",
|
|
253
253
|
"params": {"db": "myamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
|
|
254
254
|
"files": [
|
|
@@ -88,7 +88,7 @@ EOF
|
|
|
88
88
|
响应第 1 行,原样:
|
|
89
89
|
|
|
90
90
|
```text
|
|
91
|
-
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.5.
|
|
91
|
+
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.5.4"}}}
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
响应第 2 行(真实输出,中段省略;每个工具携带完整的 `inputSchema`):
|
|
@@ -109,7 +109,7 @@ EOF
|
|
|
109
109
|
```json
|
|
110
110
|
{
|
|
111
111
|
"schema": "gapit.report/1",
|
|
112
|
-
"tool": {"name": "gapit", "version": "0.5.
|
|
112
|
+
"tool": {"name": "gapit", "version": "0.5.4"},
|
|
113
113
|
"created_at": "2026-09-19T01:15:44Z",
|
|
114
114
|
"params": {"db": "tinyamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
|
|
115
115
|
"files": [
|
|
@@ -163,7 +163,7 @@ EOF
|
|
|
163
163
|
```json
|
|
164
164
|
{
|
|
165
165
|
"schema": "gapit.reads/1",
|
|
166
|
-
"tool": {"name": "gapit", "version": "0.5.
|
|
166
|
+
"tool": {"name": "gapit", "version": "0.5.4"},
|
|
167
167
|
"created_at": "2026-09-22T00:07:35Z",
|
|
168
168
|
"params": {
|
|
169
169
|
"db": "tinyreads",
|
|
@@ -236,7 +236,7 @@ export GAPIT_DATADIR=/tmp/gapit-mcp-demo/datadir
|
|
|
236
236
|
```json
|
|
237
237
|
{
|
|
238
238
|
"schema": "gapit.report/1",
|
|
239
|
-
"tool": {"name": "gapit", "version": "0.5.
|
|
239
|
+
"tool": {"name": "gapit", "version": "0.5.4"},
|
|
240
240
|
"created_at": "2026-09-20T13:38:39Z",
|
|
241
241
|
"params": {"db": "myamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
|
|
242
242
|
"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.5.
|
|
144
|
+
"version": "0.5.4"
|
|
145
145
|
},
|
|
146
146
|
"created_at": "2026-09-19T01:12:20Z",
|
|
147
147
|
"params": {
|
|
@@ -232,7 +232,7 @@ row by `(%IDENTITY, %COVERAGE)`. Real document (trimmed):
|
|
|
232
232
|
```json
|
|
233
233
|
{
|
|
234
234
|
"schema": "gapit.typing_result/1",
|
|
235
|
-
"tool": {"name": "gapit", "version": "0.5.
|
|
235
|
+
"tool": {"name": "gapit", "version": "0.5.4"},
|
|
236
236
|
"created_at": "2026-10-02T10:04:55Z",
|
|
237
237
|
"source": ["dec.tsv"],
|
|
238
238
|
"db": "ecoli_dec",
|
|
@@ -419,7 +419,7 @@ summarizing two report files, one with a `tetA` hit and one with none:
|
|
|
419
419
|
"schema": "gapit.summary/1",
|
|
420
420
|
"tool": {
|
|
421
421
|
"name": "gapit",
|
|
422
|
-
"version": "0.5.
|
|
422
|
+
"version": "0.5.4"
|
|
423
423
|
},
|
|
424
424
|
"created_at": "2026-09-19T01:11:09Z",
|
|
425
425
|
"params": {
|
|
@@ -539,7 +539,7 @@ An agent can discover the whole contract from the binary alone.
|
|
|
539
539
|
|
|
540
540
|
```console
|
|
541
541
|
$ gapit --version --json
|
|
542
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.5.
|
|
542
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.5.4"}
|
|
543
543
|
```
|
|
544
544
|
|
|
545
545
|
`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.5.
|
|
133
|
+
"version": "0.5.4"
|
|
134
134
|
},
|
|
135
135
|
"created_at": "2026-09-19T01:12:20Z",
|
|
136
136
|
"params": {
|
|
@@ -219,7 +219,7 @@ non-DEC。零命中文件不产生筛查行,因此不会出现在判定输出
|
|
|
219
219
|
```json
|
|
220
220
|
{
|
|
221
221
|
"schema": "gapit.typing_result/1",
|
|
222
|
-
"tool": {"name": "gapit", "version": "0.5.
|
|
222
|
+
"tool": {"name": "gapit", "version": "0.5.4"},
|
|
223
223
|
"created_at": "2026-10-02T10:04:55Z",
|
|
224
224
|
"source": ["dec.tsv"],
|
|
225
225
|
"db": "ecoli_dec",
|
|
@@ -402,7 +402,7 @@ typing 的数据库是同一个表头去掉 `PHENOTYPE`。没有位点判定的
|
|
|
402
402
|
"schema": "gapit.summary/1",
|
|
403
403
|
"tool": {
|
|
404
404
|
"name": "gapit",
|
|
405
|
-
"version": "0.5.
|
|
405
|
+
"version": "0.5.4"
|
|
406
406
|
},
|
|
407
407
|
"created_at": "2026-09-19T01:11:09Z",
|
|
408
408
|
"params": {
|
|
@@ -521,7 +521,7 @@ agent 只凭二进制就能发现整个契约。
|
|
|
521
521
|
|
|
522
522
|
```console
|
|
523
523
|
$ gapit --version --json
|
|
524
|
-
{"schema":"gapit.version/1","name":"gapit","version":"0.5.
|
|
524
|
+
{"schema":"gapit.version/1","name":"gapit","version":"0.5.4"}
|
|
525
525
|
```
|
|
526
526
|
|
|
527
527
|
`gapit schema <name>` 打印每个文档的 JSON Schema。十一个名字:`report`、
|
|
@@ -108,6 +108,14 @@ Output streams per completed sample, head-of-line in sample order under `--jobs`
|
|
|
108
108
|
file — the json variant renders nothing at all, since its single document only exists
|
|
109
109
|
at the end.
|
|
110
110
|
|
|
111
|
+
On an interactive terminal (stderr is a TTY, no `--quiet`) the batch shows a rich progress
|
|
112
|
+
bar on **stderr** — spinner, the current sample's name, bar, M/N count, percent, elapsed
|
|
113
|
+
time — replacing the per-sample `Screening sample …`/`Detected N present genes` notes while
|
|
114
|
+
it runs. Piped or redirected stderr and `--quiet` keep the plain notes byte-identically.
|
|
115
|
+
The bar never touches stdout: streaming bytes are identical with it on or off, and the
|
|
116
|
+
lazy `#SAMPLE` header still leads. The contig path ([./screen.md](./screen.md)) and
|
|
117
|
+
`gapit db fetch all` carry the same bar.
|
|
118
|
+
|
|
111
119
|
The single-sample `--r1`/`--r2` path differs on two points: no `--jobs`, and its Markdown
|
|
112
120
|
frontmatter keeps the `files:`/`genes_found:` totals (its tsv default renders the same
|
|
113
121
|
table, one chunk for the one sample).
|
|
@@ -115,7 +123,7 @@ table, one chunk for the one sample).
|
|
|
115
123
|
## Options
|
|
116
124
|
|
|
117
125
|
Reads mode runs through the same `gapit screen` command; these are the flags that apply
|
|
118
|
-
(transcribed from `gapit screen --help`, gapit 0.5.
|
|
126
|
+
(transcribed from `gapit screen --help`, gapit 0.5.4). Contig-mode flags not listed here
|
|
119
127
|
(`--minid`, `--mincov`, `--fofn`, `--noheader`, `--nopath`) do not apply; `--jobs` applies
|
|
120
128
|
to the wildcard path only.
|
|
121
129
|
|
|
@@ -329,7 +337,7 @@ The short-read fixture behaves the same with one calibration: `sr` soft-clipping
|
|
|
329
337
|
$ gapit screen --r1 ont_homologs.fq --db homologs --read-type map-ont --min-identity 95 --format md --quiet
|
|
330
338
|
---
|
|
331
339
|
schema: gapit.reads/2
|
|
332
|
-
tool: gapit 0.5.
|
|
340
|
+
tool: gapit 0.5.4
|
|
333
341
|
created_at: 2026-09-20T14:23:33Z
|
|
334
342
|
db: homologs
|
|
335
343
|
read_type: map-ont
|
|
@@ -425,7 +433,7 @@ $ gapit screen --r1 tetx_full.fq --db tinyreads --format json
|
|
|
425
433
|
"schema": "gapit.reads/1",
|
|
426
434
|
"tool": {
|
|
427
435
|
"name": "gapit",
|
|
428
|
-
"version": "0.5.
|
|
436
|
+
"version": "0.5.4"
|
|
429
437
|
},
|
|
430
438
|
"created_at": "2026-09-19T01:12:25Z",
|
|
431
439
|
"params": {
|
|
@@ -520,7 +528,7 @@ $ gapit screen --r1 tetx_lane1.fq,tetx_lane2.fq --db tinyreads --format json --q
|
|
|
520
528
|
$ gapit screen --r1 tetx_full.fq --db tinyreads --format md
|
|
521
529
|
---
|
|
522
530
|
schema: gapit.reads/1
|
|
523
|
-
tool: gapit 0.5.
|
|
531
|
+
tool: gapit 0.5.4
|
|
524
532
|
created_at: 2026-09-19T01:12:25Z
|
|
525
533
|
db: tinyreads
|
|
526
534
|
read_type: sr
|
|
@@ -622,7 +630,7 @@ Detected 2 present genes in /tmp/gapit-demo/assembly.fa
|
|
|
622
630
|
"schema": "gapit.reads/1",
|
|
623
631
|
"tool": {
|
|
624
632
|
"name": "gapit",
|
|
625
|
-
"version": "0.5.
|
|
633
|
+
"version": "0.5.4"
|
|
626
634
|
},
|
|
627
635
|
"created_at": "2026-09-19T14:23:00Z",
|
|
628
636
|
"params": {
|
|
@@ -681,7 +689,7 @@ cost of allele-level precision. That trade suggests a two-stage workflow over ma
|
|
|
681
689
|
pipeline, which applies the identity and coverage floors at abricate parity.
|
|
682
690
|
|
|
683
691
|
Real numbers, one K. pneumoniae RefSeq assembly (GCF_000240185.1, 5.3 Mb, `--db ncbi`,
|
|
684
|
-
single-threaded, gapit 0.5.
|
|
692
|
+
single-threaded, gapit 0.5.4):
|
|
685
693
|
|
|
686
694
|
```console
|
|
687
695
|
$ # Stage 1: survey, ~0.9 s
|
|
@@ -99,6 +99,13 @@ $ gapit screen -d ecoli_dec *.gz
|
|
|
99
99
|
*k* 个样本批量中途失败,已流式写出的样本 1..*k-1* 会保留在文件里 —— json 变体
|
|
100
100
|
什么都不写,因为它的单文档只在结尾才存在。
|
|
101
101
|
|
|
102
|
+
在交互式终端上(stderr 为 TTY 且未用 `--quiet`)批量会在 **stderr** 上显示 rich 进度
|
|
103
|
+
条 —— 转轮、当前样本名、进度条、M/N 计数、百分比、已用时间 —— 并在其运行期间取代
|
|
104
|
+
逐样本的 `Screening sample …`/`Detected N present genes` 提示。stderr 被管道或重定向、
|
|
105
|
+
以及 `--quiet` 时,保持与今天逐字节相同的纯文本提示。进度条绝不触碰 stdout:开与关的
|
|
106
|
+
流式字节完全一致,惰性的 `#SAMPLE` 表头依然最先发出。contig 路径
|
|
107
|
+
([./screen.zh.md](./screen.zh.md))与 `gapit db fetch all` 使用同一条进度条。
|
|
108
|
+
|
|
102
109
|
单样本的 `--r1`/`--r2` 路径在两点上不同:不接受 `--jobs`,其 Markdown
|
|
103
110
|
frontmatter 保留 `files:`/`genes_found:` 运行总计(它的 tsv 默认渲染同一张表,
|
|
104
111
|
单个样本一个分块)。
|
|
@@ -106,7 +113,7 @@ frontmatter 保留 `files:`/`genes_found:` 运行总计(它的 tsv 默认渲
|
|
|
106
113
|
## 选项
|
|
107
114
|
|
|
108
115
|
reads 模式走同一条 `gapit screen` 命令;以下是适用的参数(转写自 `gapit screen
|
|
109
|
-
--help`,gapit 0.5.
|
|
116
|
+
--help`,gapit 0.5.4)。这里未列出的 contig 模式参数(`--minid`、`--mincov`、
|
|
110
117
|
`--fofn`、`--noheader`、`--nopath`)不适用;`--jobs` 只适用于通配符路径(见上文)。
|
|
111
118
|
|
|
112
119
|
| 参数 | 类型 | 默认值 | 说明 |
|
|
@@ -311,7 +318,7 @@ Markdown 形式:
|
|
|
311
318
|
$ gapit screen --r1 ont_homologs.fq --db homologs --read-type map-ont --min-identity 95 --format md --quiet
|
|
312
319
|
---
|
|
313
320
|
schema: gapit.reads/2
|
|
314
|
-
tool: gapit 0.5.
|
|
321
|
+
tool: gapit 0.5.4
|
|
315
322
|
created_at: 2026-09-20T14:23:33Z
|
|
316
323
|
db: homologs
|
|
317
324
|
read_type: map-ont
|
|
@@ -403,7 +410,7 @@ $ gapit screen --r1 tetx_full.fq --db tinyreads --format json
|
|
|
403
410
|
"schema": "gapit.reads/1",
|
|
404
411
|
"tool": {
|
|
405
412
|
"name": "gapit",
|
|
406
|
-
"version": "0.5.
|
|
413
|
+
"version": "0.5.4"
|
|
407
414
|
},
|
|
408
415
|
"created_at": "2026-09-19T01:12:25Z",
|
|
409
416
|
"params": {
|
|
@@ -498,7 +505,7 @@ $ gapit screen --r1 tetx_lane1.fq,tetx_lane2.fq --db tinyreads --format json --q
|
|
|
498
505
|
$ gapit screen --r1 tetx_full.fq --db tinyreads --format md
|
|
499
506
|
---
|
|
500
507
|
schema: gapit.reads/1
|
|
501
|
-
tool: gapit 0.5.
|
|
508
|
+
tool: gapit 0.5.4
|
|
502
509
|
created_at: 2026-09-19T01:12:25Z
|
|
503
510
|
db: tinyreads
|
|
504
511
|
read_type: sr
|
|
@@ -598,7 +605,7 @@ Detected 2 present genes in /tmp/gapit-demo/assembly.fa
|
|
|
598
605
|
"schema": "gapit.reads/1",
|
|
599
606
|
"tool": {
|
|
600
607
|
"name": "gapit",
|
|
601
|
-
"version": "0.5.
|
|
608
|
+
"version": "0.5.4"
|
|
602
609
|
},
|
|
603
610
|
"created_at": "2026-09-19T14:23:00Z",
|
|
604
611
|
"params": {
|
|
@@ -656,7 +663,7 @@ minimap2 一段完全跳过 BLAST 索引,把 assembly 送进 minimap2 引擎
|
|
|
656
663
|
性应用一致性与覆盖度下限。
|
|
657
664
|
|
|
658
665
|
真实数字,一株 K. pneumoniae RefSeq assembly(GCF_000240185.1,5.3 Mb,`--db ncbi`,
|
|
659
|
-
单线程,gapit 0.5.
|
|
666
|
+
单线程,gapit 0.5.4):
|
|
660
667
|
|
|
661
668
|
```console
|
|
662
669
|
$ # Stage 1: survey, ~0.9 s
|
|
@@ -9,7 +9,7 @@ Database setup is covered in [./databases.md](./databases.md); a full walk-throu
|
|
|
9
9
|
|
|
10
10
|
## Options
|
|
11
11
|
|
|
12
|
-
Transcribed from `gapit screen --help` (gapit 0.5.
|
|
12
|
+
Transcribed from `gapit screen --help` (gapit 0.5.4). Flags marked *reads mode* apply only when
|
|
13
13
|
you pass `--r1`/`--r2`; they are documented in [./reads.md](./reads.md).
|
|
14
14
|
|
|
15
15
|
Every option also accepts the single-dash short form listed in the **Short** column (e.g.
|
|
@@ -107,7 +107,7 @@ $ gapit screen tests/data/contigs/full.fa --db tinyamr --format json
|
|
|
107
107
|
"schema": "gapit.report/1",
|
|
108
108
|
"tool": {
|
|
109
109
|
"name": "gapit",
|
|
110
|
-
"version": "0.5.
|
|
110
|
+
"version": "0.5.4"
|
|
111
111
|
},
|
|
112
112
|
"created_at": "2026-09-19T01:12:04Z",
|
|
113
113
|
"params": {
|
|
@@ -192,6 +192,16 @@ tests/data/contigs/gap.fa contig1 1 97 + sul1 1-94/94 ========/====== 1/3 100.00
|
|
|
192
192
|
With `--jobs 2` the two files are screened concurrently but stdout stays in input order, so the
|
|
193
193
|
output is identical to the sequential run.
|
|
194
194
|
|
|
195
|
+
### Progress bar on long batch runs
|
|
196
|
+
|
|
197
|
+
On an interactive terminal (stderr is a TTY, no `--quiet`) a multi-file batch shows a rich
|
|
198
|
+
progress bar on **stderr** — spinner, the current file's basename, bar, M/N count, percent,
|
|
199
|
+
elapsed time — replacing the per-file `Processing:`/`Found N genes` notes while it runs (the
|
|
200
|
+
`--jobs × --threads` oversubscription note still prints). Piped or redirected stderr and
|
|
201
|
+
`--quiet` keep the plain notes byte-identically — progress bars in logs are noise. The bar
|
|
202
|
+
lives entirely on stderr: stdout bytes are identical with it on or off. The positional-FASTQ
|
|
203
|
+
wildcard batch ([./reads.md](./reads.md)) and `gapit db fetch all` carry the same bar.
|
|
204
|
+
|
|
195
205
|
### Typed gene databases: designation is a second command
|
|
196
206
|
|
|
197
207
|
When `--db` names a gene database built with a `typing.json` (the bundled `ecoli_dec`, or
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
## 选项
|
|
11
11
|
|
|
12
|
-
转写自 `gapit screen --help`(gapit 0.5.
|
|
12
|
+
转写自 `gapit screen --help`(gapit 0.5.4)。标记为 *reads 模式* 的参数只在传入
|
|
13
13
|
`--r1`/`--r2` 时生效,记录在 [./reads.md](./reads.md)。
|
|
14
14
|
|
|
15
15
|
每个选项都接受 **短** 列给出的单横线短形式(例如 `--db` 的 `-d`);长形式仍是规范写法,
|
|
@@ -104,7 +104,7 @@ $ gapit screen tests/data/contigs/full.fa --db tinyamr --format json
|
|
|
104
104
|
"schema": "gapit.report/1",
|
|
105
105
|
"tool": {
|
|
106
106
|
"name": "gapit",
|
|
107
|
-
"version": "0.5.
|
|
107
|
+
"version": "0.5.4"
|
|
108
108
|
},
|
|
109
109
|
"created_at": "2026-09-19T01:12:04Z",
|
|
110
110
|
"params": {
|
|
@@ -189,6 +189,16 @@ tests/data/contigs/gap.fa contig1 1 97 + sul1 1-94/94 ========/====== 1/3 100.00
|
|
|
189
189
|
用 `--jobs 2` 时两个文件并发筛查,但 stdout 仍按输入顺序排列,输出与串行运行完全
|
|
190
190
|
一致。
|
|
191
191
|
|
|
192
|
+
### 长批量任务的进度条
|
|
193
|
+
|
|
194
|
+
在交互式终端上(stderr 为 TTY 且未用 `--quiet`)多文件批量筛查会在 **stderr** 上显示
|
|
195
|
+
rich 进度条 —— 转轮、当前文件基名、进度条、M/N 计数、百分比、已用时间 —— 并在其运行
|
|
196
|
+
期间取代逐文件的 `Processing:`/`Found N genes` 提示(`--jobs × --threads` 超订用提示
|
|
197
|
+
仍然打印)。stderr 被管道或重定向、以及 `--quiet` 时,保持与今天逐字节相同的纯文本
|
|
198
|
+
提示 —— 日志里的进度条只是噪音。进度条完全生存在 stderr 一侧:开与关的 stdout 字节
|
|
199
|
+
完全一致。位置参数 FASTQ 通配符批量([./reads.zh.md](./reads.zh.md))与
|
|
200
|
+
`gapit db fetch all` 使用同一条进度条。
|
|
201
|
+
|
|
192
202
|
### typed 基因数据库:判定是第二条命令
|
|
193
203
|
|
|
194
204
|
当 `--db` 指向带 `typing.json` 构建的基因数据库(捆绑的 `ecoli_dec`,或任何
|
|
@@ -10,7 +10,7 @@ exactly what `gapit screen` writes. See [./screen.md](./screen.md) for producing
|
|
|
10
10
|
|
|
11
11
|
## Options
|
|
12
12
|
|
|
13
|
-
Transcribed from `gapit summary --help` (gapit 0.5.
|
|
13
|
+
Transcribed from `gapit summary --help` (gapit 0.5.4):
|
|
14
14
|
|
|
15
15
|
| Flag | Type | Default | Description |
|
|
16
16
|
|---|---|---|---|
|
|
@@ -150,7 +150,7 @@ $ gapit summary tests/data/summary/sample_a.tsv tests/data/summary/sample_b.tsv
|
|
|
150
150
|
"schema": "gapit.summary/1",
|
|
151
151
|
"tool": {
|
|
152
152
|
"name": "gapit",
|
|
153
|
-
"version": "0.5.
|
|
153
|
+
"version": "0.5.4"
|
|
154
154
|
},
|
|
155
155
|
"created_at": "2026-09-19T01:12:48Z",
|
|
156
156
|
"params": {
|
|
@@ -10,7 +10,7 @@ screen` 写出的格式。如何产生报告见 [./screen.md](./screen.md);输
|
|
|
10
10
|
|
|
11
11
|
## 选项
|
|
12
12
|
|
|
13
|
-
转写自 `gapit summary --help`(gapit 0.5.
|
|
13
|
+
转写自 `gapit summary --help`(gapit 0.5.4):
|
|
14
14
|
|
|
15
15
|
| 参数 | 类型 | 默认值 | 说明 |
|
|
16
16
|
|---|---|---|---|
|
|
@@ -143,7 +143,7 @@ $ gapit summary tests/data/summary/sample_a.tsv tests/data/summary/sample_b.tsv
|
|
|
143
143
|
"schema": "gapit.summary/1",
|
|
144
144
|
"tool": {
|
|
145
145
|
"name": "gapit",
|
|
146
|
-
"version": "0.5.
|
|
146
|
+
"version": "0.5.4"
|
|
147
147
|
},
|
|
148
148
|
"created_at": "2026-09-19T01:12:48Z",
|
|
149
149
|
"params": {
|
|
@@ -1136,8 +1136,8 @@ packages:
|
|
|
1136
1136
|
timestamp: 1694615932610
|
|
1137
1137
|
- pypi: ./
|
|
1138
1138
|
name: gapit
|
|
1139
|
-
version: 0.5.
|
|
1140
|
-
sha256:
|
|
1139
|
+
version: 0.5.4
|
|
1140
|
+
sha256: 3aa9e1214291caa3a95976acca90fd7aa1faf072c27d09cd1a377d0d53e618ba
|
|
1141
1141
|
requires_dist:
|
|
1142
1142
|
- typer>=0.12
|
|
1143
1143
|
- pydantic>=2.7
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "gapit"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.4"
|
|
8
8
|
description = "Mass screening of contigs and reads for known genes — agent-first Python reimplementation of abricate"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "indexofire", email = "indexofire@gmail.com" }]
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
# Field sources: version/license/python/deps mirror pyproject.toml exactly; the
|
|
3
3
|
# external binaries mirror pixi.toml's conda dependencies. sha256 below hashes
|
|
4
4
|
# the official PyPI sdist (verified against the release-workflow upload log).
|
|
5
|
-
# NOTE: the sha256 is still the 0.3.1 sdist hash — replace it with the 0.5.
|
|
6
|
-
# sdist hash (dist/gapit-0.5.
|
|
5
|
+
# NOTE: the sha256 is still the 0.3.1 sdist hash — replace it with the 0.5.4
|
|
6
|
+
# sdist hash (dist/gapit-0.5.4.tar.gz) at bioconda submission time.
|
|
7
7
|
{% set name = "gapit" %}
|
|
8
|
-
{% set version = "0.5.
|
|
8
|
+
{% set version = "0.5.4" %}
|
|
9
9
|
|
|
10
10
|
package:
|
|
11
11
|
name: {{ name|lower }}
|
|
@@ -21,6 +21,7 @@ from gapit.bundled import BundledDatabase, bundled_databases
|
|
|
21
21
|
from gapit.db import Database, discover_databases, mol_type
|
|
22
22
|
from gapit.errors import UsageError
|
|
23
23
|
from gapit.fasta import iter_fasta
|
|
24
|
+
from gapit.progress import screen_progress
|
|
24
25
|
from gapit.providers import REGISTRY
|
|
25
26
|
from gapit.providers.cluster_common import ClusterProvider, fetch_cluster_provider
|
|
26
27
|
from gapit.providers.common import Dbtype, fetch_provider
|
|
@@ -97,7 +98,9 @@ def perform_fetch(
|
|
|
97
98
|
"""Fetch database(s) into <datadir>/NAME — the shared CLI + MCP
|
|
98
99
|
path. NAME ``all`` installs every database in DEFAULT_DBS order; each
|
|
99
100
|
receipt yields as its install completes (streaming, like the CLI's
|
|
100
|
-
per-db stdout lines).
|
|
101
|
+
per-db stdout lines). On an interactive stderr the batch rides the
|
|
102
|
+
shared progress bar; under --quiet / non-TTY stderr the no-op shim
|
|
103
|
+
keeps today's byte-identical behavior.
|
|
101
104
|
"""
|
|
102
105
|
|
|
103
106
|
def fetch_one(provider_name: str) -> ProviderReceipt:
|
|
@@ -135,8 +138,14 @@ def perform_fetch(
|
|
|
135
138
|
destination=str(db_dir),
|
|
136
139
|
)
|
|
137
140
|
|
|
138
|
-
|
|
139
|
-
|
|
141
|
+
names = DEFAULT_DBS if name == FETCH_ALL else (name,)
|
|
142
|
+
with screen_progress(names, quiet=quiet, description="Fetching") as (bar, task_id):
|
|
143
|
+
for provider_name in names:
|
|
144
|
+
if task_id is not None:
|
|
145
|
+
bar.describe(provider_name)
|
|
146
|
+
receipt = fetch_one(provider_name)
|
|
147
|
+
bar.advance()
|
|
148
|
+
yield receipt
|
|
140
149
|
|
|
141
150
|
|
|
142
151
|
def _detected_dbtype(database: Database) -> str:
|