基因组共线性工具MCScanX使用说明

基因组共线性工具MCScanX使用说明

简介

MCScanX工具集对MCScan算法进行了调整,用于检测共线性和同线性区域,还增加了可视化和下游分析。。MCscanX有三个核心工具,以及12个下游分析工具

实际使用

第一步: BLASTP比对

根据"MCScanX: a toolkit for detection and evolutionary analysis of gene synteny and collinearity",在使用BLASTP时需要注意如下事项:

  • 如果一个基因有多个转录本,只选择注释中的第一条
  • 寻找同源序列时,每个基因都要和自身以及其他基因组比较
  • BLASTP的输出格式为Tabular(-outfmt 6)
  • 保留前5条最佳比对序列(num_alignments 5)
  • E值的阈值设置为1e-5(-evalue 1e-5)

注:上面的选项基于NCBI BLAST+

以拟南芥和水稻为例,拟南芥和水稻的基因组和注释文件都可以在EnsemblPlants

# arabidopsis thaliana
wget ftp://ftp.ensemblgenomes.org/pub/plants/release-41/fasta/arabidopsis_thaliana/pep/Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
wget ftp://ftp.ensemblgenomes.org/pub/plants/release-41/gff3/arabidopsis_thaliana/Arabidopsis_thaliana.TAIR10.41.gff3.gz
# rice
wget ftp://ftp.ensemblgenomes.org/pub/plants/release-41/fasta/oryza_sativa/pep/Oryza_sativa.IRGSP-1.0.pep.all.fa.gz
wget ftp://ftp.ensemblgenomes.org/pub/plants/release-41/gff3/oryza_sativa/Oryza_sativa.IRGSP-1.0.41.gff3.gz

在建立BLAST的索引之前,我们需要对序列进行预处理,仅保留每个基因中的一个转录本。由于不同物种的基因命名方法不同,所以得先用less查看GFF文件,对其有一个总体的了解。

例如拟南芥的编号都是ATXGXXXXX.Y, 并且后面".Y"都是从1开始, 而水稻的是OsXXgXXXXXX表示基因,OsXXtXXXXXX-0Y表示转录本, 而"0Y",一些转录本是只有00,而另一些则是从01开始,有02,03等。我写了一个脚本用于提取每个基因对应的最长转录本以及它的位置

我在提取的同时删除了一些不需要的字符串

zcat Arabidopsis_thaliana.TAIR10.41.gff3.gz| python get_the_longest_transcripts.py | sed -e 's/gene://' -e 's/transcript://'> at_lst_gene.txt
zcat Oryza_sativa.IRGSP-1.0.41.gff3.gz | python get_the_longest_transcripts.py | sed -e 's/gene://' -e 's/transcript://' > os_lst_gene.txt

同时考虑到我们也不一定需要叶绿体和线粒体的信息,所以还可以进一步删掉这些数据

sed -i -e '/Mt/d' -e '/Pt/d' at_lst_gene.txt
sed -i -e '/Mt/d' -e '/Pt/d' os_lst_gene.txt

使用seqkit grep提取蛋白质序列.

seqkit grep -j 20 -f <(cut  -f 2 at_lst_gene.txt ) Arabidopsis_thaliana.TAIR10.pep.all.fa.gz | sed 's/\..*//' > at.fa
seqkit grep -j 20 -f <(cut  -f 2 os_lst_gene.txt) Oryza_sativa.IRGSP-1.0.pep.all.fa.gz | sed 's/-.*//'> os.fa

随后用makeblastdb建立索引

makeblastdb -in at.fa -dbtype prot -out index/at -parse_seqids

最后进行蛋白比对

blastp -query os.fa -db index/at -out at_rice.blast -evalue 1e-5 -num_threads 100 -outfmt 6 -num_alignments 5

注: 如果要做基因组组内和组间的共线性,那么就要将这两个基因组先进行合并, cat at.fa rice.fa > all.fa, 然后用all.fa建索引,用all.fa进行比对

第二步:构建gff

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

sp# gene    starting_position  ending_position

基于我的get_the_longest_transcripts.py脚本,很容易用awk进行创建该信息

awk 'BEGIN{OFS="\t"} {print "at"$3,$1,$4,$5}' at_lst_gene.txt > at_os.gff
awk 'BEGIN{OFS="\t"} {print "at"$3,$1,$4,$5}' os_lst_gene.txt >> at_os.gff

第三步: MCScanX寻找共线性区块

在经过上面两步后,后续的MCScanX基本上是瞬间完成

MCScanX ./at_rice

如果你在输出信息中发现 0 matches imported (xxxxx discarded), 那么一定是你的GFF文件里的基因名和blast结果的基因名不对应导致

输出文件分为两个:

第一个是at_rice.collinearity, 记录着共线性区块(collinear blocks)

共线性文本文件

第二个则是以网页的形式展示共线性情况。

网页展示

说明:第一列是每个基因座位的重复深度,第二列是参考基因(串联重复以红色标注,仅在序列既用于建立索引又用于搜索时才出现),之后的每一列都是匹配的共线性区块

下游分析

MCSCANX提供了一些列Java程序和Perl脚本用于下游分析,建议在Perl脚本的开头加入#!/usr/bin/env perl,此外部分软件需要安装bioPerl。

  • group_collinear_genes.pl
  • add_ka_and_ks_to_collinearity.pl
  • detect_collinearity_within_gene_families.pl
  • origin_enrichment_analysis.pl
  • detect_collinear_tandem_arrays
  • dissect_multiple_alignment

MCSCANX自带了一些结果可视化相关的工具(如下),可以快速做图了解大致情况,但是画的图不好看,后续会尝试自己用R语言实现作图。

  • dot_plotter.java
  • dual_synteny_plotter.java
  • circle_plotter.java
  • bar_plotter.java
  • family_circle_plotter.java
  • family_tree_plotter.java

软件安装

一般而言,按照下面的方法就能顺利安装。显然我的过程并没有那么顺利,所以我得多说几句

wget http://chibba.pgml.uga.edu/mcscan2/MCScanX.zip
unzip MCScanX.zip
cd MCScanx
make
# 在.bashrc添加下有分析java类的路径, /path/to 一定要替换成自己的实际路径
CLASSPATH=/path/to/MCScanx/downstream_analyses

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

报错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:46: error: ‘getopt’ was not declared in this scope"
解决方案: 打开"detect_collinear_tandem_arrays.cc",在顶部加上#include <getopt.h>

报错4: "make[1]: javac: Command not found"
解决方案: 在https://www.oracle.com/technetwork/java/javase/downloads/index.html下载JDK,安装Java环境
经历了以上挫折后终于编译成功,下一步就是测试软件能否顺利运行。在MCScanx文件夹下有一个data目录, 里面准备了一些测试数据

./MCScanx data/at
duplicate_gene_classifier data/at
detect_collinear_tandem_arrays -g data/at.gff -b data/at.blast -c data/at.collinearity -o data/at.syn

脚本:get_the_longest_transcripts.py, 输出文件分为: 基因ID, 最长的转录本ID,染色体编号,start, end, strand

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

推荐阅读更多精彩内容