mgkit.utils.common module¶
Utility functions
-
mgkit.utils.common.
average_length
(a1s, a1e, a2s, a2e)[source]¶ Given two sets of coordinates, a1 and a2, returns the average length.
-
mgkit.utils.common.
complement_ranges
(intervals, end=None)[source]¶ New in version 0.3.1.
Perform a complement operation of the list of intervals, i.e. returning the ranges (tuples) that are not included in the list of intervals.
union_ranges()
is first called on the intervals.Note
the end parameter is there for cases where the ranges passed don’t cover the whole space. Assuming a list of ranges from annotations on a nucleotidic sequence, if the last range doesn’t include the last position of the sequence, passing end equal to the length of the sequence will make the function include a last range that includes it
- Parameters
intervals (intervals) – iterable where each element is a closed range (tuple)
end (int) – if the end of the complement intervals is supposed to be outside the last range.
- Returns
the list of intervals that complement the ones passed.
- Return type
Examples
>>> complement_ranges([(1, 10), (11, 20), (25, 30)], end=100) [(21, 24), (31, 100)] >>> complement_ranges([(1, 10), (11, 20), (25, 30)]) [(21, 24)] >>> complement_ranges([(0, 2), (3, 17), (18, 20)]) [] >>> complement_ranges([(0, 2), (3, 17), (18, 20)], end=100) [(21, 100)]
-
mgkit.utils.common.
deprecated
(func)[source]¶ This is a decorator which can be used to mark functions as deprecated. It will result in a warning being emitted when the function is used.
-
mgkit.utils.common.
range_intersect
(start1, end1, start2, end2)[source]¶ New in version 0.1.13.
Given two ranges in the form (start, end), it returns the range that is the intersection of the two.
- Parameters
- Returns
returns a tuple with the start and end position for the intersection of the two ranges, or None if the intersection is empty
- Return type
-
mgkit.utils.common.
ranges_length
(ranges)[source]¶ New in version 0.1.12.
Given an iterable where each element is a range, a tuple whose elements are numbers with the first being less than or equal to the second, the function sums the lengths of all ranges.
Warning
it’s supposed to be used on intervals that were first passed to functions like
union_ranges()
. If values overlap, there the sum will be wrong- Parameters
ranges (iterable) – each element is a tuple like (1, 10)
- Returns
sum of all ranges lengths
- Return type
-
mgkit.utils.common.
union_range
(start1, end1, start2, end2)[source]¶ New in version 0.1.12.
Changed in version 0.3.1: changed behaviour, since the intervals are meant to be closed
If two numeric ranges overlap, it returns the new range, otherwise None is returned. Works on both int and float numbers, even mixed.
- Parameters
start1 (numeric) – start of range 1
end1 (numeric) – end of range 1
start2 (numeric) – start of range 2
end2 (numeric) – end of range 2
- Returns
union of the ranges or None if the ranges don’t overlap
- Return type
Example
>>> union_range(10, 13, 1, 10) (1, 13) >>> union_range(1, 10, 11, 13) (1, 13) >>> union_range(1, 10, 12, 13) None
-
mgkit.utils.common.
union_ranges
(intervals)[source]¶ New in version 0.3.1.
From a list of ranges, assumed to be closed, performs a union of all elements.
- Parameters
intervals (intervals) – iterable where each element is a closed range (tuple)
- Returns
the list of ranges that are the union of all elements passed
- Return type
Examples
>>> union_ranges([(1, 2), (3, 7), (6, 12), (9, 17), (18, 20)]) [(1, 20)] >>> union_ranges([(1, 2), (3, 7), (6, 12), (9, 14), (18, 20)]) [(1, 14), (18, 20)]