Would this code inspired by the release version of GenomicRanges work?
e.g. if I want to add a DataFrame with 10 rows:

names <- letters[1:10]
x <- relist(GRanges(), PartitioningByEnd(integer(10), names=names))
mcols(x) <- DataFrame(foo=1:10)

Then give x to the rowRanges argument of SummarizedExperiment?

On Tue, Mar 31, 2015 at 3:49 PM, Michael Love
<michaelisaiahl...@gmail.com> wrote:
> I forgot to ask my other question. I had gone in early March and fixed
> my code to eliminate rowData<-, but the argument to SummarizedExperiment
> was still called rowData, and a DataFrame could be provided. Then I
> didn't check for a few weeks, but the argument for the rowData slot is
> now called rowRanges. What's the trick to putting a DataFrame on an
> empty GRanges, so I can get the old behavior but now using the rowRanges
> argument?
>
> On Tue, Mar 31, 2015 at 3:40 PM, Michael Love
> <michaelisaiahl...@gmail.com> wrote:
>> With GenomicRanges 1.19.48, I'm still having issues with re-naming the
>> first assay and duplication of memory from my March 9 email. I tried
>> assayNames<- as well. My use case is if I am given a
>> SummarizedExperiment where the first element is not named "counts"
>> (albeit the SE is most likely coming from summarizeOverlaps() and
>> already named "counts"...).
>>
>>> sessionInfo()
>> R Under development (unstable) (2015-03-31 r68129)
>> Platform: x86_64-apple-darwin12.5.0 (64-bit)
>> Running under: OS X 10.8.5 (Mountain Lion)
>>
>> locale:
>> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
>>
>> attached base packages:
>> [1] stats4    parallel  stats     graphics  grDevices datasets  utils
>>    methods   base
>>
>> other attached packages:
>> [1] GenomicRanges_1.19.48 GenomeInfoDb_1.3.16   IRanges_2.1.43
>> S4Vectors_0.5.22
>> [5] BiocGenerics_0.13.10  testthat_0.9.1        devtools_1.7.0        
>> knitr_1.9
>> [9] BiocInstaller_1.17.6
>>
>> loaded via a namespace (and not attached):
>> [1] formatR_1.1    XVector_0.7.4  tools_3.3.0    stringr_0.6.2  
>> evaluate_0.5.5
>>
>> On Mon, Mar 9, 2015 at 1:21 PM, Michael Love
>> <michaelisaiahl...@gmail.com> wrote:
>>>
>>>
>>> On Mar 9, 2015 12:36 PM, "Martin Morgan" <mtmor...@fredhutch.org> wrote:
>>> >
>>> > On 03/09/2015 08:07 AM, Michael Love wrote:
>>> >>
>>> >> Some guidance on how to avoid duplication of the matrix for developers
>>> >> would be greatly appreciated.
>>> >
>>> >
>>> > It's unsatisfactory, but using withDimnames=FALSE avoids duplication on 
>>> > extraction of assays (but obviously you don't have dimnames on the 
>>> > matrix). Row or column subsetting necessarily causes the subsetted assay 
>>> > data to be duplicated. There should not be any duplication when 
>>> > rowRanges() or colData() are changed without changing their dimension / 
>>> > ordering.
>>> >
>>>
>>> Thanks Martin for checking into the regression.
>>>
>>> Sorry, I should have been more specific earlier, I meant more 
>>> guidance/documentation in the man page for SE. I scanned the 'Extension' 
>>> section but didn't find a note on withDimnames for extracting the matrix or 
>>> this example of renaming the assays (it seems like this could easily be 
>>> relevant for other package authors).
>>>
>>> A prominent note there might help devs write more memory efficient packages.
>>>
>>> The argument section mentions speed but I'd explicitly mention memory given 
>>> that we're often storing big matrices:
>>>
>>> "Setting withDimnames=FALSE  increases the speed with which assays are 
>>> extracted."
>>>
>>> (its entirely possible the info is there but i missed it)
>>>
>>> Best,
>>>
>>> Mike
>>>
>>> >
>>> >> Another example of a trouble point, is that if I am given an SE with
>>> >> an unnamed assay and I need to give the assay a name, this also can
>>> >> expand the memory used. I had found a solution (which works with
>>> >> GenomicRanges 1.18 / current release) with:
>>> >>
>>> >> names(assays(se, withDimnames=FALSE))[1] <- "foo"
>>> >>
>>> >> But now I'm looking in devel and this appears to no longer work. The
>>> >> memory used expands, equivalent to:
>>> >>
>>> >> names(assays(se))[1] <- "foo"
>>> >>
>>> >> Here's some code to try this:
>>> >>
>>> >> m <- matrix(1:1e7,ncol=10,dimnames=list(1:1e6,1:10))
>>> >> se <- SummarizedExperiment(m)
>>> >> names(assays(se, withDimnames=FALSE))[1] <- "foo"
>>> >> names(assays(se))[1] <- "foo"
>>> >>
>>> >> while running gc() in between steps.
>>> >
>>> >
>>> > I think this is a regression of some sort, and I'll look into it. Thanks 
>>> > for the heads-up.
>>> >
>>> > Martin
>>> >
>>> >
>>> >>
>>> >>
>>> >> On Mon, Mar 9, 2015 at 10:36 AM, Kasper Daniel Hansen
>>> >> <kasperdanielhan...@gmail.com> wrote:
>>> >>>
>>> >>> On Mon, Mar 9, 2015 at 10:30 AM, Vincent Carey 
>>> >>> <st...@channing.harvard.edu>
>>> >>> wrote:
>>> >>>
>>> >>>> I am glad you are keeping this discussion alive Kasper.
>>> >>>>
>>> >>>> On Mon, Mar 9, 2015 at 10:06 AM, Kasper Daniel Hansen <
>>> >>>> kasperdanielhan...@gmail.com> wrote:
>>> >>>>
>>> >>>>> It sounds like the proposed changes are already made.  However (like
>>> >>>>> others) I am still a bit mystified why this was necessary.  The old
>>> >>>>> version
>>> >>>>> did allow for a GRanges inside the DataFrame of the rowData, as far 
>>> >>>>> as I
>>> >>>>> recall.  So I assume this is for efficiency.  But why?  What kind of
>>> >>>>> data/use cases is this for?
>>> >>>>>
>>> >>>>> I am happy to hear that SummarizedExperiment is going to be spun out 
>>> >>>>> into
>>> >>>>> its own package.  When that happens, I have some comments, which I'll
>>> >>>>> include here in anticipation
>>> >>>>>    1) I now very strongly believe it was a design mistake to not have
>>> >>>>> colnames on the assays.  The advantage of this choice is that 
>>> >>>>> sampleNames
>>> >>>>> are only stored one place.  The extreme disadvantage is the high
>>> >>>>> ineffeciency when you want colnames on an extracted assay.
>>> >>>>>
>>> >>>>
>>> >>>> after example(SummarizedExperiment)
>>> >>>>
>>> >>>>> colnames(assays(se1)[[1]])
>>> >>>>
>>> >>>> [1] "A" "B" "C" "D" "E" "F"
>>> >>>>
>>> >>>> so this seems to be optional.  But attempts to set rownames will fail
>>> >>>> silently
>>> >>>>
>>> >>>>> rownames(assays(se1)[[1]]) = as.character(1:200)
>>> >>>>
>>> >>>>
>>> >>>>> rownames(assays(se1)[[1]])
>>> >>>>
>>> >>>>
>>> >>>> NULL
>>> >>>> seems we could issue a warning there
>>> >>>>
>>> >>>
>>> >>>
>>> >>> Vince, you need to be careful here.
>>> >>>
>>> >>> The assays are stored without colnames (unless something has recently
>>> >>> changed).  The default is to - upon extraction - set the colnames of the
>>> >>> matrix.  This however requires a copy of the entire matrix.  So
>>> >>> essentially, upon extraction, each assay is needlessly duplicated to add
>>> >>> the colnames.  This is what I mean by inefficient. I would prefer to 
>>> >>> store
>>> >>> the assays with colnames.  This means that changing sampleNames of the
>>> >>> object will be inefficient (as it is for eSets) since it would require a
>>> >>> complete copy of everything.  But I would rather - much rather - copy 
>>> >>> when
>>> >>> setting sampleNames than copy when extracting an assay.
>>> >>>
>>> >>> Best,
>>> >>> Kasper
>>> >>>
>>> >>>          [[alternative HTML version deleted]]
>>> >>>
>>> >>> _______________________________________________
>>> >>> Bioc-devel@r-project.org mailing list
>>> >>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> Bioc-devel@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: Arnold Building M1 B861
>>> > Phone: (206) 667-2793

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel

Reply via email to