def _get_is_simple(self, anchor, context, syn): # are all the intervals on the same contig? all_on_same_contig = intervals.allequal((x.over.contig for x in context)) # make an interval describing the start and stop of the query context qminstart = min(x.start for x in context) qmaxstop = max(x.stop for x in context) tminstart = min(x.over.start for x in context) tmaxstop = max(x.over.stop for x in context) query_bound = intervals.Interval(contig=anchor.contig, start=qminstart, stop=qmaxstop) target_bound = intervals.Interval(contig=anchor.over.contig, start=tminstart, stop=tmaxstop) has_outer = False for q in syn.target.get_overlapping(target_bound): if not intervals.overlaps(query_bound, q.over): has_outer = True break is_simple = all_on_same_contig and not has_outer return(is_simple)
def test_allequal(self): self.assertTrue(intervals.allequal([1,1,1,1])) self.assertTrue(intervals.allequal(['a', 'a', 'a', 'a']))