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

文章來源:http://www.cnblogs.com/chenwenyan/

1 文件準備

首先準備兩個文件,一個是基因的cds序列,一個是蛋白質(zhì)序列。

cds序列和蛋白質(zhì)可以在ensembl網(wǎng)站找到:http://ftp.ensembl.org/pub/current_fasta/

這兩個文件的示例如下:

cds序列文件cds.fa

>gene1

ATGGAGGTTGCAATGGTGAGTGCGGAGAGCTCAGGATGCAACAGTCACATGCCTTACGGT

TATGCTGCCCAGGCCCGGGCCCGGGAGCGGGAGAGGCTTGCTCACTCCAGGGCAGCTGCG

GCAGCTGCCGTTGCAGCGGCCACAGCTGCCGTCGAAGGAAGTGGGGGTTCTGGTGGGGGG

>gene2

ATGGAGGTTGCAATGGTGAGTGCGGAGAGCTCAGGGTGCAACAGTCACATGCCTTATGGT

TATGCTGCCCAGGCCCGGGCCCGGGAGCGGGAGAGGCTTGCTCACTCCAGGGCAGCTGCA

GCAGCTGCTGTTGCAGCGGCCACAGCTGCTGTCGAAGGTAGCGGGGGTTCTGGTGGGGGC

TCCCAC

>gene3

ATGGAGGTGGCGATGGTGAGTGCGGAGAGCTCAGGGTGCAACAGTCACATGCCTTACGGG

TACGCGGCCCAGGCCCGGGCCCGGGAGCGGGAGAGGCTGGCTCACTCCCGGGCGGCGGCG

GCCGCCGCCGTCGCGGCTGCCACGGCTGCCGTGGAAGGCAGTGGGGGGCCTGG

蛋白質(zhì)序列pep.fa

>gene1

MEVAMVSAESSGCNSHMPYGYAAQARARERERLAHSRAAAAAAVAAATAAVEGSGGSGGG

>gene2

MEVAMVSAESSRCNSHMPYGYAAQARARERERLAHSRAAAAAAVAAATAAVEGSGSSGGGSH

>gene3

MEVAMVSAESSGCNSHMPYGYAAQARARERERLAHSRAAAAAAVAAAKAAVEGSGGP

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

2 對蛋白質(zhì)序列pep.fa進行比對

進行蛋白質(zhì)序列比對前,需要先安裝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權(quán)限用戶安裝法:

make clean

make

su

make install

2)無root權(quán)限用戶安裝法:

vi Makefile

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


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

生成的alig_pep.fa文件如下:


3 將比對好的蛋白質(zhì)序列與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這個文件

隨后將蛋白質(zhì)序列與cds序列比對

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

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


4 生成計算kaks值時的基因?qū)?/p>

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

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

拆分后,會生成gene1.fa?、gene2.fa、?gene3.fa三個文件。

接下來,將生成的gene1.fa、?gene2.fa、?gene3.fa組成新的基因?qū)ene1-gene2、gene1-gene3、gene2-gene3,見如下命令:

fori in $(seq13)docatgene1.fa gene${i}.fa > gene1_${i}.fadonecatgene2.fa gene3.fa > gene2_3.fa

生成如下幾個文件:

gene1_1.fa

gene1_2.fa

gene1_3.fa

gene2_3.fa

其中,gene1_2.fa、gene1_3.fa、gene2_3.fa為我們所需的基因?qū)Α?/p>

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

5 將gene1_2.fa、gene1_3.fa、gene2_3.fa文件轉(zhuǎn)化為axt文件

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

下載后,輸入如下命令:

foriin*.fadoecho$iperl parseFastaIntoAXT.pl$idone

生成三個文件:

gene1_2.fa.axt

gene1_3.fa.axt

gene2_3.fa.axt

6 計算kaks值

下載安裝kakscalculator

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

輸入以下命令:

foriin*.fa.axtdoecho$iKaKs_Calculator -i$i-o${i%%.*}.kaksdone

生成三個文件:gene1_2.kaks、gene1_3.kaks、gene2_3.kaks

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

這里附上安裝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"

如無報錯請忽略上述內(nèi)容。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容