Hi, after beeing busy in the past weeks, we have now overhauled most of the package. To me the most important change is the possibility to have multiple backends, such as netCDF, Ramp and pwiz to do the actual I/O work. We also have a patch for XCMS to do the I/O work through mzR, and Laurent also has patches to msnbase to switch to mzR. Both will be applied to BioC SVN if we have a few weeks of debugging before the release. Could you guys please add the Roundup user "lgatto" to the nosy list of this issue ? Thanks in advance. Yours, Steffen On Mon, 2011-03-07 at 22:27 +0000, herve BioC-Submit wrote: herve <hpages@fhcrc.org> added the comment: ... > Detailed review: > > 1. Please use a BioC-style version number i.e. x.y.z > Note that if you use 0.99.z now, your package will be released as 1.0.0 > in BioC 2.8 (to be released in April). Done. > 2. The source tarball you provided is not clean: it contains a lot of object > files (i.e. *.o files) in src/boost and src/pwiz. A source I've added an mzR/cleanup file > 3. Please add a biocViews field to your DESCRIPTION file. Done. Taken from xcms and affyIO > 4. It doesn't make sense to have 2 SystemRequirements fields. Please merge > them. Done. Copy&Paste error :-( > 5. Please put the Rcpp package in the Imports field of the DESCRIPTION > file. In your NAMESPACE file you import things from Rcpp so you > definitely want to reflect this in the Imports field. Keeping Done. > in the Depends field is up to you but it could be that you don't need > this. (Do you want Rcpp to end up in the search path of the user when > s/he does library(mzR)? Are there symbols or man pages defined in Rcpp > that the end-user of the mzR package might need to access directly?) I have placed Rcpp in the dependency (v 0.5.0) and removed import(Rcpp) from the NAMESPACE file, to supress a warning about missing '"C++Object" unavailable and created in local env' when loading the package. > 6. msdata needs to be put in the Suggests field: it's used in the vignette > and the unit tests. Done. > 7. Same thing for RUnit and faahKO: they are used in the unit tests. Done. > 8. Why call those files AllClass.R and rampMethods.R if the former > doesn't All of that was more/less rewritten by Laurent, I guess it'll be cleaner now. > 9. In man/Ramp-class.Rd: > > Objects can be created by calls of the form \code{new(Ramp)} > > Will the user really create object like this? If yes, then please provide > an example on the \examples{} section of the man page. There is now a proper constructor (openMSfile, see below) that will read an mass spec file, initialise the Rcpp module and return a proper S4 class. > 10. The rampOpenFile() function itself (which is more likely to be *the* way > people will create Ramp objects) is not documented. In particular, the > documentation is not saying what the supported formats are (only > mzXML is used in the example and vignette). Done. rampOpenFile() is now called openMSfile() and documented with its own manpage. > 11. Overall the documentation is insufficient: there are only 2 small man > pages and none of them contains *real* examples. Note that man pages > should contain an \examples{} section, not an \section{Example}{} section > like you did in man/Ramp-class.Rd, so they are evaluated by 'R CMD check'. > The list of C++-style methods provided in man/Ramp-class.Rd gives very > little details about what those methods do exactly and it uses some > technical jargon that probably only experts in the field will understand: > > "suppress RAMP's behavior of creating sparse tables to accomodate > unlisted scans" > > "obtains minimal info on the msRun contained in the file" > > "msLevel", "retentionTime" > > If the man page cannot contain a full explanation of those terms, maybe > at least it should provide some reference to a document describing them. Done. > 12. One more problem with man/Ramp-class.Rd: the get3DMap method doesn't > seem to exist: > > > ramp$get3DMap(1) > Error in ramp$get3DMap(1) : could not find valid method > > But maybe this is just a documentation problem: according to the man > page, it takes only 1 argument, when, in fact, 4 args seem to be required. all these methods that were called through the Rcpp module are now encapsulated in S4 methods, all of which are documented. > 13. The vignette too is insufficient. It doesn't provide any context, and, > in particular, it doesn't provide any explanation about the special nature > of the classes that are used here (and the special syntax used to call > their methods). Providing some background information about the very > special nature of those classes/methods would be more than welcome. Done. > 14. The .onLoad hook contains a setMethod() statement. This is the only > explicit use that I see of the S4 class system. That means mzR should > import the methods package i.e. have it in the Imports field, and have > import(methods) in the NAMESPACE file (generally right after the > useDynLib directive). Done. > 15. I get the 2 following warnings when running 'R CMD check mzR_0.4.tar.gz': > > * checking if this is a source package ... WARNING > Subdirectory ‘src’ contains: > README RcppRamp.hpp cramp.hpp > These are unlikely file names for src files. README went into inst/doc, and about *.hpp: Page 14 of http://cran.r-project.org/doc/manuals/R-exts.pdf says "We recommend using ‘.h’ for headers, also for C++", with a note about potential not-guaranteed-portability. However, the *.hpp are valid C++ header files, and it is also used throughout the boost libraries, which is a high quality C++ project, some of which will go into the next C++ standards. So complaints about *.hpp is definitely a false positive. Nevertheless we have changed src/*hpp to src/*h for now. > probably something you want to complain about on the R-devel mailing list, Will do. > and > > * checking whether the name space can be loaded with stated dependencies > ... WARNING > Error: .onLoad failed in loadNamespace() for 'mzR', details: > call: MS$Ramp > error: could not find function "loadMethod" > Execution halted > > A namespace must be able to be loaded with just the base namespace > loaded: otherwise if the namespace gets loaded by a saved object, the > session will be unable to start. > > Probably some imports need to be declared in the NAMESPACE file. > > probably something that will go away by importing the methods package (as > mentioned previously). Done. Rcpp stuff has been overhauled by Laurent.