基因组共线性分析工具MCScanX

时间:2024-02-23 10:27:40

 软件简介

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

软件安装

 进入官网http://chibba.pgml.uga.edu/mcscan2/#tm,下载安装

1 unzip MCscanX.zip
2 cd MCScanX
3 make

 

 软件使用

  •  所需要文件

     两个或多个物种的gff文件,蛋白序列(** 该软件最多能做5个物种的共线性

  • 第一步:构建索引,进行blastp比对

注意!这里是找at和vv两个基因组组内和组间的共线性,因为想同时知道物种内和物种间的共线性,所以在blast之前把at和vv的基因组facat到一起,既做database,又做query,如果只想知道组间的共线性,那么就任取一个基因组为database,另一个做query
注意! 如果一个基因有多个转录本,只选择注释中的第一条
1 ## 合并
2 cat at.fa vv.fa >>all.fa
3 
4 ## 建库
5 makeblastdb -in all.fa -dbtype prot -out index/all -parse_seqids
6 
7 ## 比对
8 blastp -query all.fa -db index/all -out all.blast -evalue 1e-5 -num_threads 10 -outfmt 6 -num_alignments 5
  • 第二步:构建gff文件 

MCscanX要求的gff文件和标准的gff文件不一样,它只有四列, 其中"sp#"的sp意味着你要用2个字母代表物种,#则表示是哪条染色体。而"gene"则要是你蛋白序列的基因名
注意:all.gff, all.blastp 前缀需要一样,并且在同一文件夹下
1 sp# gene    starting_position  ending_position

 根据物种的gff3文件利用awk 快速得到MCscanX要求的gff文件

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

1 MCScanX ./all

 

  •  结果文件

 输出文件分为两个:

        第一个是at_rice.collinearity, 记录着共线性区块(collinear blocks), 可以选择共线性区块基因大于10以上为可信区域

        第二个是一个网页格式

  •  输出共线性基因的位置信息

  •  1 #!/usr/bin/env python
     2 # _*_ coding: utf-8 _*_
     3 
     4 import  sys,re
     5 
     6 gene_info = {}
     7 syn_info = {}
     8 
     9 IN = sys.argv[1]  ##*.gff
    10 IN1 = sys.argv[2] ## *.collinearity
    11 IN2  = sys.argv[3] ## number,int;
    12 
    13 with open(IN) as f,\
    14     open(IN1) as f1,\
    15     open("%s_syn_region_info" %IN.strip(".gff"),"w") as o:
    16     for i in f:
    17         i=i.strip().split()
    18         gene_info[i[1]] = [i[0],i[2],i[3]]
    19     for x in f1:
    20         if \'## Alignment\' in x:
    21             res=x.strip()
    22             if res not in syn_info:
    23                 syn_info[res] = []
    24         elif \'#\' not in x:
    25             x=x.strip().split()
    26             tem = x[-3]+"&&"+x[-2]
    27             syn_info[res].append(tem)
    28     for k,v in syn_info.items():
    29         num = re.search(r" N=(\d+) ",k).group(1)
    30         if int(num) >= 10:
    31             for n in v:
    32               #  print n
    33                 gene1 = n.split("&&")[0]
    34                 gene2 = n.split("&&")[1]
    35                 gene1_chr = gene_info[gene1][0]
    36                 gene1_start = gene_info[gene1][1]
    37                 gene1_end = gene_info[gene1][2]
    38                 gene2_chr = gene_info[gene2][0]
    39                 gene2_start = gene_info[gene2][1]
    40                 gene2_end = gene_info[gene2][2]
    41                 o.write("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n"%(gene1_chr,gene1,gene1_start,gene1_end,gene2,gene2_chr,gene2_start,gene2_end))

     

 

 

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

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

 

 

 

------END------

关注下方公众号可获得更多精彩