diff --git a/src/visu/figure_maker.py b/src/visu/figure_maker.py index 01bf2a54d205ffa906d37f11d0081768f0c7ad17..4599ecabf7c5b81f723b8a2424c5b7efb24d23f9 100644 --- a/src/visu/figure_maker.py +++ b/src/visu/figure_maker.py @@ -103,34 +103,47 @@ def inspect_bigwig_regions(bw: Any, region: List, 6 2.00 4 cond1 R1 exon2 7 1.00 5 cond1 R1 exon2 8 1.00 6 cond1 R1 exon2 + >>> inspect_bigwig_regions(my_bw, mregion, 'R1', 5, [0, 0], 'cond1') + coverage bin condition replicate region + 0 42.00 0 cond1 R1 exon2 + 1 8.00 1 cond1 R1 exon2 + 2 4.25 2 cond1 R1 exon2 + 3 2.00 3 cond1 R1 exon2 + 4 2.00 4 cond1 R1 exon2 """ - val = bw.stats(region[0], region[1], region[2], nBins=nb_bin, exact=True) + val = bw.stats(region[0], + max(region[1], 0), + min(region[2], bw.chroms(region[0])), + nBins=nb_bin, + exact=True) bins = list(range(len(val))) if len(bins) != nb_bin: raise ValueError("The lenght of bins should be equals to nb_bin") + max_loc = max(region[1] - resize[0], 0) + + min_loc = min(region[2] + resize[0], bw.chroms(region[0])) if resize[0] > 0: - max_loc = max(region[1] - resize[0], 0) val_before = bw.stats(region[0], max_loc, region[1], nBins=resize[1], exact=True) - - min_loc = min(region[2] + resize[0], bw.chroms(region[0])) val_after = bw.stats(region[0], region[2], min_loc, nBins=resize[1], exact=True) - if None in val_after: - val_after = val_after[::-1] - print(f"Warning ! None values found in {region} - " - f"{[region[0], region[2], min_loc]}") - if region[5] == "+": - bin_before = list(range(-len(val_before), 0)) - bin_after = list(range(bins[-1] + 1, - bins[-1] + 1 + len(val_after))) - val = val_before + val + val_after - else: - bin_before = list(range(-len(val_after), 0)) - bin_after = list(range(bins[-1] + 1, - bins[-1] + 1 + len(val_before))) - val = val_after[::-1] + val[::-1] + val_before[::-1] - bins = bin_before + bins + bin_after + else: + val_before = [] + val_after = [] + if None in val_after: + print(f"Warning ! None values found in {region} - " + f"{[region[0], region[2], min_loc]}") + if region[5] == "+": + bin_before = list(range(-len(val_before), 0)) + bin_after = list(range(bins[-1] + 1, + bins[-1] + 1 + len(val_after))) + val = val_before + val + val_after + else: + bin_before = list(range(-len(val_after), 0)) + bin_after = list(range(bins[-1] + 1, + bins[-1] + 1 + len(val_before))) + val = val_after[::-1] + val[::-1] + val_before[::-1] + bins = bin_before + bins + bin_after dic = {"coverage": val, "bin": bins} df = pd.DataFrame(dic) df['condition'] = [condition_name] * df.shape[0]