This guide is the fastest path from raw arrays to a validated fit.
pip install -e .
# optional dev tools
pip install -e .[dev]import numpy as np
from pyFitting import Fitter, ArrayData, GaussianModel
x = np.linspace(0.0, 10.0, 120)
y = 2.5 * np.exp(-0.5 * ((x - 5.0) / 1.2) ** 2) + 0.3
data = ArrayData(x, y)
result = Fitter(data, GaussianModel()).fit()
result.summary()model = GaussianModel()
model.set_bounds(A=(0, 10), mu=(0, 10), sigma=(0.1, 3.0), c=(-1, 1))
result = Fitter(data, model).fit()model = GaussianModel()
model.fix_parameter("mu", value=5.0)
result = Fitter(data, model).fit()from pyFitting import MSELoss, LocalOptimizer
loss = MSELoss(use_log=False)
optimizer = LocalOptimizer("SLSQP")
result = Fitter(data, GaussianModel(), loss=loss, optimizer=optimizer).fit()weights = np.ones_like(x)
weights[(x > 4) & (x < 6)] = 5.0
weighted_data = ArrayData(x, y, weights=weights)
result = Fitter(weighted_data, GaussianModel()).fit()print(result.success)
print(result.parameters.values)
print(result.metrics["r2"])
print(result.metrics["chi2_reduced"])
residuals = result.get_residuals()
result_df = result.to_dataframe()# mask by x-range
data.apply_range_mask(x_min=1.0, x_max=9.0)
# transform spaces
data_log = data.transform("log")
data_loglog = data.transform("log_log")from pyFitting import plot_fit, plot_fit_with_residuals
plot_fit(result)
plot_fit_with_residuals(result)result.successisFalse: tryLocalOptimizer("trust-constr").- Poor convergence: provide
initial_guessor tighter bounds. - Unstable parameters: fix known parameters and fit the rest.
- Dynamic-range issues: try log-space loss (
MSELoss(use_log=True)).
README.mdfor package overviewdocs/API_REFERENCE.mdfor component-level APIdocs/TESTING.mdfor test coverage and validation strategyTUTORIAL.mdfor extended walkthrough