def __process_bed(self): bed = ReadBed(opener(self.properties['file'])) if self.properties['color'] == 'bed_rgb' and bed.file_type not in [ 'bed12', 'bed9' ]: log.warning( "*WARNING* Color set to 'bed_rgb', but bed file does not have the rgb field. The color has " "been set to {}".format(PlotBed.DEFAULT_COLOR)) self.properties['color'] = PlotBed.DEFAULT_COLOR interval_tree = {} for intval in bed: if intval.chromosome not in interval_tree: interval_tree[intval.chromosome] = IntervalTree() if self.properties['color'] == 'bed_rgb': color = intval.rgb else: color = self.properties['color'] interval_tree[intval.chromosome].add( Interval(intval.start, intval.end, color)) return interval_tree
def __process_loop_file(self): interval_tree = {} with opener(self.properties['file']) as f: for idx, line in enumerate(f): line = to_string(line) # skip header line if idx == 0 and self.__is_header(line): continue fields = line.split() chr1, x1, x2, chr2, y1, y2, *other = fields x1, x2, y1, y2 = list(map(int, [x1, x2, y1, y2])) # skip inter-chromosome interaction if chr1 != chr2: continue chromosome = chr1 if not chromosome.startswith("chr"): chromosome = change_chrom_names(chromosome) if chromosome not in interval_tree: interval_tree[chromosome] = IntervalTree() if len(other) == 0: color = self.DEFAULT_COLOR else: rgb = other[0].split(",") rgb = list(map(int, rgb)) color = rgb2hex(*rgb) loop = self.LoopInverval(chr1, x1, x2, chr2, y1, y2, color) interval_tree[chromosome].add(Interval(x1, y2, loop)) return interval_tree
def __process_bed(self): bed_file_h = ReadBed(opener(self.properties['file'])) self.bed_type = bed_file_h.file_type if 'color' in self.properties and self.properties['color'] == 'bed_rgb' and \ self.bed_type not in ['bed12', 'bed9']: log.warning( "*WARNING* Color set to 'bed_rgb', but bed file does not have the rgb field. The color has " "been set to {}".format(PlotBed.DEFAULT_COLOR)) self.properties['color'] = PlotBed.DEFAULT_COLOR valid_intervals = 0 interval_tree = {} max_score = float('-inf') min_score = float('inf') for bed in bed_file_h: if bed.score < min_score: min_score = bed.score if bed.score > max_score: max_score = bed.score if bed.chromosome not in interval_tree: interval_tree[bed.chromosome] = IntervalTree() interval_tree[bed.chromosome].add(Interval(bed.start, bed.end, bed)) valid_intervals += 1 if valid_intervals == 0: log.warning("No valid intervals were found in file {}".format( self.properties['file_name'])) return interval_tree, min_score, max_score