nlsq.core.factories¶
Factory functions for creating and configuring NLSQ optimization components.
This module provides builder functions that simplify the creation of optimizers and configuration objects with sensible defaults.
Factory functions for composing curve fitting configurations.
This module provides factory functions that enable runtime composition of curve fitting features like global optimization and diagnostics. These factories follow the Builder pattern to provide a clean API for configuring optimization pipelines.
The factories decouple feature composition from the core curve_fit implementation, reducing the dependency count in minpack.py.
Examples
>>> from nlsq.core.factories import create_optimizer, configure_curve_fit
>>>
>>> # Configure curve_fit with custom settings
>>> curve_fit = configure_curve_fit(
... enable_diagnostics=True,
... enable_recovery=True,
... )
>>> popt, pcov = curve_fit(model, xdata, ydata)
- class nlsq.core.factories.OptimizerConfig(enable_global=False, enable_diagnostics=False, enable_recovery=True, n_starts=10, extra_kwargs=<factory>)[source]¶
Bases:
objectConfiguration for optimizer creation.
- __init__(enable_global=False, enable_diagnostics=False, enable_recovery=True, n_starts=10, extra_kwargs=<factory>)¶
- nlsq.core.factories.create_optimizer(*, global_optimization=False, diagnostics=False, recovery=True, n_starts=10, cache=None, stability_guard=None, diagnostics_config=None, **kwargs)[source]¶
Create a configured optimizer with specified features.
This factory function composes various optimization features (global optimization, diagnostics) into a single optimizer instance.
- Parameters:
global_optimization (bool, default=False) – Enable global optimization with multi-start.
diagnostics (bool, default=False) – Enable diagnostic reporting.
recovery (bool, default=True) – Enable automatic recovery from numerical issues.
n_starts (int, default=10) – Number of starts for global optimization.
cache (UnifiedCache | None, default=None) – Optional cache for JIT compilation.
stability_guard (NumericalStabilityGuard | None, default=None) – Optional numerical stability guard.
diagnostics_config (DiagnosticsConfig | None, default=None) – Optional diagnostics configuration.
**kwargs (Any) – Additional keyword arguments passed to curve_fit.
- Returns:
A configured optimizer ready for use.
- Return type:
Examples
>>> # Standard optimizer >>> optimizer = create_optimizer() >>> popt, pcov = optimizer.fit(model, xdata, ydata) >>> >>> # Global optimizer with diagnostics >>> optimizer = create_optimizer(global_optimization=True, diagnostics=True)
- class nlsq.core.factories.ConfiguredOptimizer(config, cache=None, stability_guard=None, diagnostics_config=None)[source]¶
Bases:
objectAn optimizer configured with specific features.
This class encapsulates the configuration for curve fitting and provides a clean interface for performing fits.
- Parameters:
config (OptimizerConfig) – The optimizer configuration.
cache (UnifiedCache | None) – Optional cache for JIT compilation.
stability_guard (NumericalStabilityGuard | None) – Optional numerical stability guard.
diagnostics_config (DiagnosticsConfig | None) – Optional diagnostics configuration.
- __init__(config, cache=None, stability_guard=None, diagnostics_config=None)[source]¶
Initialize the configured optimizer.
- fit(f, xdata, ydata, p0=None, sigma=None, bounds=None, **kwargs)[source]¶
Fit a function to data using the configured optimizer.
- Parameters:
f (Callable) – Model function
f(x, *params) -> y.xdata (np.ndarray) – Independent variable data.
ydata (np.ndarray) – Dependent variable data.
p0 (np.ndarray or None) – Initial parameter guess.
sigma (np.ndarray or None) – Uncertainty in ydata.
bounds (tuple or None) – (lower, upper) bounds for parameters.
**kwargs (Any) – Additional keyword arguments.
- Returns:
(popt, pcov) - optimal parameters and covariance matrix.
- Return type:
tuple[np.ndarray, np.ndarray]
- nlsq.core.factories.configure_curve_fit(*, enable_diagnostics=False, enable_recovery=True, enable_caching=True, **default_kwargs)[source]¶
Configure a curve_fit function with default settings.
Returns a callable that wraps curve_fit with pre-configured defaults, allowing for consistent settings across an application.
- Parameters:
- Returns:
A configured curve_fit function.
- Return type:
Callable
Examples
>>> curve_fit = configure_curve_fit(enable_diagnostics=True) >>> popt, pcov = curve_fit(model, xdata, ydata)
Classes¶
OptimizerConfig¶
Configuration dataclass for optimizer creation.
- class nlsq.core.factories.OptimizerConfig(enable_global=False, enable_diagnostics=False, enable_recovery=True, n_starts=10, extra_kwargs=<factory>)[source]
Bases:
objectConfiguration for optimizer creation.
- enable_global
Enable global optimization with multi-start.
- Type:
- enable_diagnostics
Enable diagnostic reporting.
- Type:
- enable_recovery
Enable automatic recovery from numerical issues.
- Type:
- n_starts
Number of starts for global optimization.
- Type:
- enable_global: bool = False
- enable_diagnostics: bool = False
- enable_recovery: bool = True
- n_starts: int = 10
- __init__(enable_global=False, enable_diagnostics=False, enable_recovery=True, n_starts=10, extra_kwargs=<factory>)
ConfiguredOptimizer¶
Pre-configured optimizer that encapsulates curve fitting settings.
- class nlsq.core.factories.ConfiguredOptimizer(config, cache=None, stability_guard=None, diagnostics_config=None)[source]
Bases:
objectAn optimizer configured with specific features.
This class encapsulates the configuration for curve fitting and provides a clean interface for performing fits.
- Parameters:
config (OptimizerConfig) – The optimizer configuration.
cache (UnifiedCache | None) – Optional cache for JIT compilation.
stability_guard (NumericalStabilityGuard | None) – Optional numerical stability guard.
diagnostics_config (DiagnosticsConfig | None) – Optional diagnostics configuration.
- __init__(config, cache=None, stability_guard=None, diagnostics_config=None)[source]
Initialize the configured optimizer.
- fit(f, xdata, ydata, p0=None, sigma=None, bounds=None, **kwargs)[source]
Fit a function to data using the configured optimizer.
- Parameters:
f (Callable) – Model function
f(x, *params) -> y.xdata (np.ndarray) – Independent variable data.
ydata (np.ndarray) – Dependent variable data.
p0 (np.ndarray or None) – Initial parameter guess.
sigma (np.ndarray or None) – Uncertainty in ydata.
bounds (tuple or None) – (lower, upper) bounds for parameters.
**kwargs (Any) – Additional keyword arguments.
- Returns:
(popt, pcov) - optimal parameters and covariance matrix.
- Return type:
tuple[np.ndarray, np.ndarray]
Functions¶
create_optimizer¶
Create an optimizer instance with the specified configuration.
- nlsq.core.factories.create_optimizer(*, global_optimization=False, diagnostics=False, recovery=True, n_starts=10, cache=None, stability_guard=None, diagnostics_config=None, **kwargs)[source]
Create a configured optimizer with specified features.
This factory function composes various optimization features (global optimization, diagnostics) into a single optimizer instance.
- Parameters:
global_optimization (bool, default=False) – Enable global optimization with multi-start.
diagnostics (bool, default=False) – Enable diagnostic reporting.
recovery (bool, default=True) – Enable automatic recovery from numerical issues.
n_starts (int, default=10) – Number of starts for global optimization.
cache (UnifiedCache | None, default=None) – Optional cache for JIT compilation.
stability_guard (NumericalStabilityGuard | None, default=None) – Optional numerical stability guard.
diagnostics_config (DiagnosticsConfig | None, default=None) – Optional diagnostics configuration.
**kwargs (Any) – Additional keyword arguments passed to curve_fit.
- Returns:
A configured optimizer ready for use.
- Return type:
Examples
>>> # Standard optimizer >>> optimizer = create_optimizer() >>> popt, pcov = optimizer.fit(model, xdata, ydata) >>> >>> # Global optimizer with diagnostics >>> optimizer = create_optimizer(global_optimization=True, diagnostics=True)
configure_curve_fit¶
Configure curve_fit with custom settings.
- nlsq.core.factories.configure_curve_fit(*, enable_diagnostics=False, enable_recovery=True, enable_caching=True, **default_kwargs)[source]
Configure a curve_fit function with default settings.
Returns a callable that wraps curve_fit with pre-configured defaults, allowing for consistent settings across an application.
- Parameters:
- Returns:
A configured curve_fit function.
- Return type:
Callable
Examples
>>> curve_fit = configure_curve_fit(enable_diagnostics=True) >>> popt, pcov = curve_fit(model, xdata, ydata)
Usage Example¶
from nlsq.core.factories import create_optimizer, configure_curve_fit
# Create a streaming optimizer
optimizer = create_optimizer("streaming", memory_limit_gb=16.0)
# Configure curve_fit with defaults
curve_fit_fn = configure_curve_fit(
method="trf",
max_nfev=1000,
verbose=2,
)
popt, pcov = curve_fit_fn(model, xdata, ydata, p0=p0)