[BioC] RWebServices createMap(): Error in dots[[1L]][[1L]] : subscript out of bounds

Michael Shipway mshipwa1 at jhu.edu
Thu Jan 14 00:09:40 CET 2010


I believe I have identified the bug, it is in 
RWebServices version 1.10.0, 
Function: getFunctionDoc()
File: mkMapUtil.R
Lines: 218-283

I do not have a copy of the version 1.8.0 code so I cannot confirm that this
has changed in 1.10.0, only that it exists.

This function now crashes if the <package>/man directory of the package does
NOT contain "R documentation" file in (Rd) format.
NOTE: it does not need to be the correct Rd file for the package, a random
documentation file from another package seems to work as well.  
It does check for the existence of several key elements of the Rd format, so
it must be a valid Rd file at least.

It appears that getFunctionDoc() uses the Rd_db() function to "build a
database of all Rd sources in the package".
This wrapped in a try() function to trap any errors.  
However, it appears that finding zero files in not an error, just a null
result, so the function tries to evaluate the database... and fails.

As long as at least one valid Rd files is in the /man directory, the ant
"map-package" target will succeed.

It should also be noted that the R-manual says this about Rd_db():
Warning
These functions are still experimental. Names, interfaces and values might
change in future versions. 

Michael Shipway

P.S. The document "Parsing Rd Files" Jan 1, 2010 details the Rd file format.
http://developer.r-project.org/parseRd.pdf
"Prior to this document, the R documentation (Rd) file format did not have a
formal description."


-----Original Message-----
From: bioconductor-bounces at stat.math.ethz.ch
[mailto:bioconductor-bounces at stat.math.ethz.ch] On Behalf Of Martin Morgan
Sent: Thursday, January 07, 2010 1:34 PM
To: Michael Shipway
Cc: bioconductor at stat.math.ethz.ch
Subject: Re: [BioC] RWebServices createMap(): Error in dots[[1L]][[1L]] :
subscript out of bounds

Michael Shipway wrote:
> Can anyone help me with this, I cannot recreate a web service on a 2nd
> machine?
> 
> I've developed and tested an RWebservices based web service on CentOS
> release 5.3 (Final) running in a VM on my windows XP box.
> 
> However, when I transferred the code to my production machine, CentOS
> release 5.4 (Final),  I cannot map the package (e.g. generate Java code).
> 
> Other differences between the two setups:
> 
> Feature                                   Dev          Production
> 
> RWebServices Version       1.8.0      1.10.0
> 
> R version                                 2.8.1       2.10.0
> 
>  
> 
> I've confirmed that my R package is installed and functioning correctly on
> both machines.
> 
> When I run "ant -Dpkg=natreeV3 map-package" on the production machine, I
get
> the error message:
> 
> "Error in dots[[1L]][[1L]] : subscript out of bounds"

I think the issue is in your package documentation, though am not sure.
Does R CMD build <your_pkg> && R CMD check <your_package>_<vers> suggest
anything? Some more below...

> 
>  
> 
> Below is the full verbose output of the map-package
> 
> --------------------------------------------------------------------
> 
> Buildfile: build.xml
> 
>  
> 
> -user-tuning-properties-exist:
> 
>  
> 
> -unpack-tuning-properties:
> 
>  
> 
> map-package:
> 
>      [exec] >
> 
>      [exec] >             library(RWebServices)
> 
>      [exec] Loading required package: SJava
> 
>      [exec] Loading required package: TypeInfo
> 
>      [exec] Loading required package: tools
> 
>      [exec] >             createMap(pkgs="natreeV3",
> 
>      [exec] +             generateTests=TRUE,
> 
>      [exec] +             outputDirectory="/home/mshipwa1/natreeV3",
> 
>      [exec] +             typeMode="javalib",
> 
>      [exec] +             deployMode="jms",
> 
>      [exec] +             wsdlStyle="WRAPPED",
> 
>      [exec] +             wsdlUse="LITERAL",
> 
>      [exec] +             extraClasses="",
> 
>      [exec] +             pkgRoot="org.bioconductor",
> 
>      [exec] +             verbose=TRUE)
> 

the command above ('createMap(...)') can be executed in an R session,
after library(RWebServices). You can then debug the error message using,
e.g., traceback() or debug(). A little more below...

>      [exec] Loading required package: tree
> 
>      [exec] ********************************************
> 
>      [exec]  ***   resolve all data type mapping    *****
> 
>      [exec]  ********************************************
> 
>      [exec] >>>>>> Generate data map for extraClasses:
> 
>      [exec] >>>>>> Generate data map for R function:
> 
>      [exec] character test1(numeric depth)      data map for:  character
> 
>      [exec]     data map for:  numeric
> 
>      [exec] >>>>>> Generate data map for R function:
> 
>      [exec] list test2(numeric depth)   data map for:  list
> 
>      [exec]     data map for:  numeric
> 
>      [exec] >>>>>> Generate data map for R function:
> 
>      [exec] character naTree5(character dataFileName, numeric ndays,
numeric
> features, numeric treeDepth)       data map for:  character
> 
>      [exec]     data map for:  character
> 
>      [exec]     data map for:  numeric
> 
>      [exec]     data map for:  numeric
> 
>      [exec]     data map for:  numeric
> 
>      [exec] >>>>>> Generate data map for R function:
> 
>      [exec] list naTree(character dataFileName, numeric ndays, numeric
> features, numeric treeDepth)     data map for:  list
> 
>      [exec]     data map for:  character
> 
>      [exec]     data map for:  numeric
> 
>      [exec]     data map for:  numeric
> 
>      [exec]     data map for:  numeric
> 
>      [exec]
---------------------------------------------------------------
> 
>      [exec] [R Type]  =>  [Java Type]  [Java Package]  [R Package]
> [TypeGroup]  [R->Java]  [Java->R]
> 
>      [exec]
---------------------------------------------------------------
> 
>      [exec]
---------------------------------------------------------------
> 
>      [exec] ********************************************
> 
>      [exec]  ****     resolve function mapping      *****
> 
>      [exec]  ********************************************
> 
>      [exec] >>>>>> Generate function map for R package:  natreeV3
> 
>      [exec] >> (1) java function signature:
> 
>      [exec] [[1]]
> 
>      [exec] String[] test1(double[] depth)
> 
>      [exec] [[2]]
> 
>      [exec] Object[] test2(double[] depth)
> 
>      [exec] [[3]]
> 
>      [exec] String[] naTree5(String[] dataFileName, double[] ndays,
double[]
> features, double[] treeDepth)
> 
>      [exec] [[4]]
> 
>      [exec] Object[] naTree(String[] dataFileName, double[] ndays,
double[]
> features, double[] treeDepth)
> 
>      [exec] Error in dots[[1L]][[1L]] : subscript out of bounds
> 
>      [exec] Calls: createMap ... .local -> getFunctionDoc -> mapply ->
.Call
> -> <Anonymous>

getFunctionDoc is the clue here that is a documentation problem. Likely
it is one of these (ugly) lines

        db_alias_texts <- mapply(tools:::.Rd_get_section, db,
            which = "alias")
        db_description_texts <- mapply(tools:::.Rd_get_section,
            db, which = "description")
        db_value_texts <- mapply(tools:::.Rd_get_section, db,
            which = "value")
        db_arg_texts <- mapply(tools:::.Rd_get_section, db,
            which = "arguments")

Martin

>      [exec] Execution halted
> 
>      [exec] Result: 1
> 
>    [delete] Deleting: /home/mshipwa1/natreeV3/null1969125778
> 
>  
> 
> BUILD SUCCESSFUL
> 
> Total time: 2 seconds
> 
> 
> 	[[alternative HTML version deleted]]
> 
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives:
http://news.gmane.org/gmane.science.biology.informatics.conductor


-- 
Martin Morgan
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793

_______________________________________________
Bioconductor mailing list
Bioconductor at stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/bioconductor
Search the archives:
http://news.gmane.org/gmane.science.biology.informatics.conductor



More information about the Bioconductor mailing list