Quicksect is a fast python / cython implementation of interval search.
Project description
Description
Quicksect is a fast python / cython implementation of interval search based on the pure python version in bx-python 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.
(https://github.com/brentp/quicksect)
Extended with removal operations and allows pretty print to display tree structure (By Jianlin)
License is MIT.
Installation
pip install quicksectx
Use
To use extended quicksect(quicksectx):
>>> from quicksectx import IntervalNode, IntervalTree, Interval >>> tree = IntervalTree() >>> tree.add(1, 3, 100) >>> tree.add(3, 7, 110) >>> tree.add(2, 5, 120) >>> tree.add(4, 6, 130) >>> print(tree.pretty_print()) Inv(1, 3, d=100) r: Inv(3, 7, d=110) l: Inv(2, 5, d=120) r: Inv(4, 6, d=130) >>> print(tree.find(Interval(2, 5))) [Inv(1, 3, d=100), Inv(3, 7, d=110), Inv(2, 5, d=120), Inv(4, 6, d=130)] >>> tree.remove(Interval(2, 5)) >>> print(tree.find(Interval(2, 5))) [Inv(1, 3, d=100), Inv(3, 7, d=110), Inv(4, 6, d=130)]
To use traditional quicksect, you can still using the same syntax:
>>> 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, 'a')) >>> res = tree.find(Interval(99, 100, 'b')) >>> res [Interval(88, 444)] >>> res[0].start, res[0].end, res[0].data (88, 444, 'a')
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)]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for quicksectx-0.3.7-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 368c8166150c06b190e34f96ff7188eb86d40554e2b330dc28b4fe7a64b2529e |
|
MD5 | 11a15d5c1e02ae953aa6d5b4a3dfe9b5 |
|
BLAKE2b-256 | c69edcddc98b9a13771c6585b552beef203c40d393db8e14e51a20998a22e723 |
Hashes for quicksectx-0.3.7-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af0575129e746b08384dcbaab7d2364889f0e968cb17a7409fc8c1dabc238f39 |
|
MD5 | 228e8e90fb89ca8fed33664fd5f55b89 |
|
BLAKE2b-256 | 0fd0d59ba1a9963509edb5d4c5876aa5e7ebc77b34098f7146258ce3b8696427 |
Hashes for quicksectx-0.3.7-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4fc82ba7a2f51bbc1d654364956d463075511da44f9396260f8cf5ca0be00592 |
|
MD5 | 0373447ab11b98ed4d851d9a00f91814 |
|
BLAKE2b-256 | 77777136828e39372722f8264bd95f82c9a580b2bbaca72af75b8bb1434619e4 |
Hashes for quicksectx-0.3.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 665028d7e28b80fe935de9ae54249807429d44d132e17d821c4ee0c466831bef |
|
MD5 | 17b2cbfd2e3171f50cd455bf79868457 |
|
BLAKE2b-256 | c5f4bbf5670570c9e4012a901dd932186665bb10467f0dcece92266e3d770474 |
Hashes for quicksectx-0.3.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c298ba094fadfad78fea5ec292a42817dd212fc739306b1cc53418c11b461f5c |
|
MD5 | cdfb17e693d37581554683c2af595758 |
|
BLAKE2b-256 | 66c7829dcce3691d6f2182cdd7898c77e1849a91908fafcdf0cd1a0a49de88d9 |
Hashes for quicksectx-0.3.7-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7965fae65a491899491e723d31be24c1f66ed5cebf4850361f49f7809395d5e |
|
MD5 | b0709297ca736e4ffb46f49261803578 |
|
BLAKE2b-256 | b27ba375dd049cb3ef2b4e5123ae6b6c8f7e7994f25749bac84ea19e34153d13 |
Hashes for quicksectx-0.3.7-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f23af27ad7387fbc12831ae9df4a17ed7c498cfa28cbe436e8b80419ccea656 |
|
MD5 | 7f30ab9c13153852413d74721324b45e |
|
BLAKE2b-256 | e1e4e5ec7a12a8f24c39b80556cdb8b17fdd96653e7b9520299e9d8bc5266b2d |
Hashes for quicksectx-0.3.7-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86a7836ad53e050981b4f963d6aea5913979bd94246f6703c365c5e06aa406b0 |
|
MD5 | 43787abcf23afda0227a205f08f7d3d4 |
|
BLAKE2b-256 | 1c05d4a0229ef61fd2765acbeeb491950018c3d05c37ac999be84d723a39b54a |
Hashes for quicksectx-0.3.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0cc5d6b7555cf148caf0e654a62d07442bbb8265cb978a517a3a5040f9d4ff91 |
|
MD5 | ecdd1aa6ba7f1a9fca914f332400cb65 |
|
BLAKE2b-256 | 56a56343ae2487ed44e6bcf53e30cf9a9c9946db632cbfb58a433bda72761a49 |
Hashes for quicksectx-0.3.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53e16501a63e2d9fa6ef51d3ac9af8cc40c79c74cfa27ad235e43ca8ca428ee3 |
|
MD5 | ccc82589467490979d01e04e48cda692 |
|
BLAKE2b-256 | 23e0baa61aff0afbdfc1c17f8919306917970728cb6f66ae7a23af73fed5ee0d |
Hashes for quicksectx-0.3.7-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0f53cebfbd0ba1e3dc35789dbf9ec7b0f28060fb791ca97037d3950137eb501 |
|
MD5 | 34094a7d3fa6eaacfd97bc12edba4a92 |
|
BLAKE2b-256 | e7443fda26325da51b8f5653163daceda1183ed6ac2d029c9c86b5dbc0cf17a8 |
Hashes for quicksectx-0.3.7-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ff8ac507922369114aac731f2c8049f4ec268440b1152593ac0383d8e6844a8 |
|
MD5 | ce66fe2a0603bce3abbdf09dd2a20a4e |
|
BLAKE2b-256 | 6f1650beee77737c3084202639fd55859d0466ed55839e2127ec5c647a70e215 |
Hashes for quicksectx-0.3.7-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3531b18f671e7979d401b78829bb9686f29bd4e109985d6cc81e532d13f2012d |
|
MD5 | 358ee1b79d38af31affeaf1c60418233 |
|
BLAKE2b-256 | 3e481adbe2c51708bb5e96700d1e4396ccb5a2e135de05f5a718bc6287c44a00 |
Hashes for quicksectx-0.3.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7a71a75f038470fc4f515d7d25e6d2a58b10ab6eb5606aa84503856c528aa14 |
|
MD5 | 75b8ebbd7919cbd68c5933c5541f07ce |
|
BLAKE2b-256 | 00c3d1a85bd732f2437b42bb3bf4665fe6e4a3d68715c4c92c293e71851945bc |
Hashes for quicksectx-0.3.7-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cffd4cfb98fab8f2968bccf8e4ca75a81860c671d5390e7bcdb7ef69eb638839 |
|
MD5 | ceec00d782c99d4383b75388ca2f86e5 |
|
BLAKE2b-256 | 8abf95374556c33953c478c17edd18c67b23ba78367240ed5efec2cbb0f9aca0 |
Hashes for quicksectx-0.3.7-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10d09cb4e241a01745a972c3f2e4d064f80bd2f4fac9018398b07a8113e0dc52 |
|
MD5 | eeb87cfb0c7c5bafda83c4f70a9cc62e |
|
BLAKE2b-256 | 3095098bd6cd2af0ba12e7c179c1816852336779c1be3c7145f7578cff1bda5b |
Hashes for quicksectx-0.3.7-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 104aad72df204b48ad0859cc527b305a511aa13bd96779f12504b357cdc3ca7a |
|
MD5 | 08f1f6db201b9a2f5d913a61022eb221 |
|
BLAKE2b-256 | 3bb9a8d42a50c8e5a442f6a58678604e702061f6d9a93b389aa4c75bd8fa9260 |
Hashes for quicksectx-0.3.7-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d1fe770e761b30b3e9c18f1364fc3df35c8a0335bcf0b3683311e7260f46166 |
|
MD5 | f15765839bd3ed7461651cfedd5d85fb |
|
BLAKE2b-256 | 275d606286895a36eb2ba96547df45a08d15793ffc9ea2a25f845c0c573efb17 |
Hashes for quicksectx-0.3.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbea443ec7caf0d275760fc4dcab1921207add93c4b79c19a2b6e1034788d3c6 |
|
MD5 | b887f6b6092419dd3d5d779f5ad31e28 |
|
BLAKE2b-256 | d2d2c9bdeba86d4907a81ee637d8ff177374dcc44429683e3c31c0a1b8a0c06d |
Hashes for quicksectx-0.3.7-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3504fd5c0497d7627555bb20c03fcb43970b544d4d68b4170eaa152a0bc48603 |
|
MD5 | cb8f7430f5733bebd7f5a862663f9b1e |
|
BLAKE2b-256 | 3585c1c5c39c40d4e36d855e925d1d5b69bb5b1e996aa3ea5da9f1af826ff68b |