From 8d26749a9b90053ed0a66a55bd6afd619c59e581 Mon Sep 17 00:00:00 2001 From: ljw Date: Tue, 22 Sep 2026 10:07:13 +0800 Subject: [PATCH] Make BigWig.fetch_plot_data fill in 0s in gaps between non-consecutive intervals in bw file. --- coolbox/core/track/hist/bigwig.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/coolbox/core/track/hist/bigwig.py b/coolbox/core/track/hist/bigwig.py index 15cd404..54230f7 100644 --- a/coolbox/core/track/hist/bigwig.py +++ b/coolbox/core/track/hist/bigwig.py @@ -40,12 +40,18 @@ def __init__(self, file, **kwargs): def fetch_plot_data(self, gr: GenomeRange, **kwargs): intervals = self.fetch_data(gr, **kwargs) + intervals[0] = intervals["end"] + intervals[1] = intervals["end"] + intervals[2] = intervals["start"] + intervals[3] = intervals["start"] intervals = intervals.melt( id_vars="value", - value_vars=["start", "end"], - var_name="se", + value_vars=[0, 1, 2, 3], + var_name="corner", value_name="position" - ).sort_values(by=["index", "se"]) + ).sort_values(by=["position", "corner"], ignore_index=True).assign( + value = lambda df: df["value"].where(df["corner"].isin([0, 3]), 0.0) + ) positions = intervals["position"].values values = intervals['value'].values return positions, values