2014-07-21 115 views
2

我發現其他職位一般在R iRanges找到重疊的範圍,但你能幫助我這個額外的小扭曲:我有兩個範圍相連(一個可能的基因組重排與一個開始範圍和一個結束範圍),我想過濾掉母親基因組中相同的範圍雙範圍重疊相比,雙範圍sampel

我已經找到了停止和開始的範圍如下(chr編號,間隔開始,間隔結束),其中3左側的列表示重新排列的開始,右側的3列表示重新排列的結束(它們是稱爲SVDetect的程序的輸出,其使用NGS數據來找到具有與參照基因組異常對齊的配偶對) 。我有兩個基因組,母克隆和女兒,並希望找到重排,這是獨特的女兒=我想過濾行的兩個範圍重疊與另一個兩個範圍的同一行。範圍可能有點不同,但如果兩個範圍重疊,則強烈表明重排已經存在於母親身上。 R中的iRanges可以讓您輕鬆查看範圍是否與其他範圍重疊,但是我無法找到解決方案,它可以向我顯示與其重疊的範圍,而不是非常慢的for-loop。

女兒:

1 1384138 1384862 - 1 516731 516918 
2 3758860 3759278 - 2 879828 879966 # (filter away this line as overlap with below) 
2 3940051 3940470 - 2 3940856 3941250 

母親:

2 3758858 3759282 - 2 879828 879966 # (overlap with this range) 
1 1384138 1384862 - 3 116231 516918 
2 3940051 3940470 - 3 1540856 3941250 

回答

0

的技巧是使用兩套農莊,一個爲重排開始,一個用於再配置結束,然後再結合結果如下:

### Create GRanges for daughter - copied from example 
daughterStart <- GRanges(c(1,2,2), IRanges(c(1384138,3758860,3940051), c(1384862,3759278,3940470))) 
daughterEnd <- GRanges(c(1,2,2), IRanges(c(516731,879828,3940856), c(516918,879966,3941250))) 

### Create GRanges for mother - copied from example 
motherStart <- GRanges(c(2,1,2), IRanges(c(3758858,1384138,3940051), c(3759282,1384862,3940470))) 
motherEnd <- GRanges(c(2,3,3), IRanges(c(879828,116231,1540856), c(879966,516918,3941250))) 

然後我們使用findOverlaps()f來確定是否有重疊用,因爲我們都在問女兒重排是否重疊母親重排的女兒作爲查詢結(suppressWarnings()被使用,因爲農莊有不同的seqlevels(染色體),從而給出警告):

starOverlap <- suppressWarnings(findOverlaps(query = daughterStart, subject = motherStart)) # suppressWarnings to ignore wanings about different chromosomes 
endOverlap <- suppressWarnings(findOverlaps(query = daughterEnd, subject = motherEnd )) 

而且最後我們確定是否有重排,開始和重排,到底有什麼相同的重疊重合:

> starOverlap %in% endOverlap 
[1] FALSE TRUE FALSE 

哪些可以用來獲取,是不是通過添加一個簡單的重疊女兒對的指標!

> [email protected][ ! (starOverlap %in% endOverlap) ] 
[1] 1 3 

而且,由於這種方法依賴於findOverlaps和被矢量這將是快達數百萬重排