标签: iranges

从Rle向量有效地构建GRanges/IRanges

我有一个运行长度编码的向量,按顺序表示基因组上每个位置的一些值.作为一个玩具示例,假设我只有一条长度为10的染色体,那么我会看到一个矢量

library(GenomicRanges)

set.seed(1)
toyData = Rle(sample(1:3,10,replace=TRUE))
Run Code Online (Sandbox Code Playgroud)

我想将其强制转换为GRanges对象.我能想到的最好的是

gr = GRanges('toyChr',IRanges(cumsum(c(0,runLength(toyData)[-nrun(toyData)])),
                              width=runLength(toyData)),
             toyData = runValue(toyData))
Run Code Online (Sandbox Code Playgroud)

哪个有效,但速度很慢.有没有更快的方法来构建同一个对象?

r bioinformatics run-length-encoding bioconductor iranges

7
推荐指数
1
解决办法
363
查看次数

扩展两个方向的范围

我有一个GRanges对象,我想扩展所有范围,例如两侧1kb,因此每个范围将变为2kb.这很奇怪,但我无法使用inter-range-methodsGenomicRanges或IRanges 来做到这一点.产生所需结果的一种方法是使用两次调整大小,首先扩展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
Run Code Online (Sandbox Code Playgroud)

r bioconductor iranges

2
推荐指数
2
解决办法
1680
查看次数