[Bioc-devel] edgeR estimateGLMRobustDisp Fails when Called From A Package
Gordon K Smyth
smyth at wehi.EDU.AU
Fri Jun 27 06:53:53 CEST 2014
After some thought, I've decided to import the LargeDataClass as you've
requested, but I have to say that some of your message doesn't make a lot
of sense to me.
The class of your data object looks weird. Is this really a valid class?
glmFit() doesn't have a method for the LargeDataObject class, so it's hard
to see how the LargeDataObject class could make any difference.
In fact, glmFit() is an S3 generic, whereas LargeDataObject is an S4
virtual class, so glmFit() could never possibly "see" the LargeDataObject
class anyway.
Finally, glmFit() does have a method for DGEList objects and also a
default method, so it is hard to see how it could fail to dispatch
whatever type of object you're giving it.
It seems to me that, if you want to use classes and functions defined by
the limma package, then the onus is on you to load or import what you
require into your own package. Why wouldn't your package depend on limma
the same way that edgeR does?
Gordon
On Fri, 27 Jun 2014, Dario Strbenac wrote:
> Thank you. I made that change to the edgeR source code and reinstalled it, but I get another error further in my function :
Error in UseMethod("glmFit") :
no applicable method for 'glmFit' applied to an object of class "c('DGEList', 'list', 'LargeDataObject', 'vector')"
This is because of LargeDataObject from limma is not imported into edgeR. Can you add that one, too ?
--------------------------------------
Dario Strbenac
PhD Student
University of Sydney
Camperdown NSW 2050
Australia
________________________________________
From: Gordon K Smyth <smyth at wehi.EDU.AU>
Sent: Friday, 27 June 2014 9:32 AM
To: Dario Strbenac
Cc: bioc-devel at r-project.org
Subject: edgeR estimateGLMRobustDisp Fails when Called From A Package
> Date: Thu, 26 Jun 2014 04:00:11 +0000
> From: Dario Strbenac <dstr7320 at uni.sydney.edu.au>
> To: "bioc-devel at r-project.org" <bioc-devel at r-project.org>
> Subject: [Bioc-devel] edgeR estimateGLMRobustDisp Fails when Called
> From A Package
>
> Hello,
>
> I am writing a package that has a function that uses estimateGLMRobustDisp, leading to an error :
>
> Error in dispBinTrend(y, design, offset = offset, method.trend = "loess", :
> could not find function "loessFit"
> Calls: edgeRselection ... estimateGLMTrendedDisp -> estimateGLMTrendedDisp.default -> dispBinTrend
>
> I import estimateGLMRobustDisp from edgeR in my NAMESPACE file. This
> error is because edgeR depends on limma, rather than importing from it.
> I want to avoid using parent.env<- and .onLoad to get around the
> problem. Is there any hope of modifying the edgeR description file to
> have limma in the Imports field ?
Nope, because that is neither necessary nor good programming practice
(according to R core).
I will however add loessFit to importFrom() in edgeR's NAMESPACE, which I
think will solve your problem.
Best wishes
Gordon
> --------------------------------------
> Dario Strbenac
> PhD Student
> University of Sydney
> Camperdown NSW 2050
> Australia
>
> ------------------------------
______________________________________________________________________
The information in this email is confidential and intend...{{dropped:4}}
More information about the Bioc-devel
mailing list