Zwiń regiony przecinające się

Próbuję znaleźć sposób na zwinięcie wierszy o przecinających się zakresach, oznaczonych kolumnami „start” i „stop”, i zapisanie zwiniętych wartości w nowych kolumnach. Na przykład mam tę ramkę danych:

my.df<- data.frame(chrom=c(1,1,1,1,14,16,16), name=c("a","b","c","d","e","f","g"), start=as.numeric(c(0,70001,70203,70060, 40004, 50000872, 50000872)), stop=as.numeric(c(71200,71200,80001,71051, 42004, 50000890, 51000952)))


chrom name  start   stop
 1    a        0    71200
 1    b    70001    71200
 1    c    70203    80001
 1    d    70060    71051
14    e    40004    42004
16    f 50000872 50000890
16    g 50000872 51000952

Próbuję znaleźć pokrywające się zakresy i zapisać największy zakres objęty zwiniętymi nakładającymi się wierszami w „start” i „stop” oraz nazwy zwiniętych wierszy, więc otrzymam to:

chrom start   stop      name
 1    70001    80001    a,b,c,d
14    40004    42004    e
16    50000872 51000952 f,g

Myślę, że mógłbym użyć pakietów IRanges w ten sposób:

library(IRanges)
ranges <- split(IRanges(my.df$start, my.df$stop), my.df$chrom)

Ale potem mam problemy z uzyskaniem zwiniętych kolumn: próbowałem z findOvarlaps, ale to

ov <- findOverlaps(ranges, ranges, type="any")

ale nie sądzę, że to prawda.

Każda pomoc byłaby bardzo mile widziana.

questionAnswers(2)

yourAnswerToTheQuestion