Fitter¶
- class peebee.optimize.Fitter¶
Bases:
objectObject-oriented fitter for gravitational potential models.
Provides a clean interface for fitting gravitational models to pulsar acceleration data using various optimization algorithms.
- Usage:
fitter = Fitter() fitter.set_model(model) fitter.set_data(l, b, d, alos, alos_err) fitter.configure_params({“NFW.m_vir”: (1e10, 1e14), “NFW.r_s”: (5, 50)}) result = fitter.optimize(method=’differential_evolution’)
Attributes Summary
Best-fit parameters from most recent optimization.
Methods Summary
configure_params(param_bounds_dict)Configure which parameters to optimize and their bounds.
evaluate_model([print_out])Evaluate current model fit without optimization.
optimize([method, loss])Run optimization to fit model parameters.
set_data(l, b, d, alos, alos_err[, ...])Set the pulsar acceleration data.
set_model(model)Set the gravitational potential model to fit.
set_noise_model(noise_model)Set the noise model to use in the likelihood calculation.
set_optimization_options([sun_pos, ...])Set additional optimization options.
Attributes Documentation
- best_fit_params¶
Best-fit parameters from most recent optimization.
Methods Documentation
- configure_params(param_bounds_dict)¶
Configure which parameters to optimize and their bounds.
- Param_bounds_dict (dict):
Dictionary of parameter names and bounds. Example: {“NFW.m_vir”: (1e10, 1e14), “NFW.r_s”: (5, 50), “noise.sigma”: (0.1, 10.0)} Note: For log parameters, provide bounds in log space (e.g., m_vir: (10, 14) for log10(1e10) to log10(1e14))
- Returns:
None
- evaluate_model(print_out=True)¶
Evaluate current model fit without optimization.
- Print_out (bool, optional):
Whether to print evaluation results. Default is True.
- Returns:
evaluation_dict (dict) - Dictionary containing model evaluation metrics
- optimize(method='differential_evolution', loss='least_squares', **kwargs)¶
Run optimization to fit model parameters.
- Method (str, optional):
Optimization algorithm (‘differential_evolution’ or ‘gradient_descent’). Default is ‘differential_evolution’.
- Loss (str, optional):
Loss function to use (‘least_squares’ or ‘huber’). Default is ‘least_squares’.
- **kwargskwargs:
Additional arguments passed to scipy optimizer
- Returns:
results (FitResults) - Container with optimization results and fit statistics
- set_data(l, b, d, alos, alos_err, dist_err=None, frame='gal', sun_pos=None)¶
Set the pulsar acceleration data.
- L (array_like):
Galactic longitude (deg)
- B (array_like):
Galactic latitude (deg)
- D (array_like):
Heliocentric distance (kpc)
- Alos (array_like):
Observed line-of-sight acceleration (mm/s/yr)
- Alos_err (array_like):
Uncertainty in line-of-sight acceleration (mm/s/yr)
- Dist_err (array_like, optional):
Distance error for likelihood calculation
- Frame (str, optional):
Coordinate frame (‘gal’, ‘cart’, ‘icrs’, ‘ecl’). Default is ‘gal’.
- Sun_pos (tuple, optional):
Solar position (kpc). Uses default if not provided.
- Returns:
None
- set_model(model)¶
Set the gravitational potential model to fit.
- Model (Model or CompositeModel):
The gravitational potential model to optimize
- Returns:
None
- set_noise_model(noise_model)¶
Set the noise model to use in the likelihood calculation.
- Noise_model (NoiseModel or None):
NoiseModel instance for likelihood calculation
- Returns:
None
- set_optimization_options(sun_pos=None, negative_mass=False, scale=1.0)¶
Set additional optimization options.
- Sun_pos (tuple, optional):
Solar position override (kpc)
- Negative_mass (bool, optional):
Allow negative mass values. Default is False.
- Scale (float, optional):
Scaling factor for optimization. Default is 1.0.
- Returns:
None