在泛基因组存在缺失矩阵里看到一个零,最直接的解释是该样本没有相应基因。但矩阵通常来自组装与注释,某个位置没有被注释出来,也可能产生看起来像缺失的记录。要区分这两种情况,必须重新检查对应核酸,而不能只盯着最终矩阵。
本文安装并运行 Panaroo 1.8.1,使用一段经过实际 Prokka 注释的公开参考序列,构造三份对照输入。三份核酸完全一致,只从其中一份删除一条 CDS 注释,再比较关闭寻找、默认寻找和严格寻找等设置。实验关注一个可以直接核实的问题,同一段 DNA 还在时,软件如何处理注释表中的缺口。

泛基因组输入中有两种不同的信息
GFF 文件记录了预测特征的位置与属性,序列部分记录这些位置对应的核酸。它们相互关联,但不是同一份信息。删除一条注释行,不会自动删除该位置的碱基,删除基因组片段也不能只靠删注释行来模拟。
Panaroo 可以结合基因聚类和相邻关系处理部分注释不一致。判断一个缺口时,它有机会利用邻近基因附近的核酸寻找原先没有标出的内容。因此,结果中某个条目重新出现,需要解释它来自原始注释还是后续寻找。官方参数说明
这也决定了复现材料不能只剩一张蛋白名称表。输入的特征坐标、序列、样本对应关系以及关键参数都需要保存,否则很难追查矩阵中的零为何改变。
安装版本与本次输入范围
本次使用固定版本的 BioContainers 镜像,实际版本输出为 1.8.1。复现包记录镜像摘要,并提供从基线注释生成三份输入、执行四组命令和解析结果的脚本。
PANAROO_IMAGE='quay.io/biocontainers/panaroo:1.8.1--pyhdfd78af_0'
docker pull "$PANAROO_IMAGE"
docker run --rm "$PANAROO_IMAGE" panaroo --version
基线来自公开大肠杆菌参考 NC_000913.3 的前二十万碱基,使用实际 Prokka 输出的主注释文件和蛋白文件。这里只分析一个连续片段,三份输入都是为参数实验构造的副本,不是三个独立菌株,也不是三份生物学重复。
因此,本文不会用这组三份数据估计某个物种的泛基因组大小,不讨论真实群体中的基因频率,也不进行关联分析。设计副本的用途是控制变量,让我们能够知道某个缺失是否真的发生在核酸层面。
只删除注释,具体怎样操作
驱动在基线中寻找位于片段内部、长度适中且蛋白序列不重复的 CDS,避免把截取边界或相同蛋白的多个拷贝同时引入主对照。本次选中的目标编号为 BASE_00044,位置为 50380 到 51222,长度为 843 碱基。
三份输入分别叫 sample_A、sample_B 和 sample_C。每份采用不同的条目编号前缀,便于识别来源。只有样本 B 删除目标 CDS 对应的注释行,另两份保留原来的注释。
三份文件中的核酸部分逐字相同,校验值也相同。输入 CDS 数量分别为 169、168、169。这里减少的一条记录属于注释差异,不能在实验描述里写成样本 B 发生了基因缺失突变。
这种准备方式比直接修改最终矩阵更有意义。我们改变的是工具真正读取的输入,然后由工具重新产生结果,能够观察完整处理过程中哪些步骤改变了判断。
先关闭寻找,观察缺口如何进入矩阵
第一组固定严格清理模式,并明确关闭重新寻找步骤。这样能够建立一份没有这一步补充信息的对照。
panaroo -i inputs/sample_A.gff inputs/sample_B.gff inputs/sample_C.gff \
-o strict_off --clean-mode strict --refind-mode off -t 2
实际二值矩阵中,目标条目在三个样本的记录为 1、0、1。这与输入注释中的设计缺口对应,说明只看这一版输出,读者确实会在样本 B 的目标位置看到缺失。
但我们已经知道三份输入核酸一致,因此这个零不能用作真实 DNA 缺失的证据。它首先表明,在当前输入与处理设置下,样本 B 没有形成相应的基因家族存在记录。
真实项目没有这样的已知答案,所以需要进一步检查原始组装、局部比对与测序覆盖。一个二值矩阵单元格承载不了所有不确定性,报告中应保留其形成过程和后续核对依据。
开启默认寻找以后发生了什么
第二组仍采用严格清理模式,只把寻找模式改为默认。其他输入和主要设置保持一致。
panaroo -i inputs/sample_A.gff inputs/sample_B.gff inputs/sample_C.gff \
-o strict_default --clean-mode strict --refind-mode default -t 2
本次目标条目的二值记录变为 1、1、1。样本 B 的原始 GFF 中仍然没有那条 CDS 注释,但软件利用输入序列和周围的基因关系找回了对应内容。这个变化可以追溯到重新寻找步骤。
理解结果时,需要把“原先被注释出来”和“后续通过寻找恢复”分开。两者都可能进入最后的存在缺失表,但证据路径不同。若后续研究需要审查某个关键基因,应该继续查看目标序列与对应输出记录。
同样,重新找到核酸片段并不自动证明它具有完整功能。默认寻找可以容纳部分注释或组装异常,相关序列还需要检查长度、读框、终止密码子和覆盖情况,尤其不能仅凭存在记录就断言蛋白已经表达。
| 设置 | 清理模式 | 目标在三份输入中的记录 |
|---|---|---|
| 关闭寻找 | 严格 | 1、0、1 |
| 默认寻找 | 严格 | 1、1、1 |
| 严格寻找 | 严格 | 1、1、1 |
| 默认寻找 | 敏感 | 1、1、1 |
严格寻找与严格清理是两项不同设置
第三组把寻找模式设为严格,同时继续使用严格清理模式。这两个参数名字相似,但控制的是不同环节。前者限制哪些候选序列能够被重新找回,后者影响基因图和低支持条目等清理决策。
panaroo -i inputs/sample_A.gff inputs/sample_B.gff inputs/sample_C.gff \
-o strict_refind_strict --clean-mode strict --refind-mode strict -t 2
本次目标在严格寻找下仍得到 1、1、1,与默认寻找的目标结果一致。由于本例保留的是完整、相同的核酸内容,这个现象符合实验设计。它不能说明两种寻找模式对所有真实数据都会给出同样结果。
当待寻找区域存在移码、内部终止或组装断裂时,模式选择可能改变结果。读者应根据研究目的判断自己要统计的是可辨认的同源序列,还是更接近完整编码能力的候选,并在方法中写明采用的设置。
敏感模式也不能自动回答生物学问题
第四组采用敏感清理模式,同时保留默认寻找。本次目标记录为 1、1、1。这个对照帮助我们检查主结论是否依赖某一种清理设置,但不能代替对全部基因家族的审查。
清理模式会影响哪些低支持内容被保留。稀有质粒和污染来源在某些情形下都可能表现为少量样本中的特殊序列,所以保留更多结果并不天然等于更准确,删掉更多结果也不天然等于更可靠。
实际研究中,如果关注罕见附属基因,应该将候选对应的样本质量、局部序列和覆盖证据一起查看。模式提供的是分析取舍,无法凭空补充实验中不存在的证据。官方快速入门与模式说明
详细表与二值表要一起看
二值表适合快速汇总每个基因家族在哪些样本出现,但它压缩了具体条目身份。详细存在缺失表保留了样本中的对应序列名称,方便继续追溯到注释与蛋白。
本次驱动先根据样本 A 中未改动的目标编号找到详细表中的家族,再读取同一家族的二值记录。这样避免按变化后的显示名称猜测目标,也避免把两个相似功能名称误当成同一个家族。
详细表中一个样本单元格还可能包含多个编号。存在记为一,并不必然说明该家族在样本中只有一个拷贝。开展拷贝数相关分析时,应返回对应成员记录核对,而不能把存在缺失表当作定量拷贝数矩阵。
如何追踪重新找到的序列
Panaroo 输出的核酸与蛋白集合可以包含原始注释和后续寻找得到的内容。内部编号与原始编号之间还需要通过对应信息连接,因此不能看到一个陌生编号就认定软件凭空产生了序列。官方输出文件说明
对一个重要候选,可以先在详细存在缺失表中定位家族,再查对应序列和来源记录,最后回到样本组装查看坐标附近的核酸。本例保留完整结果字段,读者可以按这一条路径追踪目标,而不是只相信正文中的一个一或零。
如果实际项目中寻找结果和原始注释相互矛盾,应检查是否对应同一组装版本、同一序列命名和同一坐标系统。只替换 GFF 或只替换 FASTA 都可能破坏二者关系,产生难以解释的错误。
总家族数没有变,也可能改变核心统计
四组运行的家族总数都为一百六十九,但关闭寻找时,汇总文件把一百六十八个家族列为核心,另一个列入中间频率类别。开启寻找后,一百六十九个家族都出现在三份输入中,核心统计随之增加。总家族数相同,并不表示存在缺失结构相同。
目标家族在详细表中叫 apaH。关闭寻找时,样本 B 对应单元格为空,开启后出现编号 1_refound_0。我们进一步核对内部记录,找回的核酸长八百四十三碱基,校验值与样本 A、C 的目标完全一致。这样可以把矩阵中的变化落实到具体序列证据。
蛋白字段则不能未经检查就声称逐字相同。原始记录包含二百八十个字符,找回记录在相同内容后还带有终止符和未知字符标记,原始字段长二百八十二。本文保留这些原始字段与校验值,没有为让比较好看而直接删改。进行蛋白层面比较前,应明确格式中的标记及翻译规则,也不能把这种输出表示差异直接当作样本突变。
小样本对照不能用来选定所有研究阈值
本例只有三个设计副本。某个条目出现于两份还是三份输入,会明显改变其出现比例,但这些比例没有群体抽样意义。不能据此给真实研究规定统一的核心基因阈值或稀有基因过滤标准。
在真实队列中,样本数量、菌株亲缘关系、组装质量和注释一致性都会影响存在缺失结果。增加样本前,应先检查样本身份与质量,避免把重复样本当成额外支持,也避免把明显异常的组装混入之后再依靠清理模式解决全部问题。
另外,缺失记录有多种可能原因。真实序列缺失、未组装出来、注释遗漏和后续筛选都可能让结果变成零。本文只用控制实验验证了其中的注释遗漏路径,没有证明其他来源可以被完全修复。
将这组实验用于日常核对
当一个关键基因在少数样本中缺失时,可以先保留原始参数结果,再检查详细成员、核酸与附近基因关系。随后针对明确疑点做寻找模式对照,并记录哪些单元格发生变化,以及这些变化有何序列支持。
如果只是为了让矩阵更完整而反复放宽参数,容易把不确定内容变成看起来确定的存在记录。更有价值的交付是说明每个重点候选的来源、边界和证据缺口,让后续验证能够聚焦具体区域。
本次实跑说明,矩阵中的缺失应结合输入层次解释。通过保存注释和核酸、设计只改变一项条件的对照、追踪目标家族的原始成员,可以把一个简单的零拆解成可检查的问题。
下载包包含三份输入的生成步骤、删除目标的精确位置、四组真实结果及目标追踪字段,可从配套 Prokka 基线结果重新生成全部对照。下载脚本与实跑结果
需要对多株细菌统一注释、构建泛基因组并核对关键存在缺失候选时,可了解云生信的生物信息学分析计算服务。
