美文网首页
2020-02-13 计算RPKM值

2020-02-13 计算RPKM值

作者: 海阔天空周 | 来源:发表于2020-02-13 15:23 被阅读0次

    ###计算RPKM值

    ##读入gff3文件

    genecode<-read.table(file = "C:\\Users\\zhouwenqing789\\Desktop\\乳腺癌TCGA数据库20191226\\gencode.v22.long_noncoding_RNAs.gff3" )

    g_len<-genecode[genecode[,3]=="gene",]

    annogene<-data.frame(matrix(NA,nrow(g_len),3))

    colnames(annogene)<-c("ENSG","symbol","gene_length")

    lncname<-str_split(g_len[,9],";")

    library(stringr)

    dim(annogene)

    tail(annogene)

    class(annogene)

    head(annogene)

    for(j in 1:length(lncname)){

      annogene[j,1]=substring(lncname[[j]][1],4,)

      annogene[j,2]=substring(lncname[[j]][5],11,)

    }

    ##注意每个基因id不一样,而且其中每个转录本的id又不一样,但每个转录本下的外显子id一样,给了我们提取外显子的思路

    ##首先选出一个基因id下的所有外显子和转录本(共一个基因id),再根据转录本id,选取相应的一个转录本和外显子,再删除转录本。

    ci<-1

    for(len in 1:as.numeric(length(annogene[,1]))){

      ll<-str_detect(genecode[,9],annogene[len,1])

      llen<-genecode[ll,]

      llen<-llen[llen[,3]!="gene",]

      lnc_n<-str_split(llen[1,9],";")

      t_name<-substring(lnc_n[[1]][1],4,)

      befor_len<-genecode[str_detect(genecode[,9],t_name),][-1,c(4:5)]

      g_length<-sum(befor_len[,2]-befor_len[,1])

      annogene[len,3]<-g_length

      if(ci%%100==0){

        print(paste("获得了",ci,"个lncrna",sep=""))

      }       

      ci=ci+1

    }

    write.csv(annogene,file = "C:\\Users\\zhouwenqing789\\Desktop\\乳腺癌TCGA数据库20191226\\annogenelncrna.csv",row.names = F, quote = F)

    annogene$ensg<-substr(annogene$ENSG,1,15)

    annogene<-annogene[,-1]

    rawcountlncrna1<-rawcountlncrna*10^9

    dim(sample_merge20[annogene$ensg%in%row.names(sample_merge20),])

    ##真正的开始计算RPKM值

    sampl_mergelnc<-sample_merge20[annogene$ensg%in%row.names(sample_merge20),]

    shendu<-apply(sample_merge20,2,sum)

    rawcountlncrna<-t(rawcountlncrna)

    annogene1<-annogene[annogene$ensg%in%row.names(rawcountlncrna),]

    dim(annogene1)

    annogene1<-annogene1[order(annogene1$ensg),]

    rawcountlncrna1<-cbind(rawcountlncrna,annogene1$gene_length)

    rpkm<-rawcountlncrna1

    for(len in 1:ncol(rpkm)){

      rpkm[,len]<-rpkm[,len]*10^9/shendu[len]/rpkm[,ncol(rpkm)]

    }

    相关文章

      网友评论

          本文标题:2020-02-13 计算RPKM值

          本文链接:https://www.haomeiwen.com/subject/exflfhtx.html