双向扩展范围
Extend range in both directions
我有一个 GRanges 对象,我想扩展所有范围,例如两侧各增加 1kb,因此每个范围都会长 2kb。这很奇怪,但我无法使用 GenomicRanges 或 IRanges 的 inter-range-methods
来做到这一点。产生所需结果的一种方法是使用两次调整大小,首先扩展 5',然后扩展 3'。但这当然是非常尴尬的。没有更直接的方法吗?请指教
gr <- GRanges(c('chr1','chr1'), IRanges(start=c(20, 120), width=10), strand='+')
gr <- resize(gr, fix='start', width=width(gr)+10)
gr <- resize(gr, fix='end', width=width(gr)+10)
gr
很简单。您可以在 GenomicRanges
.
中使用 start
和 end
函数
gr <- GRanges(c('chr1','chr1'), IRanges(start=c(20, 120), width=10), strand='+')
gr
# GRanges object with 2 ranges and 0 metadata columns:
# seqnames ranges strand
# <Rle> <IRanges> <Rle>
# [1] chr1 [ 20, 29] +
# [2] chr1 [120, 129] +
# -------
# seqinfo: 1 sequence from an unspecified genome; no seqlengths
start(gr) <- start(gr) - 10
end(gr) <- end(gr) + 10
gr
# GRanges object with 2 ranges and 0 metadata columns:
# seqnames ranges strand
# <Rle> <IRanges> <Rle>
# [1] chr1 [ 10, 39] +
# [2] chr1 [110, 139] +
# -------
# seqinfo: 1 sequence from an unspecified genome; no seqlengths
GRanges 支持 - 和 + 等运算符
gr + 10
会成功的。
三年后但是...
一种直接的方法是使用 GRanges 的调整大小方法和 fix 参数:
gr <- resize(gr, width = width(gr)+(desired_size*2), fix = "center")
您可以使用 flank
:
gr <- flank(gr, width=10, both=TRUE)
我有一个 GRanges 对象,我想扩展所有范围,例如两侧各增加 1kb,因此每个范围都会长 2kb。这很奇怪,但我无法使用 GenomicRanges 或 IRanges 的 inter-range-methods
来做到这一点。产生所需结果的一种方法是使用两次调整大小,首先扩展 5',然后扩展 3'。但这当然是非常尴尬的。没有更直接的方法吗?请指教
gr <- GRanges(c('chr1','chr1'), IRanges(start=c(20, 120), width=10), strand='+')
gr <- resize(gr, fix='start', width=width(gr)+10)
gr <- resize(gr, fix='end', width=width(gr)+10)
gr
很简单。您可以在 GenomicRanges
.
start
和 end
函数
gr <- GRanges(c('chr1','chr1'), IRanges(start=c(20, 120), width=10), strand='+')
gr
# GRanges object with 2 ranges and 0 metadata columns:
# seqnames ranges strand
# <Rle> <IRanges> <Rle>
# [1] chr1 [ 20, 29] +
# [2] chr1 [120, 129] +
# -------
# seqinfo: 1 sequence from an unspecified genome; no seqlengths
start(gr) <- start(gr) - 10
end(gr) <- end(gr) + 10
gr
# GRanges object with 2 ranges and 0 metadata columns:
# seqnames ranges strand
# <Rle> <IRanges> <Rle>
# [1] chr1 [ 10, 39] +
# [2] chr1 [110, 139] +
# -------
# seqinfo: 1 sequence from an unspecified genome; no seqlengths
GRanges 支持 - 和 + 等运算符
gr + 10
会成功的。
三年后但是...
一种直接的方法是使用 GRanges 的调整大小方法和 fix 参数:
gr <- resize(gr, width = width(gr)+(desired_size*2), fix = "center")
您可以使用 flank
:
gr <- flank(gr, width=10, both=TRUE)