def test_merge_records__complex_example__unsorted(): assert merge_bed_records( [ _new_bed_record("chr2", 100, 200), _new_bed_record("chr1", 1234, 5678), _new_bed_record("chr2", 150, 250), _new_bed_record("chr2", 1, 20), _new_bed_record("chr1", 5678, 9012), ] ) == [ _new_bed_record("chr1", 1234, 9012), _new_bed_record("chr2", 1, 20), _new_bed_record("chr2", 100, 250), ]
def _run(self, config, temp): contigs = {} with open(self._fai_file) as handle: for line in handle: name, length, _ = line.split("\t", 2) if name in contigs: raise NodeError("Reference genome contains multiple " "identically named contigs (%r)!" % (name, )) contigs[name] = int(length) with open(reroot_path(temp, self._outfile), "w") as handle: records = list(read_bed_file(self._infile, contigs=contigs)) pad_bed_records(records=records, padding=self._amount, max_sizes=contigs) for record in merge_bed_records(records): handle.write("%s\n" % (record, ))
def test_merge_records__non_overlapping_records_2(): assert merge_bed_records( [_new_bed_record("chr1", 1234, 5678), _new_bed_record("chr1", 5680, 9012)] ) == [_new_bed_record("chr1", 1234, 5678), _new_bed_record("chr1", 5680, 9012)]
def test_merge_records__minimal_fields_only(): assert merge_bed_records([_new_bed_record("chr1", 1234, 5678, "foo", 1, "-")]) == [ _new_bed_record("chr1", 1234, 5678) ]
def test_merge_records__single_record(): assert merge_bed_records([_new_bed_record("chr1", 1234, 5678)]) == [ _new_bed_record("chr1", 1234, 5678) ]
def test_merge_records__empty_sequences(): assert merge_bed_records(()) == [] assert merge_bed_records([]) == []