2013-02-04 83 views
3

我正在使用GenomicRanges來查找來自一個實驗的哪些轉錄本與來自另一個實驗的轉錄本重疊。GenomicRanges包中重疊片段的寬度

head(to_ranges1) 
    knowngene chr strand Start Gene 
1 uc001aaa.3 chr1 + 9873 16409 DDX11L1 
2 uc001aac.4 chr1 - 12361 31370 WASH7P 
3 uc001aae.4 chr1 - 12361 21759 WASH7P 
library(GenomicRanges) 
object_one<-with(to_ranges, GRanges(chr, IRanges(Start,End), 
            strand,names=knowngene,Gene=Gene) 
object_two<-with(to_ranges, GRanges(chr, IRanges(Start,End), 
            strand,names=knowngene, Gene=Gene)) 
mm<-findOverlaps(object_one,object_two) 
solution <- data.frame(as.data.frame(object_one[as.matrix(mm)[,1],]), 
         as.data.frame(object_two[as.matrix(mm)[,2],])) 

我試圖找出是溶液中數據幀中的命中之間的重疊部分的寬度,但唯一的寬度,我可以得到的是相關的重疊程序之前的原始成績單。

你能幫我請求嗎?

回答

5

您可以將ranges函數應用於匹配類(結果爲findOverlaps)。範圍返回一個範圍,該範圍包含範圍對象查詢和主題中的範圍的交集。

你不提供重複的例子,所以這裏一個例子:

query <- IRanges(c(1, 4, 9), c(5, 7, 10)) 
subject <- IRanges(c(2, 2, 10), c(2, 3, 12)) 
mm <- findOverlaps(query,subject) 
ranges(mm,query,subject) 
Ranges of length 3 
    start end width 
[1]  2 2  1 
[2]  2 3  2 
[3] 10 10  1 
+0

需要注意的是(一)'ranges'現在已經過時和(b)只需要'IRanges',沒有'GRanges' (因此忽略染色體)。現在更好的方法是:https://support.bioconductor.org/p/72656/ –