样本之间的基因组间隔相等

时间:2014-07-16 08:46:57

标签: r overlap genome

我想在样本(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)。

非常感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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对象时指定数据框列。