Interval set module documentation

Functions to manage and convert intervals set.

An interval is a tuple (begin, end). An interval of 1 element where eID is the element ID is formated (eID, eID).

An interval set is a list of non overlapping intervals.

interval_set.interval_set.aggregate(itvs)[source]

Aggregate NOT overlapping intervals (intersect must be empty) to remove gaps.

>>> aggregate([])
[]
>>> aggregate([(1, 2), (3, 4)])
[(1, 4)]
>>> aggregate([(3, 4), (1, 2)])
[(1, 4)]
interval_set.interval_set.difference(itvs_base, itvs2)[source]

returns the difference between an interval set and an other

>>> difference([], [(1, 1)])
[]
>>> difference([(1, 1), (3, 4)], [(1, 2), (4, 7)])
[(3, 3)]
>>> difference([(1, 12)], [(1, 2), (4, 7)])
[(3, 3), (8, 12)]
interval_set.interval_set.equals(itvs1, itvs2)[source]

Check for equality between two interval sets

TODO: this version is working bu it is not optimized...

>>> equals([],[])
True
>>> equals([(1, 1)],[(1, 2)])
False
>>> equals([(1, 10)],[])
False
>>> equals([(1, 2), (3, 4)], [(1, 4)])
True
>>> equals([(5, 100), (3, 4)], [(3, 4), (5, 100)])
True
interval_set.interval_set.id_list_to_iterval_set(ids)[source]

Convert list of ID (int) to an intervals set

interval_set.interval_set.intersection(itvs1, itvs2)[source]

Returns an interval set that is an intersection of itvs1 and itvs2.

>>> intersection([(1, 2), (4, 5)], [(1, 3), (5, 7)])
[(1, 2), (5, 5)]
>>> intersection([(2, 3), (5, 7)], [(1, 1), (4, 4)])
[]
>>> intersection([(3, 7)], [(2, 8)])
[(3, 7)]
>>> intersection([(3, 7)], [(2, 6)])
[(3, 6)]
interval_set.interval_set.interval_set_to_id_list(itvs)[source]

Convert an interval set to a list of ID (int)

interval_set.interval_set.interval_set_to_set(intervals)[source]

Convert interval set to python set

>>> interval_set_to_set([])
set()
>>> interval_set_to_set([(1, 1), (3, 4)])
{1, 3, 4}
interval_set.interval_set.interval_set_to_string(intervals, separator=' ')[source]

Convert interval set to strings:

>>> interval_set_to_string([(1, 2), (5, 5), (10, 50)])
'1-2 5 10-50'
interval_set.interval_set.set_to_interval_set(s)[source]

Convert python set to interval set

>>> set_to_interval_set(set())
[]
>>> set_to_interval_set({1, 2, 5, 7, 9, 10, 11})
[(1, 2), (5, 5), (7, 7), (9, 11)]
interval_set.interval_set.string_to_interval_set(s, separator=' ')[source]

Transforms a string interval set representation to interval set

>>> string_to_interval_set("1 2 3 7-9 13")
[(1, 1), (2, 2), (3, 3), (7, 9), (13, 13)]
>>> string_to_interval_set("")
[]
>>> string_to_interval_set("(2,3)")
Traceback (most recent call last):
    ...
ValueError: Bad interval format. Parsed string is: (2,3)
interval_set.interval_set.total(itvs)[source]

Compute the total number of element by a cumulative sum on the size of all intervals

>>> total([])
0
>>> total([(0, 0)])
1
>>> total([(1, 1), (3, 4)])
3
interval_set.interval_set.union(itvs1, itvs2)[source]

Do the union of two interval sets

TODO: this version is working bu it is not optimized...

>>> union([(1, 1), (3, 4)], [(1, 2), (4, 7)])
[(1, 7)]