分享

简单小需求:如何将FPKM转换成TPM?

 生物_医药_科研 2019-02-23

  今天是生信星球陪你的第286天


   大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~

   就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~

   这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!

豆豆写于19.2.21

或许这还是个比较常用的需求

我们做转录组分析,得到的结果可能是FPKM。但是FPKM确实存在不准确性,推荐使用TPM转录组样本间表达量标准化

read count和FPKM结果都可以转成TPM,但是因为FPKM跟TPM的计算都考虑了基因长度,所以从FPKM转TPM最方便快捷。

假设原来的表达矩阵fpkm_expr.txt中行为基因,列为样本,中间数值是FPKM计算得到的值

先读取自己的表达矩阵

expMatrix<-read.table('fpkm_expr.txt',header = T,row.names = 1)

其实早已经有人帮我们整理好了

https://haroldpimentel./2014/05/08/what-the-fpkm-a-review-rna-seq-expression-units/

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)
}

如果要计算TPM值,只需要用一下apply函数

tpms <- apply(expMatrix,2,fpkmToTpm)
tpms[1:3,]

最后可以根据TPM的特征进行检查,看每列加和是否一致

colSums(tpms)



去简书,获得更好的阅读体验哦😻

初学生信,很荣幸带你迈出第一步。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多