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']))