基因组中的趣事(二)- 最长的基因2.7 million最短的基因只有8 nt

前面提到基因组中的趣事(一):这个基因编码98种转录本,现在看看其它还有什么没想到的?

序列最长和最短的基因

计算基因序列的长度,注意GTF中的位置是前闭后闭。

awk 'BEGIN{OFS=FS="	"}{if($3=="gene") {len1=$5-$4+1; print $10, $14, $18, len1;}}' GRCh38.tab.gtf | sort -k4,4nr | sed '1 i\ID	Gene	Type	Length' >Gene_length

查看最长和最短的3个基因

head -n 4 Gene_length; tail -n 3 Gene_lengthID    Gene    Type    LengthENSG00000078328    RBFOX1    protein_coding    2473539ENSG00000174469    CNTNAP2    protein_coding    2304997ENSG00000153707    PTPRD    protein_coding    2298478ENSG00000236597    IGHD7-27    IG_D_gene    11ENSG00000237235    TRDD2    TR_D_gene    9ENSG00000223997    TRDD1    TR_D_gene    8

可变剪接调控基因RBFOX1以2.7 million的长度超过之前文献报道的最长基因CNTNAP2 (智力语言损伤相关基因)。RBFOX1编码的蛋白倒不长,只有397个氨基酸,可见其内含子区特别长。

T细胞受体相关基因TRDD1作为最短的基因,长度只有8 nt,编码的小肽序列包含2个氨基酸 EI

直接用上面的数据绘制长度分布不太合适,拖尾很长。对数据根据长度区间重新做下分组 (当然还可以分的再细),再进行绘制其长度分布。

awk 'BEGIN{OFS=FS="	"}{if($3=="gene") {len1=$5-$4+1; if(len1<2000) type1="Less2000"; else if(len1<5000) type1="Less5000"; else if(len1<20000) type1="Less20000"; else type1="Other"; print  type1, len1;}}' GRCh38.tab.gtf | sed '1 i\Type	Length' >Gene_length.plot

数据放入ImageGP,设置统一的bin大小为100。跟我最初的印象还是不太一样的,以前凭空以为1000-2000 nt的基因是最多的,实际看并不是,短基因还是更多的。

只看蛋白编码基因的长度分布呢?蛋白编码基因的长度分布比较均匀,太短和太长的都不多,集中在1000-5000 nt

awk 'BEGIN{OFS=FS="	"}{if($3=="gene" && $18=="protein_coding") {len1=$5-$4+1; if(len1<2000) type1="Less2000"; else if(len1<5000) type1="Less5000"; else if(len1<20000) type1="Less20000"; else type1="Other"; print  type1, len1;}}' GRCh38.tab.gtf | sed '1 i\Type	Length' >PC_Gene_length.plot

基因组中临近基因最近和最远的是多少 (不考虑正负链)

# 需要考虑的是跨染色体的情况# 只输出不重叠的基因或只重叠1个碱基的基因awk 'BEGIN{OFS=FS="	"; lastgene=""; lastchr=""}{if(lastchr=="") lastchr=$1; if($3=="gene") {gene=$14 ;start=$4; end=$5; if($1!=lastchr) {lastchr=$1; lastgene=""; } if(lastgene!="") {dist=start-lastend; if(dist>=0) print gene,lastgene,dist; } lastgene=gene; lastend=end} }' GRCh38.tab.gtf | sort -k3,3nr | sed '1 i\SecondGene	FirstGene	Dist' >Gene_dist.txt

看下最近和最远的基因是什么?CTBP2P1CCNQP2相距最远,距离有30million。这是两个pseudogene

head Gene_dist.txt; tail Gene_dist.txtSecondGene    FirstGene    DistCTBP2P1    CCNQP2    30228085AC242852.1    LINC01691    21762656BX088702.1    ABBA01045074.1    17301933ANKRD26P1    PPP1R1AP2    10556825ROCK1    RNU6-721P    5625962BX322784.1    KRT8P17    4793117EMB    AC122694.1    4500222AC128676.1    AC023141.13    4439110AC069061.1    AC131274.2    4286863FIBP    CTSW    0MTATP6P22    MTCO3P35    0MT-CO3    MT-ATP6    0MTCO3P10    AC099654.7    0MTCO3P12    MTATP6P1    0MTCO3P31    MTATP6P31    0MTND4P26    MTND4LP14    0MTND5P33    MTND6P33    0MT-TY    MT-TC    0TRMT2A    AC006547.2    0

距离最近的就是紧挨着了,主要是线粒体基因,串联起来了。

# 前面做了排序,基因的顺次就变了# grep 'MT-' Gene_dist.txt# 重新算下,再捕获下awk 'BEGIN{OFS=FS="	"; lastgene=""; lastchr=""}{if(lastchr=="") lastchr=$1; if($3=="gene") {gene=$14 ;start=$4; end=$5; if($1!=lastchr) {lastchr=$1; lastgene=""; } if(lastgene!="") {dist=start-lastend; if(dist>=0) print gene,lastgene,dist; } lastgene=gene; lastend=end} }' GRCh38.tab.gtf | grep 'MT-'MT-RNR1    MT-TF    1MT-TV    MT-RNR1    1MT-RNR2    MT-TV    1MT-TL1    MT-RNR2    1MT-ND1    MT-TL1    3MT-TI    MT-ND1    1MT-TM    MT-TQ    2MT-ND2    MT-TM    1MT-TW    MT-ND2    1MT-TA    MT-TW    8MT-TN    MT-TA    2MT-TC    MT-TN    32MT-TY    MT-TC    0MT-CO1    MT-TY    13MT-TS1    MT-CO1    1MT-TD    MT-TS1    4MT-CO2    MT-TD    1MT-TK    MT-CO2    26MT-ATP8    MT-TK    2MT-CO3    MT-ATP6    0MT-TG    MT-CO3    1MT-ND3    MT-TG    1MT-TR    MT-ND3    1MT-ND4L    MT-TR    1MT-TH    MT-ND4    1MT-TS2    MT-TH    1MT-TL2    MT-TS2    1MT-ND5    MT-TL2    1MT-ND6    MT-ND5    1MT-TE    MT-ND6    1MT-CYB    MT-TE    5MT-TT    MT-CYB    1MT-TP    MT-TT    3

包含外显子最多的转录本

来一条代码同时计算每个转录本外显子的数目和每个外显子的长度。

# 第三列为exon# exoncnt 外显子数量# exonlen 每个转录本每个外显子长度# 用到了二维数组。awk存储二维数组时是用SUBSEP把两个下标连起来存储# 索引取值时也需要先把两个key切开再取# 结果存入两个文件transcript_exon_cnt.txt#             和transcript_exon_len.txtawk 'BEGIN{OFS=FS="	"}{if($3=="exon") {trid=$20"	"$14; exoncnt[trid]+=1; exonlen[trid, exoncnt[trid]]=$5-$4+1}}END{transcript_exon_cnt="transcript_exon_cnt.txt"; for(i in exoncnt) print i, exoncnt[i] >transcript_exon_cnt; transcript_exon_len="transcript_exon_len.txt"; for(i in exonlen) {split(i, subkey, SUBSEP); print subkey[1], subkey[2], exonlen[subkey[1], subkey[2]] > transcript_exon_len;}}' GRCh38.tab.gtf

排个序看下,妊娠综合征相关lncRNA HELLPAR的外显子长度最长,超20万 nt。外显子长度最长的蛋白编码基因是NFIA,一个转录因子,其外显子长度超4万 nt。另外有33个基因各有一个长度为1 nt的外显子。

HELLPAR    ENST00000626826    1    205012KCNQ1OT1    ENST00000597346    1    91667AC003681.1    ENST00000624945    1    49287NFIA    ENST00000603233    1    44880TSIX    ENST00000604411    1    37027AC245452.1    ENST00000458178    2    36531FLRT2    ENST00000330753    2    33290SMAD2    ENST00000262160    11    32994PCDH9    ENST00000377861    2    27561GRIN2B    ENST00000609686    13    27303

包含外显子数目最多的转录本是ENST00000589042,共有363个外显子。其对应的基因是TTN,横纹肌发育相关基因。外显子数目排第二的基因NEB也是骨骼肌微丝发育相关基因。肌肉的复杂性也许跟这些基因有关系,前面提到的最长的基因、编码转录本最多的基因也有一些是根肌肉发育相关的。

TTN    ENST00000589042    363TTN    ENST00000591111    313TTN    ENST00000342992    312TTN    ENST00000615779    312TTN    ENST00000342175    191TTN    ENST00000359218    191TTN    ENST00000460472    191NEB    ENST00000618972    183NEB    ENST00000397345    182NEB    ENST00000427231    182

GTF怎么下载的?具体见推文NGS基础 - 参考基因组和基因注释文件和下图。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章