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:
    • using 1-based position:
      itree.search(1)
      

      returns (0,3)

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

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

    • using fuzzy search with required coverage
      itree.fuzzy_query(0, 1, coverage=.90)
      

      require interval stored in a tree to have at least 90% overlap with query interval

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.2rc3.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

ddalg-0.0.2rc3-py3.6.egg (20.8 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: ddalg-0.0.2rc3.tar.gz
  • Upload date:
  • Size: 7.0 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.2rc3.tar.gz
Algorithm Hash digest
SHA256 b64dd818d3a9124d8aa78bbf6a6dffdfad95d8886e3c2af738ecddd23cd0d6de
MD5 ece07d1326274466215ddaaa3cc73aa1
BLAKE2b-256 f6fd1160480fd04ca6fef39412d0f0d38f3be15aa0cbd75ade5ff9fd3b09da9b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ddalg-0.0.2rc3-py3.6.egg
  • Upload date:
  • Size: 20.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.2rc3-py3.6.egg
Algorithm Hash digest
SHA256 2348a7e307d4cd12a3d6a621ecde84ed4cfea0008effc096af6b9fb8ebb11cbc
MD5 42d928aec7a7523e9704f6b5b84f68f8
BLAKE2b-256 023722844b19de4305c34465f7c0c0815b88aec1b13a4b34068aae030366776a

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