Find flanking regions to the left or right or upstream or downstream of a Ranges object.
flank_left(x, width = 0L)
flank_right(x, width = 0L)
flank_upstream(x, width = 0L)
flank_downstream(x, width = 0L)
a Ranges object.
the width of the flanking region relative to the ranges in
x
. Either an integer vector of length 1 or an integer vector
the same length as x. The width can be negative in which case the
flanking region is reversed.
A Ranges object of same length as x
.
The function
flank_left
will create the flanking region to the left of starting
coordinates in x
, while flank_right
will create the flanking
region to the right of the starting coordinates in x
. The function
flank_upstream
will flank_left
if the strand of rows in x
is
not negative and will flank_right
if the strand of rows in x
is
negative. The function flank_downstream
will flank_right
if the strand of rows in x
is
not negative and will flank_leftt
if the strand of rows in x
is
negative.
By default flank_left
and flank_right
will
ignore strandedness of any ranges, while flank_upstream
and
flank_downstream
will take into account the strand of x
.
gr <- as_granges(data.frame(start = 10:15,
width = 5,
seqnames = "seq1",
strand = c("+", "+", "-", "-", "+", "*")))
flank_left(gr, width = 5L)
#> GRanges object with 6 ranges and 0 metadata columns:
#> seqnames ranges strand
#> <Rle> <IRanges> <Rle>
#> [1] seq1 5-9 +
#> [2] seq1 6-10 +
#> [3] seq1 7-11 -
#> [4] seq1 8-12 -
#> [5] seq1 9-13 +
#> [6] seq1 10-14 *
#> -------
#> seqinfo: 1 sequence from an unspecified genome; no seqlengths
flank_right(gr, width = 5L)
#> GRanges object with 6 ranges and 0 metadata columns:
#> seqnames ranges strand
#> <Rle> <IRanges> <Rle>
#> [1] seq1 15-19 +
#> [2] seq1 16-20 +
#> [3] seq1 17-21 -
#> [4] seq1 18-22 -
#> [5] seq1 19-23 +
#> [6] seq1 20-24 *
#> -------
#> seqinfo: 1 sequence from an unspecified genome; no seqlengths
flank_upstream(gr, width = 5L)
#> GRanges object with 6 ranges and 0 metadata columns:
#> seqnames ranges strand
#> <Rle> <IRanges> <Rle>
#> [1] seq1 5-9 +
#> [2] seq1 6-10 +
#> [3] seq1 17-21 -
#> [4] seq1 18-22 -
#> [5] seq1 9-13 +
#> [6] seq1 10-14 *
#> -------
#> seqinfo: 1 sequence from an unspecified genome; no seqlengths
flank_downstream(gr, width = 5L)
#> GRanges object with 6 ranges and 0 metadata columns:
#> seqnames ranges strand
#> <Rle> <IRanges> <Rle>
#> [1] seq1 15-19 +
#> [2] seq1 16-20 +
#> [3] seq1 7-11 -
#> [4] seq1 8-12 -
#> [5] seq1 19-23 +
#> [6] seq1 20-24 *
#> -------
#> seqinfo: 1 sequence from an unspecified genome; no seqlengths