Is there a way to convert rpkm data to raw counts
1
0
Entering edit mode
3.7 years ago
rishav513 ▴ 30

Hello, I have normalized rpkm data of RNA seq and I want to convert this data to raw counts so that I could use it for differential expression analysis. Is there any way to do that in R?

Any help would be appreciated.

rna • 2.3k views
ADD COMMENT
2
Entering edit mode
3.7 years ago

There is a timeless post titled:

What the FPKM? A review of RNA-Seq expression units

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

the blog provides formulas that can be inverted (note that you will need to know the length of each feature as it was applied during the RPKM computation):

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

################################################################################
# An example
################################################################################
cnts <- c(4250, 3300, 200, 1750, 50, 0)
lens <- c(900, 1020, 2000, 770, 3000, 1777)
countDf <- data.frame(count = cnts, length = lens)

# assume a mean(FLD) = 203.7
countDf$effLength <- countDf$length - 203.7 + 1
countDf$tpm <- with(countDf, countToTpm(count, effLength))
countDf$fpkm <- with(countDf, countToFpkm(count, effLength))
with(countDf, all.equal(tpm, fpkmToTpm(fpkm)))
countDf$effCounts <- with(countDf, countToEffCounts(count, length, effLength))
ADD COMMENT
0
Entering edit mode

Could you please further elaborate as I am new to R, it's a bit hard for me to understand. Actually, I have rpkm data which I downloaded from GEO, and the file downloaded is the "GSE94660_RPKM_normalized.txt" file and I am unable to understand how to convert this data to Tpm. Please explain it in detail, I will be always obeyed to you for this help.

ADD REPLY
0
Entering edit mode

Thanks for your help. Now, I understood

ADD REPLY

Login before adding your answer.

Traffic: 2460 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6