From 3ba0ff3fa2f83643ca71ee5ca70be4d70c59a5cc Mon Sep 17 00:00:00 2001 From: Simon Sadedin Date: Sat, 9 May 2015 11:01:04 +1000 Subject: [PATCH] Support for finding regions overlapped by two different IntervalTrees --- intervaltree/intervaltree.py | 11 +++++++++++ 1 file changed, 11 insertions(+) mode change 100644 => 100755 intervaltree/intervaltree.py diff --git a/intervaltree/intervaltree.py b/intervaltree/intervaltree.py old mode 100644 new mode 100755 index 3eda476..d6c7f67 --- a/intervaltree/intervaltree.py +++ b/intervaltree/intervaltree.py @@ -437,6 +437,17 @@ def intersection_update(self, other): if iv not in other: self.remove(iv) + def overlap_intervals(self,other): + """ + Returns a new IntervalTree consisting of intervals representing the + regions overlapped by at least one interval in both of self and other. + """ + splits = (self | other) + splits.split_overlaps() + self_int_other = IntervalTree(filter(lambda r: self.overlaps(r) and other.overlaps(r), splits)) + self_int_other.merge_overlaps() + return self_int_other + def symmetric_difference(self, other): """ Return a tree with elements only in self or other but not