Convert Log2 (FPKM+0.001) to FPKM in an expression matrix obtained from TCGA
0
0
Entering edit mode
7 weeks ago

Hi,

I have downloaded TCGA data generated from TOIL RNA-seq pipeline. Basically, it is log2(x+0.001) transformed transcript-level expression values (FPKM) matrix. Link to dataset

I intend to analyze isoform switching using IsoformSwitchAnalyzeR which won't work with log2 transformed data or negative values.

So I need to revert the Log2 (FPKM+0.001) to FPKM to remove the negative values but I'm not sure how?

Will taking antilog using 2^(FPKM_log2T_value) work? If not, then is there any other way?

Your help will be much appreciated.

RNA-Seq TCGA RSEM • 273 views
1
Entering edit mode

Hi,

I never used IsoformSwitchAnalyzeR so I'm not familiar with the kind of input it needs and if it'll work with FPKM.

To revert Log2 (FPKM+0.001) to FPKM you need to do (as you pointed out): 2^(FPKM_log2T_value)

The only thing that you forgot was to subtract the pseudocount 0.001. Thus to revert to FKPM just subtract the value of 0.001 to 2^(FPKM_log2T_value).

You can easily check this in R (or any other software or just a simple calculator):

fpkm <- 2344
fpkm_log2 <- log2(fpkm+0.001)
fpkm_log2
#[1] 11.19476

2^fpkm_log2 # if you revert the log2, you see that you still need to subtract the pseudocount
#[1] 2344.001

( 2^fpkm_log2 ) - 0.001 # just subtract the pseudocount after reverting log2
#[1] 2344 # it matches the original FPKM value that we started with


You may have problems to revert the log2(FPKM+0.001) due to rounded values, but you'll have a close value to the original.

Although, as I mentioned, I don't know what kind of input IsoformSwitchAnalyzeR requires, if for instance it accepts fraction numbers or not, so you need to read carefully their documentation.

I hope that helps,

António

0
Entering edit mode

Thanks so much for the reply.

hey, I just noticed that subtracting the pseudocount leads a few values (e.g. when fpkm_log2 is -9.9658) to be negative.

So I guess I'll have to check if the value after taking antilog is less than 0.001 then I won't be subtracting the pseudocount. On the contrary, if value after antilog turns out to be >0.001, subtraction will be performed. Does that seem alright?