Featurecount to RPKM计算

作者: caokai001 | 来源:发表于2020-08-24 11:11 被阅读0次

    参考:

    基因长度之多少
    Htseq Count To Fpkm

    由公式可知,知道了featurecount count 矩阵,同时有基因长度信息,可以计算RPKM.
    FPKM= read counts / (mapped reads (Millions) * exon length(KB))
    目前最关键是如何计算基因长度,以及如何衡量基因长度。

    我们就能理解目前主流定义基因长度的几种方式。

    • 挑选基因的最长转录本
    • 选取多个转录本长度的平均值
    • 非冗余外显子(EXON)长度之和
    • 非冗余 CDS(Coding DNA Sequence) 长度之和

    实践

    下面列举的是 非冗余外显子(EXON)长度之和 计算方法

    image.png

    其他尝试

    1.TPM FPKM 计算公式R

    • 群主解答
    • TPM ,RPKM计算,首先需要求得count 数,再用R函数转换。
    countToTpm <- function(counts, effLen)
    {
      rate <- log(counts) - log(effLen)
      denom <- log(sum(exp(rate)))
      exp(rate - denom + log(1e6))
    }
    
    countToFpkm <- function(counts, effLen)
    {
      N <- sum(counts)
      exp( log(counts) + log(1e9) - log(effLen) - log(N) )
    }
    
    fpkmToTpm <- function(fpkm)
    {
      exp(log(fpkm) - log(sum(fpkm)) + log(1e6))
    }
    
    countToEffCounts <- function(counts, len, effLen)
    {
      counts * (len / effLen)
    }
    

    2. python 可能代码

    import numpy as np
    import pandas as pd
    A=pd.DataFrame({"gene_length":[2,4,1,10],
                  "sample1":[10,20,5,0],
                  "sample2":[12,25,8,0],
                  "sample3":[30,60,15,1]})
    A.index=np.array(["A","B","C","D"])
    
    
    #apply 列作为变量
    def count_fpkm(A):
        B=A[["sample1","sample2","sample3"]].apply(lambda x:x/sum(x))
        C=B.div(A["gene_length"].values,axis=0).applymap(lambda x:"{:.2f}".format(x))
        return C
    
    
    def count_TPM(A):
        B=A[["sample1","sample2","sample3"]].div(A["gene_length"].values,axis=0)
        C=B.apply(lambda x:x/sum(x))
        return C
    
    

    3.gtftools 工具计算基因长度

    http://genomespot.blogspot.com/2019/01/using-gtf-tools-to-get-gene-lengths.html
    gtftools工具使用

    wget http://www.genemine.org/codes/GTFtools_0.6.9.zip
    
    • 计算结果


      image.png

    思考:

    • 当初以为gene length 就是gtf 第三列标注为gene的那个长度,而没有考虑内含子区域,最近才明白需要计算外显子之和。
    • 目前计算gene length 已经有好多工具
    • TPM,RPKM 直接定量工具也很多,比如cufflink【rpkm】,stringtie【rpkm,TPM】.需要注意的是:
      1.hisat2 需要添加特定参数进行比对,才可以与cufflink 进行配套使用,否则会报错;
    1. stringtie 可以方便计算TPM,但是每一次计算的gene数目不一样,比如有时候20001,20005 不等,需要手动过滤一些不相关的gene
    2. 有时候cufflinkfeaturecount 计算方式不一样,导致两者分别计算rpkm结果会有偏差。

    😊欢迎评论留言~

    相关文章

      网友评论

        本文标题:Featurecount to RPKM计算

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