MCScanX ‖ 安装、报错解决方法及简单使用

1.简介:

(1)介绍:
MCScanX采用改进了的MCScan算法,分析基因组内或者基因组间的共线性区块。它利用两个物种蛋白质(或核酸)blastp比对结果,再结合这些蛋白质基因在基因组中的位置(处理过的gff),得到两个物种基因组的共线性区块。如果是分析基因组内的共线性区块,物种内蛋白质自己比对自己就可以。
mannual:http://chibba.pgml.uga.edu/mcscan2/documentation/manual.pdf

软件包含两个部分:1.MCScan算法;2.后期的可视化分析。目前这个软件可以在MAC OS(需要提前安装xcode)和 linux(需要Java SE Develoment Kit和“libpng”)上使用。MCScanX包括MCScanX、MCScanX_h、duplicate_gene_classifier三个主程序,位于主文件夹中;还有12个下游分析程序位于downstream_analyses文件夹。注意:优化版本中,13年发布的MCScanX-transposed是用来检测基因组内或组间的transposed gene重复。

(2)发表文献:Wang Y , Tang H , Debarry J D , et al. MCScanX : a toolkit for detection and evolutionary analysis of gene synteny and collinearity[J]. Nucleic Acids Research, 2012, 40(7):e49-e49

2.安装

pengzw@super-server:~$ wget http://chibba.pgml.uga.edu/mcscan2/MCScanX.zip
pengzw@super-server:~$ unzip MCScanX.zip -d ~/biosoft/ #安装在~/biosoft/下
pengzw@super-server:~/biosoft/MCScanX$ cd ~/biosoft/MCScanX
pengzw@super-server:~/biosoft/MCScanX$ make #会出现如下报错,修改文件以后再make

pengzw@super-server:~/biosoft/MCScanX$ make ##出现以下信息,则证明安装对啦
g++ struct.cc mcscan.cc read_data.cc out_utils.cc dagchainer.cc msa.cc permutation.cc -o MCScanX
g++ struct.cc mcscan_h.cc read_homology.cc out_homology.cc dagchainer.cc msa.cc permutation.cc -o MCScanX_h
g++ struct.cc dup_classifier.cc read_data.cc out_utils.cc dagchainer.cc cls.cc permutation.cc -o duplicate_gene_classifier
g++ dissect_multiple_alignment.cc -o downstream_analyses/dissect_multiple_alignment
g++ detect_collinear_tandem_arrays.cc -o downstream_analyses/detect_collinear_tandem_arrays
cd downstream_analyses/ && make
make[1]: Entering directory '/home/pengzw/biosoft/MCScanX/downstream_analyses'
javac -g family_circle_plotter.java
javac -g dot_plotter.java
javac -g family_tree_plotter.java
javac -g family_tree_plotter_show_length.java
javac -g bar_plotter.java
javac -g dual_synteny_plotter.java
javac -g circle_plotter.java
javac -g family_tree_plotter_chr.java
make[1]: Leaving directory '/home//pengzw/biosoft/MCScanX/downstream_analyses'

pengzw@super-server:~/biosoft/MCScanX$ echo 'PATH=$PATH:~/biosoft/MCScanX/ ' >> ~/.bashrc
pengzw@super-server:~/biosoft/MCScanX$ source ~/.bashrc
pengzw@super-server:~/biosoft/MCScanX$ MCScanX 

报错如图:是因为MCScanX 不支持64位系统。如果要在 64位上运行,需要加入相关库文件


1.png

报错1: "msa.cc:289:9: error: ‘chdir’ was not declared in this scope"
解决方案: 打开msa.cc,在顶部加上#include <unistd.h>

2.png

报错2: "dissect_multiple_alignment.cc:252:44: error: ‘getopt’ was not declared in this scope"
解决方案: 打开"dissect_multiple_alignment.cc",在顶部加上#include <getopt.h>

报错3: "detect_collinear_tandem_arrays.cc:286:17: error: ‘getopt’ was not declared in this scope"
解决方案: 打开"detect_collinear_tandem_arrays.cc",在顶部加上#include <getopt.h>

3.png

报错4: "make[1]: javac: Command not found"
解决方案: 在https://www.oracle.com/technetwork/java/javase/downloads/index.html下载JDK,安装Java环境

有权限就直接sudo,因为我真的很懒。

pengzw@super-server:~$ sudo apt install openjdk-8-jdk

3.使用

(1).准备文件xyz.gff

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

sp# gene    starting_position  ending_position

gff3文件第九列是=连接,利用awk指定多个分隔符就可得到

pengzw@super-server:~/reference/At$ awk -F "[= \t]" '$3 == "gene" {print$1"\t"$11"\t"$4"\t"$5}' Athaliana_167_TAIR10.gene.gff3|head -n 10
Chr1    AT1G01010   3631    5899
Chr1    AT1G01020   5928    8737
Chr1    AT1G01030   11649   13714
Chr1    AT1G01040   23146   31227
Chr1    AT1G01050   31170   33153
Chr1    AT1G01060   33379   37871
Chr1    AT1G01070   38752   40944
Chr1    AT1G01073   44677   44787
Chr1    AT1G01080   45296   47019
Chr1    AT1G01090   47485   49286

(2)xyz.blast文件

ncbi-blast+安装(sudo安装可能不是最新版):
pengzw@super-server:~$ sudo apt install ncbi-blast+
## 或者本地安装
pengzw@super-server:~$ mkdir biosoft
pengzw@super-server:~$ wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.8.1+-x64-linux.tar.gz
pengzw@super-server:~$ tar zxvf ncbi-blast-2.8.1+-x64-linux.tar.gz -C ~/biosoft/
pengzw@super-server:~$ cd ~/biosoft/ncbi-blast-2.8.1+/bin
pengzw@super-server:~/biosoft/ncbi-blast-2.8.1+/bin$ ls #绿色为程序
blastdb_aliastool  blast_formatter  blastx             dustmasker             makeblastdb    psiblast    segmasker  update_blastdb.pl
blastdbcheck       blastn           convert2blastmask  get_species_taxids.sh  makembindex    rpsblast    tblastn    windowmasker
blastdbcmd         blastp           deltablast         legacy_blast.pl        makeprofiledb  rpstblastn  tblastx
pengzw@super-server:~/biosoft/ncbi-blast-2.8.1+/bin$ echo 'PATH=$PATH:~/biosoft/ncbi-blast-2.8.1+/bin/' >> ~/.bashrc
pengzw@super-server:~/biosoft/ncbi-blast-2.8.1+/bin$ source ~/.bashrc
pengzw@super-server:~/biosoft/ncbi-blast-2.8.1+/bin$ makeblastdb
blast建库(索引):
makeblastdb -in refpep.fa -dbtype prot -parse_seqids -out refpep.db
options:

-in :带格式化的序列文件,必须为fa
-dbtype :数据库类型,prot或者nucl
-out:数据库索引名
......

blast比对:
blastp -query yourpep.fa -db refpep.db -out xyz.blast -evalue 1e-10 -num_threads 24 -outfmt 6 -num_alignments 5
options:

-parse_seqids:解析序列标识,一般都要加上
-evalue:E值的阈值设置官网推荐的1e-10
-num_threads 24:线程为24
-num_alignments5:是取最好的5个比对结果
-outfmt 6:输出文件格式,总共有12种格式,6是tab格式

注意:

1.需要对序列进行预处理,仅保留每个基因中的一个转录本。
2.注意统一gff和blast文件中ID,不然无结果(0 matches )。
3.blastp format6:12列

1 2 3 4 5 6 7 8 9 10 11 12
queryID dbID identity% length mismatch gap querypos1 querypos2 dbpos1 dbpos2 e-value bit-score

4.如果要做基因组组内和组间的共线性,那么就要将这两个基因组先进行合并, cat 1genome.fa 2genome.fa > all.fa, 然后用all.fa建索引,用all.fa进行比对。文件生成后也需要整合 cat 1genome.gff 2genome.gff > all.gff。

(3)使用MCScanX分析基因组共线性区块:

./MCScanX dir/xyz #xyz.blast and xyz.gff在同一文件夹下
options:

[Usage] ./bin/mcscan2 prefix_fn [options]
-k MATCH_SCORE, final score=MATCH_SCORE+NUM_GAPS*GAP_PENALTY
(default: 50)
-g GAP_PENALTY, gap penalty (default: -1)
-s MATCH_SIZE, number of genes required to call a collinear block
(default: 5)
-e E_VALUE, alignment significance (default: 1e-05)
-m MAX_GAPS, maximum gaps allowed (default: 25)
-a only builds the pairwise blocks (.aligns file)
-b patterns of collinear blocks. 0:intra- and inter-species (default); 1:intra-species; 2:inter-species -h print this help page

运行结果如图:
4.png

4.结果

注意:0 matches imported (xxxxx discarded), 那么一定是你的GFF文件里的基因名和blast结果的基因名不对应导致

程序输出3个文件:

Filename Description
xyz.collinaeriry 共性性区域数据。可以是同一物种类的共线性区域,也可以是物种间的共线性区域
xyz.html 在网页中浏览,可以直观看到在各个染色体上共线性的状态。灰色表示染色体序列;红色表示染色体上的串联基因;黄色表示共线性基因。
xyz.tandem 基因串联数据。2个或2个以上的同源基因在基因组上紧挨在一起。

核心程序:

  • MCScanX 检测共线性区域,并比对到参考染色体上。
  • MCScanX_h 和MCScanX类似,只不过输入文件是成对的用tab隔开的同源基因。
  • duplicate_gene_classifier 基因分类

5.下游分析及可视化

12个下游分析程序:

1.detect_collinear_tandem_arrays
2.dissect_multiple_alignment
3.add_ka_and_ks_to_collinearity.pl
4.group_collinear_genes.pl
5.detect_collinearity_within_gene_families.pl
6.origin_enrichment_analysis.pl
7.dot_plotter.java
8.dual_synteny_plotter.java
9.circle_plotter.java
10.bar_plotter.java
11.family_circle_plotter.java
12.family_tree_plotter.java

(1)duplicate_gene_classifier(基因分类):

其中0,1,2,3,4分别代表了哪五大类:
0:singleton(非重复基因)
1:dispersed(不是2,3,4的其它重复)
2:proximal(染色体附近的重复,但是不相邻)
3:tandem(串联重复)
4:WGD/segmental(在共线性区域的共线性基因)

(2)detect_collinearity_within_gene_families.pl:提取基因家族的分析结果

1)准备gene_family_file:txt, 以tab键分隔


5.jpg

2)detect_collinearity_within_gene_families.pl用法:得到复制基因对

perl detect_collinearity_within_gene_families.pl -i gene_family_file.txt -d xyz.collinearity -o
output_file

3)对基因家族的复制基因对分类:

安装:

wget http://chibba.pgml.uga.edu/mcscan2/transposed/MCScanX-transposed.zip
unzip MCScanX-transposed.zip -d ~/biosoft/
cd ~/biodoft/MCScanX-transposed
make

提取结果:

perl MCScanX-transposed.pl -i data -t at -c al,br,cp,pt,vv -o result/at_result -x 3

绘图:

按照manual中画图,
若结果不满意可以下载分析结果用circos软件绘图。

6.参考

1)http://chibba.pgml.uga.edu/mcscan2/transposed/example.php
2)http://chibba.pgml.uga.edu/mcscan2/documentation/manual.pdf
3)http://blog.biochen.com/archives/category/bioinfo
4)https://www.jianshu.com/p/8373e50722f6
5)https://www.jianshu.com/p/740cb9eccf2b

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

推荐阅读更多精彩内容