我的Python项目的算法和数据结构
ddalg的Python项目详细描述
ddalg公司
我的Python项目的算法和数据结构。在
区间树
区间树是一种数据结构,用于保存区间,并允许有效地找到与给定区间或点重叠的区间。阅读更多关于Wikipedia。在
实施说明
此实现使用半开区间,其中不包括begin坐标。半开区间用于例如BED genomic format。在
当前的实现需要在每个insert
之后重新生成树,因此在read/write方式中使用该树时效率不高。在
用法
- 在扩展
Interval
时实现自定义间隔对象。需要重写两个属性:begin
从0开始(排除)间隔的开始坐标end
-0基(包括)区间的结束坐标fromddalg.modelimportIntervalclassYourInterval(Interval):def__init__(self,begin:int,end:int):self._begin=beginself._end=end# anything else@propertydefbegin(self):returnself._begin@propertydefend(self):returnself._end
在
- 创建间隔的集合并将其存储在间隔树中: ^{pr2}$ 在
- {cd5>查询^:
- 使用基于1的position:
itree.search(1)
在returns
(0,3)
- 使用半开interval坐标:
itree.get_overlaps(0,1)
在returns
(0,3)
, effectively the same query as above - 对于所需覆盖范围最小的间隔
itree.fuzzy_query(0,1,coverage=.90)
在return intervals with >=.9 overlap with respect to query coordinates
- 对于具有最小jaccard索引的区间
itree.jaccard_query(0,1,min_jaccard=.90)
在return intervals having jaccard_index>=.9 with respect to query coordinates
- 使用基于1的position:
- 项目
标签: