定義基因的長度(生信菜鳥團)
一個基因可以轉錄為多個轉錄本脖祈,真核生物里面每個轉錄本通常是由一個或者多個exon組成固阁,能翻譯為蛋白的exon區(qū)域是CDS區(qū)域,不能翻譯的那些exon的開頭和結尾是UTR區(qū)域,翻譯區(qū)域合起來是ORF序列娱仔,轉錄本逆轉錄就是cDNA序列须肆。基因長度并不是簡單的 end - start
目前主流定義基因長度的幾種方式:
- 挑選基因的最長轉錄本
- 選取多個轉錄本長度的平均值
- 非冗余外顯子長度之和
- 非冗余 CDS(Coding DNA Sequence) 長度之和
- 非冗余外顯子
基因長度計算——非冗余外顯子長度之和
注意到這里的"非冗余"合敦,就是存在一個基因的多個外顯子之間存在重疊(比如基因A的1號外顯子較短初橘,2號外顯子長,1號包含在2號中)充岛,單純的相加會重復計算保檐。
R:
安裝R包"GenomicFeatures"
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("GenomicFeatures")
加載R包
library("GenomicFeatures")
setwd(" ")
導入gff3文件
txdb <- makeTxDbFromGFF("1.gff3",format="gff3")
獲取外顯子位置
exons_gene <- exonsBy(txdb, by = "gene")
去除外顯子重疊部分,計算外顯子長度
exons_gene_len <- lapply(exons_gene,function(x){sum(width(reduce(x)))})
write.table(exons_gene_len,file ="gene_exons_len.txt",sep ="\t",quote =F,col.names =T,row.names =F)
linux:
行列轉換
cat gene_exons_len.txt | awk '{ for(i=1;i<=NF;i++){ if(NR==1){ arr[i]=$i; }else{ arr[i]=arr[i]"\t"$i; } } } \
END{ for(i=1;i<=NF;i++){ print arr[i]; } }' > geneexons_len.txt
rm exons_gene_len.txt
其他計算基因長度的方法可見:http://www.reibang.com/p/abea4033b61e 小潔忘了怎么分身
參考:
http://www.bio-info-trainee.com/3991.html 生信菜鳥團
https://cloud.tencent.com/developer/article/1606491
http://www.reibang.com/p/abea4033b61e 小潔忘了怎么分身