Hoping someone can help. Thanks for taking the time to read this post.
I have RNA-Seq data from 7 different experiments (same assay type, just performed on a different day with different samples).
I would like to compare the expression of a single gene across these samples.
The read data has been aligned and counts obtained (STAR + RSEM).
I've brought in the combined count data, removed genes with low counts (all have at least 10 counts in 3 samples), made a DGEList object within the edgeR framework and ran calcNormFactors().
CPM <- cpm(countdata)
keepthresh <- CPM > 0.5
keep <- rowSums(keepthresh) >= 3
counts.keep <- countdata[keep,]
y <- DGEList(counts.keep)
y <- calcNormFactors(y)
What I want to do now is produce a simple bar plot of the expression level of a single gene across all these samples e.g.
norm_raw <- cpm(y, normalized.lib.sizes = TRUE)
barplot(norm_raw["ENSG00000111640",], names=y$samples$label, las=2, col = y$samples$exp_batch)
The above works fine and gives me the answer I am expecting for my gene of interest (in this case some samples with very low levels of the gene compared to the others).
However, I am very aware that these data come from different batches (confirmed using PCATools) and wondered if this should be taken into account. So I went through the process of batch correction using the following:
log_CPM <- cpm(y, log = TRUE, prior.count = 1, normalized.lib.sizes = TRUE)
log_CPM.batch_corrected <- limma::removeBatchEffect( x = logCPM, batch = y$samples$exp_batch )
When I re-make the bar plot, the expression levels of the gene all level out and are equal across the batches, which is not expected.
As an alternative to batch correction in limma, I also tried internally normalising to a housekeeping gene as follows:
norm_raw <- cpm(y, normalized.lib.sizes = TRUE)
norm_raw_actb <- norm_raw["ENSG00000111640",] / norm_raw["ENSG00000075624",]
barplot(norm_raw_actb, names=y$samples$label, las=2, col = y$samples$exp_batch)
This gives me a barplot that follows a similar expected pattern to the first (non-batch corrected) plot above, but much less pronounced.
My questions are, which is correct? When doing a simple comparison like this, should I batch correct or not? Is an internal house keeping gene comparison enough? Is there a better way to make this sort of comparison?
Many thanks for any advice.