-
Notifications
You must be signed in to change notification settings - Fork 58
Description
Sometimes during gta.optimize() I get this warning,
The maximal number of iterations maxit (set to 20 by the program)
allowed for finding a smoothing spline with fp=s has been reached: s
too small.
There is an approximation returned but the corresponding weighted sum
of squared residuals does not satisfy the condition abs(fp-s)/s < tol.
spline = UnivariateSpline(x, y, k=2,
which seems to be triggered within utils.get_parameter_limits().
I noticed that even in the tutorials this warning seems to pop up, but nothing is explained regarding it.
Is this something the user should worry about? If yes, is there a recommended way to approach the issue e.g. using the available keyword arguments of gta.optimize()?
Slightly unrelated, but still, unexpected behavior: while debugging this I noticed that the optimizer section of my config is not respected by this method when I override one key, as I have
gta.config["optimizer"] = {'optimizer': 'MINUIT',
'tol': 0.001,
'max_iter': 100,
'init_lambda': 0.0001,
'retries': 3,
'min_fit_quality': 2,
'verbosity': 0}but the output of gta.optimize(optimizer={"verbosity":3}) shows
Minuit fit quality: 3
I would expect that only verbosity should have been overridden.
I get the same behavior even passing the full dict,
optimizer_dict = {**gta.config["optimizer"], "verbosity": 1}
print(optimizer_dict)
gta.optimize(optimizer=optimizer_dict)gives
2025-11-25 10:37:39 INFO GTAnalysis.optimize(): Starting
{'optimizer': 'MINUIT', 'tol': 0.001, 'max_iter': 100, 'init_lambda': 0.0001, 'retries': 3, 'min_fit_quality': 2, 'verbosity': 1}
[...]
Minuit fit quality: 3 estimated distance: 2.25552e-07
Minuit parameter uncertainties:
1 0.0239165
2 0.0166402
3 0.0985877
4 0.00766259
5 0.00911272
[...]/lib/python3.11/site-packages/fermipy/utils.py:785: UserWarning:
The maximal number of iterations maxit (set to 20 by the program)
allowed for finding a smoothing spline with fp=s has been reached: s
too small.
There is an approximation returned but the corresponding weighted sum
of squared residuals does not satisfy the condition abs(fp-s)/s < tol.
spline = UnivariateSpline(x, y, k=2,