1
0
forked from IPKM/nmreval

1/p bounds in ui

This commit is contained in:
Dominik Demuth 2023-09-27 15:32:19 +02:00
parent 207ee5bffd
commit a97c31325f
3 changed files with 23 additions and 10 deletions

View File

@ -86,15 +86,21 @@ class FitModelWidget(QtWidgets.QWidget, Ui_FitParameter):
p = self.parameter_line.text().replace(',', '.')
if self.checkBox.isChecked():
try:
lb = float(self.lineEdit.text().replace(',', '.'))
except ValueError:
lb = None
lb_text = self.lineEdit.text()
lb = None
if lb_text:
try:
lb = float(lb_text.replace(',', '.'))
except ValueError:
lb = lb_text
try:
rb = float(self.lineEdit_2.text().replace(',', '.'))
except ValueError:
rb = None
ub_text = self.lineEdit_2.text()
rb = None
if ub_text:
try:
rb = float(ub_text.replace(',', '.'))
except ValueError:
rb = ub_text
else:
lb = rb = None

View File

@ -278,10 +278,12 @@ class FitRoutine(object):
data._model = self.fit_model
self._no_own_model.append(data)
data.parameter.prepare_bounds()
return self._prep_parameter(data.parameter)
@staticmethod
def _prep_parameter(parameter):
def _prep_parameter(parameter: Parameters):
vals = []
var_pars = []
for p_k, v_k in parameter.items():
@ -293,7 +295,8 @@ class FitRoutine(object):
return pp, lb, ub, var_pars
def _prep_global(self, data_group, linked):
@staticmethod
def _prep_global(data_group: list[Data], linked):
p0 = []
lb = []
ub = []
@ -306,6 +309,8 @@ class FitRoutine(object):
for k, v in data.model.parameter.items():
data.replace_parameter(k, v)
data.parameter.prepare_bounds()
actual_pars = []
for i, p_k in enumerate(data.para_keys):
p_k_used = p_k

View File

@ -102,10 +102,12 @@ class Parameters(dict):
p._expr = expression
def prepare_bounds(self):
print('prepare_bounds')
original_values = list(self.values())
for param in original_values:
already_with_expression = False
for mode, value in (('lower', param.lb), ('upper', param.ub)):
print(mode, value)
if already_with_expression:
raise ValueError('Only one boundary can be an expression')
already_with_expression = self.parse(param, value, bnd=mode)