已经将基因组分割成相邻的非重叠箱,例如通过tileGenome
,我已经通过某种方式为每个箱计算了一些属性(比如 1 或 2)。
现在我想合并具有相同属性的相邻。一个最小的例子如下所示:
library(GenomicRanges)
chrSizes <- c(chr1 = 1000, chr2 = 500)
bins <- tileGenome(chrSizes, tilewidth = 200, cut.last.tile.in.chrom = T)
bins$property <- rep(1:2, each = 4)
bins
GRanges object with 8 ranges and 1 metadata column:
seqnames ranges strand | property
<Rle> <IRanges> <Rle> | <integer>
[1] chr1 1-200 * | 1
[2] chr1 201-400 * | 1
[3] chr1 401-600 * | 1
[4] chr1 601-800 * | 1
[5] chr1 801-1000 * | 2
[6] chr2 1-200 * | 2
[7] chr2 201-400 * | 2
[8] chr2 401-500 * | 2
-------
seqinfo: 2 sequences from an unspecified genome
前 4 个 bin 的属性为 1,因此应合并为一个 bin。
我浏览了GRanges
文档,找不到明显的本机解决方案。请注意,seqname
必须考虑边界(例如 chr1 和 chr2 保持分离,而与属性无关) 显然,我可以使用循环,但我宁愿使用本机 GRange 解决方案,例如union
我可能已经监督使用的解决方案。
所需的输出应如下所示:
seqnames ranges strand | property
<Rle> <IRanges> <Rle> | <integer>
[1] chr1 1-800 * | 1
[2] chr1 801-1000 * | 2
[3] chr2 1-500 * | 2