安利一款純Python編寫的GTF處理腳本 - GTFtools
日常數(shù)據(jù)分析中,我們遇見最多的可能就是序列,例如基因組序列,CDS序列等等,它們一般以fasta格式存儲。由于序列一般按照從5’->3’存儲,并且每個堿基都可以給一個數(shù)字編號,因此,理論上,我們僅需要兩個文件,就能夠從基因組中提取我們感興趣的任意序列:一個基因組序列文件,一個帶坐標(biāo)的注釋文件。
今天我們介紹一款發(fā)表在Bioinformatics上的GTF注釋文件處理工具 – GTFtools
圖1. GTFtools發(fā)表在Bioinformatic雜志上
一、什么是GTF格式?
Gene transfer format(GTF)格式用于存儲基因和轉(zhuǎn)錄本的信息,以制表符(\t)分割,包括9列(以ensembl human gtf v107為例):
圖1. Human GTF示例
1)染色體,存儲基因/轉(zhuǎn)錄本所在的染色體,例如human的染色體是1-22,X,Y等
2) 來源,一般是數(shù)據(jù)庫或者軟件名字,例如用stringtie組裝出來的GTF這一列就是stringtie。
3)基因組特征(feature),常見的包括:gene,transcript,exon,CDS,start_codon,stop_codon,five_prime_utr,three_prime_utr等
4)起始坐標(biāo),一般是1-based
5)終止坐標(biāo)
6)score,統(tǒng)計(jì)值等,沒有的話可以用·填充
7)正負(fù)鏈。+表示正鏈,-表示負(fù)鏈,?表示不清楚正負(fù)鏈信息,·表示正負(fù)鏈信息沒意義
8)phase,當(dāng)描述CDS時,需要指定翻譯起始位置,例如0,1,2三種
9)屬性列,由一一對應(yīng)的鍵和值表示,并且必需有g(shù)ene_id和transcript_id這兩個屬性,多個屬性以分號分割,理論上可以添加任意屬性,包括feature的描述,編碼蛋白,功能,版本等等。
二、GTF解析工具GTFtools
雖然規(guī)定了GTF的格式,然而,實(shí)際使用中,由于不同軟件,不同研究所產(chǎn)生的GTF格式略有差異,因此這給我們數(shù)據(jù)分析帶來了極大的挑戰(zhàn),具不完全統(tǒng)計(jì),GTF解析工具包括:GTFtools,GTFutil,gffread,TBtools,GFFtools-GX,gtfparse,pyGTF等等。
今天我們推薦的是中南大學(xué)老師開發(fā)的GTFtools工具,一款純python寫的GTF處理工具。它可以計(jì)算或者提取基因模型的各種特征。
官網(wǎng):http://www.genemine.org/gtftools.php
就一個python腳本,直接下載使用。
圖3. GTFtools常見功能示意圖
主要功能及示例:
1)計(jì)算merged外顯子
合并同一個基因的所有splice isoforms的外顯子,并生成bed格式文件,可以用來計(jì)算具有多個isoforms的基因的非重疊外顯子長度
python gtftools.py -m merged_exons.bed demo.gtf
2)計(jì)算independent introns
python gtftools.py -d independent_introns.bed demo.gtf
3)計(jì)算基因長度
由于一個基因可能有多個isoforms,因此作者提供了4種基因長度計(jì)算方法:mean,median,max及merged exons,其中merged exons就是TCGA count轉(zhuǎn)tpm時所用的長度 。
python gtftools.py -l gene_length.txt demo.gtf
4)計(jì)算isoform長度
python gtftools.py -r isoform_length.txt demo.gtf
5)輸出基因坐標(biāo)和ID mappings
python gtftools.py -g genes.bed demo.gtf
6)提供SNP信息,輸出cis-SNPs
python gtftools.py -p snp_list.txt demo.gtf > cisSNP.bed
7)提取基因上下游信息
例如提取基因上游2000,下游1000的信息
python gtftools.py -g gene.bed -f 2000-1000 demo.gtf
8)提取5’和3’splice site區(qū)域
python gtftools.py -q splice_regions.bed demo.gtf
9)提取外顯子信息
python gtftools.py -e exons.bed demo.gtf
10)提取內(nèi)含子信息
python gtftools.py -i introns.bed demo.gtf
11)提取基因間區(qū)信息
python gtftools.py -b intergenic_regions.bed demo.gtf
12)提取UTR信息
python gtftools.py -u utr.bed demo.gtf
更多功能,請下載使用
三、GTF小技巧
1)GTF注釋是不斷更新的,例如ensembl human的目前最新是v107,因此做分析時,一定要明確GTF版本號和基因組版本號,并且兩者要匹配
2)GTF要與基因組對應(yīng)。使用GTF前需要檢查下是否與你所使用的基因組序列文件里邊的染色體名字匹配,例如線粒體的要看清楚是chrMT還是chrM,有些加chr,有些不加chr
3)一般情況下我們關(guān)注的是chr1-22、X、Y、M這些染色體,random等不感興趣的可以去掉
4)存在大量非標(biāo)準(zhǔn)的GTF,有些可以用程序直接轉(zhuǎn),有些可能需要人工調(diào)整,這需要經(jīng)驗(yàn)和腳本編寫能力
5)GTF文件一般很大,記得壓縮和索引
微生信助力發(fā)文章,谷歌引用620+,知網(wǎng)引用450+