interval module¶
-
class
mavis.interval.
Interval
(start, end=None, freq=1, number_type=None)[source]¶ Bases:
object
Parameters: -
__and__
(other)[source]¶ the intersection of two intervals
Example
>>> Interval(1, 10) & Interval(5, 50) Interval(5, 10) >>> Interval(1, 2) & Interval(10, 11) None
-
__len__
()[source]¶ the length of the interval
Example
>>> len(Interval(1, 11)) 12
Warning
only works for integer intervals
-
__or__
(other)[source]¶ the union of two intervals
Example
>>> Interval(1, 10) | Interval(5, 50) Interval(1, 50) >>> Interval(1, 2) | Interval(10, 11) Interval(1, 11)
-
__sub__
(other)[source]¶ the difference of two intervals
Example
>>> Interval(1, 10) - Interval(5, 50) [Interval(1, 4)] >>> Interval(1, 2) - Interval(10, 11) [Interval(1, 2)] >>> Interval(1, 2) - Interval(-1, 10) []
-
center
¶ the middle of the interval
Example
>>> Interval(1, 10).center 5.5 >>> Interval(1, 11).center 6
-
classmethod
convert_ratioed_pos
(mapping, pos, forward_to_reverse=None)[source]¶ convert any given position given a mapping of intervals to another range
Parameters: Returns: the position in the alternate coordinate system given the input mapping
Return type: Raises: AttributeError
– if the input position is outside the set of input segmentsIndexError
– if the input position cannot be converted to the output system
Example
>>> mapping = {(1, 10): (101, 110), (11, 20): (555, 564)} >>> Interval.convert_pos(mapping, 5) 5 >>> Interval.convert_pos(mapping, 15) 559
-
classmethod
dist
(first, other)[source]¶ returns the minimum distance between intervals
Example
>>> Interval.dist((1, 4), (5, 7)) -1 >>> Interval.dist((5, 7), (1, 4)) 1 >>> Interval.dist((5, 8), (7, 9)) 0
-
classmethod
intersection
(*intervals)[source]¶ returns None if there is no intersection
Example
>>> Interval.intersection((1, 10), (2, 8), (7, 15)) Interval(7, 8) >>> Interval.intersection((1, 2), (5, 9)) None
-
classmethod
min_nonoverlapping
(*intervals)[source]¶ for a list of intervals, orders them and merges any overlap to return a list of non-overlapping intervals O(nlogn)
Example
>>> Interval.min_nonoverlapping((1, 10), (7, 8), (6, 14), (17, 20)) [Interval(1, 14), Interval(17, 20)]
-
classmethod
overlaps
(first, other)[source]¶ checks if two intervals have any portion of their given ranges in common
Parameters: Example
>>> Interval.overlaps(Interval(1, 4), Interval(5, 7)) False >>> Interval.overlaps(Interval(1, 10), Interval(10, 11)) True >>> Interval.overlaps((1, 10), (10, 11)) True
-
-
class
mavis.interval.
IntervalMapping
(mapping=None, opposing=None)[source]¶ Bases:
object
mapping between coordinate systems using intervals. source intervals cannot overlap but no such assertion is enforced on the target intervals
-
convert_pos
(pos, simplify=True)[source]¶ convert any given position given a mapping of intervals to another range
Parameters: pos (int) – a position in the first coordinate system Returns: the position in the alternate coordinate system given the input mapping - int: if simplify is True - Interval: if simplify is False Raises: IndexError
– if the input position is not in any of the mapped intervalsExample
>>> mapping = IntervalMapping(mapping={(1, 10): (101, 110), (11, 20): (555, 564)}) >>> mapping.convert_pos(5) 5 >>> mapping.convert_pos(15) 559
-