外顯子和內(nèi)含子是轉(zhuǎn)錄本上面的概念,是基于轉(zhuǎn)錄這個行為的定義。
而5端UTR區(qū)域和CDS區(qū)域,還有3端UTR區(qū)域,是基于翻譯這種行為的定義!
UTR(Untranslated Region),即非翻譯區(qū)。在分子遺傳學(xué)中,是指任意一個位于mRNA鏈編碼序列兩端的片段。如果其位于5′端,則稱為5′非翻譯區(qū)(5‘-untranslated region,5’-UTR)(或“前導(dǎo)序列,leader”), 反之若位于3′端,則稱為3′非翻譯區(qū)(3'-untranslated region,3‘-UTR)(或“尾隨序列,trailer”)。
所謂CDS就是與蛋白質(zhì)序列一 一對應(yīng)的DNA序列,且該序列中間不含其它非該蛋白質(zhì)對應(yīng)的序列,不考慮mRNA加工等過程中的序列變化,總之,就是與蛋白質(zhì)的密碼子完全對應(yīng)。
一個基因的一個轉(zhuǎn)錄本的5'utr區(qū)域可以包括多個外顯子區(qū)域。
rm(list=ls())
## [url=http://www.broadinstitute.org/cancer/cga/sites/default/files/data/tools/rnaseqc/gencode.v7.annotation_goodContig.gtf.gz]http://www.broadinstitute.org/ca ... n_goodContig.gtf.gz[/url]
setwd('tmp')
gtf <- read.table('gencode.v7.annotation_goodContig.gtf.gz',stringsAsFactors = F,
? ? ? ? ? ? ? ? ? header = F,comment.char = "#",sep = '\t'
? ? ? ? ? ? ? ? ? )
table(gtf[,2])
gtf <- gtf[gtf[,2] =='HAVANA',]
gtf <- gtf[grepl('protein_coding',gtf[,9]),]
lapply(gtf[1:10,9], function(x){
? y=strsplit(x,';')
})
gtf$gene <- lapply(gtf[,9], function(x){
? y <- strsplit(x,';')[[1]][5]
? strsplit(y,'\\s')[[1]][3]
? }
)
draw_gene = 'TP53'
structure = gtf[gtf$gene==draw_gene,]
colnames(structure) =c(
? 'chr','db','record','start','end','tmp1','tmp2','tmp3','tmp4','gene'
)
gene_start <- min(c(structure$start,structure$end))
gene_end <- max(c(structure$start,structure$end))
tmp_min=min(c(structure$start,structure$end))
structure$new_start=structure$start-tmp_min
structure$new_end=structure$end-tmp_min
tmp_max=max(c(structure$new_start,structure$new_end))
num_transcripts=nrow(structure[structure$record=='transcript',])
tmp_color=rainbow(num_transcripts)
x=1:tmp_max;y=rep(num_transcripts,length(x))
#x=10000:17000;y=rep(num_transcripts,length(x))
plot(x,y,type = 'n',xlab='',ylab = '',ylim = c(0,num_transcripts+1))
title(main = draw_gene,sub = paste("chr",structure$chr,":",gene_start,"-",gene_end,sep=""))
j=0;
tmp_legend=c()
for (i in 1:nrow(structure)){
? tmp=structure[i,]
? if(tmp$record == 'transcript'){
? ? j=j+1
? ? tmp_legend=c(tmp_legend,paste("chr",tmp$chr,":",tmp$start,"-",tmp$end,sep=""))
? }
? if(tmp$record == 'exon') lines(c(tmp$new_start,tmp$new_end),c(j,j),col=tmp_color[j],lwd=4)
}