У меня есть кодированный вектор длины пробега, представляющий некоторое значение в каждой позиции на геноме, по порядку. В качестве примера предположим, что я игрушка была только одна хромосома длиной 10, то я бы вектор похожийЭффективное построение GRanges/IRanges из Rle-вектора
library(GenomicRanges)
set.seed(1)
toyData = Rle(sample(1:3,10,replace=TRUE))
Я хотел бы, чтобы заставить это в объект Усадьбы. Лучшее, что я могу придумать, это
gr = GRanges('toyChr',IRanges(cumsum(c(0,runLength(toyData)[-nrun(toyData)])),
width=runLength(toyData)),
toyData = runValue(toyData))
который работает, но довольно медленный. Есть ли более быстрый способ построения одного и того же объекта?
вы можете использовать 'start (toyData) -1', чтобы получить начальный интервал, но он не улучшает скорость. – NicE
@NicE Спасибо за отзыв, даже если он не быстрее, он намного яснее и лаконичен. – user1356855
<Вся cumsum может быть заменена на 'start (toyData) -1'> –