[Bioc-devel] eSet extension
On 07/18/2011 01:34 PM, Kasper Daniel Hansen wrote:
I am interested in extending the eSet class. Specifically I want to
have a number of specifically name elements in my assayData slot (I
also have additional slots, but leave that aside). It looks like a
way to achieve this is by
setClass("RGChannelSet",
contains = "eSet",
validity = function(object) {
## msg<- validMsg(NULL,
Biobase:::isValidVersion0(object, "RGChannelSet"))
msg<- validMsg(NULL,
assayDataValidMembers(assayData(object),
c("Red",
"Green")))
if (is.null(msg)) TRUE else msg
})
(this is clearly a two color array). However, this fails in the sense that
new("RGChannelSet")
fails, presumably because nothings tells initialize that these two
elements of assayData needs to be there. Looking at the code for
ExpressionSet and NChannelset, it seems like the way around this is to
write a big initialize method that takes care of this. I have done
so, essentially copying most of the code from intialize-eSet, but this
seems like code duplication. Is there any other approach?
I'm a little rusty on ExpressionSet. I would have thought that providing
a prototype would help, but apparently not. So I ended up with
setClass("RGChannelSet", contains = "eSet")
setValidity("RGChannelSet", function(object) {
msg <- validMsg(NULL,
assayDataValidMembers(assayData(object),
c("Red", "Green")))
if (is.null(msg)) TRUE else msg
})
setMethod(initialize, "RGChannelSet",
function(.Object, ...,
assayData=assayDataNew(Red=matrix(), Green=matrix()))
{
callNextMethod(.Object, ..., assayData=assayData)
})
ExpressionSet has some unusual wrinkles. Also, it might make sense to
extend NChannelSet instead of eSet.
Martin
Now, one may ask, why do I care, because even if new("RGChannelSet")
does not work, stuff like
new("RGChannelSet", Red = SOMETHING, Green = SOMETHING)
still works. However, it is impossible to further extend my
RGChannelSet without errors, ie., something like
setClass("RGChannelExt", contains = "RGChannelSet")
fails.
Kasper
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
Computational Biology Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: M1-B861 Telephone: 206 667-2793