J'ai deux data.frame
s avec des coordonnées d'intervalles linéaires, qui correspondent à des identifiants. Chaque identifiant a plusieurs intervalles linéaires. L'un des data.frame
s est appelé exon.df
:Recherche de sous-intervalles à partir de trames de données d'intervalle
exon.df <- data.frame(id=c(rep("id1",4),rep("id2",3),rep("id3",5)),
start=c(10,20,30,40,100,200,300,1000,2000,3000,4000,5000),
end=c(15,25,35,45,150,250,350,1500,2500,3500,4500,5500))
Et l'autre cds.df
:
cds.df <- data.frame(id=c(rep("id1",3),rep("id2",3),rep("id3",3)),
start=c(20,30,40,125,200,300,2250,3000,4000),
end=c(25,35,45,150,250,325,2500,3500,4250))
Ils ont tous deux les mêmes, mais les intervalles ids de cds.df
sont contenus dans ceux de exon.df
. Les intervalles dans exons.df
sont des exons de gènes (parties du génome qui sont copiés et assemblés pour faire une transcription du gène), et ceux dans cds.df
sont les parties de ces exons qui seront traduits en protéines puisque les exons de la transcription du gène contient également des parties qui ne seront pas traduites (régions non traduites - utr). Ces utr ne peuvent être situés qu'au début et à la fin de la transcription du gène. L'utr au début est appelé 5'utr et l'utr à la fin est appelé 3'utr. Un utr peut soit n'existe pas du tout, soit s'étendre n'importe où entre une partie d'un ou plusieurs exons de chaque extrémité du gène.
Cela signifie que la 5'UTR d'un identifiant commence à partir de la première position de son premier intervalle de l'identifiant dans exon.df
à une position devant le premier intervalle dans cds.df
, et comprend tous les exons dans exon.df
entre s'il en existe. De même, le 3'utr d'un id commence une position après son dernier intervalle en cds.df
jusqu'à la dernière position de son dernier intervalle en exon.df
, et inclut tous les exons en exons.df
entre eux s'il en existe. Il est également possible qu'un ID ne possède pas les deux utr si la première position de son premier intervalle en cds.df
est sa première position dans son premier intervalle en exon.df
, et de même si sa dernière position de son dernier intervalle en cds.df
est sa dernière position position dans son dernier intervalle en exon.df
.
Je cherche un moyen rapide de récupérer ces intervalles 5'utr et 3'utr donner exon.df
et cds.df
.
Voici ce que le résultat de cet exemple devrait être:
utr5.df <- data.frame(id=c("id1","id2","id3","id3"),
start=c(10,100,1000,2000),
end=c(15,124,1500,2249))
utr3.df <- data.frame(id=c("id2","id3","id3"),
start=c(326,4251,5000),
end=c(350,4500,5500))
Merci. setdiff est la fonction correcte pour obtenir les UTR – dan
Oh, à droite, vous avez besoin de setdiff, désolé. J'ai dit "croiser". J'ai mis à jour ma réponse. –