I downloaded an RNAseq dataset from TCGA database in 3 formats: 1) HTSeq counts; 2) FPKM; 3) FPQM-upper quartile normalized.

The complete dataset contains ~60,000 genes. All of my analysis will focus on a subset of ~2500 genes.

What confused me is the following statement on the TCGA documentation page: "RNA-Seq expression level read counts produced by HT-Seq are normalized using two similar methods: FPKM and FPKM-UQ. Normalized values should be used only within the context of the entire gene set. Users are encouraged to normalize raw read count values if a subset of genes is investigated."

If I normalize the 2500 gene counts in isolation of the rest, I am guessing the normalization factor will be more unstable between samples than using the complete gene set. It means that if one patient has higher expression of the subset than another, normalization within subset will obscure that difference.

However, the normalization factor (either total mapped reads or upper quartile) becomes more stable the larger the number of genes considered. Less variation will be seen on a global scale because of biological differences, whilst technical differences will be normalized.

In short, do you normalize the gene counts de novo if you analyse only a subset of genes? Why?


FPKM, RPKM are ways of normalising for both sequencing depth and gene length. You first calculate a scaling factor (SF = #read/1Mil),you then divide the genes counts for the SF(RPM = # counts/SF), and finally you divide by the length of the gene (RPM/length(gene)). Each sample has a different SF meaning that you should not compare values from different samples.

To fix this, you have to normalise across samples, by upper quartile normalise using a subset of genes. In this case, the SF is calculated based on the upper quartile (70%) of this shared and immutable subset, and it is therefore the same for all the samples.

If you subset your genes, and you are using the normalised values for downstream analyses, then you need to re-scale your values.

I personally try to avoid FPKM,RPKM,TPM (if I can) and always start from raw counts.

I would suggest to have a look at the documentation of packages like DESeq2 and edgeR for detailed and better explanations.

| improve this answer | |
  • $\begingroup$ This doesn't answer my question. I didn't ask how to normalise. I am asking why rescale values for a subset. $\endgroup$ – Marius Nov 1 '19 at 7:12
  • 1
    $\begingroup$ Yes or No does not help if it is taken out of context, here the long explanation. The reason is in this sentence To fix this, ... . If you are using their normalised counts then you need to re scale, if you are using raw counts you don't, as you will normalise the data yourself. $\endgroup$ – fra Nov 1 '19 at 12:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.