Skip to content
Prev 1876 / 21312 Next

[Bioc-devel] maanova::matest: subscript out of bounds if argument test.method = c(0, x, y, z)

Dear Keith,

I found a nasty bug in matest(). The test.method argument (which has a default 
of c(1,0,1,1)) needs to always at least include 1 as the first argument. 

However, I only need the F2-derived p.values (anything more takes up space and 
time), so I specified test.method=c(0,1,0,0). If I do this, the F1 is not 
determined, but this is in fact also needed to establish the data for the 
NULL model. Otherwise, the hsidx index (around line 216 and 219 in matest.R) 
will be empty:

      hsidx = ftest$F1$Fobs <= qf(critical,ftest$dfnu ,ftest$dfde)

leading to    

    sdata$data = sdata$data[hsidx==1,]

(around line 226) yielding an madata object with zero-dimensional data,  
ultimately resulting in an subscript out of bounds somewhere else. 

This bug has been there since at least maanova version 1.4.1, and is still 
there in the latest developement version (maanova 1.15, BioC-2.5). 

Solving it is trivial (always do the F1 test, and only add it to the output if 
test.method[1]==1).

Kind regards,

                                                                       Philip