interlap:快速、简单的间隔重叠测试
interlap的Python项目详细描述
interlap:简单、快速的间隔重叠测试[构建状态](https://travis-ci.org/brentp/interlap.svg?branch=master)“(https://travis ci.org/brentp/interlap)
interlap比单纯的搜索快20倍(请参阅:https://brentp.github.io/interlap/benchmark.html)
,并且**没有内存开销**,因为它在排序列表上操作。它是纯python,没有依赖关系。
它使用二进制搜索和对最长观测间隔的了解,以100个千间隔快速查询数据集。
请参阅文档,网址是[https://brentp.github.io/interlap/](https://brentp.github.io/interlap)
usage
----
interlap takes元组或列表,其中前两个元素是开始、结束,其余的
元素可以是任何内容。
``python
>;>interlap import interlap
>;>inter=interlap()
=random.sample(range(22,10000000,12,10000000,12),50000)
>gt>gt;range=[(i,i+random.randint(2000,20000),randint(2000,20000))for i in sites]
>
>>;inter.update(range)
>>gt;inter.inter.add((20,22,{'info':'hi'})>
>
>>>;[20,21]inter.inter.add((20,22,{'info''info':'hi''}}}))
>
>>>>>>>>>(21))
(20,22,{'info':'hi'})
>
>>gt>inter.add((2,3,{'info':'hello'}))
*注意*:下面显示如何处理边案例。
>>gt>gt;list(inter.find((2,2))))
[(2,3,{'info':'hello'}]
>
(2,3,3,{'info':'hello'}]>
>list(inter.find((3,3,3,3,3,3,3,2,3,3,3,{'info':'hello''>>>>>>>>>
测试隔行扫描中的每个项目。这5万个查询需要0.5秒:
>;>;对于s,e,范围:
…inter
interlap对象中的断言(s,e)是可接受的:
>;
断言(seo[0],seo[1])在inter
````
----
```` shell
````
示例中,我们希望每个染色体有一个interlap作为基因组数据。
下面的代码片段显示了一种简单的方法,可以在创建
然后查询一些间隔的过程中这样做。
``python
from interlap import interlap
from collections import defaultdict
import sys
=defaultdict(interlap)
toks in(x.rstrip().split(“\t”)for toks in(x.rstrip().split(“\t”)for x in x in open(sys.argv[1]):
start,end=map(int,toks[1:3])
inter[toks[0]].add((start,end,toks))
现在在另一个文件中发现重叠:toks in(x.rstrip().split(“\t”)for toks in x in openx in(sys.argv[2]):
开始,结束=映射(in t,toks[1:3])
打印列表(inter[toks[0]]。查找((开始,(结束))
```
why
--
重叠
测试。
使用排序列表并保持
对最长观测间隔的跟踪是最快的*纯python*方法
*只要最长观测间隔不包含集合中的大量
间隔部分*
interval set操作
` interval`类的行为类似于通常所说的间隔集。
`` python
ss了解更多详情
interlap比单纯的搜索快20倍(请参阅:https://brentp.github.io/interlap/benchmark.html)
,并且**没有内存开销**,因为它在排序列表上操作。它是纯python,没有依赖关系。
它使用二进制搜索和对最长观测间隔的了解,以100个千间隔快速查询数据集。
请参阅文档,网址是[https://brentp.github.io/interlap/](https://brentp.github.io/interlap)
usage
----
interlap takes元组或列表,其中前两个元素是开始、结束,其余的
元素可以是任何内容。
``python
>;>interlap import interlap
>;>inter=interlap()
=random.sample(range(22,10000000,12,10000000,12),50000)
>gt>gt;range=[(i,i+random.randint(2000,20000),randint(2000,20000))for i in sites]
>
>>;inter.update(range)
>>gt;inter.inter.add((20,22,{'info':'hi'})>
>
>>>;[20,21]inter.inter.add((20,22,{'info''info':'hi''}}}))
>
>>>>>>
(20,22,{'info':'hi'})
>
>>gt>inter.add((2,3,{'info':'hello'}))
*注意*:下面显示如何处理边案例。
>>gt>gt;list(inter.find((2,2))))
[(2,3,{'info':'hello'}]
>
(2,3,3,{'info':'hello'}]>
>list(inter.find((3,3,3,3,3,3,3,2,3,3,3,{'info':'hello''>>>>>>>>>
测试隔行扫描中的每个项目。这5万个查询需要0.5秒:
>;>;对于s,e,范围:
…inter
interlap对象中的断言(s,e)是可接受的:
>;
断言(seo[0],seo[1])在inter
````
----
```` shell
````
示例中,我们希望每个染色体有一个interlap作为基因组数据。
下面的代码片段显示了一种简单的方法,可以在创建
然后查询一些间隔的过程中这样做。
``python
from interlap import interlap
from collections import defaultdict
import sys
=defaultdict(interlap)
toks in(x.rstrip().split(“\t”)for toks in(x.rstrip().split(“\t”)for x in x in open(sys.argv[1]):
start,end=map(int,toks[1:3])
inter[toks[0]].add((start,end,toks))
现在在另一个文件中发现重叠:toks in(x.rstrip().split(“\t”)for toks in x in openx in(sys.argv[2]):
开始,结束=映射(in t,toks[1:3])
打印列表(inter[toks[0]]。查找((开始,(结束))
```
why
--
重叠
测试。
使用排序列表并保持
对最长观测间隔的跟踪是最快的*纯python*方法
*只要最长观测间隔不包含集合中的大量
间隔部分*
interval set操作
` interval`类的行为类似于通常所说的间隔集。
`` python
ss了解更多详情