Aaron,
shift() currently doesn't respect strand because the most common use case for the function is to change from a 0-based index system to a 1-based index system, which is strand independent. The shift argument to the shift function, however, does accept an integer vector so you could use the following code, or something similar, to perform this operation somewhat efficiently:

amount <- strand(g1)
runValue(amount) <- ifelse(runValue(amount) == "-", -1L, 1L)
shift(g1, as.vector(amount))

Perhaps this can be made simpler in the future if more users what strand-dependent shifting.


Patrick



On 8/25/10 9:54 PM, Aaron Statham wrote:
Hi all,

Just ran into this - flank() takes notice of the strand for GRanges objects,
whilst shift() doesn't.
Would it make sense for shift to use the strand in the GRanges method, or is
there a nice alternative? (at the moment I'm doing a shift per strand)


g1<- GRanges(rep("chr1", 3), IRanges(rep(5, 3), width=1), c("+","-","*"))
g1
GRanges with 3 ranges and 0 elementMetadata values
     seqnames    ranges strand |
        <Rle>  <IRanges>   <Rle>  |
[1]     chr1    [5, 5]      + |
[2]     chr1    [5, 5]      - |
[3]     chr1    [5, 5]      * |

seqlengths
  chr1
    NA
flank(g1,3)
GRanges with 3 ranges and 0 elementMetadata values
     seqnames    ranges strand |
        <Rle>  <IRanges>   <Rle>  |
[1]     chr1    [2, 4]      + |
[2]     chr1    [6, 8]      - |
[3]     chr1    [2, 4]      * |

seqlengths
  chr1
    NA
shift(g1,3)
GRanges with 3 ranges and 0 elementMetadata values
     seqnames    ranges strand |
        <Rle>  <IRanges>   <Rle>  |
[1]     chr1    [8, 8]      + |
[2]     chr1    [8, 8]      - |
[3]     chr1    [8, 8]      * |

seqlengths
  chr1
    NA

R version 2.11.0 (2010-04-22)
x86_64-unknown-linux-gnu

locale:
  [1] LC_CTYPE=en_AU.UTF-8       LC_NUMERIC=C
  [3] LC_TIME=en_AU.UTF-8        LC_COLLATE=en_AU.UTF-8
  [5] LC_MONETARY=C              LC_MESSAGES=en_AU.UTF-8
  [7] LC_PAPER=en_AU.UTF-8       LC_NAME=C
  [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] GenomicRanges_1.0.7 IRanges_1.6.15

Thanks,
Aaron


_______________________________________________
Bioc-sig-sequencing mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/bioc-sig-sequencing

Reply via email to