比较基因组学Cactus初探
11.21更新,本文内容包括Cactus进行无参基因组比对的详细教程。
你说的对,但是Cactus是一款开源的,发表过正刊的,高度权威的基因组比对软件.jpg
Cactus是一款评价极端化的科研工具,新手不会用,高手觉得麻烦,只知道看文章从不敲代码的觉得好,这就是Cactus。
那么,接下来我们将初步讲解一下Cactus这款牛马工具,
Cactus支持conda使用,本地编译和容器化,同时还有GPU 版本。三种安装方式各有其独特的BUG,甚至GPU版本也有其独特的BUG。 Git上挤了400个issue作者都是挑着回。可以说,用cactus的旅途就是一场酣畅淋漓的赤石。如果用Docker版本的话注意下计算机里面是否存在NFS挂载点,在Docker容器里生成大量文件会让挂载的文件系统卡顿。
下面我们开始介绍cactus的准备流程:
Cactus比对的基因组必须经过软屏蔽(即将重复序列中大写的ATCG改为小写的atcg)。这一步主要通过repeatModerer和repeatmasker进行。
BuildDatabase -name $i $i.fasta
RepeatModeler -pa 20 -database $i -LTRStruct
RepeatMasker $i.fasta -lib $i-families.fa -e rmblast -xsmall -s -gff -pa 12
在NCBI下载的基因组默认为软屏蔽,使用前只需要改一下名(NCBI的每条fasta的名字太长了,输入会有错误)。
输入文件:
一个配置文件(包含基因组路径,树信息,编号),类似下面这个图
而实际上相当于两个文件:软屏蔽的基因组文件和树文件。注意一个点,基因组里面不要对contig或者scaffld按物种名重新命名,Cactus会帮你重新命名上。然后每条contig里面不能有. _等特殊字符,这个记得检查好(有一些有也行,但是建议不要冒险)
这时候有一个问题,我特喵的比对就是为了建树,结果你比对让我先有个树,这不是孬谭吗? 不过这个问题作者确实给了回答,就是这个树可以 粗略建一建,不用特别准,毕竟cactus的来源是百鸟计划,鸟类里面不清楚的系统发育多的要死,所以实际上随便建一个就行,比如jolytree或者mashtree。 如果物种少可以用jolytree,物种超过几十个几百个考虑mashtree。 Mashtree是一种无比对的建树方式,虽然不太准(甚至不准的很离谱),但是用来做比对足以。
mashtree *.fasta > results.dnd #构建系统发育树
nw_reroot results.dnd > rooted.results.dnd #定根
之后进行Cactus比对,输出文件是HAL格式,HAL是一种压缩过的二进制格式,可以通过cactus-hal2maf / haltools转成MAF格式。
推荐参数: -refGenome xxx --chunkSize 500000 --dupeMode single --noAncestors
提取时一定要有参考基因组。 --dupeMode single只提取单拷贝; --noAncestors 不包含构建好的祖先序列 chunkSize随便选,大一点结果好,只是大一点提取应该会慢。
注意一下从HAL提出来的MAF还有点问题,还要进行sort和过滤
过滤主要有几个地方要过滤,一个是过滤出包含所有物种的MAF(只有所有物种都有的片段才能用来构建系统发育树等下游分析),然后是要过滤掉较小的片段(根据19年蝴蝶的science,过滤掉小于150bp的共线性块),这两个可以用MafFilter来实现。
这个过滤完后发现还有一个问题,就是存在duplication 的row,存在这个东西,下游的一些软件是没法识别的,比如最经典的比较基因组MAF格式下游处理工具PHAST包。
---------------------分隔符-----------------————————————————————————————————————————
至于下游做CNE等分析,先split
~/mafSplit _.bed maf/ maf -byTarget -useFullSequenceName
然后挨个sort一下用Cactus的mafSorter
提CDS等可以看另一篇maffilter的文章。
---------------------分隔符-----------------
Cactus比对的详细参数准备整个付费流程,写好了更新
共有 0 条评论