Minigraph-Cactus
Minigraph-Cactus
是 Cactus 软件中的一个流程, 是一种有参的图形泛基因组构建方法. 一般用于相似基因组的比对, 比如同一物种的多个基因组.
在上一篇文章中, 我们已经顺利安装了 Cactus 软件, 那么可以直接使用了. 软件接口极多, 提供我的示例脚本供参考:
# 启动环境
source cactus_env.sh
# 运行
cactus-pangenome ./job_store ./genome.txt --outDir ./out_dir --outName Ath --reference Abd-0 --vcf --giraffe --gfa --gbz --maxCores 32 --maxMemory 60G --workDir ./work_dir
一个一个说:
./job_store
: 存储 job 信息, 我理解是软件进程, 关键节点记录这些, 需要注意, 如果你是从头跑一个新的流程, 这个目录不能已经存在, 流程自动创建; 如果是续跑一个已有流程, 这个目录必须存在, 续跑的部分我们后面再说;./genome.txt
: 用于构建图泛的基因组列表, 空格分隔, 第一列是名称, 第二列是 fasta 文件路径, 支持相对路径, 但我建议还是绝对路径吧;--outDir
: 输出文件路径, 所有的结果都会写在这个目录下;--outName
: 输出文件的前缀;--reference
: 构建图泛使用的参考基因组, 实际上是上面genome.txt
里面的名称, 比如我这里, 使用列表中名为 Abd-0 的基因组做 ref;--vcf
: 输出 vcf 格式的结果, 即泛基因组变异检测的结果;--giraffe
: 输出vg giraffe
依赖的文件格式;--gfa
: 输出gfa
格式的图泛结果;--gbz
: 输出gbz
格式的图泛结果;--maxCores
和--maxMemory
: 限制一下资源, 不然会检测节点可用资源并跑满;--workDir
: 临时文件存储目录, 大基因组的图泛构建最好手动指定一个, 不然按默认走的话可能会触发 IO 限制;
还有一些虽然我没有使用但是值得说一下的接口:
--restart
: 续跑, 需要指定的./job_store
存在; 软件会自动读目录下面的配置文件, 如果配置文件不在/不全等情况无法续跑; 同时, 如果尝试续跑中改了设置, 比如我第一次跑没限制资源, 第二次限制了 32 线程, 这种情况也无法续跑;--refContigs
: 仅对参考序列中的指定染色体做比对, 这里应该是为了排除未挂载的情况, 不过我还是建议在传入分析的时候就已经过滤掉未挂载了;
暂且测了这么多, 更多的参数还没有测试;
结果文件
结果文件挺多的, 挑几个说一下:
gfa
: 输出的gfa
格式是 v 1.1 规则, haplotypes 信息会被记录为 Walks;vcf
: 流程里输出两个vcf
文件, 分别为 raw 文件和过滤后的文件, 过滤条件是去除嵌套位点, 以及大于 100 kb 的位点; 如果不满足自己分析要求的话可以自行过滤一下;*.sv.gfa.gz
: 仅包含 SV 的gfa
文件, 是minigraph
的默认输出;stats.tgz
: 包含统计文件, 但是实际上保存的是统计文件的相对路径, 但是相对路径是在./job_store
目录下, 这个目录会在程序成功运行后删除; 所以如果想要用这个统计文件, 需要运行的时候设置中间目录不删除, 比如--stats
参数;
这个 vcf
的结果文件多说两句, 它本身能过 plink
, annovar
和 vcftools
(我测了确认可以), 是标准的 VCFv4.2
格式, 猜测满足大部分变异下游分析的要求; 如果需要区分 SNP, INDEL 和 SV 的话, 可以走这样一个路线:
- 首先使用
vcfbreakmulti
工具拆分不同的变异alleles, 一种变异一行, 这个工具随着 cactus 一起安装了, 直接调用就可以, 拆分后的文件还是vcf
格式; - 自己写个脚本依据长度拆分 SNP, INDEL 和 SV, 这里就见仁见智了, 比如是按照 50 bp 做阈值区分 INDEL 和 SV; 这个 SV 是没有更细致的分类的, 需要自己搓工具处理, 或者使用什么已有工具, 这部分我不太了解;
计算资源
我这个测试是五个拟南芥基因组, 32 线程, 峰值内存 9 G, 约 54 分钟跑完;
测试了五个小麦的图泛构建, 目前还没跑完, 但是目测没什么问题, 起码不会因为基因组过大或染色体过长报错;
软件整体比较复杂, 我也就走马观花过了一下流程, 怎么说呢, “先完成再完美”吧.