基因組組裝完成后,或者是完成了草圖,就不可避免遇到一個問題,需要對基因組序列進行注釋。注釋之前首先得構建基因模型,有三種策略:
- 從頭注釋(de novo prediction):通過已有的概率模型來預測基因結構,在預測剪切位點和UTR區準確性較低
- 同源預測(homology-based prediction):有一些基因蛋白在相近物種間的保守型搞,所以可以使用已有的高質量近緣物種注釋信息通過序列聯配的方式確定外顯子邊界和剪切位點
- 基于轉錄組預測(transcriptome-based prediction):通過物種的RNA-seq數據輔助注釋,能夠較為準確的確定剪切位點和外顯子區域。
每一種方法都有自己的優缺點,所以最后需要用EvidenceModeler(EVM)和GLEAN工具進行整合,合并成完整的基因結構。基于可靠的基因結構,后續可才是功能注釋,蛋白功能域注釋,基因本體論注釋,通路注釋等。
那么基因注釋重要嗎?可以說是非常重要了,尤其是高通量測序非常便宜的現在。你可以花不到一萬的價格對600M的物種進行100X的普通文庫測序,然后拼接出草圖。但是這個草圖的價值還需要你進行注釋后才能顯現出來。有可能你和諾貝爾獎就差一個注釋的基因組。
從案例中學習套路
陸地棉基因組注釋
文章標題為“Sequencing of allotetraploid cotton (Gossypium hirsutum L. acc. TM-1) provides a resource for fiber improvement”.
同源注釋:從Phytozome上下載了7個植物的基因組蛋白序列(Arabidopsis thaliana, Carica papaya, Glycine max, G. raimondii, Populus trichocarpa, Theobroma cacao and Vitis vinifera), 使用 TblastN 將蛋白序列比對到組裝序列上,E-value的閾值為1e-5. 將不同蛋白的BLAST的hits用 Solar 軟件進行合并。GeneWise 根據每個BLAST hit的對應基因區域預測完整的基因結構。
從頭預測:先得構建repeat-mask genome, 在這個基礎上就用 August, Genescan, GlimmerHMM, Geneid 和 SNAP 預測編碼區
轉錄組預測:用Tophat將RNA-seq數據比對到組裝序列上,然后用cufflinks組裝轉錄本形成基因模型。
綜上,使用 EvidenceModeler(EVM) 將上面的結果組裝成非冗余的基因結構。進一步根據Cscore > 0.5,peptide coverage > 0.5 和CDS overlaping with TE進行篩選。還有過濾掉超過30%編碼區被Pfam或Interprot TE domain的注釋的基因模型。
這些基因模型使用BLASTP進行功能注釋,所用數據庫為SWiss-Prot和TrEMBL.蛋白功能使用InterProScan和HMMER注釋,數據庫為InterPro和Pfam。GO注釋則是直接雇傭InterPro和Pfam注釋得到的對應entry。通路注釋使用KEGG數據庫。
Cardamine hirsuta基因組注釋
文章標題為“The Cardamine hirsuta genome offers insight into the evolution of morphological diversity”。
同源注釋:使用 GenomeThreader 以擬南芥為剪切模型,以及PlantsGDB resourc上 Brassica rapa (v1.1), A. thaliana(TAIR10), A. lyrata (v6), tomato (v3.6), poplar (v2) 和 A. thaliana (version PUT-169), B. napus (version PUT-172) EST assemblies 的完整的代表性蛋白集。
轉錄本預測: 將 C. hirsuta RNA-seq數據比對到基因序列,然后用cufflinks拼接
從頭預測:轉錄本預測得到的潛在蛋白編碼轉錄本使用網頁工具 ORFpredictor 進行預測, 同時用 blastx 和 A. thalina 進行比較,選擇90%序列相似度和最高5%長度差異的部分從而保證保留完整的編碼框(有啟動子和終止子)。 這些基因模型根據相互之間的相似度和重疊度進行聚類,高度相似(>95)從聚類中剔除,保證非冗余訓練集。為了訓練gene finder, 它們選隨機選取了2000個位點,20%是單個外顯子基因。從頭預測工具為 August , GlimmerHMM, Geneid 和 SNAP . 此外還用了Fgenesh+, 以雙子葉特異矩陣為參數進行預測。
最后使用JIGSAW算法根據以上結果進行訓練,隨后再次用JIGSAW對每個基因模型計算統計學權重。
可變剪切模型則是基于苗、葉、花和果實的RNA-seq比對組裝結果。
GO注釋使用AHRD流程
小結
舉的2個例子都是植物,主要是植物基因組不僅是組裝,注釋都是一大難題。因為植物基因組有大量的重復區,假基因,還有很多新的蛋白編碼基因和非編碼基因,比如說玉米基因組80%以上都是重復區域。然后當我檢索這兩篇文章所用工具的時候,我不經意或者說不可避免就遇到了這個網站 http://www.plantgdb.org/ , 一個整合植物基因組學工具和資源的網站,但是這個網站似乎2年沒有更新了。當然這個網站也挺不錯,http://bioservices.usd.edu/gsap.html, 他給出了一套完整的注釋流程以及每一步的輸入和輸出情況。
此外,2017年在《Briefings in Bioinformatics》發表的"Plant genome and transcriptome annotations: from misconceptions to simple solution" 則是從五個角度對植物基因組注釋做了很完整的總結
- 植物科學的常見本體
- 功能注釋的常用數據庫和資源
- 已注釋的植物基因組意味著什么
- 一個自動化注釋流程
- 一個參考流程圖,用來說明使用公用數據庫注釋植物基因組/轉錄組的常規步驟
以上,通過套路我們對整個基因組注釋有一個大概的了解,后續就需要通過實際操作來理解細節。
基因組注釋
當我們談到基因注釋的時候,我們通常認為注釋是指“對基因功能的描述”,比如說A基因在細胞的那個部分,通過招募B來調控C,從而引起病變。但是基因結構也是注釋的一種形式,而且是先決條件,也就是在看似隨機的ATCG的堿基排列中找到特殊的部分,而這些特殊的區域有著不一樣的功能。
在正式啟動基因組注釋項目之前,需要先檢查組裝是否合格,比如contig N50的長度是否大于基因的平均長度,使用BUSCO/CEGMA檢查基因的完整性,如果不滿足要求,可能輸出結果中大部分的contig中都不存在一個完整的基因結構。當組裝得到的contig符合要求時,就可以開始基因組注釋環節,這一步分為三步:基因結構預測,基因功能注釋,可視化和質控。
基因組結構注釋
基因結構注釋應是功能注釋的先決條件,完整的真核生物基因組注釋流程需要如下步驟:
- 必要的基因組重復序列屏蔽
- 從頭尋找基因, 可用工具為: GeneMarkHMM, FGENESH, Augustus, SNAP, GlimmerHMM, Genscan
- 同源蛋白預測, 內含子分析: GeneWIse, Exonerate, GenomeThreader
- 將EST序列,全長cDNA序列和Trinity/Cufflinks/Stringtie組裝的轉錄組和基因組聯配
- 如果第4步用到了多個數據來源,使用PASA基于重疊情況進行聯配
- 使用EvidenceModler根據上述結果進行整合
- 使用PASA更新EVM的一致性預測,增加UTR注釋和可變剪切注釋
- 必要的人工檢查
基本上是套路化的分析流程,也就有一些工具通過整合幾步開發了流程管理工具,比如說BRAKER結合了GeneMark和Augustus,MAKER2整合了SNAP,Exonerate,雖然BRAKER說自己的效果比MAKER2好,但是用的人似乎不多,根據web of knowledge統計,兩者的引用率分別是44,283, 當然BRAKER是2016,MAKER2是2011,后者在時間上有優勢。
這里準備先按部就班的按照流程進行注釋,所用的數據是 Cardamine hirsuta , 數據下載方式如下
# Cardamine hirsutat基因組數據
mkdir chi_annotation && cd chi_annotation
wget http://chi.mpipz.mpg.de/download/sequences/chi_v1.fa
cat chi_v1.fa | tr 'atcg' 'ATCG' > chi_unmasked.fa
# 注釋結果
wget http://chi.mpipz.mpg.de/download/annotations/carhr38.gff
# Cardamine hirsutat轉錄組數據
mkdir rna-seq && cd rna-seq
wget -4 -q -A '*.fastq.gz' -np -nd -r 2 http://chi.mpipz.mpg.de/download/fruit_rnaseq/cardamine_hirsuta/ &
wget -4 -q -A '*.fastq.gz' -np -nd -r 2 http://chi.mpipz.mpg.de/download/leaf_rnaseq/cardamine_hirsuta/ &
軟件安裝不在正文中出現,會放在附錄中,除了某些特別復雜的軟件。
01-重復序列屏蔽
重復屏蔽:真核生物的基因組存在大量的重復序列,植物基因組的重復序列甚至可以高達80%。盡管重復序列對維持染色體的空間結構、基因的表達調控、遺傳重組等都具有重要作用,但是卻會導致BLAST的結果出現大量假陽性,增加基因結構的預測的計算壓力甚至影響注釋正確性。基因組中的重復按照序列特征可以分為兩類:串聯重復(tandem repeats)和散在重復(interspersed repeats).
鑒定基因組重復區域的方法有兩種:一種基于文庫(library)的同源(homology)方法,該文庫收集了其他物種的某一種重復的一致性序列,通過相似性來鑒定重復;另一種是從頭預測(de novo),將序列和自己比較或者是高頻K-mer來鑒定重復。
目前重復序列注釋主要軟件就是RepeatMasker和RepeatModel。這里要注意分析的fasta的ID不能過長,不然會報錯。如果序列ID過長可以使用bioawk進行轉換,后續用到RepatModel不支持多行存放序列的fasta格式。
直接使用同源注釋工具RepeatMasker尋找重復序列:
mkdir 00-RepeatMask
~/opt/biosoft/RepeatMasker/RepeatMasker -e ncbi -species arabidopsis -pa 40 -gff -dir 00-RepeatMask/ chi_unmasked.fa
# -e ncbi
# -species 選擇物種 用~/opt/biosoft/RepeatMasker/util/queryRepeatDatabase.pl -tree 了解
# -lib 增加額外數據庫,
# -pa 并行計算
# -gff 輸出gff注釋
# -dir 輸出路徑
# annotation with the library produced by RepeatModel
輸出結果中主要關注如下三個(其中xxx表示一類文件名)
- xxx.fa.masked, 將重復序列用N代替
- xxx.fa.out.gff, 以gff2形式存放重復序列出現的位置
- xxx.fa.tbl, 該文件記錄著分類信息
cat 00-RepeatMask/chi_unmasked.fa.tbl
==================================================
file name: chi_unmasked.fa
sequences: 624
total length: 198654690 bp (191241357 bp excl N/X-runs)
GC level: 35.24 %
bases masked: 35410625 bp ( 17.83 %)
==================================================
也就是說該物種198M中有將近18%的重復序列,作為參考,擬南芥125Mb 14%重復序列, 水稻389M,36%重復,人類基因組是3G,50%左右的重復序列。
使用最后的chi_unmasked.fa.masked
用于下一步的基因結構預測。
注:當然也可以用RepeatModel進行從頭預測,得到的預測結果后續可以整合到RepeatMasker
# de novo predict
~/opt/biosoft/RepeatModeler-open-1.0.11/BuildDatabase -name test -engine ncbi output.fa
~/opt/biosoft/RepeatModeler-open-1.0.11/RepeatModeler -database test
這一步速度極其慢,由于我們的目的只是獲取屏蔽后序列降低后續從頭預測的壓力,所以可以先不做這一步。在后續分析重復序列在基因組進化上的作用時可以做這一步。下
如果從頭預測的結果與同源預測的結果有30%以上的overlap,并且分類不一致,會把從頭預測的結果過濾掉。從頭預測與同源預測結果有overlap,但是分類一致的,都會保留。但是統計的時候不會重復統計。
02-從頭(ab initio)預測基因
基于已有模型或無監督訓練
目前的從頭預測軟件大多是基于HMM(隱馬爾科夫鏈)和貝葉斯理論,通過已有物種的注釋信息對軟件進行訓練,從訓練結果中去推斷一段基因序列中可能的結構,在這方面做的最好的工具是AUGUSTUS 它可以僅使用序列信息進行預測,也可以整合EST, cDNA, RNA-seq數據作為先驗模型進行預測。
AUGUSTUS的無root安裝比較麻煩,我折騰了好幾天最后卒,不過辛虧有bioconda,conda create -n annotation augustus=3.3
.
它的使用看起來很簡單,我們可以嘗試使用一段擬南芥已知的基因序列讓其預測,比如前8k序列
seqkit faidx TAIR10.fa Chr1:1-8000 > test.fa
augustus --speices=arabidopsis test.fa > test.gff
如果僅僅看兩者的CDS區,結果完全一致,相當于看過一遍參考答案去做題目,題目都做對了。
注:已經被訓練的物種信息可以用
augustus --species=help
查看。
在不使用RNA-seq數據的情況下,可以基于擬南芥的訓練模型進行預測,采用下面的方式多條染色體并行augustus
mkdir 01-augustsus && cd 01-augustsus
ln ../00-RepeatMask/chi_unmasked.fa.masked genome.fa
seqkit split genome.fa #結果文件在genome.fa.split
find genome.fa.split/ -type f -name "*.fa" | parallel -j 30 augustus --species=arabidopsis --gff3=on >> temp.gff #并行處理
join_aug_pred.pl < temp.gff | grep -v '^#' > temp.joined.gff
bedtools sort -i temp.joined.gff > augustsus.gff
AUGUSTUS依賴于已有的模型,而GeneMark-ES/ET則是唯一一款支持無監督訓練模型,之后再識別真核基因組蛋白編碼區的工具。
gmes_petap.pl --ES --sequence genome.fa --cores 50
最后得到的是genemark.gtf,是標準的GTF格式,可以使用Sequence Ontology Project提供的gtf2gff3.pl進行轉換
wget http://genes.mit.edu/burgelab/miso/scripts/gtf2gff3.pl
chmod 755 gtf2gff3.pl
gtf2gff3.pl genemark.gtf | bedtools sort -i - > genemark.gff
不同從頭預測軟件的實際效果可以通過在IGV中加載文章提供的gff文件和預測后的gff文件進行比較,一般會存在如下幾個問題:
- 基因多了,或者少了,也就是假陽性和假陰性現象
- UTR區域難以預測,這個比較正常
- 未正確識別可變剪切位點,導致前后幾個基因識別成一個基因
考慮到轉錄組測序已經非常便宜,可以通過該物種的RNA-seq提供覆蓋度信息進行預測。
基于轉錄組數據預測
根據已有的模型或者自訓練可以正確預測很大一部分的基因,但如果需要提高預測的正確性,還需要額外的信息。在過去就需要提供物種本身的cDNA, EST,而現在更多的是基于轉錄組序列進行訓練。盡管RNA-seq數據在基因組上的比對情況能夠推測出內含子位置,根據覆蓋度可以推測出外顯子和非編碼區的邊界,但是僅僅依賴于RNA-seq的覆蓋不能可信地推測出蛋白編碼區(Hoff K.J. Stanke M. 2015).
AUGUSTUS可以利用轉錄組比對數據中的位置信息來訓練模型,GeneMark-ET可以利用RNA-seq得到的內含子位點信息自我訓練HMM參數,進行基因預測。BRAKER2將兩者進行整合,使用GeneMark-ET根據RNA-seq無監督訓練模型尋找基因,然后用AUGUSTUS進行模型訓練,最后完成基因預測
首先使用hisat2根據屏蔽后的參考序列建立索引,進行比對。
# 項目根目錄
mkdir index
hisat2-build 01-augustus/genome.fa index/chi_masked
hisat2 -p 20 -x index/chi_masked -1 rna-seq/leaf_ox_r1_1.fastq.gz -2 rna-seq/leaf_ox_r1_2.fastq.gz | samtools sort -@ 10 > 02-barker/leaf_ox_r1.bam &
isat2 -p 20 -x index/chi_masked -1 rna-seq/ox_flower9_rep1_1.fastq.gz -2 rna-seq/ox_flower9_rep1_2.fastq.gz | samtools sort -@ 10 > 02-barker/ox_flower9.bam &
hisat2 -p 20 -x index/chi_masked -1 rna-seq/ox_flower16_rep1_1.fastq.gz -2 rna-seq/ox_flower16_rep1_2.fastq.gz | samtools sort -@ 10 > 02-barker/ox_flower16.bam &
然后,以未屏蔽重復序列的參考序列和BAM文件作為輸入,讓BRAKER2(安裝會稍顯麻煩,因為依賴許多軟件)進行預測。
braker.pl --gff3 --cores 50 --species=carhr --genome=chi_unmasked.fa --bam=02-barker/leaf_ox_r1.bam,02-barker/ox_flower16.bam,02-barker/ox_flower9.bam
# --gff3: 輸出GFF3格式
# --genome: 基因組序列
# --bam: 比對后的BAM文件,允許多個
# --cores: 處理核心數
最后會得到如下輸出文件
- hintsfile.gff: 從RNA-seq比對結果的BAM文件中提取,其中內含子用于訓練GeneMark-EX, 使用所有特征訓練AUGUSTUS
- GeneMark-ET/genemark.gtf: GeneMark-EX根據RNA-seq數據訓練后預測的基因
- augustus.hints.gff: AUGUSTUS輸出文件
將augustus.hints.gff3和文章的注釋文件(carhr38.gtf)比較,見下圖:
其實不難發現,在不考慮UTR區域情況下,兩者的差別其實更多表現是基因數目上,其實也就是利用轉錄組數據推測結構的問題所在,沒有覆蓋的區域到底是真的沒有基因,還是有基因結構只不過所用組織沒有表達,或者說那個區域其實是假基因?此外,如果基因間隔區域很短,有時候還會錯誤地把兩個不同的基因預測為一個基因。因此,應該注重RNA-seq數據在剪切位點識別和外顯子邊界確定的優勢。
03-同源預測基因結構
同源預測(homology prediction)利用近緣物種已知基因進行序列比對,找到同源序列。然后在同源序列的基礎上,根據基因信號如剪切信號、基因起始和終止密碼子對基因結構進行預測,如下示意圖:
相對于從頭預測的“大海撈針”,同源預測相當于先用一塊磁鐵在基因組大海中縮小了可能區域,然后從可能區域中鑒定基因結構。在10年之前,當時RNA-seq還沒有普及, 只有少部分物種才有EST序列和cDNA序列的情況下,這的確是一個比較好的策略,那么問題來了,現在還需要進行這一步嗎,如果需要是出于那種角度考慮呢?
在同源預測上,目前看到的大部分基因組文章都是基于TBLASTN + GeneWise,這可能是因為大部分基因組文章都是國內做的,這些注釋自然而言用的就是公司的流程,然后目前國內的公司大多數又和某一家公司有一些關系。不過最近的3010水稻泛基因組用的是MAKER, 感謝部分提到這部分工作是由M. Roa(Philippine Genome Center Core Facilities for Bioinformatics, Department of Science)做的,算是一股清流吧。當然我在看Cardamine hirsuta基因組注釋文章,發現它們同源注釋部分用的是GenomeThreader, 該工具在本篇文章成文時的3月之前又更新了。
GeneWise的網站說它目前由Ewan Birney維護,只不過不繼續開發了,因為Guy Slater開發Exonerate解決了GeneWise存在的很多問題,并且速度快了1000倍。考慮到目前只有GeneWise能利用HMM根據蛋白找DNA,而且ENSEMBL的注釋流程也有一些核心模塊用到了它,所以作者依舊在緩慢的開發這個工具(自2.4.1已經10多年沒有更新了),當然這個工具也是非常的慢。盡管這一步不會用到GeneWise作為我們的同源注釋選項,但是我們可以嘗試用GeneWise手工注釋一個基因,主要步驟如下
- 第一步: 使用BLASTX,根據dna序列搜索到蛋白序列,只需要第一個最佳比對結果
- 第二步: 選擇最佳比對的氨基酸序列
- 第三步: 將dna序列前后延長2kb,與氨基酸序列一并傳入給genewise進行同源預測
提取前5K序列,然后選擇在TAIR上用BLASTX進行比對
seqkit faidx chi_unmasked.fa Chr1:1-5000 > chr1_5k.fa
選擇第一個比對結果中的氨基酸序列,和前5k的DNA序列一并作為GeneWise的輸入
最后的結果出乎了我的意料
讓我們跳過這個尷尬的環節,畢竟很可能是我不太熟練使用工作所致。這里說點我的看法,除非你真的沒有轉錄組數據,必須要用到同源物種的蛋白進行預測,或者你手動處理幾個基因,否則不建議使用這個工具,因為你可能連安裝都搞不定。
讓我們用GenomeThreader基于上面的DNA序列和氨基酸序列進行同源基因結構預測吧
gth -genomic chr1_5k.fa -protein cer.fa -intermediate -gff3out
# 其中cer.fa就是AT1G02205.2的氨基酸序列
結果一致,并且從RNA-seq的覆蓋情況也符合預期
Chr1 gth exon 1027 1197 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 1027 1197
Chr1 gth exon 1275 1448 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 1275 1448
Chr1 gth exon 1541 1662 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 1555 1662
Chr1 gth exon 1807 2007 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 1807 2007
Chr1 gth exon 2085 2192 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 2085 2192
Chr1 gth exon 2294 2669 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 2294 2669
Chr1 gth exon 3636 3855 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 3636 3855
Chr1 gth exon 3971 4203 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 3971 4203
Chr1 gth exon 4325 4548 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 4325 4548
Chr1 gth exon 4676 4735 Parent=gene1 Chr1 MIPS_CARH_v3.8 exon 4676 4735
全基因組范圍預測流程如下:
準備cDNA和或protein序列:在https://phytozome.jgi.doe.gov/p下載靠譜的物種的蛋白質序列,如 Arabidopsis thaliana, Oryza sativa, Brassica rapa, 查找文獻尋找目前該物種的已有EST/cDNA序列,或者RNA-seq從頭組裝轉錄組。這里僅考慮用同源物種的蛋白序列進行比對分析,轉錄組從頭組裝數據用于PASA整體比對到參考基因組和更新已有的基因解雇。
分別測試下不同物種的同源注釋結果
#run seperately
gth -species arabidopsis -translationtable 1 -gff3 -intermediate -protein ~/db/protein_db/Athaliana_167_TAIR10.protein.fa.gz -genomic chi_unmasked.fa -o 03-genomethreader/Athaliana.gff3 &
gth -species arabidopsis -translationtable 1 -gff3 -intermediate -protein ~/db/protein_db/BrapaFPsc_277_v1.3.protein.fa.gz -genomic chi_unmasked.fa -o 03-genomethreader/Brapa.gff3 &
gth -species arabidopsis -translationtable 1 -gff3 -intermediate -protein ~/db/protein_db/Osativa_323_v7.0.protein.fa.gz -genomic chi_unmasked.fa -o 03-genomethreader/Osativa.gff3 &
在定性角度上來看,同源注釋的結果和從頭預測的沒啥差別, 其中B. rapa和A. thaliana和C. hirsuta都屬于十字花科,而O. sativa是禾本科, 所以前兩者預測的效果好。
當然實際的同源注釋流程中不能是單個物種分別預測,應該是將所有的蛋白序列進行合并,然后用BLASTX找到最優的聯配,之后用GenomeThreader進行預測。PASA流程提到的UniRef90作為同源注釋的搜索數據庫可能是更好的選擇,由于UniRef優先選擇哪些人工審查、注釋質量高、來源于模式動植物的蛋白,所以可靠性相對于直接使用同源物中可能更高。
BLASTX + GenomeThreader的代碼探索中
04-RNA-seq的兩種使用策略
對于RNA-seq數據,有兩種使用策略,一種是使用HISAT2 + StringTie先比對再組裝, 一種是從頭組裝,然后使用PASA將轉錄本比對到基因組上。
基于HISAT2 + StringTie
首先,使用HISAT2將RNA-seq數據比對到參考基因組, 這一步和之前相似,但是要增加一個參數--dta
,使得StingTie能更好的利用雙端信息
hisat2-build 01-augustus/genome.fa index/chi_masked
hisat2 --dta -p 20 -x index/chi_masked -1 rna-seq/leaf_ox_r1_1.fastq.gz -2 rna-seq/leaf_ox_r1_2.fastq.gz | samtools sort -@ 10 > rna-seq/leaf_ox_r1.bam &
hisat2 --dta -p 20 -x index/chi_masked -1 rna-seq/ox_flower9_rep1_1.fastq.gz -2 rna-seq/ox_flower9_rep1_2.fastq.gz | samtools sort -@ 10 > rna-seq/ox_flower9.bam &
hisat2 --dta -p 20 -x index/chi_masked -1 rna-seq/ox_flower16_rep1_1.fastq.gz -2 rna-seq/ox_flower16_rep1_2.fastq.gz | samtools sort -@ 10 > rna-seq/ox_flower16.bam &
samtools merge -@ 10 rna-seq/merged.bam rna-seq/leaf_ox_r1.bam rna-seq/ox_flower9.bam rna-seq/ox_flower16.bam
然后用StringTie進行轉錄本預測
stringtie -p 10 -o rna-seq/merged.gtf rna-seq/merged.bam
對于后續的EvidenceModeler而言,它不需要UTR信息,只需要編碼區CDS,需要用TransDecoder進行編碼區預測
util/cufflinks_gtf_genome_to_cdna_fasta.pl merged.gtf input/chi_masked.fa > transcripts.fasta
util/cufflinks_gtf_to_alignment_gff3.pl merged.gtf > transcripts.gff3
TransDecoder.LongOrfs -t transcripts.fasta
TransDecoder.Predict -t transcripts.fasta
util/cdna_alignment_orf_to_genome_orf.pl \
transcripts.fasta.transdecoder.gff3 \
transcripts.gff3 \
transcripts.fasta > transcripts.fasta.transdecoder.genome.gff3
最后結果transcripts.fasta.transdecoder.gff3
用于提供給EvidenceModeler
基于PASA
在多年以前,那個基因組組裝還沒有白菜價,只有幾個模式物種基因組的時代,對于一個未測序的基因組,研究者如果要研究某一個基因的功能,大多會通過同源物種相似基因設計PCR引物,然后去擴增cDNA. 如果是一個已知基因組的物種,如果要大規模識別基因, 研究者通常會使用EST(expressed sequence tags)序列。
相對于基于算法的從頭預測,cDNA和EST序列更能夠真實的反應出一個基因的真實結構,如可變剪切、UTR和Poly-A位點。PASA(Progam to Assemble Spliced Alignments)流程最早用于擬南芥基因組注釋,最初的設計是通過將全長(full-length)cDNA和EST比對到參考基因組上,去發現和更新基因組注釋。其中FL-cDNA和EST序列對最后結果的權重不同。
這是以前的故事,現在的故事是二代轉錄組以及一些三代轉錄組數據,那么如何處理這些數據呢?我認為三代轉錄組相對于過去的FL-cDNA,而二代轉錄組數據經過拼接后可以看作是更長的EST序列。由于目前最普及的還是普通的mRNA-seq, 也就只介紹這部分流程。
考慮到我還沒有研究過三代的全長轉錄組,分析過數據,這里的思考極有可能出錯,后續可能會修改這一部分思考。
轉錄組組裝使用Trinity(conda安裝)
cd rna-seq
Trinity --seqType fq --CPU 50 --max_memory 64G --left leaf_ox_r1_1.fastq.gz,ox_flower16_rep1_1.fastq.gz,ox_flower9_rep1_1.fastq.gz --right leaf_ox_r1_2.fastq.gz,ox_flower16_rep1_2.fastq.gz,ox_flower9_rep1_2.fastq.gz &
PASA是由30多個命令組成的流程,相關命令位于PASApipeline/scripts
,為了適應不同的分析,有些參數需要通過修改配置文件更改,
cp ~/opt/biosoft/PASApipeline/pasa_conf/pasa.alignAssembly.Template.txt alignAssembly.config
# 修改如下內容
DATABASE=database.sqlite
validate_alignments_in_db.dbi:--MIN_PERCENT_ALIGNED=80
validate_alignments_in_db.dbi:--MIN_AVG_PER_ID=80
上述幾行配置文件表明SQLite3數據庫的名字,設置了scripts/validate_alignments_in_db.dbi
的幾個參數, 表示聯配程度和相似程度。后續以Trinity組裝結果和參考基因組作為輸入,運行程序:
~/opt/biosoft/PASApipeline/scripts/Launch_PASA_pipeline.pl -c alignAssembly.config -C -R -g ../chi_unmasked.fa -t ../rna-seq/trinity_out_dir/Trinity.fasta --ALIGNERS blat,gmap
最后結果如下:
- database.sqlite.pasa_assemblies_described.txt
- database.sqlite.pasa_assemblies.gff3
- database.sqlite.pasa_assemblies.gtf
- database.sqlite.pasa_assemblies.bed
其中gff3格式用于后續的分析。
目前的一些想法, 將從頭組裝的轉錄本比對到參考基因組上很大依賴組裝結果,所以和EST序列和cDNA相比,質量上還有一點差距。
05-整合預測結果
從頭預測,同源注釋和轉錄組整合都會得到一個預測結果,相當于收集了大量證據,下一步就是通過這些證據定義出更加可靠的基因結構,這一步可以通過人工排查,也可以使用EVidenceModeler(EVM). EVM只接受三類輸入文件:
-
gene_prediction.gff3
: 標準的GFF3格式,必須要有gene, mRNA, exon, CDS這些特征,用EVidenceModeler-1.1.1/EvmUtils/gff3_gene_prediction_file_validator.pl
驗證 -
protein_alignments.gff3
: 標準的GFF3格式,第9列要有ID信和和target信息, 標明是比對結果 -
transcript_alignments.gff3
:標準的GFF3格式,第9列要有ID信和和target信息,標明是比對結果
EVM對gene_prediction.gff3
有特殊的要求,就是GFF文件需要反映出一個基因的結構,gene->(mRNA -> (exon->cds(?))(+))(+), 表示一個基因可以有多個mRNA,即基因的可變剪接, 一個mRNA都可以由一個或者多個exon(外顯子), 外顯子可以是非翻譯區(UTR),也可以是編碼區(CDS). 而GlimmerHMM, SNAP等
這三類根據人為經驗來確定其可信度,從直覺上就是用PASA根據mRNA得到的結果高于從頭預測。
第一步:創建權重文件,第一列是來源類型(ABINITIO_PREDICTION, PROTEIN, TRANSCRIPT), 第二列對應著GFF3文件的第二列,第三列則是權重.我這里用了三個來源的數據。
mkdir 05-EVM && cd 05-EVM
#vim weights.txt
ABINITIO_PREDICTION augustus 4
TRANSCRIPT assembler-database.sqlite 7
OTHER_PREDICTION transdecoder 8
我覺得根據基因組引導組裝的ORF的可信度高于組裝后比對,所以得分和PASA差不多一樣高。從頭預測權重一般都是1,但是BRAKER可信度稍微高一點,可以在2~5之間。
第二步:分割原始數據, 用于后續并行. 為了降低內存消耗,--segmentsSize設置的大小需要少于1Mb(這里是100k), --overlapSize的不能太小,如果數學好,可用設置成基因平均長度加上2個標準差,數學不好,就設置成10K吧
cat transcripts.fasta.transdecoder.genome.gff3 ../braker/carhr/augustus.hints.gff3 > gene_predictions.gff3
ln ../04-align-transcript/database.sqlite.pasa_assemblies.gff3 transcript_alignments.gff3
~/opt/biosoft/EVidenceModeler-1.1.1/EvmUtils/partition_EVM_inputs.pl --genome ../chi_unmasked.fa --gene_predictions gene_predictions.gff3 --transcript_alignments transcript_alignments.gff3 --segmentSize 100000 --overlapSize 10000 --partition_listing partitions_list.out
第三步:創建并行運算命令并且執行
~/opt/biosoft/EVidenceModeler-1.1.1/EvmUtils/write_EVM_commands.pl --genome ../chi_unmasked.fa --weights `pwd`/weights.txt \
--gene_predictions gene_predictions.gff3 \
--transcript_alignments transcript_alignments.gff3 \
--output_file_name evm.out --partitions partitions_list.out > commands.list
parallel --jobs 10 < commands.list
第四步:合并并行結果
~/opt/biosoft/EVidenceModeler-1.1.1/EvmUtils/recombine_EVM_partial_outputs.pl --partitions partitions_list.out --output_file_name evm.out
第五步:結果轉換成GFF3
~/opt/biosoft/EVidenceModeler-1.1.1/EvmUtils/convert_EVM_outputs_to_GFF3.pl --partitions partitions_list.out --output evm.out --genome ../chi_unmasked.fa
find . -regex ".*evm.out.gff3" -exec cat {} \; | bedtools sort -i - > EVM.all.gff
當前權重設置下,EVM的結果更加嚴格,需要按照實際情況調整,增加其他證據。
06-可選步驟
注釋過濾:對于初步預測得到的基因,還可以稍微優化一下,例如剔除編碼少于50個AA的預測結果,將轉座子單獨放到一個文件中(軟件有TransposonPSI)。
這里基于gffread
先根據注釋信息提取所有的CDS序列,過濾出長度不足50AA的序列,基于這些序列過濾原來的的注釋
gffread EVM.all.gff -g input/genome.fa -y tr_cds.fa
bioawk -c fastx '$seq < 50 {print $comment}' tr_cds.fa | cut -d '=' -f 2 > short_aa_gene_list.txt
grep -v -w -f short_aa_gene_list.txt EvM.all.gff > filter.gff
使用PASA更新EVM結果:EVM結果不包括UTR區域和可變剪切的注釋信息,可以使用PASA進行更新。然而這部分已經無法逃避MySQL, 服務器上并沒有MySQL的權限,我需要學習Perl腳本進行修改。因此基因結構注釋到此先放一放。
07-基因編號
對每個基因實現編號,形如ABCD000010的效果,方便后續分析。如下代碼是基于EVM.all.gff,使用方法為python gffrename.py EVM_output.gff prefix > renamed.gff
.
#!/usr/bin/env python3
import re
import sys
if len(sys.argv) < 3:
sys.exit()
gff = open(sys.argv[1])
prf = sys.argv[2]
count = 0
mRNA = 0
cds = 0
exon = 0
print("##gff-version 3.2.1")
for line in gff:
if not line.startswith("\n"):
records = line.split("\t")
records[1] = "."
if re.search(r"\tgene\t", line):
count = count + 10
mRNA = 0
gene_id = prf + str(count).zfill(6)
records[8] = "ID={}".format(gene_id)
elif re.search(r"\tmRNA\t", line):
cds = 0
exon = 0
mRNA = mRNA + 1
mRNA_id = gene_id + "." + str(mRNA)
records[8] = "ID={};Parent={}".format(mRNA_id, gene_id)
elif re.search(r"\texon\t", line):
exon = exon + 1
exon_id = mRNA_id + "_exon_" + str(exon)
records[8] = "ID={};Parent={}".format(exon_id, mRNA_id)
elif re.search(r"\tCDS\t", line):
cds = cds + 1
cds_id = mRNA_id + "_cds_" + str(cds)
records[8] = "ID={};Parent={}".format(cds_id, mRNA_id)
else:
continue
print("\t".join(records))
gff.close()
一些經驗
如果有轉錄組數據,沒必須要使用太多的從頭預測工具,braker2 加 GlimmerHMM可能就夠用了, 更多是使用PASA和StringTie利用好轉錄組數據進行注釋。
基因功能注釋
基因功能的注釋依賴于上一步的基因結構預測,根據預測結果從基因組上提取翻譯后的 蛋白序列 和主流的數據庫進行比對,完成功能注釋。常用數據庫一共有以幾種:
- Nr:NCBI官方非冗余蛋白數據庫,包括PDB, Swiss-Prot, PIR, PRF; 如果要用DNA序列,就是nt庫
- Pfam: 蛋白結構域注釋的分類系統
- Swiss-Prot: 高質量的蛋白數據庫,蛋白序列得到實驗的驗證
- KEGG: 代謝通路注釋數據庫.
- GO: 基因本體論注釋數據庫
除了以上幾個比較通用的數據庫外,其實還有很多小眾數據庫,應該根據課題研究和背景進行選擇。注意,數據庫本身并不能進行注釋,你只是通過序列相似性進行搜索,而返回的結果你稱之為注釋。因此數據庫和搜索工具要進行區分,所以你需要單獨下載數據庫和搜索工具,或者是同時下載包含數據庫和搜索工具的安裝包。
注意,后續分析中一定要保證你的蛋白序列中不能有代表氨基酸字符以外的字符,比如說有些軟件會把最后一個終止密碼子翻譯成"."或者"*"
BLASTP
這一部分用到的數據庫都是用BLASTP進行檢索,基本都是四步發:下載數據庫,構建BLASTP索引,數據庫檢索,結果整理。其中結果整理需要根據BLASTP的輸出格式調整。
Nr的NCBI收集的最全的蛋白序列數據庫,但是無論是用NCBI的BLAST還是用速度比較快DIAMOND對nr進行搜索,其實都沒有利用好物種本身的信息。因此在RefSeq上下載對應物種的蛋白序列, 用BLASTP進行注釋即可。
# download
wget -4 -nd -np -r 1 -A *.faa.gz ftp://ftp.ncbi.nlm.nih.gov/refseq/release/plant/
mkdir -p ~/db/RefSeq
zcat *.gz > ~/db/RefSeq/plant.protein.faa
# build index
~/opt/biosoft/ncbi-blast-2.7.1+/bin/makeblastdb -in plant.protein.faa -dbtype prot -parse_seqids -title RefSeq_plant -out plant
# search
~/opt/biosoft/ncbi-blast-2.7.1+/bin/blastp -query protein.fa -out RefSeq_plant_blastp.xml -db ~/db/RefSeq/uniprot_sprot.fasta -evalue 1e-5 -outfmt 5 -num_threads 50 &
Swiss-Prot里收集了目前可信度最高的蛋白序列,一共有55w條記錄,數據量比較小,
# download
wget -4 -q ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz
gzip -d uniprot_sprot.fasta.gz
# builid index
~/opt/biosoft/ncbi-blast-2.7.1+/bin/makeblastdb -in uniprot_sprot.fasta -dbtype prot -title swiss_prot -parse_seqids
# search
~/opt/biosoft/ncbi-blast-2.7.1+/bin/blastp -query protein.fa -out swiss_prot.xml -db ~/db/swiss_prot/uniprot_sprot.fasta -evalue 1e-5 -outfmt 5 -num_threads 50 &
關于結果整理,已經有很多人寫了腳本,比如說我搜索BLAST XML CSV,就找到了https://github.com/Sunhh/NGS_data_processing/blob/master/annot_tools/blast_xml_parse.py, 所以就不過多介紹。
InterProScan
下面介紹的工具是InterProScan, 從它的9G的體量就可以感受它的強大之處,一次運行同時實現多個信息注釋。
- InterPro注釋
- Pfam數據庫注釋(可以通過hmmscan搜索pfam數據庫完成)
- GO注釋(可以基于NR和Pfam等數據庫,然后BLAST2GO完成,)
- Reactome通路注釋,不同于KEGG
命令如下
./interproscan-5.29-68.0/interproscan.sh -appl Pfam -f TSV -i sample.fa -cpu 50 -b sample -goterms -iprlookup -pa
-appl
告訴軟件要執行哪些數據分析,勾選的越多,分析速度越慢,Pfam就行。
KEGG
KEGG數據庫目前本地版收費,在線版收費,所以只能將蛋白序列在KEGG服務器上運行。因此你需要在http://www.genome.jp/tools/kaas/選擇合適的工具進行后續的分析。我上傳的50M大小蛋白序列,在KEGG服務器上只需要運行8個小時,也就是晚上提交任務,白天回來干活。
到此,基因組序列注釋的總體框架我就走完了,后續就是研究其中的細節
附錄
基因組注釋的常用軟件:
- 重復區域
- RepeatMasker:識別基因組中的可能重復
- RepeatModeler: 識別新的重復序列
- LTR-FINDER: http://tlife.fudan.edu.cn/ltr_finder/
- 從頭預測
- Augustus
- Fgenesh
- 同源預測
- GeneWise
- Exonerate
- Trinity
- GenomeThreader
- 注釋合并
- GLEAN:已經落伍于時代了
- EvidenceModeler: 與時俱進
- 流程
- PASA:真核生物基因的轉錄本可變剪切自動化注釋項目,需要提供物種的EST或RNA-seq數據
- MAKER
- BRAKER1: 使用GeneMark-ET和AUGUSTUS基于RNA-Seq注釋基因結構
- EuGene
- 可視化
- IGV
- JBrowse/GBrowse
參考文獻和推薦閱讀:
- NCBI真核生物基因組注釋流程https://www.ncbi.nlm.nih.gov/genome/annotation_euk/process/
- 真核基因組注釋入門: "A beginner’s guide to eukaryotic genome annotation"
- 二代測序注釋流程:Comparative Gene Finding: "Annotation Pipelines for Next-Generation Sequencing Projects"
- 基因組轉錄組注釋策略: "Plant genome and transcriptome annotations: from misconceptions to simple solution"
- 重復序列綜述: "Repetitive DNA and next-generation sequencing: computational challenges and solutions"
- MAKER2教程: http://weatherby.genetics.utah.edu/MAKER/wiki/index.php/MAKER_Tutorial_for_WGS_Assembly_and_Annotation_Winter_School_2018
- 《生物信息學》 樊龍江: 第1-5章: 基因預測與功能注釋
- 《NGS生物信息分析》 陳連福: 真核生物基因組基因注釋
- JGS流程: https://genome.jgi.doe.gov/programs/fungi/FungalGenomeAnnotationSOP.pdf
環境準備
數據下載
# Cardamine hirsutat基因組數據
mkdir chi_annotation && cd chi_annotation
wget http://chi.mpipz.mpg.de/download/sequences/chi_v1.fa
cat chi_v1.fa | tr 'atcg' 'ATCG' > chi_unmasked.fa
# Cardamine hirsutat轉錄組數據
wget -4 -q -A '*.fastq.gz' -np -nd -r 2 http://chi.mpipz.mpg.de/download/fruit_rnaseq/cardamine_hirsuta/ &
wget -4 -q -A '*.fastq.gz' -np -nd -r 2 http://chi.mpipz.mpg.de/download/leaf_rnaseq/cardamine_hirsuta/ &
軟件安裝
RepeatMasker: 用于注釋基因組的重復區,需要安裝RMBlast, TRF,以及在http://www.girinst.org注冊以下載Repbase
安裝RepeatMasker
cd ~/src
wget http://tandem.bu.edu/trf/downloadstrf409.linux64
mv trf409.linux64 ~/opt/bin/trf
chmod a+x ~/opt/bin/trf
# RMBlast
cd ~/src
wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.6.0/ncbi-blast-2.6.0+-src.tar.gz
wget http://www.repeatmasker.org/isb-2.6.0+-changes-vers2.patch.gz
tar xf ncbi-blast-2.6.0+-src
gunzip isb-2.6.0+-changes-vers2.patch.gz
cd ncbi-blast-2.6.0+-src
patch -p1 < ../isb-2.6.0+-changes-vers2.patch
cd c++
./configure --with-mt --prefix=~/opt/biosoft/rmblast --without-debug && make && make install
# RepeatMasker
cd ~/src
wget http://repeatmasker.org/RepeatMasker-open-4-0-7.tar.gz
tar xf RepeatMasker-open-4-0-7.tar.gz
mv RepeatMasker ~/opt/biosoft/
cd ~/opt/biosoft/RepeatMasker
## 解壓repbase數據到Libraries下
## 配置RepatMasker
perl ./configure
在上面的基礎上安裝RepeatModel
# RECON
cd ~/src
wget -4 http://repeatmasker.org/RepeatModeler/RECON-1.08.tar.gz
tar xf RECON-1.08.tar.gz
cd RECON-1.08/src
make && make install
cd ~/src
mv RECON-1.08 ~/opt/biosoft
# nesg
cd ~/src
mkdir nesg && cd nesg
wget -4 ftp://ftp.ncbi.nih.gov/pub/seg/nseg/*
make
mv nmerge nseg ~/opt/bin/
# RepeatScout
http://www.repeatmasker.org/RepeatScout-1.0.5.tar.gz
# RepeatModel
wget -4 http://repeatmasker.org/RepeatModeler/RepeatModeler-open-1.0.11.tar.gz
tar xf RepeatModeler-open-1.0.11.tar.gz
mv RepeatModeler-open-1.0.11 ~/opt/biosoft/
cd ~/opt/biosoft/RepeatModeler-open-1.0.11
# 配置
perl ./configure
export PATH=~/opt/biosoft/maker:$PATH
BLAST,BLAST有兩個版本可供選擇, WuBLAST或者NCBI-BLAST,我個人傾向于NCBI-BLAST,并且推薦使用編譯后二進制版本,因為編譯實在是太花時間了
cd ~/src
wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.7.1+-x64-linux.tar.gz
tar xf ncbi-blast-2.7.1+-x64-linux.tar.gz -C ~/opt/biosoft
# 環境變量
export PATH=~/opt/biosoft/ncbi-blast-2.7.1+/bin:$PATH
# 用于后續的BRAKER2
conda create -n annotation blast=2.2.31
AUGUSTUS: 可以說是最好的預測軟件,使用conda安裝
source activate annotation
conda install augustus=3.3
GeneMark-ES/ET則是唯一一款支持無監督訓練模型, 軟件下載需要登記
cd ~/src
wget http://topaz.gatech.edu/GeneMark/tmp/GMtool_Qg87n/gm_et_linux_64.tar.gz
tar xf gm_et_linux_64.tar.gz
mv gm_et_linux_64/gmes_petap/ ~/opt/biosoft
wget http://topaz.gatech.edu/GeneMark/tmp/GMtool_Qg87n/gm_key_64.gz
gzip -dc gm_key_64.gz > ~/.gm_key
cpan YAML Hash::Merge Logger::Simple Parallel::ForkManager
echo "export PATH=$PATH:~/opt/biosoft/gmes_petap/" >> ~/.bashrc
GlimmerHMM:
cd ~/src
wget -4 ftp://ccb.jhu.edu/pub/software/glimmerhmm/GlimmerHMM-3.0.4.tar.gz
tar xf GlimmerHMM-3.0.4.tar.gz -C ~/opt/biosoft
SNAP: 基因從頭預測工具,在處理含有長內含子上的基因組上表現欠佳
# 安裝
cd ~/src
git clone https://github.com/KorfLab/SNAP.git
cd SNP
make
cd ..
mv SNAP ~/opt/biosoft
# 環境變量
export Zoe=~/opt/biosoft/SNAP/Zoe
export PATH=~/opt/biosoft/SNAP:$PATH
Exnerate 2.2: 配對序列比對工具,提供二進制版本, 功能類似于GeneWise,能夠將cDNA或蛋白以gao align的方式和基因組序列聯配。
cd ~/src
wget http://ftp.ebi.ac.uk/pub/software/vertebrategenomics/exonerate/exonerate-2.2.0-x86_64.tar.gz
tar xf exonerate-2.2.0-x86_64.tar.gz
mv exonerate-2.2.0-x86_64 ~/opt/biosoft/exonerate-2.2.0
# .bashrc添加環境變量
export PATH=~/opt/biosoft/exonerate-2.2.0:$PATH
# 或
conda install -c bioconda exonerate
GenomeThreader 1.70: 同源預測軟件,1.7.0版本更新于2018年2月
wget -4 http://genomethreader.org/distributions/gth-1.7.0-Linux_x86_64-64bit.tar.gz
tar xf gth-1.7.0-Linux_x86_64-64bit.tar.gz -C ~/opt/biosoft
# 修改.bashrc增加如下行
export PATH=$PATH:$HOME/opt/biosoft/gth-1.7.0-Linux_x86_64-64bit/bin
export BSSMDIR="$HOME/opt/biosoft/gth-1.7.0-Linux_x86_64-64bit/bin/bssm"
export GTHATADIR="$HOME/opt/biosoft/gth-1.7.0-Linux_x86_64-64bit/bin/gthdata"
BRAKER2: 依賴AUGUSTUS 3.3, GeneMark-EX 4.33, BAMTOOLS 2.5.1, NCBI BLAST+ 2.2.31+(可選 SAMTOOLS 1.74+, GenomeThreader 1.70)
cpan File::Spec::Functions Module::Load::Conditional POSIX Scalar::Util::Numeric YAML File::Which Logger::Simple Parallel::ForkManager
cd ~/src
wget -4 http://exon.biology.gatech.edu/GeneMark/Braker/BRAKER2.tar.gz
tar xf BRAKER2.tar.gz -C ~/opt/biosoft
echo "export PATH=$PATH:$HOME/opt/biosoft/BRAKER_v2.1.0/" >> ~/.bashrc
# 在~/.bashrc設置如下軟件所在環境變量
export AUGUSTUS_CONFIG_PATH=$HOME/miniconda3/envs/annotation/config/
export AUGUSTUS_SCRIPTS_PATH=$HOME/miniconda3/envs/annotation/bin/
export BAMTOOLS_PATH=$HOME/miniconda3/envs/annotation/bin/
export GENEMARK_PATH=$HOME/opt/biosoft/gmes_petap/
export SAMTOOLS_PATH=$HOME/miniconda3/envs/annotation/bin/
export ALIGNMENT_TOOL_PATH=$HOME/opt/biosoft/gth-1.7.0-Linux_x86_64-64bit/bin/
TransDecoder 編碼區域預測工具,需要預先安裝NCBI-BLAST
cpan URI::Escape
cd ~/src
wget -4 https://github.com/TransDecoder/TransDecoder/archive/TransDecoder-v5.3.0.zip
unzip TransDecoder-v5.3.0.zip
cd TransDecoder-v5.3.0
make test
MARKER: 使用conda安裝會特別的方便,最好新建環境
conda create -n marker marker
PASA: 依賴于一個數據庫(MySQL或SQLite), Perl模塊(DBD::mysql或DBD::SQLite), GMAP, BLAT, Fasta3。由于MySQL在HPC集群中的表現不如SQLite,以及安裝MySQL還需要各種管理員權限,于是就有人進行了修改,增加了feature/sqlite分支, 見Add support for SQLite
cpan DB_File URI::Escape DBI DBD::SQLite
# GMAP
wget http://research-pub.gene.com/gmap/src/gmap-gsnap-2017-11-15.tar.gz
tar xf gmap-gsnap-2017-11-15.tar.gz
cd gmap-2017-11-15
./configure --prefix=$HOME/opt/gmap
make && make install
# BLAT
cd ~/opt/bin
wget http://hgdownload.soe.ucsc.edu/admin/exe/linux.x86_64/blat/blat && chmod 755 ./blat
# Fasta3
wget -4 http://faculty.virginia.edu/wrpearson/fasta/fasta36/fasta-36.3.8g.tar.gz && \
tar zxvf fasta-36.3.8g.tar.gz && \
cd ./fasta-36.3.8g/src && \
make -f ../make/Makefile.linux_sse2 all && \
cp ../bin/fasta36 ~/opt/bin
# 以上程序需添加到環境變量中
# PASApipeline
cd ~/opt/biosoft
git clone https://github.com/PASApipeline/PASApipeline.git
cd PASApipeline && \
git checkout feature/sqlite && \
git submodule init && git submodule update && \
make
EVidenceModeler: 整合不同來源的注釋結果,找到可靠的基因結構
cd ~/src
wget -4 https://github.com/EVidenceModeler/EVidenceModeler/archive/v1.1.1.tar.gz
tar xf v1.1.1.tar.gz
mv EVidenceModeler-1.1.1 ~/opt/biosoft/