All Projects → brentp → Quicksect

brentp / Quicksect

Licence: mit
a cythonized, extended version of the interval search tree in bx

Programming Languages

python
139335 projects - #7 most used programming language

Quicksect

.. image:: https://img.shields.io/badge/install%20with-bioconda-brightgreen.png :target: http://bioconda.github.io/recipes/quicksect/README.html

Description

Quicksect is a fast python / cython implementation of interval search based on the pure python version in bx-python <http://bx-python.trac.bx.psu.edu/>__ I pulled it out, optimized and converted to cython and James Taylor has incoporated it back into bx-python with his improvements.

I have brought this project back from the dead because I want a fast, simple, no-dependencies Interval tree.

License is MIT.

Installation

pip install quicksect

or

conda install -c bioconda quicksect

Use

>>> from quicksect import IntervalNode, Interval, IntervalTree

Most common use will be via IntervalTree:

>>> tree = IntervalTree()
>>> tree.add(23, 45)
>>> tree.add(55, 66)
>>> tree.search(46, 47)
[]
>>> tree.search(44, 56)
[Interval(55, 66), Interval(23, 45)]

>>> tree.insert(Interval(88, 444))
>>> res = tree.find(Interval(99, 100))
>>> res
[Interval(88, 444)]
>>> res[0].start, res[0].end
(88, 444)

Thats pretty much everything you need to know about the tree.

Test

$ python setup.py test

Low-Level +++++++++

In some cases, users may want to utilize the lower-level interface that accesses the nodes of the tree:

>>> inter = IntervalNode(Interval(22, 33))
>>> inter = inter.insert(Interval(44, 55))
>>> inter.intersect(24, 26)
[Interval(22, 33)]

>>> inter.left(Interval(34, 35), n=1)
[Interval(22, 33)]

>>> inter.right(Interval(34, 35), n=1)
[Interval(44, 55)]
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].