0

我一直在使用两个不同的目标预测程序来预测基因上的结合位点并使用 R 来处理我得到的结果

问题是程序为每个基因提供了不同数量的目标,并且位置略有不同。我试图做的是查看这些站点是否相同,或者至少,如果我有开始位置和停止位置,这些范围是否在程序之间重叠。

假设我有两个程序 X 和 Y;

X 预测两个站点,x1 是两个站点的起始位置,x2 是停止位置。对 y 相同

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

我不确定如何为我的问题做同样的事情,至少,如果不写很多循环和 if 就不行。

4

1 回答 1

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包小插曲(来自上面的登录页面),这些出版物ab进行一般介绍,以及 Bioconductor支持站点(如果范围基础设施似乎有用)。

于 2015-02-09T15:40:41.453 回答