From 54c62eeb67b5725e8e26ce801ab1a132e8218671 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Tue, 7 Apr 2026 17:39:58 +0100 Subject: [PATCH] perf: defer scipy.stats import in PriorVectorized Move scipy.stats.norm from module-level import to local imports inside PriorVectorized methods. This avoids loading scipy during `import autofit`, reducing the import floor by ~0.1s. Co-Authored-By: Claude Opus 4.6 (1M context) --- autofit/mapper/prior/vectorized.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/autofit/mapper/prior/vectorized.py b/autofit/mapper/prior/vectorized.py index 1f4f95072..6e72aaea6 100644 --- a/autofit/mapper/prior/vectorized.py +++ b/autofit/mapper/prior/vectorized.py @@ -1,5 +1,4 @@ import numpy as np -from scipy.stats import norm from autofit.mapper.prior.gaussian import GaussianPrior from autofit.mapper.prior.truncated_gaussian import TruncatedGaussianPrior @@ -97,6 +96,8 @@ def __init__(self, model: AbstractPriorModel): uppers - self.truncated_gaussian_means ) / self.truncated_gaussian_sigmas + from scipy.stats import norm + self.truncated_gaussian_cdf_a = norm.cdf(a) self.truncated_gaussian_cdf_b = norm.cdf(b) @@ -153,6 +154,8 @@ def __call__(self, cube: np.ndarray) -> np.ndarray: # 3) Batch‐process all GaussianPriors if self.gaussian_idx: + from scipy.stats import norm + subcube = cube[:, self.gaussian_idx] # (n_samples, n_gaussians) inv = norm.ppf(subcube) # inverse CDF of standard normal @@ -163,6 +166,8 @@ def __call__(self, cube: np.ndarray) -> np.ndarray: subcube = cube[:, self.truncated_gaussian_idx] # (n_samples, n_truncs) + from scipy.stats import norm + truncated_cdf = self.truncated_gaussian_cdf_a + subcube * ( self.truncated_gaussian_cdf_b - self.truncated_gaussian_cdf_a )