Source code for cell_abm_pipeline.tasks.calculate_data_bins

import numpy as np
from prefect import task


[docs]@task def calculate_data_bins( data: np.ndarray, bounds: tuple[float, float], bandwidth: float ) -> list[dict]: if len(data) == 0: return [] total = len(data) * bandwidth num_bins = int((bounds[1] - bounds[0]) / bandwidth) lower = bounds[0] - 3 * bandwidth / 2 upper = bounds[1] + 3 * bandwidth / 2 bins = np.linspace(lower, upper, num_bins + 4).tolist() counts, _ = np.histogram(data, bins) return [ {"n": count, "x": x0, "y": count / total, "m": (x0 + x1) / 2} for count, x0, x1 in zip(counts.tolist(), bins[:-1], bins[1:]) ]