Dear biostars community,
I'm having some doubts regarding which measure is ideal for reporting expression values and I thought you could help me with your experience.
I've been dealing with RNA-seq data from two projects now (one single end and other project paired-end reads) and I want to choose an expression measurement suitable to compare samples from different experiments.
From literature (I dig a lot into blogs, papers, etc.. ) and essentially I've summed up the following:
- Both RPKM and FPKM measures shouldn't be used anymore since they contain an essentially arbitrary scaling factor which is dependent on the average effective length of the transcripts in the underlying sample. Not reproducible, not comparable...
- TPM measure seems to be more appropriate in dealing with this issue since the sums of normalized reads of each sample are the same across all samples, making it "more suitable" to compare samples. However, its calculation (specifically the denominator term) is also sample dependent and this would be the main reason why I shouldn't use it to directly compare expression values between samples.
- CPM seems to be a less-normalized measure since it takes into account only library size. On the opposite hand, estimated read count don't normalize samples at all, making it useless to my goal (unless I use some between-sample normalization method).
My point is that TPM seems to be the most reliable expression measurement to compare different samples. Still, TMP performs within-sample normalization (although there's a lot of papers comparing samples based on TPM values).
Do you think TPM is suitable to compare between-samples expression values? If not, which method you would recommend? Should I use any between-sample normalization method?
I'm looking forward to hearing your opinion! Thanks in advance!
What if I need something accounts for gene length and intersample differences? Could I do between sample normalization, like TMM, on TPM values?
In general, I think that if one is interested in intersample differences, then bias such as gene length does not matter because it affects similarly both samples. Nevertheless, if you really need to correct for gene length, I would do the opposite than what you suggest: first do between sample normalization (like TMM or median of ratio), and only then scale the counts of every gene by dividing by read length. By doing that, you keep your counts normalized (the median of ratio does not change). Note that I wouldn't use that metric for any kind of statistical analysis, as the counts for short genes will be proportionally inflated.
To obtain an expression matrix I normalized raw counts with the median ratio method from DESeq2 and then calculated counts per million with their fpm() function.
should be the
cpm()
function?Nop, the function is called fpm which stands for fragments per million. If you have counts and use this function you'll end up with cpm.
Hi Carlo,
I hope it's ok that I add my question to this post.
What normalization would you then recommend for doing the within-sample statistical analysis? I have TMM and gene length normalized counts and I am interested in comparing the counts between 3 genes within one sample. Can these only be visually/descriptively compared and not statistically?
Thanks, Morgan
You should use TPM values for within sample comparison.
Could you not use DESeq2 to normalize the counts to library size before calculating the TPM to make it comparable across samples?
Yes, this is the median of ratio method I refereed to (DESeq2 uses that).