把多个个体的染色体一起建泛基因组图前,常会先按序列相似性分区,希望把对应的染色体放在一起。一个看似简单的问题是,两个序列标识里都写着同一染色体名,它们就一定分到同一个社区吗?我们实际运行 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 的两条染色体拉进一个独立的小组,其余各有两条的两组仍保留下来。于是增加一个跨组边的权重,带来的结果是多出一个社区。这次只验证工具里的分区阶段,没有运行后续全序列比对、图构建或平滑,也不能据此决定真实物种应分几组。

少掉的第七条序列去了哪里
两组实验的边文件里都只有六个顶点。那条额外的组件在原始清单里有名字,却没有在比对的查询列或目标列出现。转换脚本通过扫描这两列建立顶点编号,结果它没有进入社区检测,当然也不会出现在任何社区成员清单里。如果仅检查每个社区中的序列都能在原始 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 目录。
多个组装需要反复比较分区前后的比对和成员清单时,可以在云生信的生物信息分析服务器按版本保留比对与建图输入。
