共线性分析 | MCscanX

MCScanX是另外一个检测基因共线性和进化分析的常用工具之一,2012发表至今引用数已经有好几百了,作者之一的唐海宝老师是国内植物基因组学生信分析、软件开发领域的大拿,在学习使用MCScanx之前推荐先看看他08年介绍gene synteny和collinearity概念的science文章以及MCScanX软件算法文章。

Tang H, Bowers J E, Wang X, et al. Synteny and Collinearity in Plant Genomes[J]. Science, 2008, 320(5875):486-488.

Wang Y, Tang H, DeBarry JD, Tan X, Li J, Wang X, Lee TH, Jin H, Marler B, Guo H, Kissinger JC, Paterson AH. (2012) MCScanX: a toolkit for detection and evolutionary analysis of gene synteny andcollinearity. Nucleic Acids Res, 40(7): e49.

image

MCScanX是MCScan的升级版本:
1)用法更简单,只需要blastp m8格式的比对文件和经过简单处理的gff作为输入文件即可;
2)参数更多元,可以设置gap的阈值;
3)输出文件中有html网页版的展示,可以看到第一列是duplicaiton depth,tandem genes用红色标出;
4)优化了算法,缓和了物种间不同gene densities的影响

一、下载和安装

从下面链接中下载:https://github.com/wyp1125/MCScanX

unzip MCscanX.zip
cd MCScanX
make

MCScanX、MCScanX_h、duplicate_gene_classifier这三个是核心程序,downstream_analyses中包含12个下游分析程序,可以画图构树,还是很方便很强大的。

make报错:

g++ struct.cc mcscan.cc read_data.cc out_utils.cc dagchainer.cc msa.cc permutation.cc -o MCScanX
msa.cc: In function ‘void msa_main(const char*)’:
msa.cc:289:22: error: ‘chdir’ was not declared in this scope
if (chdir(html_fn)<0)
^
make: *** [mcscanx] Error 1

这个错误的原因是,MCScanX 不支持64位系统。如果要在 64位上运行,需要修改下源代码。需要给MCScanX 目录下的 msa.h, dissect_multiple_alignment.h, and detect_collinear_tandem_arrays.h 这三个文件内容的最前面添加(#include <unistd.h>)。

正确的做法是用 vi 打开文件,分别在三个文件( msa.h, dissect_multiple_alignment.h, and detect_collinear_tandem_arrays.h)的最前面添加:

image

如果还报错,检查安装是的用户,不要是root用户。不要切换到root安装,普通用户sudo安装就可以.

二、常规运行

1. 准备 gff 文件

MCscanX要求的gff文件和标准的gff文件不一样,它只有四列, 其中"sp#"的sp意味着你要用2个字母代表物种(多个字母好像也不影响结果),#则表示是哪条染色体。而"gene"则要是你蛋白序列的基因名。

可以用awk得到,第一列是物种名和染色体编号,第二列是基因号,第三列是起始位置,第四列是终止位置(用 tab 分割)

image

2. blastp(protein-protein BLAST)比对

我们用data中的at和vv作为例子来测试。

注:这里是找at和vv两个基因组组内和组间的共线性,因为想同时知道物种内和物种间的共线性,所以在blast之前把at和vv的基因组fasta cat到一起,既做database,又做query,如果只想知道组间的共线性,那么就任取一个基因组为database,另一个做query。

# 合并 
cat at.fa vv.fa >all.fasta

# 建库  
makeblastdb -in all.fa -dbtype prot -parse_seqids -outall  (-logfile allpep.log -title all)

# 蛋白比对 
blastp -query all.fa -db all -out at_vv.blast -evalue 1e-10 -num_threads 16 -outfmt 6 -num_alignments 5

小tips

  • blast这一步是限速步骤,可以把all.fasta文件cut成多份,同时并行跑节省时间;
  • 亲自验证该软件最多只能做5个物种的共线性。。。不管输入再多物种结果只有五个!!

得到的 at_vv.blast 文件,格式如下:

image

3. 运行MCScanX

输入文件只有两个,一个是blast得到的at_vv.blast文件,一个是变相的gff文件at_vv.gff:两个文件必须前缀相同且在同一个文件夹内

MCScanX at_vv

其他参数设置

其他参数设置

运行成功后得到at_vv.html,at_vv.collinearity,at_vv.tandem输出文件。

at_vv.collinearity 里记录了共线性信息,可以看到collinear gene的数目和占比以及具体的比对信息

image

三、下游分析及可视化

常用的下游分析有

duplicate_gene_classifier XX 
  • 0:singleton(非重复基因)
  • 1:dispersed(不是2,3,4的其它重复)
  • 2:proximal(染色体附近的重复,但是不相邻)
  • 3:tandem(串联重复)
  • 4:WGD/segmental(在共线性区域的共线性基因))
dissect_multiple_alignment -g XX.gff -cXX.collinearity -o XX.dis
group_collinear_genes.pl -i XX.collinearity-o XX.collinear.groups

可视化:软件自带的分析包不能调颜色,所以推荐用python版的MCscan(JCVI 包)。

这里直接使用下游dot_plotter, dual_synteny_plotter, circle_plotter和bar_plotter4个java包更便捷

image

gff和collinearity是上一步的输出,还需要编辑一个control文件,设置需要展示的染色体信息(和gff的第一列一致)

1. dot_plotter

dot.ctl control文件信息如下图所示:

image
java dot_plotter -g at_vv.gff -s at_vv.collinearity -c dot.ctl -o dot.PNG
image

2. dual_synteny_plotter

java dual_synteny_plotter -g at_vv.gff -s at_vv.collinearity -c dual_synteny.ctl -o dual_synteny.PNG
image

3. circle_plotter

java circle_plotter -g at_vv.gff -s at_vv.collinearity -c circle.ctl -o circle.PNG

这个图我更喜欢用circos去画,感觉更专业一点。

image

4. bar_plotter

java bar_plotter -g at_vv.gff -s at_vv.collinearity -c bar.ctl -o bar.PNG
image

其它分析

当然还有很多其它的分析包例如:duplicate_gene_classifier,detect_collinear_tandem_arrays,dissect_multiple_alignments对结果做进一步分析,借助其他相关信。

还可以做origin_enrichment_analysis,family_tree_plotter,add_ka_and_ks_to_collinearity等。

perl ../../downstream_analyses/add_kaks_to_synteny.pl -i at.collinearity -d at.cds -o at.collinearity.kaks
image

https://github.com/wyp1125/MCScanX
http://events.jianshu.io/p/519061e5d515
https://www.jianshu.com/p/d671a5b75216

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容