def fetch_intervals(bgz_file, gr: GenomeRange, gr2: GenomeRange = None) -> pd.DataFrame: rows = list(pairix_query(bgz_file, gr, second=gr2, split=True)) if len(rows) == 0: gr.change_chrom_names() if gr2: gr2.change_chrom_names() rows = list(pairix_query(bgz_file, gr, second=gr2, split=True)) return pd.DataFrame(rows)
def fetch(self, genome_range1, genome_range2=None): """ Return ------ matrix : numpy.ndarray """ from coolbox.utilities.genome import GenomeRange if genome_range2 is None: genome_range2 = genome_range1 genome_range1 = to_gr(genome_range1) genome_range2 = to_gr(genome_range2) if isinstance(genome_range1, str): genome_range1 = GenomeRange(genome_range1) if isinstance(genome_range2, str): genome_range2 = GenomeRange(genome_range2) if genome_range1.chrom.startswith("chr"): genome_range1.change_chrom_names() if genome_range2.chrom.startswith("chr"): genome_range2.change_chrom_names() binsize = self.infer_binsize(genome_range1) self.fetched_binsize = binsize # expose fetched binsize straw_list = self.__fetch_straw_list(genome_range1, genome_range2, binsize) matrix = self.__list_to_matrix(straw_list, genome_range1, genome_range2, binsize) return matrix
def fetch_intervals(self, bgz_file, gr: GenomeRange) -> pd.DataFrame: """ Fetch intervals within input chromosome range. """ intervals, bed_type = self.load_range(bgz_file, gr) if len(intervals) == 0: gr.change_chrom_names() intervals, bed_type = self.load_range(bgz_file, gr) if len(intervals) == 0: log.debug(f"No valid intervals were found in file {bgz_file} within range {gr}") intval_table = self.intervals2dataframe(intervals, bed_type) # attach bed_type info onto the dataframe intval_table.bed_type = bed_type return intval_table
def goto(self, genome_range: str = None, genome_range2: str = None): """Goto a genome range. :param genome_range: Genome range string, like "chr9:4000000-6000000". :param genome_range2: Genome range string, like "chr9:4000000-6000000. Only required in JointView mode". """ if genome_range2 is None: genome_range2 = genome_range # validate genome range if genome_range: gr = GenomeRange(genome_range) if genome_range2: gr = GenomeRange(genome_range2) log.info(f"Goto genome range '{genome_range}' '{genome_range2}'") self.current_range = [genome_range, genome_range2] return self
def fetch_intervals(self, bgz_file, gr: GenomeRange, gr2: GenomeRange = None) -> pd.DataFrame: open_region = self.properties.get("open_region") == "yes" rows = list( pairix_query(bgz_file, gr, second=gr2, open_region=open_region, split=True)) if not rows: gr.change_chrom_names() if gr2: gr2.change_chrom_names() rows = list( pairix_query(bgz_file, gr, second=gr2, open_region=open_region, split=True)) return pd.DataFrame(rows)
def plot(self, ax, gr: GenomeRange, **kwargs): gr = GenomeRange(gr) ymin, ymax = ax.get_ylim() if self.properties['percent_mode'] != 'no': hlines_list = [ ymin + val * ymax for val in self.properties['values'] ] else: hlines_list = self.properties['values'] ax.hlines(hlines_list, gr.start, gr.end, linestyle=self.properties['line_style'], linewidth=self.properties['line_width'], color=self.properties['color'], alpha=self.properties['alpha'])
def fetch(self, gr1, gr2=None): """ Return ------ matrix : numpy.ndarray """ from coolbox.utilities.genome import GenomeRange flip = False if gr2 is None: gr2 = gr1 gr1 = to_gr(gr1) gr2 = to_gr(gr2) if gr2.start < gr1.start: flip = True gr1, gr2 = gr2, gr1 if isinstance(gr1, str): gr1 = GenomeRange(gr1) if isinstance(gr2, str): gr2 = GenomeRange(gr2) if gr1.chrom.startswith("chr"): gr1.change_chrom_names() if gr2.chrom.startswith("chr"): gr2.change_chrom_names() binsize = self.infer_binsize(gr1) self.fetched_binsize = binsize # expose fetched binsize straw_iter = self.__fetch_straw_iter(gr1, gr2, binsize) mat = self.__straw_to_matrix(straw_iter, gr1, gr2, binsize) if flip: mat = mat.T return mat