跳转至

快速开始

一次完整的首个会话,离线、可复现,使用仓库和 wheel 自带的夹具数据库。你将筛查两个 contig 文件,以 TSV 和 JSON 两种形式读结果,用内置 DEC 面板判定一个样本,再把报告 汇总成一个矩阵。

一切都在仓库根目录运行,并让 gapit 环境在 PATH 上 (export PATH="$PWD/.pixi/envs/default/bin:$PATH",或给每条命令加 pixi run 前缀)。

1. 准备一个用完即弃的数据目录

夹具数据库 tests/data/db/tinyamr 里有三个短 AMR 基因:tetA、blaTEM-1 和 sul1。把它复制进一个临时数据目录,剩下的交给 gapit setupdb 引导:它会物化 wheel 内置的七个数据库(零网络——包括第 4 节要用来分型的 ecoli_dec)并构建全部 BLAST 索引,无需手跑 makeblastdb:

mkdir -p /tmp/gapit-quickstart/db
cp -r tests/data/db/tinyamr /tmp/gapit-quickstart/db/
export GAPIT_DATADIR=/tmp/gapit-quickstart/db
gapit setupdb

全部进度走 stderr;一次运行的输出(有删节):

gapit: materializing bundled database ecoh (597 records) into /tmp/gapit-quickstart/db
gapit: materializing bundled database ecoli_dec (17 records) into /tmp/gapit-quickstart/db
gapit: materializing bundled database lm_doumith (5 records) into /tmp/gapit-quickstart/db
...
Indexed ecoli_dec (17 sequences, nucl)
Indexed tinyamr (3 sequences, nucl)

gapit db list 展示数据库目录和安装状态(下面有删节;--json 返回 gapit.dblist/1 文档)。夹具 tinyamr 是一个普通的自定义数据库,不在目录里,所以 不会出现在列表里,下一节的筛查会证明它可用:

$ gapit db list
NAME    DESCRIPTION STATUS  DBTYPE  PROVIDER
argannot    ARG-ANNOT acquired resistance genes available   nucl    IHU Méditerranée-Infection
ncbi    NCBI AMRFinderPlus (reference finder) curated AMR   installed (8373)    nucl    NCBI

(共二十二个目录数据库:六个内置库在这个数据目录里已显示 installed,十六个仅可 抓取的注册表条目在 gapit db fetch 之前显示 available。)

2. 筛查一个 contig 文件

$ gapit screen tests/data/contigs/full.fa --db tinyamr
#FILE   SEQUENCE    START   END STRAND  GENE    COVERAGE    COVERAGE_MAP    GAPS    %COVERAGE   %IDENTITY   DATABASE    ACCESSION   PRODUCT RESISTANCE
tests/data/contigs/full.fa  contig1 1   79  +   tetA    1-79/79 =============== 0/0 100.00  100.00  tinyamr NC_000913.3:100-900 tetracycline efflux pump TetA   TETRACYCLINE

TSV 与 abricate 兼容,可以直接丢进任何已在解析 abricate 的流水线。Processing: 进度行走 stderr;stdout 只承载数据。各列含义:

列 含义
#FILE 输入文件,按命令行上给定的路径
SEQUENCE 命中所在的 contig
START、END contig 上的命中坐标(1 基)
STRAND 基因方向,+ 或 -
GENE 数据库头中的基因名
COVERAGE 基因上的比对跨度,range/length
COVERAGE_MAP 基因的定宽覆盖度草图;= 表示覆盖,/ 标记一段缺口
GAPS 比对中的缺口开口数/缺口碱基数
%COVERAGE 基因被覆盖的比例(内部不取整,显示两位小数)
%IDENTITY BLAST 一致性百分比,显示两位小数
DATABASE 筛查所用数据库
ACCESSION 数据库头中的上游登录号
PRODUCT 基因产物描述
RESISTANCE 数据库头中的耐药类别

默认值沿用 abricate:命中需通过 --minid 80 和 --mincov 80(一致性百分比、基因 覆盖度百分比)。所有参数与过滤规则见筛查。

3. 同一结果的 JSON 形式

gapit screen tests/data/contigs/full.fa --db tinyamr --format json
{
  "schema": "gapit.report/1",
  "tool": {
    "name": "gapit",
    "version": "0.5.6"
  },
  "created_at": "2026-09-19T01:11:06Z",
  "params": {
    "db": "tinyamr",
    "minid": 80.0,
    "mincov": 80.0,
    "threads": 1
  },
  "files": [
    {
      "file": "tests/data/contigs/full.fa",
      "hits": [
        {
          "sequence": "contig1",
          "start": 1,
          "end": 79,
          "strand": "+",
          "gene": "tetA",
          "coverage": "1-79/79",
          "coverage_map": "===============",
          "gaps": "0/0",
          "coverage_pct": 100.0,
          "identity_pct": 100.0,
          "database": "tinyamr",
          "accession": "NC_000913.3:100-900",
          "product": "tetracycline efflux pump TetA",
          "resistance": "TETRACYCLINE"
        }
      ]
    }
  ]
}

文档携带 "schema": "gapit.report/1",消费方可以锁定契约;gapit schema report 打印它的 JSON Schema。字段级细节见输出。

4. 给样本分型

筛查只检测基因。判定(致病型、血清群)是第二条命令:gapit screen 写出基因表, gapit typing 读回该表并按数据库的分型方案打分。内置的 ecoli_dec 面板携带双方案 的 DEC(致泻性大肠杆菌)判定。用一个测试夹具 assembly 代替你的样本:

cp tests/data/typing/dec_s3_stx2a_escV_aggR_uidA.fasta /tmp/gapit-quickstart/sample.fna
gapit screen /tmp/gapit-quickstart/sample.fna -d ecoli_dec -o /tmp/gapit-quickstart/result.tsv -p -q
gapit typing /tmp/gapit-quickstart/result.tsv -q
FILE    SCHEME  PHENOTYPE   GENES   CONFIDENCE  SCORE   RUNNER_UP   NOTES
sample.fna  gb4789_6    EHEC    aggR;escV;stx2a;uidA    high    1.0000  EAEC (1.0000)   ...
sample.fna  risk_monitoring EHEC    aggR;escV;stx2a;uidA    high    1.0000  EAEC (1.0000)   ...

每个 scheme 一行:这个分离株携带 aggR、escV、stx2a 和 uidA,所以两个方案 都以满分判定为 EHEC(上方有删节的 NOTES 列写明了各方案的规则)。两个阶段也 可以直接经管道衔接——screen 的 stdout 就是 typing 的 stdin:

gapit screen /tmp/gapit-quickstart/sample.fna -d ecoli_dec -p -q | gapit typing -q

reads 走通配符路径也一样:当所有位置参数文件都是 FASTQ 时,样本按文件名自动配对 (_R1/_R2、_1/_2),--jobs 并行各样本:

mkdir -p /tmp/gapit-quickstart/reads
cp tests/data/reads/s1_1.fq.gz tests/data/reads/s1_2.fq.gz \
  tests/data/reads/s2_R1.fq.gz tests/data/reads/s2_R2.fq.gz /tmp/gapit-quickstart/reads/
cd /tmp/gapit-quickstart/reads
gapit screen -d ecoli_dec *.fq.gz -j 4
Screening sample s1 reads: s1_1.fq.gz, s1_2.fq.gz
Screening sample s2 reads: s2_R1.fq.gz, s2_R2.fq.gz
Detected 0 present genes in sample s2
Detected 0 present genes in sample s1
#SAMPLE GENE    BREADTH%    DEPTH   READS   PRESENT DATABASE    ACCESSION   PRODUCT

演示 reads 携带的是 tetX 而非 DEC 标记,所以表只有表头——零命中是正常输出,不是 错误。完整的判定语义见分型方案;reads 界面见 reads(FASTQ)筛查。

5. 把报告汇总成矩阵

保存两份报告,再折叠成一个"基因 × 文件"矩阵。第二个夹具文件 gap.fa 带有 sul1,比对中有缺口:

gapit screen tests/data/contigs/full.fa --db tinyamr > full.tsv
gapit screen tests/data/contigs/gap.fa --db tinyamr > gap.tsv
gapit summary full.tsv gap.tsv
#FILE   NUM_FOUND   sul1    tetA
full.tsv    1   -   +
gap.tsv 1   +   -

每行对应一份报告文件;列是检出的基因并集。单元格存存在判定:报告里有该基因的命中 为 +,缺失为 .(加 --identity 或 --coverage 可看数值)。NUM_FOUND 统计不同 基因的个数。加 --format json|md 得到机器或人类可读的矩阵; 细节见汇总报告。

6. 试试基因簇引擎

基因簇数据库是第二种数据库:记录不再是单个基因,而是整个位点(Kaptive 风格的 抗原位点、荚膜基因簇),从 GenBank/GFF 输入构建。夹具 tests/data/cluster/screening.gbk 含两个合成位点;--typing 会同时安装一份 gapit.typing/1 表型评分规范:

gapit db build tinykps tests/data/cluster/screening.gbk \
  --datadir /tmp/gapit-quickstart/db \
  --typing tests/data/cluster/typing_screen.json
# 从数据库里取出一个位点,作为单位点 query 装配体
awk '/^>locusA$/{p=1} /^>/{if($0!~/>locusA$/)p=0} p' \
  /tmp/gapit-quickstart/db/tinykps/sequences > /tmp/gapit-quickstart/locusA.fa
gapit screen /tmp/gapit-quickstart/locusA.fa --db tinykps

筛查基因簇数据库会分发到 minimap2 基因簇引擎;TSV 的形状变为每文件一个最佳位点 判定,typing 规范再把它转成表型:

Processing: /tmp/gapit-quickstart/locusA.fa
Best locus in /tmp/gapit-quickstart/locusA.fa: locusA
FILE    BEST_LOCUS  TYPE    PHENOTYPE   COVERAGE    IDENTITY    PRESENT PARTIAL MISSING_IDS
/tmp/gapit-quickstart/locusA.fa locusA  KL101   K101    100.00  100.00  3   0   -

PHENOTYPE 为 - 表示没有表型越过规范的 cutoff,或两个表型打平在歧义容差之内 (把两个位点一起筛查,K101/K102 打平正是这种情况)。七个 kaptive 提供商 (gapit db fetch kpsc_k、kpsc_o、kosc_k、kosc_o、ab_k、ab_o、 ecoli_kps)会以同样的方式安装真实的 Kaptive 位点数据库。完整细节见筛查与数据库。

下一步