[Feat] Introduce checks of the provided inverse matrix for correlated fits

This commit is contained in:
Simon Kuberski 2025-02-18 23:03:08 +01:00
parent 6ed6ce6113
commit c0fdbfa33e
2 changed files with 5 additions and 0 deletions

View file

@ -365,6 +365,8 @@ def least_squares(x, y, func, priors=None, silent=False, **kwargs):
if (chol_inv[1] != key_ls):
raise ValueError('The keys of inverse covariance matrix are not the same or do not appear in the same order as the x and y values.')
chol_inv = chol_inv[0]
if np.any(np.diag(chol_inv) <= 0) or (not np.all(chol_inv == np.tril(chol_inv))):
raise ValueError('The inverse covariance matrix inv_chol_cov_matrix[0] has to be a lower triangular matrix constructed from a Cholesky decomposition.')
else:
corr = covariance(y_all, correlation=True, **kwargs)
inverrdiag = np.diag(1 / np.asarray(dy_f))

View file

@ -223,6 +223,9 @@ def test_inv_cov_matrix_input_least_squares():
diff_inv_cov_combined_fit.gamma_method()
assert(diff_inv_cov_combined_fit.is_zero(atol=1e-12))
with pytest.raises(ValueError):
pe.least_squares(x_dict, data_dict, fitf_dict, correlated_fit = True, inv_chol_cov_matrix = [corr,chol_inv_keys_combined_fit])
def test_least_squares_invalid_inv_cov_matrix_input():
xvals = []
yvals = []