Hi Pete,
I'll look into this. Thanks!
H.
On 02/10/2016 12:33 PM, Peter Hickey wrote:
The assays slot in a SummarizedExperiment object supports elements
with up to 4 dimensions [*]
library(SummarizedExperiment)
makeSE <- function(n) {
assay <- array(1:2^n,
dim = rep(2, n),
dimnames = split(letters[1:(2 * n)], seq_len(n)))
SummarizedExperiment(assay)
}
x <- makeSE(4)
However, the "higher-order" dimnames of the assays aren't preserved
when calling the `assays` or `assay` getters:
dimnames(assay(x, withDimnames = TRUE))
[[1]]
[1] "a" "e"
[[2]]
[1] "b" "f"
[[3]]
NULL
[[4]]
NULL
This is despite the data still being available in the assays slot:
dimnames(x@assays[[1]])
1`
[1] "a" "e"
2`
[1] "b" "f"
3`
[1] "c" "g"
4`
[1] "d" "h"
The following patch fixes this by only touching the rownames and
colnames and not touching the "higher-order" dimnames. Seem
reasonable?
Index: R/SummarizedExperiment-class.R
===================================================================
--- R/SummarizedExperiment-class.R (revision 113505)
+++ R/SummarizedExperiment-class.R (working copy)
@@ -174,7 +174,10 @@
{
assays <- as(x@assays, "SimpleList")
if (withDimnames)
- endoapply(assays, "dimnames<-", dimnames(x))
+ endoapply(assays, function(assay) {
+ dimnames(assay)[1:2] <- dimnames(x)
+ assay
+ })
else
assays
})
[*] In fact, the assay elements can have more than 4 dimensions when
constructed, although subsetting with `[` isn't supported (possibly
things other than subsetting break as well in this case).
# No error
y <- makeSE(5)
y
# Error
y[1, ]
Perhaps there should be a check in the constructor that all assay
elements have < 5 dimensions?
Cheers,
Pete
_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel
--
Hervé Pagès
Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024
E-mail: hpa...@fredhutch.org
Phone: (206) 667-5791
Fax: (206) 667-1319
_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel