[Bioc-devel] importing packages without a name space
Laurent Gatto
L.Gatto at dnavision.be
Mon Apr 16 13:36:51 CEST 2007
Hello again,
Thanks to Seth and Holger for their answers, but I still can not get it
working. I will provide more details.
I have to load two packages, geneplotter and simpleaffy and my package
(yaqcaffy) defines YAQCStats, a subclass of simpleaffy's QCStats class.
As geneplotter provides a name space, I load the required function with
'importFrom(geneplotter,smoothScatter)' in NAMESPACE. I also added
.onLoad <- function(lib,pkg) require(methods)
in R/zzz.R and geneplotter on the 'Imports' line in DESCRIPTION.
For simpleaffy, I do not import it in NAMESPACE, but add it as a
dependency in DESCRIPTION. Here is the .Fist.lib function as defined in
R/zzz.R:
.First.lib <- function(lib,pkg,where) {
require(simpleaffy,quietly=TRUE);
# Find what position in the search path this package is
where <- match(paste("package:", pkg, sep=""), search());
.initClassesAndMethods(where);
cacheMetaData(as.environment(where));
.createYAQCEnvironment()
}
When I check the src of my package (or try to load it), I get the
following error:
Error in setIs(Class, class2, classDef = classDef, where = where) :
Unable to find package environment for class "QCStats" to revise
subclass information
Error in setClass("YAQCStats", contains = "QCStats",
representation(average.noise = "numeric", :
error in contained classes ("QCStats") for class "YAQCStats";
class definition removed from "yaqcaffy"
In addition: Warning message:
Couldn't find superclass "QCStats" to clean up when removing subclass
references to class "YAQCStats" in: .removeSuperclassBackRefs(Class,
classDef, classWhere)
Error : unable to load R code in package 'yaqcaffy'
Error: package/namespace load failed for 'yaqcaffy'
Execution halted
If I add 'importClassesFrom(simpleaffy, QCStats)' in the NAMESPACE file,
I get
Error : package 'simpleaffy' does not have a name space
Error: package/namespace load failed for 'yaqcaffy'
Execution halted
Note that I get the same error message if I ask to import simpleaffy in
NAMESPACE.
Below is my sessionInfo() output after loading simpleaffy and
geneplotter.
Thank you very much in advance,
Laurent
--
Laurent Gatto
www.dnavision.be
> sessionInfo()
R version 2.5.0 beta (2007-04-11 r41127)
i686-pc-linux-gnu
locale:
LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.U
TF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-
8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_ID
ENTIFICATION=C
attached base packages:
[1] "splines" "tools" "stats" "graphics" "grDevices" "utils"
[7] "datasets" "methods" "base"
other attached packages:
geneplotter lattice annotate simpleaffy genefilter survival
"1.13.8" "0.15-3" "1.13.8" "2.9.3" "1.13.14" "2.31"
affy affyio Biobase
"1.13.19" "1.2.0" "1.13.49"
-----Original Message-----
From: Seth Falcon [mailto:sfalcon at fhcrc.org]
Sent: Friday, April 13, 2007 7:59 PM
To: Laurent Gatto
Cc: bioc-devel at stat.math.ethz.ch
Subject: Re: [Bioc-devel] importing packages without a name space
Hi Laurent,
"Laurent Gatto" <L.Gatto at dnavision.be> writes:
> I have a problem with my NAMESPACE file. I need to import a package
that
> does not define a name space, and I always get the same error on
> import(), specifying that the package I try to load 'does not have a
> name space'.
Actually, it is simply not possible to import from a package that does
not have a name space of its own.
> Note that I also need to import a class from that package with
> importClassFrom() which seems to work.
That is news to me; I would not expect it to work.
I think the best you can do when you are using code from a package
that does not have a NAMESPACE file is to put this package in the
Depends field.
The next thing to do is send a friendly email to the package's
maintainer and ask that they add a name space to their package :-)
+ seth
--
Seth Falcon | Computational Biology | Fred Hutchinson Cancer Research
Center
http://bioconductor.org
More information about the Bioc-devel
mailing list