This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Is there a way to convert rpkm data to raw counts

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

1 answer

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

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.

Thanks for your help. Now, I understood

Log in to answer this question.