bioinfoer

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

360

主题
发表于 前天 14:42 | 查看: 11| 回复: 0

背景

把TCGA的RNA-seq FPKM转换成TPM。

应用场景

RNA-seq基因表达量是FPKM,想转变成TPM。不仅限于TCGA数据。

FPKM跟TPM的计算都考虑了基因长度,因此相对于read count转TPM来说,从FPKM转TPM最方便快捷。

下载TCGA RNA-seq的FPKM数据

如果你自己的RNA-seq数据已经保存成 easy_input.txt的格式,就跳过这步,直接进入“输入数据”
easy_input.txt文件源自改版前的tcgabiolinks下载的 workflow.type = "HTSeq - FPKM" 。仅作此次笔记fpkm2tpm演示用。

新版本直接下载count或tpm即可后续使用。参考:
https://bioinfoer.com/forum.php?mod=viewthread&tid=548&extra=page%3D1

输入数据

第一列是基因ID,第一行是sample ID。

一个单元格内是一个基因在一个sample中的read count。

expMatrix<-read.table("easy_input.txt",header = T,row.names = 1)
#查看前三个基因的FPKM值
expMatrix[1:3,]

FPKM转TPM

rsem作者Bo Li的文字描述:
https://groups.google.com/forum/#!topic/rsem-users/uajT7gnTj-0

It is very easy to convert FPKM/RPKMs to TPMs. You first normalize your FPKMs from all genes so that their sum is equal to 1. Then you product 1e6 to each normalized value and you will obtain TPMs.

先写个函数

fpkmToTpm <- function(fpkm)
{
    exp(log(fpkm) - log(sum(fpkm)) + log(1e6))
}

计算TPM值,保存到tpms里

tpms <- apply(expMatrix,2,fpkmToTpm)

#查看前三个基因的TPM值
tpms[1:3,]

#检查一下,是不是每列的总和都是1M
colSums(tpms)

#把TPM值保存到文件
write.table(tpms,"TCGA_FPKM2TPM.genes.txt",quote = F)

收藏回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|bioinfoer ( 萌ICP备20244422号 )

GMT+8, 2025-4-4 05:08 , Processed in 0.072842 second(s), 32 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表