def order_records(bed_file, output): records = defaultdict(list) for bed_record in Bed.parse(open(bed_file, "rU")): records[bed_record.strand].append(bed_record) records["+"].sort(key=lambda p: (p.name, p.chrom_start)) records["-"].sort(key=lambda p: (p.name, -p.chrom_start)) with open(output, "w") as output_handle: for _, bed_records in records.iteritems(): output_handle.writelines(("%s\n" % str(bed_record)) for bed_record in bed_records)
def _create_bins(self, genes): for record in Bed.parse(open(genes, "rU")): for start, end in self._get_bins(record.chrom_start, record.chrom_end): self.counter[record.name, start, end] = defaultdict(int) self.bins[record.name].append((start, end))