Question: nmf function not working
0
gravatar for aslam.mohammed398
15 months ago by
aslam.mohammed3980 wrote:
When I use identifySignatures from somaticsignatures package it throws me out this error. What do I need to change ?
identifySignatures(sca_mm,5,nmfDecomposition)
Error in (new("standardGeneric", .Data = function (x)  : 
  unused arguments (model = list("NMFstd", 5, 0), method = "random")
somaticsignatures nmf • 470 views
ADD COMMENTlink modified 11 months ago by Xin0 • written 15 months ago by aslam.mohammed3980

Please read the posting guide and provide the required details.

ADD REPLYlink written 15 months ago by Julian Gehring1.3k

Hi, Aslam

I have encountered an exactly same problem. My code was working but I recently updated NMF packages (following biocLite suggestion). Then, when I ran the command, I had the error:

sigs_nmf = identifySignatures(sca_mm, n_sigs, nmfDecomposition)
Error in (new("standardGeneric", .Data = function (x)  : 
  unused arguments (model = list("NMFstd", 5, 0), method = "random")

> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Version of pacakges:

NMF_0.21.0

SomaticSignatures_2.16.0

VariantAnnotation_1.26.1 

ADD REPLYlink written 14 months ago by li110

Thank you for the report. I have not been able to reproduce this issue with the same package versions as you have. Could you please post a complete example that I can rerun (from the starting of the R session until the error occurs) together with a complete output of the sessionInfo command?

ADD REPLYlink written 14 months ago by Julian Gehring1.3k
Answer: nmf function not working
0
gravatar for Xin
11 months ago by
Xin0
Xin0 wrote:

Hi Aslam,

I guess there should be some unknown library conflicts. Detaching and reloading NMF package may work.

ADD COMMENTlink written 11 months ago by Xin0

There is an incompatibility here between NMF and SumarizedExperiment. If I start R without attaching any packages and run

library(NMF)

m = matrix(runif(100),nrow=10)
rank = 10

res = nmf(m,rank)

This runs fine and gives me an object of class NMF fit as expected. However, if I start up R without attaching anything and run

library(NMF)
library(SummarizedExperiment)

m = matrix(runif(100),nrow=10)
rank = 10

res = nmf(m,rank)

This reproduces the error:

Error in (new("standardGeneric", .Data = function (x)  : 
  unused arguments (model = list("NMFstd", 10, 0), method = "random")

For completeness, I am appending my sessionInfo():

R version 3.6.0 (2019-04-26)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)

Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so

locale:
 [1] LC_CTYPE=en_GB.utf8       LC_NUMERIC=C             
 [3] LC_TIME=en_GB.utf8        LC_COLLATE=en_GB.utf8    
 [5] LC_MONETARY=en_GB.utf8    LC_MESSAGES=en_GB.utf8   
 [7] LC_PAPER=en_GB.utf8       LC_NAME=C                
 [9] LC_ADDRESS=C              LC_TELEPHONE=C           
[11] LC_MEASUREMENT=en_GB.utf8 LC_IDENTIFICATION=C      

attached base packages:
[1] stats4    parallel  stats     graphics  grDevices utils     datasets 
[8] methods   base     

other attached packages:
 [1] SummarizedExperiment_1.14.0 DelayedArray_0.10.0        
 [3] BiocParallel_1.18.0         matrixStats_0.54.0         
 [5] GenomicRanges_1.36.0        GenomeInfoDb_1.20.0        
 [7] IRanges_2.18.1              S4Vectors_0.22.0           
 [9] NMF_0.21.0                  Biobase_2.44.0             
[11] BiocGenerics_0.30.0         cluster_2.0.8              
[13] rngtools_1.4                pkgmaker_0.27              
[15] registry_0.5-1             

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.1             XVector_0.24.0         compiler_3.6.0        
 [4] pillar_1.4.2           RColorBrewer_1.1-2     plyr_1.8.4            
 [7] zlibbioc_1.30.0        bitops_1.0-6           iterators_1.0.10      
[10] tools_3.6.0            digest_0.6.19          lattice_0.20-38       
[13] tibble_2.1.3           gtable_0.3.0           gridBase_0.4-7        
[16] pkgconfig_2.0.2        rlang_0.4.0            Matrix_1.2-17         
[19] foreach_1.4.4          bibtex_0.4.2           GenomeInfoDbData_1.2.1
[22] withr_2.1.2            stringr_1.4.0          grid_3.6.0            
[25] ggplot2_3.2.0          reshape2_1.4.3         magrittr_1.5          
[28] scales_1.0.0           codetools_0.2-16       xtable_1.8-4          
[31] colorspace_1.4-1       stringi_1.4.3          RCurl_1.95-4.12       
[34] lazyeval_0.2.2         doParallel_1.0.14      munsell_0.5.0         
[37] crayon_1.3.4
ADD REPLYlink written 3 months ago by sifka0

Both NMF and SummarizedExperiment (through a package it Depends: on, DelayedArray) have implemented a seed generic. Usually a package can be confident that, when it references functions defined in it's own package, it gets only those functions. Here we have

> nmf(m, rank)
Error in (new("standardGeneric", .Data = function (x)  :
  unused arguments (model = list("NMFstd", 10, 0), method = "random")
> traceback()
11: do.call(getGeneric("seed"), c(list(x = x, model = init, method = seed.method),
        parameters.seed))
10: .local(x, rank, method, ...)
9: nmf(x, rank, method = strategy, ...)
8: nmf(x, rank, method = strategy, ...)
7: nmf(x, rank, method, seed = seed, model = model, ...)
6: nmf(x, rank, method, seed = seed, model = model, ...)
5: .local(x, rank, method, ...)
4: nmf(x, rank, NULL, ...)
3: nmf(x, rank, NULL, ...)
2: nmf(m, rank)
1: nmf(m, rank)

Note the getGeneric() call that causes the problem -- it does not have a package= argument, and appears to use the search() path to find the generic. Since SummarizedExperiment was loaded after NMF, it finds the wrong generic.

I think this is a bug in the NMF implementation, and will try to contact the maintainer.

A work-around, which may not be satisfactory if you also want to use DelayedArray::seed(), is to use the new function conflictRules() defined in base R to exclude DelayedArray::seed() from being seen.

conflictRules("DelayedArray", exclude = "seed")
library(NMF)
library(SummarizedExperiment)

UPDATE This issue had already been reported to NMF, and is fixed in the devel version of the package. You can install the devel version of the package with

BiocManager::install("renozao/NMF", ref = "devel")
ADD REPLYlink modified 3 months ago • written 3 months ago by Martin Morgan ♦♦ 23k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 199 users visited in the last hour