diff --git a/src/whirlwind/_cost.py b/src/whirlwind/_cost.py index c583087..a1c8e41 100644 --- a/src/whirlwind/_cost.py +++ b/src/whirlwind/_cost.py @@ -1,8 +1,9 @@ import importlib.resources -import pickle +from pathlib import Path import numpy as np import scipy.ndimage +from scipy.interpolate import RegularGridInterpolator __all__ = [ "calc_smooth_phase_gradients", @@ -29,14 +30,26 @@ def calc_smooth_phase_gradients(igram): return phase_dy_smooth, phase_dx_smooth +def _load_rgi(path: Path | str) -> RegularGridInterpolator: + """Reconstruct RegularGridInterpolator from saved data.""" + data = np.load(path, allow_pickle=False) + return RegularGridInterpolator( + points=tuple(data["grid"]), + values=data["values"], + method=str(data["method"]), + bounds_error=bool(data["bounds_error"]), + fill_value=float(data["fill_value"]) + if data["fill_value"] is not None + else None, + ) + + def load_carballo_pdf_splines(): """ """ - files = importlib.resources.files(__package__) - - with files.joinpath("carballo-pdf-0-spline.pkl").open("rb") as f: - spline_pdf0 = pickle.load(f) - with files.joinpath("carballo-pdf-1-spline.pkl").open("rb") as f: - spline_pdf1 = pickle.load(f) + with importlib.resources.path(__package__, "carballo-pdf-0-spline.npz") as p: + spline_pdf0 = _load_rgi(p) + with importlib.resources.path(__package__, "carballo-pdf-1-spline.npz") as p: + spline_pdf1 = _load_rgi(p) return spline_pdf0, spline_pdf1 diff --git a/src/whirlwind/carballo-pdf-0-spline.pkl b/src/whirlwind/carballo-pdf-0-spline.npz similarity index 92% rename from src/whirlwind/carballo-pdf-0-spline.pkl rename to src/whirlwind/carballo-pdf-0-spline.npz index 49f48d8..4cccfd2 100644 Binary files a/src/whirlwind/carballo-pdf-0-spline.pkl and b/src/whirlwind/carballo-pdf-0-spline.npz differ diff --git a/src/whirlwind/carballo-pdf-1-spline.pkl b/src/whirlwind/carballo-pdf-1-spline.npz similarity index 93% rename from src/whirlwind/carballo-pdf-1-spline.pkl rename to src/whirlwind/carballo-pdf-1-spline.npz index 69e46b2..f501e2e 100644 Binary files a/src/whirlwind/carballo-pdf-1-spline.pkl and b/src/whirlwind/carballo-pdf-1-spline.npz differ