Search
Question: edgeR - problem with glmQLFTest()
0
13 months ago by
david.powell0 wrote:

Greetings,

I'm getting the following error when calling glmQLFTest()

> qlf <- glmQLFTest(fit,contrast=cont.matrix)
Error in data.frame(logFC = logFC, logCPM = glmfit$AveLogCPM, LR = LR, : 'row.names' should specify one of the variables > traceback() 4: stop("'row.names' should specify one of the variables") 3: data.frame(logFC = logFC, logCPM = glmfit$AveLogCPM, LR = LR,
PValue = LRT.pvalue, row.names = rn)
2: glmLRT(pois.fit, coef = coef, contrast = contrast)
1: glmQLFTest(fit, contrast = cont.matrix)



I think the error is due to the call to  .isBelowPoissonBound() only returning a single row for my data set.   My guess is that the problem is that in glmLRT() the call

logFC <- drop((glmfit\$coefficients %*% contrast)/log(2))

will produce a vector rather than a matrix, which eventually results in the error from data.frame().

I have an example data set & code at this gist https://gist.github.com/drpowell/ac473045cfea8b489d49e645d3239a53#file-dge-r

Thanks,

-- David

modified 13 months ago by Gordon Smyth35k • written 13 months ago by david.powell0

Please put the table somewhere else, it's expanding the whole ~2000 rows onto the page.

I've edited the gist URL so that it shows as a link instead of inserting the whole dataset.

1
13 months ago by
Aaron Lun21k
Cambridge, United Kingdom
Aaron Lun21k wrote:

A simpler reproducible example is this:

library(edgeR)
example(glmFit)
glmLRT(fit[1,], contrast=diag(2))


... and yes, it is caused by drop when computing logFC. The simplest solution would be to just get rid of drop; if we want a vector (e.g., when there is only one coefficient to test), we can just coerce it directly.

1
13 months ago by
Gordon Smyth35k
Walter and Eliza Hall Institute of Medical Research, Melbourne, Australia
Gordon Smyth35k wrote:

Thanks David. I have committed a fix to edgeR 3.20.1 for Bioconductor 3.6.