Sort GRangesList elements by chromosome and position
Arguments
- GRL
GRangesList to be sorted.
- splitColname
intermediate colname used to split values from GRanges to GRangesList. It only needs to be defined if for some reason the default "splitColname" is already in
colnames(GenomicRanges::values(GRL)).- keep_order
logical indicating whether to maintain the input order of GRanges;
FALSEwill return GRangesList ordered by the first sorted GRanges occurrence.- ...
additional arguments are ignored.
Details
This function sorts GRangesList elements by chromosome and
position, using the default sort routine for GRanges objects.
It accomplishes the task by sorting the GRanges elements, then
splitting that GRanges into a GRangesList based upon the
original names(GrangesList).
See also
Other GenomicRanges functions:
addGRLgaps(),
addGRgaps(),
annotateGRLfromGRL(),
annotateGRfromGR(),
assignGRLexonNames(),
closestExonToJunctions(),
findOverlapsGRL(),
flattenExonsBy(),
getGRLgaps(),
getGRgaps(),
jam_isDisjoint(),
spliceGR2junctionDF()
Examples
gr12 <- GenomicRanges::GRanges(
seqnames=rep(c("chr1", "chr2", "chr1"), c(3,3,3)),
ranges=IRanges::IRanges(
start=c(100, 200, 400, 500, 300, 100, 200, 400, 600),
width=c(50,50,50, 50,50,50, 50,50,50)
),
strand=rep(c("+", "-", "+"), c(3,3,3)),
gene_name=rep(c("GeneA", "GeneB", "GeneC"), each=3)
)
grl <- GenomicRanges::split(gr12, GenomicRanges::values(gr12)$gene_name);
grl;
#> GRangesList object of length 3:
#> $GeneA
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr1 100-149 + | GeneA
#> [2] chr1 200-249 + | GeneA
#> [3] chr1 400-449 + | GeneA
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
#> $GeneB
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr2 500-549 - | GeneB
#> [2] chr2 300-349 - | GeneB
#> [3] chr2 100-149 - | GeneB
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
#> $GeneC
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr1 200-249 + | GeneC
#> [2] chr1 400-449 + | GeneC
#> [3] chr1 600-649 + | GeneC
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
GenomicRanges::sort(grl);
#> GRangesList object of length 3:
#> $GeneA
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr1 100-149 + | GeneA
#> [2] chr1 200-249 + | GeneA
#> [3] chr1 400-449 + | GeneA
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
#> $GeneB
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr2 100-149 - | GeneB
#> [2] chr2 300-349 - | GeneB
#> [3] chr2 500-549 - | GeneB
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
#> $GeneC
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr1 200-249 + | GeneC
#> [2] chr1 400-449 + | GeneC
#> [3] chr1 600-649 + | GeneC
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
sortGRL(grl);
#> GRangesList object of length 3:
#> $GeneA
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr1 100-149 + | GeneA
#> [2] chr1 200-249 + | GeneA
#> [3] chr1 400-449 + | GeneA
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
#> $GeneB
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr2 100-149 - | GeneB
#> [2] chr2 300-349 - | GeneB
#> [3] chr2 500-549 - | GeneB
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
#> $GeneC
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr1 200-249 + | GeneC
#> [2] chr1 400-449 + | GeneC
#> [3] chr1 600-649 + | GeneC
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
sortGRL(grl, keep_order=FALSE);
#> GRangesList object of length 3:
#> $GeneA
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr1 100-149 + | GeneA
#> [2] chr1 200-249 + | GeneA
#> [3] chr1 400-449 + | GeneA
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
#> $GeneC
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr1 200-249 + | GeneC
#> [2] chr1 400-449 + | GeneC
#> [3] chr1 600-649 + | GeneC
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>
#> $GeneB
#> GRanges object with 3 ranges and 1 metadata column:
#> seqnames ranges strand | gene_name
#> <Rle> <IRanges> <Rle> | <character>
#> [1] chr2 100-149 - | GeneB
#> [2] chr2 300-349 - | GeneB
#> [3] chr2 500-549 - | GeneB
#> -------
#> seqinfo: 2 sequences from an unspecified genome; no seqlengths
#>