kaks calculator批量計算多個基因的選擇壓力kaks值


歡迎來到"bio生物信息"的世界

今天給大家帶來“批量計算kaks值”的技能。

關於kaks的背景知識我就不介紹了,感興趣的自行搜索,這里直接開始講怎么批量計算kaks值。

1 文件准備

首先准備兩個文件,一個是基因的cds序列,一個是蛋白質序列。

cds序列和蛋白質可以在ensembl網站找到:http://ftp.ensembl.org/pub/current_fasta/

這兩個文件的示例如下:

cds序列文件cds.fa

>gene1
ATGGAGGTTGCAATGGTGAGTGCGGAGAGCTCAGGATGCAACAGTCACATGCCTTACGGT
TATGCTGCCCAGGCCCGGGCCCGGGAGCGGGAGAGGCTTGCTCACTCCAGGGCAGCTGCG
GCAGCTGCCGTTGCAGCGGCCACAGCTGCCGTCGAAGGAAGTGGGGGTTCTGGTGGGGGG

>gene2
ATGGAGGTTGCAATGGTGAGTGCGGAGAGCTCAGGGTGCAACAGTCACATGCCTTATGGT
TATGCTGCCCAGGCCCGGGCCCGGGAGCGGGAGAGGCTTGCTCACTCCAGGGCAGCTGCA
GCAGCTGCTGTTGCAGCGGCCACAGCTGCTGTCGAAGGTAGCGGGGGTTCTGGTGGGGGC
TCCCAC

>gene3
ATGGAGGTGGCGATGGTGAGTGCGGAGAGCTCAGGGTGCAACAGTCACATGCCTTACGGG
TACGCGGCCCAGGCCCGGGCCCGGGAGCGGGAGAGGCTGGCTCACTCCCGGGCGGCGGCG
GCCGCCGCCGTCGCGGCTGCCACGGCTGCCGTGGAAGGCAGTGGGGGGCCTGG

蛋白質序列pep.fa

>gene1
MEVAMVSAESSGCNSHMPYGYAAQARARERERLAHSRAAAAAAVAAATAAVEGSGGSGGG

>gene2
MEVAMVSAESSRCNSHMPYGYAAQARARERERLAHSRAAAAAAVAAATAAVEGSGSSGGGSH

>gene3
MEVAMVSAESSGCNSHMPYGYAAQARARERERLAHSRAAAAAAVAAAKAAVEGSGGP

注意:cds.fapep.fa文件的序列ID號(gene1,2,3)要一致。

2 對蛋白質序列pep.fa進行比對

進行蛋白質序列比對前,需要先安裝mafft軟件。

下載mafft軟件:

wget https://mafft.cbrc.jp/alignment/software/mafft-7.453-with-extensions-src.tgz

tar -zxvf mafft-7.453-with-extensions-src.tgz

cd mafft-7.453-with-extensions/core

安裝:

1)有root權限用戶安裝法:

make clean

make

su

make install

2)無root權限用戶安裝法:

vi Makefile

進入makefile文件后,修改第一行和第三行,如下所示兩張圖,分別為修改前和修改后(請務必修改你有權限的路徑):

安裝成功后,輸入命令mafft --auto pep.fa > alig_pep.fa

生成的alig_pep.fa文件如下:

3 將比對好的蛋白質序列與cds序列比對

這一步需要下載pal2nal.pl文件

wget http://www.bork.embl.de/pal2nal/distribution/pal2nal.v14.tar.gz

tar -zxvf pal2nal.v14.tar.gz

cd pal2nal.v14/

下載后就能看見pal2nal.pl這個文件

隨后將蛋白質序列與cds序列比對

pal2nal.pl alig_pep.fa cds.fa -output fasta > cds_pep_aln.fa

比對好的cds_pep_aln.fa文件如下所示:

4 生成計算kaks值時的基因對

計算kaks值前需要先將cds_pep_aln.fa文件拆分:

csplit cds_pep_aln.fa /\>/ -n2 -s {*} -f gene -b "%1d.fa" ; rm gene0.fa

拆分后,會生成gene1.fagene2.fagene3.fa三個文件。

接下來,將生成的gene1.fagene2.fagene3.fa組成新的基因對gene1-gene2gene1-gene3gene2-gene3,見如下命令:

for i in $(seq 1 3)

do

cat gene1.fa gene${i}.fa > gene1_${i}.fa

done

cat gene2.fa gene3.fa > gene2_3.fa

生成如下幾個文件:

gene1_1.fa

gene1_2.fa

gene1_3.fa

gene2_3.fa

其中,gene1_2.fagene1_3.fagene2_3.fa為我們所需的基因對。

這里將他們提取成基因對,而不是多條序列進行計算的原因是,KaKs_Calculator這個軟件在處理多序列的輸入文件時,會報錯:Error. The size of two sequences in 'gene1&gene2' is not equal。我嘗試了很多遍,發現只能提取成基因對才不會報這種錯誤。當然,偶爾運氣好的時候,KaKs_Calculator是能處理多序列的kaks值的,為了防止出錯,我們還是將他們拆開計算好一點。

5 將gene1_2.fa、gene1_3.fa、gene2_3.fa文件轉化為axt文件

轉化為axt文件需要下載parseFastaIntoAXT.pl文件,文件地址:https://gitee.com/liaochenlanruo/kaks_pupline/blob/master/parseFastaIntoAXT.pl

下載后,輸入如下命令:

for i in *.fa

do

echo $i

perl parseFastaIntoAXT.pl $i

done

生成三個文件:

gene1_2.fa.axt

gene1_3.fa.axt

gene2_3.fa.axt

6 計算kaks值

下載安裝kakscalculator

下載鏈接:https://sourceforge.net/projects/kakscalculator2/

輸入以下命令:

for i in *.fa.axt

do

echo $i

KaKs_Calculator -i $i -o ${i%%.*}.kaks

done

生成三個文件:gene1_2.kaksgene1_3.kaksgene2_3.kaks

到這一步,批量計算kaks值的工作就已經搞定。

這里附上安裝kaks_calculator軟件可能會遇到報錯:
g++ -O -o AXTConvertor AXTConvertor.cpp -lstdc++ -lm
AXTConvertor.cpp: In function ?.ool readPhylip()?.
AXTConvertor.cpp:210:22: error: ?.toi?.was not declared in this scope
if (atoi(num.c_str())!=sequence.size()){

AXTConvertor.cpp: In function ?.ool readNexus()?.
AXTConvertor.cpp:338:39: error: ?.toi?.was not declared in this scope
if (sequence.size()!=atoi(num.c_str())) >{
make: *** [AXTConvertor] Error 1

解決方法在這里:

編輯KaKs.cpp文件,加上include "string.h"

編輯AXTConvertor.cpp文件,加上include "stdlib.h"

編輯GY94.cpp文件,加上 include "string.h"

如無報錯請忽略上述內容。


免責聲明!

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



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