software

AMRFinderPlus 实跑教程|同一份基因组为何得到 0、5、6 条记录,怎样读懂 Scope 与 Method

作者:发布于 2026-11-15约 12 分钟阅读
0、5、6 条记录,先看报告范围。同一份 K-12 参考,固定数据库比较五种模式。默认核酸,0 条记录,当前 core 报告范围没有命中。开启 Plus,5 条记录,2 条 STRESS,3 条 AMR。蛋白或联合,6 条记录,5 条 EXACTP,另有 1 条 HMM。

同一个细菌基因组,默认运行没有命中,加入 Plus 选项后得到五条记录,换成蛋白输入又变成六条。这是否说明前一次漏掉了六个耐药基因。不能这样判断,因为报告范围、搜索方式和输入证据都可能变化,记录条数并不直接等于耐药基因数量,更不等于耐药程度。

本篇实际运行 AMRFinderPlus 4.2.7,固定数据库为 2026-10-29.1,以未经改造的大肠杆菌 K-12 参考 NC_000913.3 为对象,比较五种调用方式。我们保留原始结果表,逐列解释默认空表、Plus 记录、蛋白家族命中及联合输入的坐标信息,帮助读者把“跑出结果”推进到“正确理解结果”。

0、5、6 条记录,先看报告范围。同一份 K-12 参考,固定数据库比较五种模式。默认核酸,0 条记录,当前 core 报告范围没有命中。开启 Plus,5 条记录,2 条 STRESS,3 条 AMR。蛋白或联合,6 条记录,5 条 EXACTP,另有 1 条 HMM。
同一份 K-12 参考,固定数据库比较五种模式

先区分遗传元件检测与表型结论

AMRFinderPlus 使用经过整理的参考序列、家族模型及相关规则,识别输入中的目标遗传元件。它能输出命中方式、参考匹配和分类信息,使分析者有机会追溯判断依据。NCBI 的结果解释说明明确区分基因型与表型,不能把检测到某个元件直接写成已经测得对应的药物敏感性。

这里需要防止两个方向的过度推断。命中不自动证明样本具有某种实际耐药表现,未命中也不能证明样本对所有药物都敏感。报告反映的是当前输入、数据库和搜索规则下识别到了什么,不能代替表型实验或完整的生物学评价。

因此,本篇只讨论分析流程和证据解释,不制作临床用药结论。公开参考用于固定实验对象,五种调用之间没有改变核酸序列。所有差异都应先从输入模式和参数设置解释,而不是直接归因于样本发生了生物学变化。

固定软件之外,还要固定数据库

本次使用已经安装的 Bakta 容器环境,其中 AMRFinderPlus 实际版本为 4.2.7。数据库来自该环境中保存的固定日期目录,实际数据库格式版本为 4.2.0。软件版本、数据库发布日期和数据库格式版本是三个不同字段,应分别记录,不能只写一句“使用最新数据库”。

IMAGE=quay.io/biocontainers/bakta:1.12.2--pyhdfd78af_0
docker pull "$IMAGE"
docker run --rm "$IMAGE" amrfinder --version
docker run --rm -v "$(pwd):/work" "$IMAGE" \
  amrfinder -d /work/amr-db/2026-10-29.1 -V

上面的镜像名是运行环境名称,不代表 AMRFinderPlus 的版本号也是 1.12.2。实际执行前查询工具自己的版本,是避免记录错误的一步。尤其在大型流程中,一个环境可能包含多个软件,不能把主流程版本代替所有子工具版本。

数据库更新会改变参考集合和整理规则。比较多个批次时,应优先使用同一个固定快照,或明确标注哪些批次重新分析过。若一部分样本使用旧库、一部分样本使用新库,命中数量的差别就混入了分析条件变化。官方数据库说明提供了数据库范围、目录与字段含义。

输入准备与五种运行条件

核酸采用公开参考的完整染色体,长度为四百六十四万一千六百五十二个碱基。蛋白及 GFF 来自此前实际完成的 Bakta 1.12.2 原始环状序列注释,使用 light 6.0 数据库,保留了四千三百一十条 CDS。这个注释对照侧重蛋白编码特征,相关 RNA 等模块未作为本次蛋白注释输入生成。

第一种只提供核酸,不指定物种组选项。第二种仍只提供核酸,增加 Escherichia 物种组。第三种在第二种基础上开启 Plus。第四种提供蛋白并开启同样的物种组与 Plus。第五种同时提供核酸、蛋白和对应 GFF,指定 Bakta 注释格式。

输入模式 条数 类型标签 命中方法
核酸默认 0 无记录 无记录
核酸加物种组 0 无记录 无记录
核酸加 Plus 5 胁迫 2、耐药 3 翻译精确匹配 5
蛋白加 Plus 6 胁迫 2、耐药 3、毒力 1 蛋白精确匹配 5、HMM 1
联合输入加 Plus 6 胁迫 2、耐药 3、毒力 1 蛋白精确匹配 5、HMM 1

所有运行使用同一份固定数据库和两个线程,没有降低相似度或覆盖阈值来增加命中。本次变化因此可以与报告范围和搜索方式对应起来。若同时更换数据库、修改阈值并改变输入,就很难解释多出来的记录究竟来自哪一步。

默认结果为空,首先看 Scope

两种未开启 Plus 的核酸运行都只有表头,没有数据行。开启 Plus 后出现五条记录,而且每条 Scope 都是 plus。这说明当前默认报告范围与扩展报告范围不同,不能把两张表直接当作同一套目标的重复检测结果。

Plus 中可以包含与应激、一般外排、毒力等相关的条目,具体分类要继续看 Type 和其他字段。本次五条里有两条标为 STRESS,三条标为 AMR,因此即使开启了扩展范围,也不能把总记录数全部改名为耐药基因数。

Scope 和 Type 是两条不同的分类轴。一条记录可以同时属于 plus 范围、AMR 类型,这并不矛盾。前者说明它处于哪个报告子集,后者说明目标类别。若汇总脚本只看 Type 而忽略 Scope,就可能在不同参数条件下生成表面上同名、实际范围不同的统计量。

批量分析时,建议先按报告范围和类型分层统计,再汇总具体元件。这样可以分别回答“默认范围识别了什么”“扩展范围补充了什么”,避免把所有记录堆成一个数字后再赋予过强的生物学含义。

EXACTP 与 EXACTX 的差别要回到输入方式

本次核酸 Plus 运行的五条记录全部为 EXACTX,蛋白和联合输入中的对应记录为 EXACTP。这并不表示它们属于两套不同的基因,而是标记了命中来自哪类搜索输入。应结合元件标识、参考匹配和位置进行对应,而不是仅凭 Method 字符串把同一目标重复计数。

直接将核酸模式与蛋白模式的结果纵向拼接,再对行数求和,会把重复证据当作多个独立目标。联合模式的价值之一,就是把这些输入放在协调的流程中处理。实际比较时应明确是在比较遗传元件集合,还是在比较同一元件的多种证据。

百分之百一致性也需要和参考覆盖一起读。一个局部片段与参考局部完全相同,不等于覆盖完整目标。本次五条精确命中同时具有完整的参考覆盖,但这个观察不能推广到所有项目。遇到片段、边界截断或其他方法标签时,应按相应字段继续检查。

为什么蛋白模式多出一条 HMM 命中

蛋白 Plus 模式新增了一条 HMM 记录,联合模式也保留了它。该条目在本次结果中属于 VIRULENCE 类型、plus 范围,参考覆盖字段为百分之百,一致性字段为百分之八十八点零三。它并不是新增的一条精确匹配记录。

这说明命中方法不能被一列相似度替代。HMM 使用家族模型及对应规则提供证据,不能把所有记录统一套到一个自行设定的百分之九十相似度门槛上,否则可能把原本按家族模型规则保留的条目删除。是否需要进一步过滤,应有明确研究目的与验证依据,而不是为了让表格看起来整齐。

相反,也不能把 HMM 命中描述为已经确认了完整功能。它提示输入与相应家族模型的关系,后续解释仍需参考覆盖、注释质量、数据库整理信息及其他证据。方法标签说明证据来源,并不会自动替代功能实验。

由于样本始终是同一份公开参考,不能把蛋白模式比核酸模式多一条记录写成“这个样本变得更危险”。这里改变的是可用搜索信息与分析方法。教程的重点是理解这种变化,而不是给公开参考附加超出证据范围的表型判断。

联合输入需要三份文件真正对应

联合模式同时提供核酸、蛋白和 GFF,并指定本次使用的注释格式。核酸参数应指向组装序列,而不是把 CDS 片段拼成的文件。GFF 用于把蛋白记录与核酸上的位置关联,标识对应关系不正确时,联合分析就失去基础。官方运行说明

amrfinder -n sample.fna \
  -d amr-db/2026-10-29.1 \
  -O Escherichia --plus --threads 2 \
  -o nucleotide_plus.tsv

amrfinder -n sample.fna -p sample.faa -g sample.gff3 \
  -a bakta -d amr-db/2026-10-29.1 \
  -O Escherichia --plus --threads 2 \
  -o combined_plus.tsv

本次纯蛋白结果没有 Contig id、Start 和 Stop 这些坐标列,联合结果则包含它们。这不是把缺失坐标统一填成零就能解决的问题,而是输入是否提供了核酸位置关联的区别。若下游需要叠加基因组区域或检查邻近关系,必须使用合适的关联信息。

三份文件应来自同一版本注释。不要拿旧蛋白文件搭配重新编号后的 GFF,也不要在只改动核酸标题后忘记更新注释中的 contig 名称。运行前检查蛋白标识、核酸标识和 GFF 关联,是比事后手工补坐标更可靠的做法。

蛋白模式和核酸模式的坐标边界也未必逐个数字相同,因为报告的定位来源可能不同。需要比较时,应先弄清字段语义与注释边界,而不是看到相差几个碱基就立即判断序列发生了变异。对于关键结论,回到原始注释和匹配信息复核。

物种组选项不能替代物种鉴定

本次将 Escherichia 作为已知参考背景提供给程序,目的在于使用相应的整理规则。这个参数不是让程序自动证明输入属于大肠杆菌。真实样本应先有可靠的物种或分类背景,再选择适用的选项,不能轮流尝试多个物种名后挑记录最多的结果。

同时,指定物种组并不保证一定产生新的记录。本次未开启 Plus 的两个核酸运行都为空,只能说明这份参考在这些条件下没有报告条目,不能据此认为物种组选项没有作用。某些规则只在特定目标或变异出现时才体现差异。

本次没有设计已知耐药突变的阳性对照,也没有测试所有非编码位点的识别能力,因此不能把实验写成完整的突变检出验证。蛋白输入与核酸输入覆盖的信息本来就不同,选择模式时应先明确研究问题,再决定需要哪些文件。

一个实际遇到的表头问题

运行本身完成后,最初的统计脚本因为沿用了较旧的列名而报错。本次版本的实际字段包括 Protein id、Type 和 Subtype,与旧脚本预期的某些名称不同。修复的是结果读取逻辑,没有修改任何命中阈值,也没有重新解释空表为程序失败。

另一个细节是,空表只有表头时,错误的列访问逻辑可能暂时没有触发,直到第一张有记录的表才失败。因此不能只用一个没有命中的样本验证汇总脚本。至少应检查实际表头、非空记录以及不同输入模式下是否存在坐标列。

更稳妥的做法是按字段名称读取,明确哪些列是必需、哪些只在特定模式下出现。缺失必需列应立即报告,而不是悄悄用空字符串代替。对于本来就不提供坐标的纯蛋白模式,则应保留“该模式无此列”的含义,避免伪造可用于下游定位的信息。

怎样整理一份有用的结果汇总

项目结果至少应保留样本名、软件与数据库版本、输入模式、Scope、Type、Method、元件标识、匹配覆盖和一致性。需要基因组定位时,再加入来自可靠关联的坐标信息。若只交付一列基因名,读者将无法判断它来自精确匹配、家族模型还是其他证据。

AMRFinderPlus 的优势是规则和参考来源可追溯,并提供较丰富的证据字段。局限是报告范围受数据库、物种背景和输入质量约束,命中也不直接等于表型。使用它时,与其追求尽可能多的记录,不如让每条记录都能回答“为什么被报告、属于什么范围、还缺哪些证据”。

下载五种模式的实跑脚本与完整结果。复现包说明了参考来源、上游注释和固定数据库,保存原始表头及逐行结果。建议先核对零、五、六条记录的关系,再按 Scope、Type 与 Method 分组,最后检查联合输入补充了哪些位置字段。

当输入对应关系、数据库快照和结果解释规则确定后,如需完成更多样本的批量筛查与复核,可了解云生信生物分析与计算服务。

把知识用于当前任务

下一步可以直接开始分析

按研究目标查找在线工具、课程、计算资源或完整分析服务。

按目标找方案仍有疑问,联系客服 ↗