Is it possible to reduce flanking on both sides (start and end) to a one-liner? Flank has only start parameter which is boolean of length 1. I suppose what I would like is something like flank(someRanges, where = "both", width = 1000).
You might provide an example of what you are after. It's not clear (to me at least) what 'reduce flanking' means in this context, given that flank isn't meant to reduce anything.
Sorry about the ambiguity in the sentence above. I meant reduce to a one-liner the operation of flanking both sides of a range. So, if the input range was chr1 10000 20000 and the width parameter was 1000, I am interested in obtaining the resulting range chr1 9000 21000. I can do it in a couple of lines, but I was wondering if there was an obscure combination of function parameters that would allow it to be computed in a single invocation of flank.
Personally I would have no idea what something like flank(someRanges, where = "both", width = 1000) does, unless I spend some time reading the man page (if I manage to find it ;-) ) Also I wouldn't necessarily see this operation as a flanking operation. It's more like the opposite of narrow(). So maybe we could use a new generic for that e.g. widen()?
You are confusing flank, which gives you the flanking range, with resize, which is intended to, uh, resize the range.
> library(GenomicRanges)
> gr <- GRanges("chr1:10000-20000")
> gr
GRanges object with 1 range and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr1 10000-20000 *
-------
seqinfo: 1 sequence from an unspecified genome; no seqlengths
## get the 1000 nt flanking region
## e.g., the 1000 nt genomic region preceding the GRanges
> flank(gr, 1000)
GRanges object with 1 range and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr1 9000-9999 *
-------
seqinfo: 1 sequence from an unspecified genome; no seqlengths
## resize the GRanges to add 1000 nt to the start and end
> resize(gr, width(gr) + 2000, "center")
GRanges object with 1 range and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr1 9000-21000 *
-------
seqinfo: 1 sequence from an unspecified genome; no seqlengths
You might provide an example of what you are after. It's not clear (to me at least) what 'reduce flanking' means in this context, given that
flank
isn't meant to reduce anything.Sorry about the ambiguity in the sentence above. I meant reduce to a one-liner the operation of flanking both sides of a range. So, if the input range was chr1 10000 20000 and the
width
parameter was1000
, I am interested in obtaining the resulting range chr1 9000 21000. I can do it in a couple of lines, but I was wondering if there was an obscure combination of function parameters that would allow it to be computed in a single invocation offlank
.Personally I would have no idea what something like
flank(someRanges, where = "both", width = 1000)
does, unless I spend some time reading the man page (if I manage to find it ;-) ) Also I wouldn't necessarily see this operation as a flanking operation. It's more like the opposite ofnarrow()
. So maybe we could use a new generic for that e.g.widen()
?