Question: Collapse/Reduce in GRanges by Metadata Column
0
gravatar for nhejazi
3.0 years ago by
nhejazi0
UC Berkeley
nhejazi0 wrote:

I've only recently adopted GRanges for problems like the one below; my apologies in advance if this or similar questions have been answered many times already (I couldn't find anything in various searches...)

I have a GRanges structure like the one below. Using values in the metadata column X, I'd like to collapse `seqnames` and `ranges` information, such that, for all genomic ranges (really, positions) in this table, a new GRanges structure is generated where the `ranges` value starts with the first position and ends with the last position for all original ranges falling under a single bin in the metadata column. For example, referring to the table below, for X == 1, the new GRanges table that I wish to generate should have a single entry with `seqnames` = 16 and ranges = [60299, 60370].

I can think of various ways to do this with data.frame, but I'd rather avoid the inefficiency of doing that then coercing the resultant structure back to GRanges. Is there an efficient way to do this?

GRanges object with 1507062 ranges and 1 metadata column:
            seqnames         ranges strand |         X
               <Rle>      <IRanges>  <Rle> | <numeric>
        [1]       16 [60299, 60299]      * |         1
        [2]       16 [60304, 60304]      * |         1
        [3]       16 [60336, 60336]      * |         1
        [4]       16 [60370, 60370]      * |         1
        [5]       16 [61024, 61024]      * |         2
        ...      ...            ...    ... .       ...
  [1507058]       MT [16412, 16412]      * |    240330
  [1507059]       MT [16428, 16428]      * |    240330
  [1507060]       MT [16450, 16450]      * |    240330
  [1507061]       MT [16495, 16495]      * |    240330
  [1507062]       MT [16542, 16542]      * |    240330
  -------
  seqinfo: 84 sequences from an unspecified genome; no seqlengths

granges merge reduce • 738 views
ADD COMMENTlink modified 3.0 years ago by Michael Lawrence11k • written 3.0 years ago by nhejazi0
Answer: Collapse/Reduce in GRanges by Metadata Column
3
gravatar for Michael Lawrence
3.0 years ago by
United States
Michael Lawrence11k wrote:

unlist(range(split(gr, ~X)))

ADD COMMENTlink written 3.0 years ago by Michael Lawrence11k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 310 users visited in the last hour