1

我想找到样本之间共享的完全相同的基因组间隔(NE_id)。

我的输入:

chr  start_call   end_call  NE_id 
chr1    150         200      NE01
chr1    150         200      NE02
chr2    100         150      NE01
chr2    100         160      NE02
chr3    200         300      NE01   
chr3    200         300      NE02

我的预期输出:

chr  start_call   end_call  NE_id 
chr1    150         200      NE01, NE02   
chr3    200         300      NE01, NE02

在这个例子中,chr2基因组区间有一些重叠,但是它不对应于完全相同的基因组区间(大小差异 == 10)。

非常感谢。

4

2 回答 2

2

如果dat是数据,您可以尝试:

res <-aggregate(NE_id~., data=dat, FUN=I)
res[sapply(res$NE_id,length)>1,]
#    chr  start_call end_call     NE_id
# 3 chr1        150      200 NE01, NE02
# 4 chr3        200      300 NE01, NE02
于 2014-07-16T09:13:08.660 回答
1

这是一个 GenomicRanges 解决方案

library(GenomicRanges)
NE01 <- GRanges(c("chr1","chr2","chr3"),
         IRanges(c(150,100,200),c(200,150,300)),
         ID=rep("NE01",3))
NE02 <- GRanges(c("chr1","chr2","chr3"),
            IRanges(c(150,100,200),c(200,160,300)),
            ID=rep("NE02",3))
findOverlaps(NE01,NE02,type="equal")

我只需要全部输入,因为我没有您的数据框,您可以在制作 GRanges 对象时指定数据框列。

于 2014-07-16T09:01:30.380 回答