Skip to content

Commit d8106b8

Browse files
committed
Fix as.DatasetExperiment() on SummarizedExperiment(data.frame(..))
Starting with SummarizedExperiment 1.23.2, the SummarizedExperiment() constructor raises an error if one of the supplied assays has rownames and/or colnames that don't match those inferred from the supplied 'rowData' and 'colData' arguments. This change breaks as.DatasetExperiment() on a SummarizedExperiment object that contains a data.frame assay (e.g. on SummarizedExperiment(data.frame(x=1:8, y=letters[1:8]))). This commit repairs as.DatasetExperiment() on such object.
1 parent ebaaf33 commit d8106b8

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Package: struct
22
Type: Package
33
Title: Statistics in R Using Class-based Templates
4-
Version: 1.5.1
4+
Version: 1.5.2
55
Authors@R: c(
66
person(
77
c("Gavin","Rhys"),

R/DatasetExperiment_class.R

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,10 @@ setMethod (f = 'as.SummarizedExperiment',
172172
setMethod (f = 'as.DatasetExperiment',
173173
signature = 'SummarizedExperiment',
174174
definition = function(obj) {
175+
a = as.matrix(assay(obj, withDimnames=FALSE))
176+
dimnames(a) = dimnames(obj)
175177
out=DatasetExperiment(
176-
data=as.data.frame(t(assay(obj))),
178+
data=as.data.frame(t(a)),
177179
variable_meta=as.data.frame(rowData(obj)),
178180
sample_meta=as.data.frame(colData(obj)),
179181
name=as.character(metadata(obj)$name),

tests/testthat/test-dataset.R

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ test_that('DatasetExperiment objects',{
2424

2525
DE=as.DatasetExperiment(SE)
2626
expect_true(is(DE,'DatasetExperiment'))
27+
28+
SE=SummarizedExperiment(data.frame(x=1:8, y=letters[1:8]))
29+
DE=as.DatasetExperiment(SE)
30+
expect_true(is(DE,'DatasetExperiment'))
31+
expect_identical(dimnames(DE), rev(dimnames(SE)))
2732

2833
expect_true("name" %in% .DollarNames.struct_class(DE))
2934

0 commit comments

Comments
 (0)