图泛基因组把多个基因组中的序列及其连接关系放在一起。共享序列可以共用一段图,存在差异的位置可以分出不同路径。建图依赖输入组装和比对方法;加入了哪些基因组、哪些序列被过滤,都会影响最终能表示的差异。
节点、边和路径分别表示什么
| 图中的对象 | 含义 | 阅读时要注意什么 |
|---|---|---|
| 节点 node | 带有编号的一段序列 | 节点不一定对应一个基因 |
| 边 edge | 两段序列之间的连接,包含方向信息 | 连接关系也可能来自重复序列 |
| 路径 path | 按一定方向依次经过节点的序列 | 可以用来表示某个基因组的染色体或 contig |
一个变异区域可能在相同的入口和出口之间出现多条路径。沿不同路径读出碱基,可以得到不同等位序列。图中的复杂分支也可能来自重复或比对不确定性,不能只数分支就得到可靠的变异数量。vg 图模型
泛基因组描述当前纳入基因组的序列集合。核心序列与存在/缺失差异取决于比较范围和判断标准,不能由“参考基因组”和“其他基因组”的名字直接划分。图也不会自动包含尚未测序或没有成功组装的序列。
选择建图输入与参考
Minigraph-Cactus 先建立结构差异的图,再将输入组装比对回去,用 Cactus 处理碱基层面的对应关系。结构变异通常包括较大片段的插入与缺失,也包括倒位或重排;碱基级比对还能表示更小的替换和插缺。Minigraph-Cactus 流程说明
这条流程主要面向同一物种或序列比较接近的组装。默认按参考染色体拆分计算,参考组装需要有可靠的染色体尺度结构。差异很大的跨物种比较应另外评估比对方案。
输入中每份 FASTA 应有清楚的个体与单倍型来源,同一文件内的序列名称不能重复。不要把主组装和同一次运行的全部替代片段当成独立个体重复加入。参考选择同时决定默认的染色体划分与变异坐标,应记录参考版本。输入命名与参考要求
写好基因组清单
data/assemblies.txt 是两列文本,第一列是组装名称,第二列是 FASTA 路径,中间用空白分隔。下面只展示命名与列格式,行数按实际输入增减。
reference /absolute/path/reference.faassembly.1 /absolute/path/hap1.faassembly.2 /absolute/path/hap2.faassembly.1 和 assembly.2 展示同一个体两套单倍型的命名。点号在 Cactus 中有特殊含义,表示单倍型编号;不要在普通样本名称中随意加入点号。reference 是显式选定的参考组装名称,必须与命令中的 --reference 一致。
清单使用绝对路径可以减少工作目录切换带来的问题。文件在容器中也必须可见;若输入在其他磁盘,后面的容器命令需要同时绑定那些目录。
固定容器版本并运行建图
本篇使用 Cactus v3.2.1 的接口。容器封装了依赖,镜像名中保留版本便于复现;不要把镜像文件的名称当成版本证据,仍需保存下载来源和运行日志。Cactus 安装说明
mkdir -p images work results/graph logssingularity pull images/cactus-v3.2.1.sif \ docker://quay.io/comparative-genomics-toolkit/cactus:v3.2.1
singularity exec --bind "$PWD:$PWD" --pwd "$PWD" \ images/cactus-v3.2.1.sif \ cactus-pangenome work/cactus-jobstore data/assemblies.txt \ --reference reference \ --outDir results/graph --outName pangenome \ --maxCores 8 --binariesMode local \ --gfa full clip --gbz full clip --vcf \ > logs/cactus-pangenome.log 2>&1--binariesMode local 表示使用容器内的程序,避免在容器内再启动另一层容器。work/cactus-jobstore 保存任务状态和中间数据,第一次运行时不要预先建立这个目录;--outDir 才是结果目录。任务中断后,应按原版本的重启规则恢复,不要把半成品目录当作一次新的完整运行。
--maxCores 8 将本次单机执行的 CPU 核数上限设为 8,内存另行配置。大图仍可能因内存或临时磁盘不足而失败,需根据任务日志和计算节点配额调整资源。Cactus 命令入口
分开保留完整图与裁剪图
上述命令请求两种图及相应 GBZ,同时输出默认参考上的 VCF。
| 输出 | 用途 |
|---|---|
pangenome.full.gfa.gz | 未经过后处理裁剪和频率过滤的图,适合检查保留了哪些组装序列 |
pangenome.gfa.gz | clip 图,已按该版本规则裁剪部分序列 |
pangenome.full.gbz、pangenome.gbz | 图与单倍型路径的压缩表示,供 vg 使用 |
pangenome.vcf.gz | 从图内组装路径导出的参考坐标变异表示 |
full 表示未做这一阶段的裁剪,不保证所有原始输入碱基都成功进入图。前面的序列分配或比对过程仍可能排除部分输入。输出 VCF 描述建图组装之间的差异,尚未利用新的重测序样本推断基因型。
--clip 控制未对齐区域的裁剪,不能解释成“删除比阈值短的所有末端序列”。--filter 控制低单倍型支持节点的过滤,可能丢掉稀有差异;需要研究存在/缺失变异时,要保留能回查的完整图。不同版本的默认行为会变化,参数应与固定版本的图后处理文档对应。
不要用一个长度阈值解释所有结构变异旧笔记中的
--minLen不能作为这套接口通用的“最小结构变异长度”开关。输入片段过滤、比对过滤与图裁剪发生在不同步骤。调整前应确认该参数属于哪个子命令,以及它改变的是输入片段、比对关系还是最终节点。
检查图是否包含预期路径
GFA 的 S 行记录序列片段,L 行记录连接;这里的 W 行记录带样本与单倍型信息的行走路径。vg 可以汇总图规模并列出路径。
vg stats -N -E -L results/graph/pangenome.full.gbz \ > results/graph/graph-stats.txtvg paths -L -x results/graph/pangenome.full.gbz \ > results/graph/graph-paths.txt检查每个输入是否有对应路径,参考染色体名称是否符合预期,再查看缺失片段相关日志。路径存在只能证明某些序列进入了图,不能单独证明整条染色体完整。vg 路径与统计工具
下一篇使用 clip 图演示普通短读段比对。全图用于注释或序列保留检查时,另存一套明确命名的文件,不要与用于比对的图和索引混用。