Search
Question: CAMERA error: $ operator not defined for this S4 class
6
gravatar for scott.walmsley
2.4 years ago by
United States
scott.walmsley60 wrote:

Hi, I am trying to run findIsotopes from package CAMERA.

The following error, I believe related to igraph is produced (sessionInfo follows). Is there a fix for this, or am I doing something wrong here. The error repeats with attached code, as well as when called on other data.  Thanks in advance.

>library(CAMERA)

>  file <- system.file('mzdata/MM14.mzdata', package = "CAMERA")
>  xs   <- xcmsSet(file, method="centWave", ppm=30, peakwidth=c(5,10))

 Detecting mass traces at 30 ppm ...
 % finished: 0 10 20 30 40 50 60 70 80 90 100
 456 m/z ROI's.

 Detecting chromatographic peaks ...
 % finished: 0 10 20 30 40 50 60 70 80 90 100
 126  Peaks.
>  an   <- xsAnnotate(xs)
>  an   <- groupFWHM(an)
Start grouping after retention time.
Created 14 pseudospectra.
>  an   <- findIsotopes(an)
Error in x$membership : $ operator not defined for this S4 class

 

> traceback()
5: groups.default(object@xcmsSet)
4: groups(object@xcmsSet)
3: nrow(groups(object@xcmsSet))
2: findIsotopes(an)
1: findIsotopes(an)

The sessionInfo():

R version 3.2.1 (2015-06-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server 2012 x64 (build 9200)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

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

other attached packages:
[1] CAMERA_1.24.0       igraph_1.0.1        xcms_1.44.0        
[4] ProtGenerics_1.0.0  mzR_2.2.1           Rcpp_0.11.6        
[7] Biobase_2.28.0      BiocGenerics_0.14.0

loaded via a namespace (and not attached):
 [1] graph_1.46.0        Formula_1.2-1       cluster_2.0.2      
 [4] magrittr_1.5        MASS_7.3-41         splines_3.2.1      
 [7] munsell_0.4.2       colorspace_1.2-6    lattice_0.20-31    
[10] stringr_1.0.0       plyr_1.8.3          tools_3.2.1        
[13] nnet_7.3-10         grid_3.2.1          gtable_0.1.2       
[16] latticeExtra_0.6-26 survival_2.38-2     RBGL_1.44.0        
[19] digest_0.6.8        gridExtra_0.9.1     RColorBrewer_1.1-2
[22] reshape2_1.4.1      ggplot2_1.0.1       acepack_1.3-3.3    
[25] codetools_0.2-11    rpart_4.1-10        stringi_0.5-5      
[28] scales_0.2.5        Hmisc_3.16-0        stats4_3.2.1       
[31] foreign_0.8-64      proto_0.3-10       

 

 

 

 

 

 

 

ADD COMMENTlink modified 2.4 years ago by ckuhl20 • written 2.4 years ago by scott.walmsley60
1

Based the analysis of findIsotopes on another computer, and browsing the session info from the other helpful comments,  it was found that rolling back R to 3.1.1 and igraph to version 0.7.1 regains findIsotopes functionality. Note that my install of Bioconductor and CAMERA on another computer in 2014 automatically installed igraph to the previous, compatible version. Reinstalling R today to version 3.1.1 on the workstation where the error was produced, and then installing bioconductor and camera,  installs igraph v 1.0.1.  After this,the function findIsotopes() does not work (see first session below).
Downloading igraph 0.7.1 and then updating that package by zip file does work (see second session).   I did not test this igraph rollback on R.3.2.1, so it may work there.

Since it seems there is an underlying and greater root cause for the error, I will not post this as answered yet, but consider this a temporary workaround. There are other warnings in the load of camera based on mzR and Rcpp, so as a user, I may try to roll back Rcpp as well on my system.


FIRST SESSION:   R3.1.1, igraph 1.0.1
> file <- system.file('mzdata/MM14.mzdata', package = "CAMERA")
>  xs   <- xcmsSet(file, method="centWave", ppm=30, peakwidth=c(5,10))

 Detecting mass traces at 30 ppm ...
 % finished: 0 10 20 30 40 50 60 70 80 90 100
 456 m/z ROI's.

 Detecting chromatographic peaks ...
 % finished: 0 10 20 30 40 50 60 70 80 90 100
 126  Peaks.
>  an   <- xsAnnotate(xs)
>  an   <- groupFWHM(an)
Start grouping after retention time.
Created 14 pseudospectra.
>  an   <- findIsotopes(an)
Error in x$membership : $ operator not defined for this S4 class

> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

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

other attached packages:
[1] CAMERA_1.22.0        igraph_1.0.1         xcms_1.42.0         
[4] mzR_2.0.0            Rcpp_0.11.6          Biobase_2.26.0      
[7] BiocGenerics_0.12.1  BiocInstaller_1.16.5

loaded via a namespace (and not attached):
 [1] acepack_1.3-3.3     cluster_2.0.2       codetools_0.2-11   
 [4] colorspace_1.2-6    digest_0.6.8        foreign_0.8-65     
 [7] Formula_1.2-1       ggplot2_1.0.1       graph_1.44.1       
[10] grid_3.1.1          gridExtra_0.9.1     gtable_0.1.2       
[13] Hmisc_3.16-0        lattice_0.20-31     latticeExtra_0.6-26
[16] magrittr_1.5        MASS_7.3-42         munsell_0.4.2      
[19] nnet_7.3-10         plyr_1.8.3          proto_0.3-10       
[22] RBGL_1.42.0         RColorBrewer_1.1-2  reshape2_1.4.1     
[25] rpart_4.1-10        scales_0.2.5        splines_3.1.1      
[28] stats4_3.1.1        stringi_0.5-5       stringr_1.0.0      
[31] survival_2.38-3     tools_3.1.1      

 

SECOND SESSION:   R3.1.1, igraph 0.7.1
DOES WORK  ==>

> file <- system.file('mzdata/MM14.mzdata', package = "CAMERA")
>  xs   <- xcmsSet(file, method="centWave", ppm=30, peakwidth=c(5,10))

 Detecting mass traces at 30 ppm ...
 % finished: 0 10 20 30 40 50 60 70 80 90 100
 456 m/z ROI's.

 Detecting chromatographic peaks ...
 % finished: 0 10 20 30 40 50 60 70 80 90 100
 126  Peaks.
>  an   <- xsAnnotate(xs)
>  an   <- groupFWHM(an)
Start grouping after retention time.
Created 14 pseudospectra.
>  an   <- findIsotopes(an)
Generating peak matrix!
Run isotope peak annotation
 % finished: 20  50  60  70  80  90  100  
Found isotopes: 32


> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

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

other attached packages:
[1] CAMERA_1.22.0       igraph_0.7.1        xcms_1.42.0        
[4] mzR_2.0.0           Rcpp_0.11.6         Biobase_2.26.0     
[7] BiocGenerics_0.12.1

loaded via a namespace (and not attached):
 [1] acepack_1.3-3.3     cluster_2.0.2       codetools_0.2-11   
 [4] colorspace_1.2-6    digest_0.6.8        foreign_0.8-65     
 [7] Formula_1.2-1       ggplot2_1.0.1       graph_1.44.1       
[10] grid_3.1.1          gridExtra_0.9.1     gtable_0.1.2       
[13] Hmisc_3.16-0        lattice_0.20-31     latticeExtra_0.6-26
[16] magrittr_1.5        MASS_7.3-42         munsell_0.4.2      
[19] nnet_7.3-10         plyr_1.8.3          proto_0.3-10       
[22] RBGL_1.42.0         RColorBrewer_1.1-2  reshape2_1.4.1     
[25] rpart_4.1-10        scales_0.2.5        splines_3.1.1      
[28] stats4_3.1.1        stringi_0.5-5       stringr_1.0.0      
[31] survival_2.38-3     tools_3.1.1     

 

ADD REPLYlink written 2.4 years ago by scott.walmsley60

Hi

I could also find a temporal solution with R 3.2.1. I use to keep previous packages installation when I update R, so l load previous igraph and CAMERA packages and I am able to perform findIsotopes().

library(xcms)
library(igraph, lib.loc = "/home/R/3.1")
library(CAMERA, lib.loc = "/home/R/3.1")

cdffiles <- file.path(dataDir,"cdf.mzXML")
msSet <- xcmsSet(files = cdffiles, method = "centWave", ppm = 15, peakwidth = c(5,12), snthresh = 10)

Detecting mass traces at 15 ppm ...
  % finished: 0 10 20 30 40 50 60 70 80 90 100
  2385 m/z ROI's.

  Detecting chromatographic peaks ...
  % finished: 0 10 20 30 40 50 60 70 80 90 100
  276  Peaks.

an <- xsAnnotate(msSet)
anF <- groupFWHM(an, perfwhm = 0.6)

Start grouping after retention time.
 Created 73 pseudospectra.

anI <- findIsotopes(anF, mzabs = 0.001)

Generating peak matrix!
 Run isotope peak annotation
  % finished: 10  20  30  40  50  60  70  80  90  100
 Found isotopes: 45

R version 3.2.1 (2015-06-18)
 Platform: x86_64-pc-linux-gnu (64-bit)
 Running under: Ubuntu 14.04.2 LTS

 locale:
  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
  [3] LC_TIME=es_ES.UTF-8        LC_COLLATE=en_US.UTF-8
  [5] LC_MONETARY=es_ES.UTF-8    LC_MESSAGES=en_US.UTF-8
  [7] LC_PAPER=es_ES.UTF-8       LC_NAME=C
  [9] LC_ADDRESS=C               LC_TELEPHONE=C
 [11] LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C

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

 other attached packages:
 [1] CAMERA_1.20.0       igraph_0.7.0        ggplot2_1.0.1
 [4] xcms_1.44.0         Biobase_2.28.0      ProtGenerics_1.0.0
 [7] BiocGenerics_0.14.0 mzR_2.2.1           Rcpp_0.11.6

 loaded via a namespace (and not attached):
  [1] graph_1.42.0        Formula_1.2-1       cluster_2.0.2
  [4] magrittr_1.5        splines_3.2.1       MASS_7.3-42
  [7] munsell_0.4.2       lattice_0.20-29     colorspace_1.2-6
 [10] stringr_1.0.0       plyr_1.8.3          tools_3.2.1
 [13] nnet_7.3-10         grid_3.2.1          gtable_0.1.2
 [16] latticeExtra_0.6-26 survival_2.38-3     RBGL_1.40.0
 [19] digest_0.6.8        gridExtra_0.9.1     RColorBrewer_1.1-2
 [22] reshape2_1.4.1      acepack_1.3-3.3     codetools_0.2-11
 [25] rpart_4.1-10        stringi_0.5-5       compiler_3.2.1
 [28] Hmisc_3.16-0        scales_0.2.5        stats4_3.2.1
 [31] foreign_0.8-64      proto_0.3-10

.libPaths()

[1] "/home/R/3.2"
[2] "/home/R/3.1"
[3] "/usr/local/lib/R/site-library"
[4] "/usr/lib/R/site-library"
[5] "/usr/lib/R/library"

 

But this solution is tricky, you have to be sure you don't have two versions of the same package in the two library locations. For the moment I have created a .Renviron file (see help(Startup) for info) so I don't have to use this lib.loc option in all my scripts

 

ADD REPLYlink written 2.4 years ago by oriol.senan0

I am having the same problem:

library(CAMERA)
Warning message:
 replacing previous import by ‘igraph::groups’ when loading ‘CAMERA’

msSet <- xcmsSet(files = cdffiles, method = "centWave", ppm = 15, peakwidth = c(5,12), snthresh = 10)                                                                                                                               

  Detecting mass traces at 15 ppm ...
  % finished: 0 10 20 30 40 50 60 70 80 90 100
  2385 m/z ROI's.

  Detecting chromatographic peaks ...
  % finished: 0 10 20 30 40 50 60 70 80 90 100
  276  Peaks.

an <- xsAnnotate(msSet)
anF <- groupFWHM(an, perfwhm = 0.6)
Start grouping after retention time.
 Created 73 pseudospectra.

anI <- findIsotopes(anF, mzabs = 0.001)
Error in x$membership : $ operator not defined for this S4 class

R version 3.2.1 (2015-06-18)
 Platform: x86_64-pc-linux-gnu (64-bit)
 Running under: Ubuntu 14.04.2 LTS

 locale:
  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
  [3] LC_TIME=es_ES.UTF-8        LC_COLLATE=en_US.UTF-8
  [5] LC_MONETARY=es_ES.UTF-8    LC_MESSAGES=en_US.UTF-8
  [7] LC_PAPER=es_ES.UTF-8       LC_NAME=C
  [9] LC_ADDRESS=C               LC_TELEPHONE=C
 [11] LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C

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

 other attached packages:
  [1] ggplot2_1.0.1       gtable_0.1.2        CAMERA_1.24.0
  [4] igraph_1.0.1        xcms_1.44.0         Biobase_2.28.0
  [7] ProtGenerics_1.0.0  BiocGenerics_0.14.0 mzR_2.2.1
 [10] Rcpp_0.11.6

 loaded via a namespace (and not attached):
  [1] graph_1.46.0        Formula_1.2-1       cluster_2.0.2
  [4] magrittr_1.5        MASS_7.3-42         splines_3.2.1
  [7] munsell_0.4.2       colorspace_1.2-6    lattice_0.20-31
 [10] stringr_1.0.0       plyr_1.8.3          tools_3.2.1
 [13] nnet_7.3-10         latticeExtra_0.6-26 survival_2.38-3
 [16] RBGL_1.44.0         digest_0.6.8        gridExtra_0.9.1
 [19] RColorBrewer_1.1-2  reshape2_1.4.1      acepack_1.3-3.3
 [22] codetools_0.2-11    rpart_4.1-10        stringi_0.5-5
 [25] compiler_3.2.1      scales_0.2.5        Hmisc_3.16-0
 [28] stats4_3.2.1        foreign_0.8-64      proto_0.3-10

 

ADD REPLYlink written 2.4 years ago by oriol.senan0

Same problem here:

> library(CAMERA)

Loading required package: igraph

 

Attaching package: ‘igraph’

 

The following object is masked from ‘package:xcms’:

 

    groups

 

The following objects are masked from ‘package:BiocGenerics’:

 

    normalize, union

 

The following objects are masked from ‘package:stats’:

 

    decompose, spectrum

 

The following object is masked from ‘package:base’:

 

    union

 

Warning message:

replacing previous import by ‘igraph::groups’ when loading ‘CAMERA’

> #Create an xsAnnotate object

> xsa <- xsAnnotate(xset4)

Error in x$membership : $ operator not defined for this S4 class

 

> sessionInfo()

R version 3.2.1 (2015-06-18)

Platform: x86_64-pc-linux-gnu (64-bit)

Running under: Ubuntu 14.04.2 LTS

 

locale:

[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C         LC_TIME=C            LC_COLLATE=C         LC_MONETARY=C      

 [6] LC_MESSAGES=C        LC_PAPER=C           LC_NAME=C            LC_ADDRESS=C         LC_TELEPHONE=C     

[11] LC_MEASUREMENT=C     LC_IDENTIFICATION=C

 

attached base packages:

[1] parallel  stats     graphics  grDevices utils     datasets  methods   base    

 

other attached packages:

[1] CAMERA_1.24.0       igraph_1.0.1        xcms_1.44.0         Biobase_2.28.0      ProtGenerics_1.0.0  BiocGenerics_0.14.0

[7] mzR_2.2.1           Rcpp_0.11.6       

 

loaded via a namespace (and not attached):

[1] graph_1.46.0        Formula_1.2-1       cluster_2.0.2       magrittr_1.5        MASS_7.3-42         splines_3.2.1     

 [7] munsell_0.4.2       colorspace_1.2-6    lattice_0.20-31     stringr_1.0.0       plyr_1.8.3          tools_3.2.1       

[13] nnet_7.3-10         grid_3.2.1          gtable_0.1.2        latticeExtra_0.6-26 survival_2.38-3     RBGL_1.44.0       

[19] digest_0.6.8        gridExtra_0.9.1     RColorBrewer_1.1-2  reshape2_1.4.1      ggplot2_1.0.1       acepack_1.3-3.3   

[25] codetools_0.2-11    rpart_4.1-10        stringi_0.5-5       scales_0.2.5        Hmisc_3.16-0        stats4_3.2.1      

[31] foreign_0.8-64      proto_0.3-10       

ADD REPLYlink written 2.4 years ago by raimo.franke0

Here is the output of traceback():

> traceback()
4: groups.default(xs)
3: groups(xs)
2: getPeaks_selection(xs)
1: xsAnnotate(xset4)
ADD REPLYlink written 2.4 years ago by raimo.franke0

I tried to reproduce with pretty much the exact same sessionInfo() (a different windows version was the only difference) and could not. I have asked the CAMERA maintainer to take a look at this thread.

 

ADD REPLYlink written 2.4 years ago by Dan Tenenbaum ♦♦ 8.2k
2
gravatar for ckuhl
2.4 years ago by
ckuhl20
ckuhl20 wrote:

I created a bugfix for this problem, which should properly imports the methods from igraph now. This is commited to the release and devel branch. They new version should be build tomorrow.

ADD COMMENTlink written 2.4 years ago by ckuhl20
1
gravatar for Martin Morgan
2.4 years ago by
Martin Morgan ♦♦ 20k
United States
Martin Morgan ♦♦ 20k wrote:

The problem is that the CAMERA package imports 'xcms::groups', as well as all symbols from the igraph package. The igraph package now defines a 'groups' S3 generic, and it is 'seen' from within CAMERA, as hinted by the warning about replacing previous imports. The solution (I think the CAMERA maintainer will address this) is to selectively import from 'igraph', or to explicitly invoke xcms::groups() in the CAMERA code. As a workaround, after loading CAMERA, one can re-define the 'groups' import to be xcms::groups, as

library(CAMERA)
imports = parent.env(getNamespace("CAMERA"))
unlockBinding("groups", imports)
imports[["groups"]] = xcms::groups
lockBinding("groups", imports)

 

 

ADD COMMENTlink written 2.4 years ago by Martin Morgan ♦♦ 20k

Great! Thanks, Martin! That solves my problems!

ADD REPLYlink written 2.4 years ago by raimo.franke0
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 2.2.0
Traffic: 164 users visited in the last hour