Augustus 基因從頭預(yù)測

目前的從頭預(yù)測軟件大多是基于HMM(隱馬爾科夫鏈)和貝葉斯理論蜈亩,通過已有物種的注釋信息對軟件進(jìn)行訓(xùn)練括享,從訓(xùn)練結(jié)果中去推斷一段基因序列中可能的結(jié)構(gòu)愉粤,在這方面做的最好的工具是AUGUSTUS它可以僅使用序列信息進(jìn)行預(yù)測杀迹,也可以整合EST, cDNA, RNA-seq數(shù)據(jù)作為先驗?zāi)P瓦M(jìn)行預(yù)測劣针。

安裝

安裝較為復(fù)雜校镐,可選用conda進(jìn)行安裝

conda install augustus

使用

1.若有被訓(xùn)練的物種(augustus --species=help查看)

#使用一下代碼進(jìn)行預(yù)測基因,以擬南芥為例
augustus --species=arabidopsis test.fa > test.gff 

2.若不存在被訓(xùn)練過的物種捺典,需要進(jìn)行訓(xùn)練

  • 準(zhǔn)備訓(xùn)練集和測試集

根據(jù)Augutus的官方教程鸟廓,可靠的基因結(jié)構(gòu)序列的要求如下:

a. 提供基因的編碼部分,包含上游幾KB襟己。通常而言引谜,基因越多,效果越好擎浴,至少準(zhǔn)備200個基因以上员咽。還得保證這些基因中要有足夠多的外顯子,這樣子才能訓(xùn)練內(nèi)含子

b. 這些基因的基因結(jié)構(gòu)一定要足夠的準(zhǔn)確贮预。不過贝室,也不需要百分百的正確契讲,甚至注釋都不需要特別的完整,只要保證起始密碼子和終止密碼子的準(zhǔn)確是準(zhǔn)確的即可档玻。

c. 需要保證這些基因沒有冗余怀泊,也就是說不同序列如果有幾乎相同的注釋后氨基酸序列,那么僅僅取其中一個(AUGUSTUS教程的建議是:保證任意兩個基因在氨基酸水平上低于70%的相似度)误趴,這一步既可以避免過度擬合現(xiàn)象霹琼,也能用于檢驗預(yù)測的準(zhǔn)確性

d. 一條序列允許有多個基因,基因可以在正鏈也可以在負(fù)鏈凉当,但是這些基因間不能有重疊枣申,每個基因只要其中一個轉(zhuǎn)錄本,存放格式是GenBank

之后隨機(jī)將注釋數(shù)據(jù)集分成訓(xùn)練集和測試集看杭,為了保證測試集有統(tǒng)計學(xué)意義忠藤,因此測試集要足夠多的基因(100~200個),并且要足夠的隨機(jī)楼雹。

基因結(jié)構(gòu)集的可能來源有:

  • Genbank

  • EST/mRNA-seq的可變剪切聯(lián)配, 如PASA

  • 臨近物種蛋白的可變剪切聯(lián)配模孩,如GeneWise

  • 相關(guān)物種的數(shù)據(jù)

  • 預(yù)測基因的迭代訓(xùn)練

  • 訓(xùn)練流程

(1)格式轉(zhuǎn)換;基于選取物種的GFF3以及ref.fa 文件將其轉(zhuǎn)換為Genbank格式

# 以菠菜為例
perl gff2gbSmallDNA.pl spinach_gene_v1.gff3 spinach_genome_v1.fa 1000 genes.raw.gb

(2) 嘗試訓(xùn)練贮缅,捕捉錯誤

etraining --species=generic --stopCodonExcludedFromCDS=false genes.raw.gb 2> train.err

(3) 過濾掉可能錯誤掉基因結(jié)構(gòu)

cat train.err | perl -pe 's/.*in sequence (\S+): .*/$1/' >badgenes.lst
filterGenes.pl badgenes.lst genes.raw.gb > genes.gb

(4) 提取上一步顧慮后的genes.db中的蛋白 (其中第4-6步驟榨咐,也有人忽視)

grep '/gene' genes.gb |sort |uniq  |sed 's/\/gene=//g' |sed 's/\"http://g' |awk '{print $1}' >geneSet.lst
seqkit grep -f geneSet.lst spinach_pep_v1.fa >geneSet.lst.fa

(5) 將得到的蛋白序列進(jìn)行建庫,自身blastp比對谴供。根據(jù)比對結(jié)果块茁,如果基因間identity >= 70%,則只保留其中之一桂肌,再次得到一個過濾后的gff文件数焊,gene_filter.gff3

makeblastdb -in geneSet.lst.fa -dbtype prot -parse_seqids -out geneSet.lst.fa
blastp -db geneSet.lst.fa -query geneSet.lst.fa -out geneSet.lst.fa.blastp -evalue 1e-5 -outfmt 6 -num_threads 8
python delete_high_identity_gene.py geneSet.lst.fa.blastp Spinach_genome/spinach_gene_v1.gff3

其中,delete_high_identity_gene.py 可自行編寫

(6) 將得到的gene_filter.gff3 轉(zhuǎn)換為genbank 格式文件

perl gff2gbSmallDNA.pl  gene_filter.gff3  spinach_genome_v1.fa 1000 genes.gb.filter

(7) 將上一步過濾后的文件隨機(jī)分成兩份崎场,測試集和訓(xùn)練集佩耳。其中訓(xùn)練集的數(shù)目根據(jù)gb的LOCUS數(shù)目決定,至少要有200

## 100 為測試集的基因數(shù)目谭跨,其余為訓(xùn)練集
randomSplit.pl genes.gb.filter 100

(8) 初始化HMM參數(shù)設(shè)置(在相應(yīng)~/minicode/config/species/relative name中形成參數(shù),若之前已經(jīng)存在該物種名字蚕愤,則需要刪除),并進(jìn)行訓(xùn)練

new_species.pl --species=spinach
etraining --species=spinach genes.gb.filter.train

(9) 用測試數(shù)據(jù)集檢驗預(yù)測效果饺蚊,這里可以比較我們訓(xùn)練的結(jié)果萍诱,和近緣已訓(xùn)練物種的訓(xùn)練效果

augustus --species=spinach genes.gb.filter.test | tee firsttest.out
augustus --species=arabidopsis genes.gb.filter.test | tee firsttest_ara.out

在 firsttest.out 的尾部可以查看預(yù)測結(jié)果的統(tǒng)計,首先需要解釋幾個統(tǒng)計學(xué)概念

  • TP(True Positive): 預(yù)測為真污呼,事實為真
  • FP(False Positive): 預(yù)測為真裕坊,事實為假
  • FN(False Negative): 預(yù)測為假,事實為真
  • TN(True Negative): 預(yù)測為假燕酷,事實為假

基于上述籍凝,引出下面兩個概念周瞎。"sensitivity"等于TP/(TP+FP)(預(yù)測到的百分率), 是預(yù)測為真且實際為真的占你所有認(rèn)為是真的比例."specificity"等于TN/(TN+FN)(其中正確的百分率), 是預(yù)測為假且實際為假的占你所有認(rèn)為是假的比例饵蒂。我們希望在預(yù)測中声诸,盡可能地不要發(fā)生誤判,也就是沒有基因的地方不要找出基因退盯,有基因的地方不要漏掉基因彼乌。

(10) 很有可能的一種情況是,我們第一次的訓(xùn)練結(jié)果沒有已有訓(xùn)練的效果好渊迁,所以我們需要進(jìn)行循環(huán)訓(xùn)練找到最優(yōu)參數(shù)慰照;

optimize_augustus.pl --species=spinach --rounds=5 --cpus=8 genes.gb.filter.train
--rounds: 進(jìn)行r輪優(yōu)化,默認(rèn)為5
--cpus:使用n個cups進(jìn)行計算琉朽,默認(rèn)為1毒租;該直與kfold相等即可,kfold默認(rèn)為8

(11) 再次進(jìn)行訓(xùn)練箱叁,并檢驗墅垮,進(jìn)行前后比較

etraining --species=spinach genes.gb.filter.train
augustus --species=spinach genes.gb.filter.test | tee secondtest.out
  • 如果此時你的gene level的sensitivity還是低于20%說明Trainning set不夠大,請?zhí)砑訑?shù)據(jù)耕漱;

(12) 進(jìn)行CRF訓(xùn)練
CRF: conditional random field算色, 進(jìn)行進(jìn)行CRF時,將備份/species/target species/中的所有參數(shù)

etraining --species=spinach --CRF=1 genes.gb.filter.train
augustus --species=spinach genes.gb.filter.test | tee secondtest.out.withCRF

比較CRF前后預(yù)測的精確性孤个,若升高則使用,若降低沛简,則用上一步結(jié)果

  • 如果你獲得了滿意的Trainning結(jié)果齐鲤,請開始prediction

下面命令可用于從 firsttest.out 中提取氨基酸序列

sed -n '/^#/p' firsttest.out | sed -n '/start/,/\]/p' | sed 's/# start gene />/g;s/protein sequence \= \[//g;s/#//g;s/\]//g;s/^\s//g' >seq.fa

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市椒楣,隨后出現(xiàn)的幾起案子给郊,更是在濱河造成了極大的恐慌,老刑警劉巖捧灰,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淆九,死亡現(xiàn)場離奇詭異,居然都是意外死亡毛俏,警方通過查閱死者的電腦和手機(jī)炭庙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來煌寇,“玉大人焕蹄,你說我怎么就攤上這事》埽” “怎么了腻脏?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵鸦泳,是天一觀的道長。 經(jīng)常有香客問我永品,道長做鹰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任鼎姐,我火速辦了婚禮钾麸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘症见。我一直安慰自己喂走,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布谋作。 她就那樣靜靜地躺著芋肠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪遵蚜。 梳的紋絲不亂的頭發(fā)上帖池,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機(jī)與錄音吭净,去河邊找鬼睡汹。 笑死,一個胖子當(dāng)著我的面吹牛寂殉,可吹牛的內(nèi)容都是我干的囚巴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼友扰,長吁一口氣:“原來是場噩夢啊……” “哼彤叉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起村怪,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤秽浇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后甚负,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柬焕,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年梭域,在試婚紗的時候發(fā)現(xiàn)自己被綠了斑举。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡病涨,死狀恐怖懂昂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤凌彬,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布沸柔,位于F島的核電站,受9級特大地震影響铲敛,放射性物質(zhì)發(fā)生泄漏褐澎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一伐蒋、第九天 我趴在偏房一處隱蔽的房頂上張望工三。 院中可真熱鬧,春花似錦先鱼、人聲如沸俭正。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掸读。三九已至,卻和暖如春宏多,著一層夾襖步出監(jiān)牢的瞬間儿惫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工伸但, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留肾请,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓更胖,卻偏偏與公主長得像铛铁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子却妨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345