Control: tags -1 + patch
Hi Maintainer
While asserting that no warnings are raised is a useful test for the
upstream developers, I don't think it makes sense for downstreams.
I propose to disable the assertion as follows:
--- a/tests/test_minimizers.py
+++ b/tests/test_minimizers.py
@@ -117,7 +117,7 @@
# Should no longer raise warnings, because internally we practice
# what we preach.
fit_custom = BFGS(chi_squared, [a, b])
- assert len(recwarn) == 0
+# assert len(recwarn) == 0
fit_custom_result = fit_custom.execute()
Please let me know if you are happy with a team upload and I will proceed.
As a bonus, I attach a patch that fixes several SyntaxWarnings that
occur with Python 3.12.
Regards
Graham
Description: Fix several SyntaxWarnings
Use raw strings to avoid invalid escape sequence
Author: Graham Inggs <[email protected]>
Last-Update: 2024-04-06
--- a/symfit/core/operators.py
+++ b/symfit/core/operators.py
@@ -45,7 +45,7 @@
# return orig_ne(self.__class__, other)
def call(self, *values, **named_values):
- """
+ r"""
Call an expression to evaluate it at the given point.
Future improvements: I would like if func and signature could be buffered after the
--- a/symfit/core/support.py
+++ b/symfit/core/support.py
@@ -293,7 +293,7 @@
return jac
def key2str(target):
- """
+ r"""
In ``symfit`` there are many dicts with symbol: value pairs.
These can not be used immediately as \*\*kwargs, even though this would make
a lot of sense from the context.
@@ -321,4 +321,4 @@
base_str += 'd{}{}'.format(var, count if count > 1 else '')
return base_str
-sympy.Derivative.name = property(name)
\ No newline at end of file
+sympy.Derivative.name = property(name)
--- a/symfit/core/fit.py
+++ b/symfit/core/fit.py
@@ -29,7 +29,7 @@
from the model.
"""
def __init__(self, model, *ordered_data, absolute_sigma=None, **named_data):
- """
+ r"""
:param model: (dict of) sympy expression or ``Model`` object.
:param bool absolute_sigma: True by default. If the sigma is only used
for relative weights in your problem, you could consider setting it to
--- a/symfit/core/minimizers.py
+++ b/symfit/core/minimizers.py
@@ -208,7 +208,7 @@
:class:`~symfit.core.minimizers.DifferentialEvolution`.
"""
def __init__(self, *args, minimizers=None, **kwargs):
- '''
+ r'''
:param minimizers: a :class:`~collections.abc.Sequence` of
:class:`~symfit.core.minimizers.BaseMinimizer` objects, which need
to be run in order.
@@ -324,7 +324,7 @@
def execute(self, bounds=None, jacobian=None, hessian=None,
constraints=None, *, tol=1e-9, **minimize_options):
- """
+ r"""
Calls the wrapped algorithm.
:param bounds: The bounds for the parameters. Usually filled by
@@ -790,7 +790,7 @@
return lbounds, ubounds
def execute(self, jacobian=None, method='trf', **minpack_options):
- """
+ r"""
:param \*\*minpack_options: Any named arguments to be passed to
:func:`scipy.optimize.least_squares`
"""
--- a/symfit/core/fit_results.py
+++ b/symfit/core/fit_results.py
@@ -26,7 +26,7 @@
:class:`~symfit.core.models.Model`'s.
"""
def __init__(self, model, popt, covariance_matrix, minimizer, objective, message, *, constraints=None, **minimizer_output):
- """
+ r"""
:param model: :class:`~symfit.core.models.Model` that was fit to.
:param popt: best fit parameters, same ordering as in model.params.
:param covariance_matrix: covariance matrix.
@@ -276,4 +276,4 @@
f_is = [f_is[var] for var in model.dependent_vars]
SS_res = np.sum([np.sum((y_i - f_i)**2) for y_i, f_i in zip(y_is, f_is) if y_i is not None])
SS_tot = np.sum([np.sum((y_i - y_bar)**2) for y_i, y_bar in zip(y_is, y_bars) if y_i is not None])
- return 1 - SS_res/SS_tot
\ No newline at end of file
+ return 1 - SS_res/SS_tot
--- a/symfit/core/objectives.py
+++ b/symfit/core/objectives.py
@@ -386,7 +386,7 @@
class HessianObjectiveJacApprox(HessianObjective):
- """
+ r"""
This object should only be used as a Mixin for covariance matrix estimation.
Since the covariance matrix for the least-squares method is proportional to
the Hessian of :math:`S`, this function attempts to return the Hessian
@@ -552,4 +552,4 @@
)
return np.array(evaluated_hess[0])
else:
- return None
\ No newline at end of file
+ return None