汇总报告¶
gapit summary 把一份或多份 abricate 格式报告表(包括 gapit screen 的输出)折叠成
基因存在/缺失矩阵:每文件一行,每基因一列。它取代
abricate --summary。
输入报告是带标准 15 列表头(#FILE SEQUENCE ...)的 TSV 或 CSV,正是 gapit
screen 写出的格式。如何产生报告见 ./screen.md;输出 schema 见
./outputs.md。
选项¶
转写自 gapit summary --help(gapit 0.5.6):
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
FILE... |
路径 | stdin | 要汇总的 abricate 格式报告文件。至少一个输入:文件、管道送入的表或 - 表示 stdin。 |
--identity / -i |
开关 | 关闭 | 单元格显示 %IDENTITY 数值(默认 +/-)。 |
--coverage / -c |
开关 | 关闭 | 单元格显示 %COVERAGE 数值(默认 +/-)。 |
--nopath |
开关 | 关闭 | 行键只保留文件名(FILE 值 / 输入文件名)。 |
--quiet |
开关 | 关闭 | 静默 stderr 诊断。 |
--format |
tsv|csv|json|md | tsv |
输出格式。 |
dutch 模式与多文件模式¶
行键取决于输入文件的数量,与 abricate 的行为一致:
- 恰好一份报告(dutch 模式): 行按该报告的
FILE列取键,报告内每个 assembly 一行。 - 多于一份报告: 行按输入文件名的原样取键,每文件一行。零命中的文件仍会出现,
带
NUM_FOUND 0。
$ gapit summary tests/data/summary/multi_sample.tsv
#FILE NUM_FOUND feature_a feature_b
aa_assembly.fa 1 + -
mm_assembly.fa 1 - +
zz_assembly.fa 1 + -
同样的三个 assembly 若拆成三份独立报告再汇总,则按文件名取键:
$ gapit summary tests/data/summary/sample_a.tsv tests/data/summary/sample_b.tsv tests/data/summary/empty.tsv
#FILE NUM_FOUND feature_a feature_b
tests/data/summary/empty.tsv 0 - -
tests/data/summary/sample_a.tsv 2 + +
tests/data/summary/sample_b.tsv 2 + +
注意那个零命中文件:它以 NUM_FOUND 0 和全为 . 的基因列出现。存在模式下,同一
基因的多个命中折叠成一个 +;加 --identity 或 --coverage 时,各命中的数值按
报告顺序用 ; 串接。
经管道送入 screen 输出¶
只要 stdin 不是终端(管道或重定向),gapit summary 就从 stdin 读取表,因此筛查
阶段可以直接喂给它——规范的批量管道。一次 screen 调用筛查多个 assembly 会写出一张
批量表(每行携带同一个 DATABASE;FILE 列横跨整个批次),而管道送入的表算作一个
输入,于是 dutch 模式生效——每个 FILE 值一行,得到基因×文件存在矩阵:
$ gapit screen -d ecoli_dec *.fna --nopath --quiet | gapit summary
#FILE NUM_FOUND aggR astA escV pic stx2a uidA
dec_s1_aggR_pic_uidA.fna 3 + - - + - +
dec_s2_pic_astA_uidA.fna 3 - + - + - +
dec_s3_stx2a_escV_aggR_uidA.fna 4 + - + - + +
这与先 gapit screen -d ecoli_dec *.fna --output combined.tsv 再
gapit summary combined.tsv 打印的矩阵完全相同。规则:
- 在终端里裸调用
gapit summary仍打印帮助(退出码 2);挂着管道或重定向时改为 读取 stdin。 gapit summary -是显式 stdin 标记——即使挂着终端也从 stdin 读取,直到 EOF。-与文件参数混用是用法错误(v1 只接受 stdin 或文件之一,绝不混用)。- 非 UTF-8 的 stdin 以指明
-的SUMMARY_MALFORMED信封退出码 5;畸形的管道行 会指明-及其行号。
单元格模式¶
默认单元格为存在判定:+ 表示该文件至少有一条命中,- 表示缺失。
| 模式 | 调用方式 | 单元格 |
|---|---|---|
| 存在(默认) | gapit summary a.tsv b.tsv |
+ / - |
| 一致性 | --identity / -i |
各命中的 %IDENTITY,; 连接(. = 缺失) |
| 覆盖度 | --coverage / -c |
各命中的 %COVERAGE,; 连接(. = 缺失) |
| 两者 | -ic(组合) |
各命中 identity/coverage,; 连接(. = 缺失) |
两旗标可组合(-ic):每个命中渲染为 identity/coverage。所选指标在 stderr 提示。
--coverage 逐字节复现 abricate --summary 的经典单元格形态——parity 对比在该模式下运行。
$ gapit summary tests/data/summary/sample_a.tsv tests/data/summary/sample_b.tsv
#FILE NUM_FOUND feature_a feature_b
sample_a.tsv 2 + +
sample_b.tsv 2 + +
单元格原样保留原始报告字符串,不做任何重新格式化或平均。NUM_FOUND 统计不同基因
的个数。基因全集是所有输入的 GENE 值的并集,按字典序排序;某行缺失的基因显示
.。
输入解析¶
- 分隔符自动检测,逐文件。 每个输入通过嗅探自己的首行判断按 TSV 还是 CSV 读 取,所以一次调用可以混用制表符与逗号报告,无需参数:
$ gapit summary tests/data/summary/sample_a.csv tests/data/summary/sample_b.csv --nopath
#FILE NUM_FOUND feature_a feature_b
sample_a.csv 2 + +
sample_b.csv 2 + +
- 重复输入会被跳过。 同一路径出现两次(按原样比较,在任何文件名化之前)会在 stderr 警告且只处理一次:
$ gapit summary tests/data/summary/sample_a.tsv tests/data/summary/sample_a.tsv
WARNING: Skipping duplicate file: tests/data/summary/sample_a.tsv
#FILE NUM_FOUND feature_a feature_b
tests/data/summary/sample_a.tsv 2 + +
- 畸形输入是类型化错误,不是沉默。 文件缺失以
INPUT_NOT_FOUND信封退出码 5; 行比表头映射短以SUMMARY_MALFORMED退出码 5。 - 表头处理与 abricate 的解析器一致。 第一个文件的首行成为列名映射。首列以
#开头的行随后按表头跳过,因此常规报告只贡献数据行。这条规则带来两个怪癖:无表头 报告的首行兼任表头映射和数据行;键以#开头的文件会被整体跳过(该检查先于--nopath文件名化运行)。
输出格式¶
--format tsv(默认)与 --format csv 打印上面的矩阵。--format json 和
--format md 输出 gapit.summary/1 文档,保留每个单元格字符串并附加机器可读的
params:
$ gapit summary tests/data/summary/sample_a.tsv tests/data/summary/sample_b.tsv --format json --quiet
{
"schema": "gapit.summary/1",
"tool": {
"name": "gapit",
"version": "0.5.6"
},
"created_at": "2026-09-19T01:12:48Z",
"params": {
"metric": "%COVERAGE",
"nopath": false
},
"genes": [
"feature_a",
"feature_b"
],
"rows": [
{
"file": "tests/data/summary/sample_a.tsv",
"num_found": 2,
"cells": {
"feature_a": [
"99.50",
"52.00"
],
"feature_b": [
"76.00"
]
}
},
{
"file": "tests/data/summary/sample_b.tsv",
"num_found": 2,
"cells": {
"feature_a": [
"90.00"
],
"feature_b": [
"100.00"
]
}
}
]
}
用 gapit schema summary 自省 schema;字段契约见
./outputs.md。
注意事项¶
- 按键排序,不是按标签。 行按键的原样排序,先于
--nopath文件名化。文件散落 在不同目录时,文件名化后的标签因此可能显得未排序:
$ gapit summary /tmp/gapit-demo/sortdemo/1dir/zeta.tsv /tmp/gapit-demo/sortdemo/2dir/mid.tsv --nopath
#FILE NUM_FOUND feature_a feature_b
zeta.tsv 1 + -
mid.tsv 1 - +
顺序来自 1dir/zeta.tsv < 2dir/mid.tsv,所以 zeta.tsv 先打印,尽管 mid.tsv
按字母序更靠前。不带 --nopath 时完整键按显而易见的顺序打印:
$ gapit summary /tmp/gapit-demo/sortdemo/1dir/zeta.tsv /tmp/gapit-demo/sortdemo/2dir/mid.tsv
#FILE NUM_FOUND feature_a feature_b
/tmp/gapit-demo/sortdemo/1dir/zeta.tsv 1 + -
/tmp/gapit-demo/sortdemo/2dir/mid.tsv 1 - +
- dutch 模式的键来自报告内部。 只有一份输入时,行标签是报告内部找到的
FILE值,不是报告自身的文件名。 --quiet抑制--identity提示与重复文件警告,从不影响 stdout。