简单小需求:如何将FPKM转换成TPM?
测试开头
测试结尾
今天是生信星球陪你的第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)
其实早已经有人帮我们整理好了
What the FPKM? A review of 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)
去简书,获得更好的阅读体验哦😻
初学生信,很荣幸带你迈出第一步。
我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到 jieandze1314@gmail.com ,每一条都会看到的哦~
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!