Shift all coordinates in a genomic interval left or right, upstream or downstream

shift_left(x, shift = 0L)

shift_right(x, shift = 0L)

shift_upstream(x, shift = 0L)

shift_downstream(x, shift = 0L)

Arguments

x

a Ranges object .

shift

the amount to move the genomic interval in the Ranges object by. Either a non-negative integer vector of length 1 or an integer vector the same length as x.

Value

a Ranges object with start and end coordinates shifted.

Details

Shifting left or right will ignore any strand information in the Ranges object, while shifting upstream/downstream will shift coordinates on the positive strand left/right and the negative strand right/left. By default, unstranded features are treated as positive. When using shift_upstream() or shift_downstream() when the shift argument is indexed by the strandedness of the input ranges.

See also

IRanges::shift(), GenomicRanges::shift()

Examples

ir <- as_iranges(data.frame(start = 10:15, width = 5))
shift_left(ir, 5L)
#> IRanges object with 6 ranges and 0 metadata columns:
#>           start       end     width
#>       <integer> <integer> <integer>
#>   [1]         5         9         5
#>   [2]         6        10         5
#>   [3]         7        11         5
#>   [4]         8        12         5
#>   [5]         9        13         5
#>   [6]        10        14         5
shift_right(ir, 5L)
#> IRanges object with 6 ranges and 0 metadata columns:
#>           start       end     width
#>       <integer> <integer> <integer>
#>   [1]        15        19         5
#>   [2]        16        20         5
#>   [3]        17        21         5
#>   [4]        18        22         5
#>   [5]        19        23         5
#>   [6]        20        24         5
gr <- as_granges(data.frame(start = 10:15,
                            width = 5,
                            seqnames = "seq1",
                            strand = c("+", "+", "-", "-", "+", "*")))
shift_upstream(gr, 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
shift_downstream(gr, 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