Skip to content

Commit 44ba815

Browse files
committed
Added overlap_size method
1 parent 4310c0b commit 44ba815

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

intervaltree/interval.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,31 @@ def overlaps(self, begin, end=None):
5353
except:
5454
return self.contains_point(begin)
5555

56+
def overlap_size(self, begin, end=None):
57+
"""
58+
Return the overlap size between two intervals or a point
59+
:param begin: beginning point of the range, or the point, or an Interval
60+
:param end: end point of the range. Optional if not testing ranges.
61+
:return: Return the overlap size, None if not overlapped
62+
:rtype: int
63+
"""
64+
overlaps = self.overlaps(begin, end)
65+
if not overlaps:
66+
return None
67+
68+
if end is not None:
69+
# case end is given
70+
i0 = max(self.begin, begin)
71+
i1 = min(self.end, end)
72+
return i1 - i0
73+
try:
74+
# assume this is
75+
i0 = max(self.begin, begin.begin)
76+
i1 = min(self.end, begin.end)
77+
return i1 - i0
78+
except:
79+
return 1 # case the begin is point
80+
5681
def contains_point(self, p):
5782
"""
5883
Whether the Interval contains p.

0 commit comments

Comments
 (0)