software

PGGB 实跑|六条 contig 的相似性网络,只改一条比对,为什么分区从两个变成三个?

作者:发布于 2026-11-15约 6 分钟阅读
只改一条边,分区变成三个。六条组内比对保持一致,独立改变一条跨染色体的比对。弱跨组边,1000 bp × 99% = 990,两组各三条,按染色体号聚在一起。强跨组边,28000 bp × 99% = 27720,三组各两条,C 的两条染色体单独聚在一起。输入核对,没有比对的第七条序列,不会出现在这两个脚本生成的成员清单内。

把多个个体的染色体一起建泛基因组图前,常会先按序列相似性分区,希望把对应的染色体放在一起。一个看似简单的问题是,两个序列标识里都写着同一染色体名,它们就一定分到同一个社区吗?我们实际运行 PGGB 0.7.4 发行版的两个分区脚本,保持序列名称和比对总行数不变,只改一条跨组比对的长度。结果从两个社区变成三个,同一样本的两条不同染色体反而被单独分在一起。PGGB 官方项目

先看网络中的一条边是什么

PGGB 的 partition-before-pggb 流程可以把基因组序列间的比对转成带权网络,再根据网络社区拆分建图输入。在本次验证的两个脚本中,顶点是出现在比对里的序列名,一条输入比对贡献一条带权的边。作者的转换脚本使用比对长度乘以百分制一致性再除以一百。两段只有一小截高度相同,和两条序列长距离保持高度相同,单看百分比可能差不多,形成的边权却差很多。PGGB 边权转换源码

社区检测使用的是这样的边和权重。算法并不会因为序列名写着第一条或第二条染色体,就强制它留在某个组里。规范的样本与染色体命名对人判断归属、追踪异常很重要,但不能代替比对证据。如果一段很长的序列同时出现在两个并非同源的染色体标签下,例如大型近似重复、易位片段或一条错拼的 contig,分区首先看到的是很强的连接。它不能仅根据连接自行判断背后的生物学原因。PGGB 社区检测源码

实跑经验|保持七条边,只改变第七条的长度

我们声明三个样本,每个样本各有两条三万碱基的示例染色体,另列一条没有任何匹配记录的额外组件。这里的输入是构造的比对表,没有人为制造一整套测序或组装碱基。对同一染色体的三个样本两两连线,每组三条,合计六条。每条组内比对均长一万碱基,一致性为百分之九十八,得到的边权各为九千八百。第七条边把样本 C 的两条不同染色体相连,一致性固定在百分之九十九,只改变比对长度。

第七条边 转换后权重 六次分区的成员结果
长 1000 bp 990 两组各三条,分别含 A、B、C 的同号染色体
长 28000 bp 27720 三组各两条,A 与 B 仍按染色体号配对,C 的两条染色体自成一组

两种输入都实际运行了权重转换,并各运行六次作者的社区检测脚本,使用在实验环境中记录的 igraph 1.0.0。比较重复运行时,我们把成员名排序再比较,忽略社区编号,同一条件的六次成员划分一致。强连接把 C 的两条染色体拉进一个独立的小组,其余各有两条的两组仍保留下来。于是增加一个跨组边的权重,带来的结果是多出一个社区。这次只验证工具里的分区阶段,没有运行后续全序列比对、图构建或平滑,也不能据此决定真实物种应分几组。

只改一条边,分区变成三个。六条组内比对保持一致,独立改变一条跨染色体的比对。弱跨组边,1000 bp × 99% = 990,两组各三条,按染色体号聚在一起。强跨组边,28000 bp × 99% = 27720,三组各两条,C 的两条染色体单独聚在一起。输入核对,没有比对的第七条序列,不会出现在这两个脚本生成的成员清单内。
六条组内比对保持一致,独立改变一条跨染色体的比对。

少掉的第七条序列去了哪里

两组实验的边文件里都只有六个顶点。那条额外的组件在原始清单里有名字,却没有在比对的查询列或目标列出现。转换脚本通过扫描这两列建立顶点编号,结果它没有进入社区检测,当然也不会出现在任何社区成员清单里。如果仅检查每个社区中的序列都能在原始 FASTA 找到,整套检查可以看似通过,但输入与输出并没有实现双向核对。还应反过来用原始序列名减去所有社区成员,分别汇总遗漏组件的数量与碱基总数。

python3 scripts/paf2net.py -p align.paf
python3 scripts/net2communities.py \
  -e align.paf.edges.list.txt -w align.paf.edges.weights.txt \
  -n align.paf.vertices.id2name.txt --output-prefix groups

读者拿自己的数据复查时,应先确认比对文件来自预期的工具和阶段。这个版本的转换脚本从前十三个字段取查询名、目标名、比对长度和一致性,按百分制解析一致性值。不同工具输出的 PAF 虽然前十二个标准字段相似,可选标签的内容、顺序和数值范围可能不同。直接换一份文件而不核对第十三列,可能生成外观看似正常、权重实际失真的网络。取几条组内和跨组比对,手工按作者公式重算,再与权重文件逐行比对,成本很低却能排除一类隐蔽错误。

此外,不要只为每对序列保留最大权重后就假设复现了原脚本。若两个组件之间存在多条来自不同区间的比对,原始边列表里可以出现多个对应记录。把这些证据合并以前,应说明同一段是否在两个方向或多个重叠片段中被重复计数,用同一口径处理各组的连接,才有可比性。

怎样判断跨组强边值不值得信

先把异常边放回基因组坐标,记录它对两端序列各覆盖多少、发生在端部还是中段,以及该区段是否还有很多近似同强度的次级匹配。染色体间真实的大型重排有清楚的边界,广泛散布的重复片段则可能在许多序列之间制造相似连接。可再用独立的长读段、近缘参考或同一样本的其他组装检查边界。如需调整过滤,只改一项条件,保留原始比对,比较哪些成员真正换组、哪些只是社区编号发生了变化。

对多倍体或高度重复的材料,还应同时查看每组包含几个样本、每个样本贡献多少条相近染色体,以及排除的序列占总组装多少。某个分区样本不全,可能因为真实缺失,也可能因为该样本组装较碎、达不到比对过滤的长度。这里的实验能产生稳定的三个社区,但稳定性只说明在给定网络和算法设置下结果可重复,不能证明每个社区都对应一条真实染色体。

下载本篇实验脚本与结果(12 篇合集 ZIP),解压后打开 084-pggb 目录。

多个组装需要反复比较分区前后的比对和成员清单时,可以在云生信的生物信息分析服务器按版本保留比对与建图输入。

把知识用于当前任务

下一步可以直接开始分析

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

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