我一直在使用两个不同的目标预测程序来预测基因上的结合位点,并使用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我不确定我如何才能对我的问题做同样的事情,至少不能不写很多循环和of。
发布于 2015-02-09 23:40:41
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、package vignettes (来自上面的登录页面)、这些出版物a、b和Bioconductor support site (如果ranges基础设施看起来有用)。
https://stackoverflow.com/questions/28412762
复制相似问题