Skip to main content

Algorithms and data structures for my Python projects

Project description

ddalg

Algorithms and data structures for my Python projects.

Interval tree

Interval tree is a data structure for holding intervals and to allow efficiently find intervals that overlap with given interval or point. Read more on Wikipedia.

Implementation note

This implementation uses half-open intervals, where begin coordinate is excluded. Half-open intervals are used in e.g. BED genomic format.

The current implementation needs to rebuild the tree after each insert, hence the tree is not efficient for using in read/write fashion.

Usage

  • implement your custom interval object while extending Interval. Two properties need to be overwritten:
    • begin - 0-based (excluded) begin coordinate of the interval
    • end - 0-based (included) end coordinate of the interval
      from ddalg.itree import Interval
      
      class YourInterval(Interval):
      
        def __init__(self, begin: int, end: int):
          self._begin = begin
          self._end = end
          # anything else
      
        @property
        def begin(self):
          return self._begin
      
        @property
        def end(self):
          return self._end
      
  • create a collection of your intervals and store them in the interval tree:
    from ddalg.itree import IntervalTree
     
    itree = IntervalTree([YourInterval(0, 3), YourInterval(1, 4)])
    # ... 
    
  • query itree:
    • either using position:
      itree.search(1)
      

      returns (0,3)

    • or using half-open interval coordinates:
      itree.query(0, 1) 
      

      returns (0,3), effectively the same query as above

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ddalg-0.0.2rc1.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

ddalg-0.0.2rc1-py3.6.egg (9.5 kB view details)

Uploaded Source

File details

Details for the file ddalg-0.0.2rc1.tar.gz.

File metadata

  • Download URL: ddalg-0.0.2rc1.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0.post20200309 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.3

File hashes

Hashes for ddalg-0.0.2rc1.tar.gz
Algorithm Hash digest
SHA256 6f4372b5b16652f571f8b1b7d2109d89bff10ae065fd01b9b4b66eb27d4f792d
MD5 7a0d10d29cb636745d391ae8e891c5cf
BLAKE2b-256 8b0ff3c4789f1063f0f7247cc9272888884eb14cb140fad81c85921f856157c3

See more details on using hashes here.

File details

Details for the file ddalg-0.0.2rc1-py3.6.egg.

File metadata

  • Download URL: ddalg-0.0.2rc1-py3.6.egg
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0.post20200309 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.3

File hashes

Hashes for ddalg-0.0.2rc1-py3.6.egg
Algorithm Hash digest
SHA256 714d60cb9d7714a927c5990e03b802e88f833b0e83edfbe4c44911d7def5b941
MD5 9d514374d397a17658b84f0e490e7fd7
BLAKE2b-256 54542bdec1c15d2691544227f46cbc7388e0ca1bbb46fc3b0ec62c4d2d06bac7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page