把多批分箱结果放在一起,经常会得到一批高度相似的基因组。去冗余之后,分析者通常希望留下一个便于注释、比对和共享的代表。有时结果却选中了片段更多、连续性更差的那个候选,第一反应往往是怀疑相似性计算出了问题。
判断这种情况,需要把质量过滤、相似性聚类和代表评分逐步核对。本文安装 dRep 4.0.3 与 skani 0.4.0,使用同一条真实参考序列制作两种分片形式,再提供一份明确标为教学用途的质量数值表,实际运行三组去冗余。相似性由工具真实计算,质量数值用于受控比较,最终检查每次选中的文件和具体得分。

去冗余包含两个需要分别回答的问题
第一,哪些候选足够相似,可以放进同一个簇。第二,在这个簇里,应当保留哪个代表。前者依赖相似性、比对覆盖范围和聚类方法,后者依赖质量指标及评分权重。
如果某个候选在质量过滤时就被排除,它不会进入后续选择。若两个候选进入不同的簇,即使其中一个得分更高,也不会替代另一个簇的代表。因此,发现代表选择不符合预期时,先查看候选是否保留以及簇成员关系,再计算分数。按这个顺序检查,可以避免把过滤条件造成的差异误判为评分问题。官方参数概念说明
软件版本也应记录清楚。本次实际安装包为四点零三版,发布信息可在项目的包页面核对。该版本支持使用同一个相似性工具开展初级与次级比较。文章的命令明确写出两阶段算法,方便读者复现,也便于与旧项目中的其他算法设置对照。本次使用的 dRep 版本
用同一条序列排除物种差异的干扰
实验使用大肠杆菌参考序列,登录号为 NC_000913.3,长度为四百六十四万一千六百五十二碱基。第一份文件保留为一条长序列,第二份按每两万碱基切开,共得到二百三十三条片段。所有原始碱基都保留,片段之间没有额外插入序列,也没有改变原来的碱基内容。
两份文件的总长度完全相同,长序列文件的序列连续性指标等于全长,分片文件的对应指标为两万。这样设计以后,可以比较“连续性优势”与“污染度惩罚”在评分中各占多少分。
为了单独检验评分规则,我们给两份文件都填写百分之九十九的完整度,给长序列文件填写百分之一污染度,给分片文件填写零污染度。这些数字是专门设计的实验输入,含义是让评分函数面对一组可手算的条件。它们不承担对这条参考基因组的质量评价。正式分析应使用自己实际运行质量评估得到的结果。
genome,completeness,contamination
long.fna,99,1
fragmented.fna,99,0
质量表里的文件名必须与输入基因组的文件名对应,包括扩展名。完整度和污染度采用百分数数值,因此百分之九十九写成九十九。如果误写成小数形式,质量过滤和评分都会在错误量级上进行。
三次运行只改变两个明确的设置
第一组使用污染度权重五,第二组将该权重降为一,第三组沿用权重一,同时把允许的最大污染度设为零点五。所有运行使用两线程,相似性次级门槛为百分之九十九,初级门槛为百分之九十。
为使比较只围绕质量与连续性,本实验将中心性权重固定为零,并关闭绘图。完整度权重、连续性权重和其他相关设置保存在运行参数文件中。这是一项参数敏感性实验,读者可以根据自己选择代表的目标,再决定是否恢复或调整中心性这一项。
dRep dereplicate work_default \
-g input/long.fna input/fragmented.fna \
--genomeInfo controlled_quality.csv \
--primary_algorithm skani \
--S_algorithm skani \
-pa 0.90 -sa 0.99 \
--contamination_weight 5 \
--contamination 25 \
--centrality_weight 0 \
--skip_plots -p 2
第二组使用新的输出目录,把污染度权重改成一。第三组继续使用独立目录,在第二组参数基础上把最大污染度改成零点五。不同条件采用不同工作目录,能让日志、聚类表和代表文件一一对应,减少复用旧中间结果后难以判断来源的问题。
实际运行环境还包括 Python 3.12、pandas 2.3.3 和 NumPy 1.26.4。附带脚本自动生成两份输入、质量表和三组命令,并读取最终表格保存结果,复现时不需要手工修改每个输出文件。
实际结果怎样对应到具体分数
前两组都把两个候选放入同一个次级簇。实际相似性结果约为百分之九十九点九八,比对覆盖比例约为百分之九十九点九九。两份输入拥有相同的原始碱基内容,但切分边界会影响近似比较的取样及计算,因此本次报告值接近百分之百。
| 条件 | 长序列得分 | 分片序列得分 | 最终代表 |
|---|---|---|---|
| 污染度权重 5 | 97.333336 | 101.150515 | 分片序列 |
| 污染度权重 1 | 101.333336 | 101.150515 | 长序列 |
| 权重 1,最大污染度 0.5 | 质量过滤阶段被排除 | 101.150515 | 分片序列 |
在本次控制条件下,评分可简化为完整度减去污染度乘以其权重,再加上零点五乘以序列连续性指标的十进制对数。完整度相同,总长度相同,中心性项关闭,未提供的菌株异质性项按程序相应逻辑处理。读者可以直接用下列代码重算两个得分。本次版本的评分实现
from math import log10
long_score = 99 - 5 * 1 + 0.5 * log10(4641652)
fragmented_score = 99 - 5 * 0 + 0.5 * log10(20000)
print(long_score, fragmented_score)
长序列在连续性这一项得到约一点一八三分的优势。污染度权重为五时,额外一个百分点的污染度带来五分惩罚,所以分片序列胜出。权重降为一后,惩罚只剩一分,长序列以约零点一八三分的微小优势胜出。
这个差距也提醒我们,代表选择可能对质量估计的小幅波动敏感。如果两个候选分数接近,可以把每一项贡献单独列出来,进一步检查实际污染来源、完整度差异、关键功能区域和组装结构。最终选中谁,应当能够用事先定义的标准解释。
第三组说明质量门槛与评分权重的作用顺序
第三组中,长序列提供的污染度为百分之一,超过零点五的过滤门槛,因此在聚类和评分之前退出候选集合。后续只剩分片序列,代表选择自然落在它身上。
这里值得注意的是,质量信息表仍可能保留被排除基因组的质量输入行。本次输出就保留了长序列的完整度和污染度记录,而后续长度及连续性字段为空。判断实际参与选择的基因组,应联合查看过滤后的成员、聚类表与得分表,避免直接把质量信息表的行数当成最终候选数。
单候选路径也有一个容易混淆的细节。本次这一组的聚类表在 comparison_algorithm 列写着 MASH,这是单候选处理分支填入的值,两两相似性表没有比较记录。分析者若要判断真正执行过哪些步骤,应结合命令参数和日志一起确认。一个表格单元格不足以证明程序实际调用过某个外部算法。
这三个对照把过滤与评分的区别展示得很清楚。调整评分权重只能影响仍在候选集合中的基因组。若一个候选先被质量门槛排除,后续提高它的连续性权重也无法让它重新参加选择。
还可以把同簇候选之间的分差与质量估计的不确定性一起考虑。第二组里,两个候选只相差约零点一八三分。若换一套质量评价流程后完整度相差半个百分点,这个差距就可能被覆盖。因此,遇到分数接近的候选,报告中应保留两个候选的详细指标,说明选择依据,后续复核时也能追踪代表为何发生更换。
如果希望优先保留已经人工核查的基因组,应把这一要求写进正式选择标准,再评估程序支持的额外权重或人工复核流程。把一个文件临时改名、修改质量输入或者反复调整参数直到它入选,会让最终结果难以复现。最有帮助的做法是保留原始质量结果和明确的选择规则,让每一次代表更换都有可以计算的原因。
输出目录里哪些文件值得逐项查看
聚类表用于确认候选属于哪个初级簇和次级簇,得分表用于复算排名,代表表给出每个簇的入选对象。最终代表目录保存被选中的基因组文件。本次脚本还逐字节核对了入选文件与对应输入,三组均完全一致。官方输出目录说明
可以先用基因组文件名把质量表、聚类表和得分表连接起来,得到一张候选总表。连接时检查每个文件名是否唯一、是否存在缺失匹配以及是否出现重复行。然后按次级簇分组,验证代表分数达到该簇最高值,并确认每个最终文件都能追溯到输入路径及校验值。
对于输入质量表,建议保存评估软件及数据库版本。两批基因组若使用了不同评价方法或不同数据库,分数中看似相差一个百分点的污染度,可能同时混入方法差异。先统一质量评价口径,再解释代表选择,结论通常会更清晰。
相似性表还应核对数值单位。本次输出的相似性和覆盖比例采用零到一的尺度,转换成百分数展示时需要乘以一百。不要直接把相似性表里的小数与质量表里的百分数做算术比较,它们属于不同字段和不同用途。
怎样把参数敏感性检查用于真实数据
正式项目可以先选择少量有争议的簇,保持相似性聚类参数固定,只对代表评分权重做一到两组有依据的对照。记录代表是否更换、分数差多少以及更换后关键功能区域是否仍然保留。这样能够把“偏好更高连续性”转化成可检查的分析决定。
如果研究主要目的是建立用于读段比对的参考集合,聚类门槛还会影响近缘基因组之间的多重比对。若研究关注菌株内差异,过度合并也可能损失所需变化。确定去冗余参数时,要先写清比较对象、后续用途和希望保留的分辨率,再选择适合的门槛。
完整度、污染度和连续性也各有边界。连续性变好可能来自更长的正确连接,也可能伴随错误连接。污染度指标下降需要结合可疑片段来源检查。对于生物学上重要的候选,可以补看覆盖分布、序列组成、关键基因邻域以及与同簇其他成员的对应关系。
本次实验中,两份输入碱基内容相同,方便隔离评分效应。真实数据里,不同候选常常还包含不同的缺失区域、重复片段或移动遗传元件。因此,把一个候选选为代表后,仍然应该保留原始簇成员映射,方便后续回查某项功能在成员之间如何分布。
最后,去冗余报告可以用一张小表交代清楚输入候选数、质量过滤后数量、簇数、代表数、质量来源、聚类门槛和评分权重。发现代表数量变化时,就能沿着这些数逐步定位原因。相比只交付一个最终序列目录,这些信息更有助于读者理解结果并复现选择过程。
本次三组运行的命令、质量数值表生成逻辑、聚类结果、得分和文件校验记录已随文提供。读者可以先重算两份候选的分数,再尝试改变一个权重,观察结果是否符合自己的事前预期。下载实跑脚本与本次结果
当分析扩展到多批基因组并需要统一环境、保存中间证据和管理可复现任务时,可了解云生信的生物信息学分析计算服务。
