Эти диапазоны номеров перекрывают друг друга
Я использую две разные целевые программы прогнозирования для предсказания сайтов связывания генов и использую R для обработки результатов, которые я получаю
Проблема в том, что программы дают разное количество целей на ген, а локации немного различаются. Я пытался выяснить, совпадают ли эти сайты, или, по крайней мере, если у меня есть позиции "Старт" и "Стоп", перекрываются ли эти диапазоны между программами.
Скажем, у меня есть две программы X и Y;
X предсказывает два сайта, x1 - начальные позиции для обоих сайтов, x2 - конечные позиции. То же для тебя
x1<-c(1521,1259)
x2<-c(1544,1282)
y1<-c(1825,1522,1259,362)
y2<-c(1848,1543,1282,384)
Таким образом, оба сайта X перекрывают сайты в Y. И выводят эти позиции в таблицу:
| x1 | x2 | y1 | y2 |
| 1521 | 1544 | 1522 | 1543 |
| 1259 | 1282 | y1259 | 1282 |
Первоначально я думал о том, что если бы у меня был только один сайт для каждой программы, то выполнение следующих действий покажет мне, перекрываются они или нет. (позиция остановки y, должна быть больше, чем начальная позиция x, а позиция остановки x больше, чем y)
x1 <= y2 && y1 <= x2
Я не уверен, как я мог бы сделать то же самое для моей проблемы, по крайней мере, не без написания большого количества циклов и ifs.
1 ответ
Пакет IRanges (и GenomicRanges для геномных данных, когда важны хромосома и, возможно, нить) позволяет определять диапазоны
library(IRanges)
x <- IRanges(x1, x2)
y <- IRanges(y1, y2)
и задавать вопросы о них
y %over% x # any type of overlap
y %within% x # strictly within
увидеть ?findOverlaps
для более подробной информации - виньетки пакетов (из целевых страниц выше), эти публикации a, b для общего введения и сайт поддержки Bioconductor, если инфраструктура диапазонов кажется полезной.