def test_Interval_merge(): l1 = Interval.from_string('chr1:10000-10967:1') l2 = Interval.from_string('chr1:10858-12964:-1') l3 = Interval.from_string('chr1:10858-10964:-1') merged = Interval.merge([l1,l2,l3]) assert len(merged) == 1 m = merged[0] assert m.start == 10000 assert m.end == 12964
def intervals(self): if self.bed_file is None: return {} if not self.bed_file.exists: raise ValueError(f"can not find the bed file: {self.bed_file}") intervals = defaultdict(list) with open(self.bed_file) as fp: for line in fp: chrom, start, end, *_ = line.strip().split('\t') intervals[chrom].append( Interval(int(start), int(end), chrom=chrom)) return {chrom: Interval.merge(intervals[chrom]) for chrom in intervals}