[BioC] [Bioc-devel] granges() method for GenomicRanges objects akin to ranges()...

Tim Triche, Jr. tim.triche at gmail.com
Mon May 5 14:56:04 CEST 2014


Lovely.  Hadn't even thought about the VRanges aspect in a while, but this is essentially the use case I had as well. Thanks!

--t

> On May 5, 2014, at 1:25 AM, Julian Gehring <julian.gehring at embl.de> wrote:
> 
> Hi Tim,
> 
> I was looking for a similar function a while ago, and created the 'grangesPlain' function in 'SomaticSignatures':
> 
> grangesPlain <-
> function (x)
> {
>    mcols(x) = NULL
>    x = as(x, "GRanges")
>    return(x)
> }
> 
> It removes the metadata columns, as Michael described.  Further, it performs an explicit conversion to a 'GRanges' object - in case that 'x' has a derived class like a 'VRanges'.
> 
> The main motivation for an extra function is that you can use it inline, e.g
> 
> resize(sort(grangesPlain(x)), ...)
> 
> works.  It would be great to have such functionality as part of the bioc core.
> 
> Best wishes
> Julian
> 
> 
>> On 05.05.2014 01:56, Michael Lawrence wrote:
>> Why not just do
>> 
>> mcols(gr) <- NULL
>> 
>> It's way more obvious than granges(gr). And that should happen virtually
>> instantaneously in R 3.1, regardless of the length.
>> 
>> 
>> 
>> 
>> On Sun, May 4, 2014 at 3:55 PM, Tim Triche, Jr. <tim.triche at gmail.com>wrote:
>> 
>>> Right, what I was wondering however is whether it's possible not to create
>>> or modify the object at all, but rather access only the necessary bits.
>>> 
>>> It seems like a slightly different structure that puts all the location in
>>> one place (say @granges) and the metadata in another (as it presently is)
>>> might be handy to avoid this hoohah.  That's rather a larger change.
>>> 
>>> --t
>>> 
>>>> On May 4, 2014, at 3:23 PM, "Johnston, Jeffrey" <jjj at stowers.org> wrote:
>>>> 
>>>> 
>>>>> On May 4, 2014, at 3:50 PM, Tim Triche, Jr. <tim.triche at gmail.com>
>>> wrote:
>>>>> 
>>>>> I wanted something to extract @ranges from a GRanges object along with
>>> its
>>>>> @seqnames, @strand, and @seqinfo.  Essentially, everything but the
>>> mcols.
>>>>> 
>>>>> Does this make sense?  Is there a lighter-weight way to avoid any
>>> copying
>>>>> in-flight?
>>>>> 
>>>>> 
>>>>> setMethod("granges", "GRanges", function(x) {
>>>>>         GRanges(seqnames=seqnames(x),
>>>>>                 ranges=ranges(x),
>>>>>                 strand=strand(x),
>>>>>                 seqinfo=seqinfo(x))
>>>>> })
>>>>> 
>>>>> 
>>>>> The fact that I'm constructing an entire new GRanges makes me a little
>>>>> queasy... that said, it has turned out to be useful when I just want a
>>>>> short list of locations, as for debugging plotting functions, profile
>>>>> plots, or what have you.
>>>> 
>>>> 
>>>> Perhaps just this:
>>>> 
>>>> setMethod("granges", "GRanges", function(x) {
>>>>  mcols(x) <- NULL
>>>>  x
>>>> })
>>> 
>>> _______________________________________________
>>> Bioc-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>> 
>>    [[alternative HTML version deleted]]
>> 
>> _______________________________________________
>> Bioc-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>> 



More information about the Bioconductor mailing list