Auffinden überlappender Bereiche zwischen zwei Intervalldaten
Ich habe eine Tabelle mit Koordinaten (start
, end
) von ca. 500000 Fragmente und eine weitere Tabelle mit 60000 Einzelkoordinaten, die ich mit den früheren Fragmenten abgleichen möchte. Das heißt, für jeden Datensatz vondtCoords
Tabelle, in der ich einen Datensatz suchen mussdtFrags
Tisch mit dem gleichenchr
undstart
<=coord
<=end
(und holen Sie dietype
aus dieser Aufzeichnung vondtFrags
). Ist es überhaupt eine gute Idee, dafür R zu verwenden, oder sollte ich lieber auf andere Sprachen schauen?
Hier ist mein Beispiel:
require(data.table)
dtFrags <- fread(
"id,chr,start,end,type
1,1,100,200,exon
2,2,300,500,intron
3,X,400,600,intron
4,2,250,600,exon
")
dtCoords <- fread(
"id,chr,coord
10,1,150
20,2,300
30,Y,500
")
Am Ende hätte ich gerne so etwas:
"idC,chr,coord,idF,type
10, 1, 150, 1, exon
20, 2, 300, 2, intron
20, 2, 300, 4, exon
30, Y, 500, NA, NA
"
Ich kann die Aufgabe ein wenig vereinfachen, indem ich die Tabelle in Untertabellen aufteilechr
Ich würde mich also nur auf die Koordinaten konzentrieren
setkey(dtCoords, 'chr')
setkey(dtFrags, 'chr')
for (chr in unique(dtCoords$chr)) {
dtCoordsSub <- dtCoords[chr];
dtFragsSub <- dtFrags[chr];
dtCoordsSub[, {
# ????
}, by=id]
}
aber es ist mir immer noch nicht klar, wie ich drinnen arbeiten soll ... ich wäre für jeden hinweis sehr dankbar.
UPD. für alle fälle stelle ich meinen echten tisch ins archivHier. Nach dem Entpacken in Ihr Arbeitsverzeichnis können Tabellen mit folgendem Code geladen werden:
dtCoords <- fread("dtCoords.txt", sep="\t", header=TRUE)
dtFrags <- fread("dtFrags.txt", sep="\t", header=TRUE)