基因組共線性分析工具MCScanX


 軟件簡介

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------

關注下方公眾號可獲得更多精彩


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM