Differential gene expression anlaysis?
Entering edit mode
Last seen 2.7 years ago


I am doing DEG analysis between two sample (Normal vs Treated) without replicates using edgeR. I know there is no significance of analysis without replicates, but i have no other choice.

I have gone through some literature and found some normalization methods, of which i decided to chose calcNormFactors method (which normalization method should i choose : TMM or RLE). I am not able to convert it into logfold change, what could be applied for this purpose: exact test?. in my current analysis i have applied exact test but this test:

Compute genewise exact tests for differences in the means between two groups of negative-binomially distributed counts.

The count matrix was generated by Corset, which gives the count matrix in Poisson distribution while i am applying exactTest which takes count matrix as negative binomial distribution. Should i carry on with this analysis only or use another test equivalent to exactTest for Poisson distributed count matrix? If there is any other test then what it is? THere is fisher.exact test equivalent to exact test but it takes 2X2 matrix into consideration.

y = read.table("counts.txt", header=T, row.names=1, com='')

sampleinfo <- read.delim("sample.txt")
group <- paste(sampleinfo$Status,sampleinfo$CellType,sep=".")
group <- factor(group)
keep <- rowSums(y > 0.5)>=2
y <- DGEList(y, group=group, genes=y[,1])
y <- y[keep, ,keep.lib.sizes = FALSE]

#no normalization

no_norm <- exactTest(y, dispersion=bcv^2)
table(p.adjust(no_norm$table$PValue, method="BH")<0.05)

TMM <- calcNormFactors(y, method = "TMM") 
bcv <- 0.2
TMM <- exactTest(TMM, dispersion=bcv^2)
table(p.adjust(TMM$table$PValue, method="BH")<0.05)

RLE <- calcNormFactors(y, method = "RLE") 
bcv <- 0.2
RLE <- exactTest(RLE, dispersion=bcv^2)
table(p.adjust(RLE$table$PValue, method="BH")<0.05)

uq <- calcNormFactors(y, method = "upperquartile") 
bcv <- 0.2
uq <- exactTest(uq, dispersion=bcv^2)
table(p.adjust(uq$table$PValue, method="BH")<0.05)


get_de <- function(x, pvalue){
  my_i <- p.adjust(x$PValue, method="BH") < pvalue

my_no_norm <- get_de(no_norm$table, 0.05)
my_tmm <- get_de(TMM$table, 0.05)
my_rle <- get_de(RLE$table, 0.05)
my_uq <- get_de(uq$table, 0.05)

gplots::venn(list(no_norm = my_no_norm, TMM = my_tmm, RLE = my_rle, UQ = my_uq))


I need help.

rnaseq R normalization • 2.6k views
Entering edit mode
Last seen 7 hours ago
WEHI, Melbourne, Australia

Definitely, you should use exactTest or glmLRT and not try to use a Poisson test (although you can get an exact Poisson test simply by setting dispersion=0 in exactTest.)

I think you may have misinterpreted the role of the Poisson distribution in Corset. The counts can be viewed as Poisson for a single library in isolation, but variation in counts between samples is still negative binomial. The use of Corset does not eliminate biological variation. The Corset authors themselves used edgeR to assess differential expression, in the usual way as you would use edgeR to analyse read counts from any program.

Why would you not use TMM normalization? It is the default for calcNormFactors so it is obviously what we recommend.

Entering edit mode

Thankyou for your suggestion and to clear my doubts about distribution... I'll go with the exact test after CalcNormFactors with TMM normalization.... Is it ok to set dispersion=0 in exactTest?

Entering edit mode

No, it is not ok to set dispersion=0. Setting dispersion=0 is a Poisson test, which I advised you not to do


Login before adding your answer.

Traffic: 397 users visited in the last hour
Help About
Access RSS

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6