bugfix eval expression; closes #83

This commit is contained in:
Dominik Demuth
2023-07-09 19:44:33 +02:00
parent 91afe8224f
commit fbf4246c7e
3 changed files with 103 additions and 52 deletions

View File

@ -438,7 +438,7 @@ class ExperimentContainer(QtCore.QObject):
if (i is None) and (j is None):
prefix = ''
else:
prefix = 'g[%i].s[%i].' % (i, j)
prefix = f'g[{i}].s[{j}].'
namespace = {prefix + 'x': (self.x, 'x values'),
prefix + 'y': [self.y, 'y values'],
@ -459,16 +459,33 @@ class ExperimentContainer(QtCore.QObject):
return namespace
def eval_expression(self, cmds, namespace):
namespace.update({'x': self._data.x, 'y': self._data.y, 'y_err': self._data.y_err, 'value': self.value})
def eval_expression(self, cmds, namespace, i=None, j=None):
if i is not None:
namespace['i'] = i
if len(self._fits) == 1:
namespace.update({"fit['%s']" % (convert(pname, old='tex', new='str')): pvalue.value
for (pname, pvalue) in self._manager[self._fits[0]].parameter.items()})
if j is not None:
namespace['j'] = j
namespace.update({'x': self._data.x, 'y': self._data.y, 'y_err': self._data.y_err, 'value': self.value})
namespace['fit'] = {}
if isinstance(self, FitContainer):
namespace['fit'].update({
'%s' % convert(pname, old='latex', new='plain'): pvalue.value
for (pname, pvalue) in self._data.parameter.items()
})
elif len(self._fits) == 1:
namespace['fit'].update({
'%s' % convert(pname, old='tex', new='str'): pvalue.value
for (pname, pvalue) in self._manager[self._fits[0]].parameter.items()
})
else:
for k, f in enumerate(self._fits):
namespace.update({"fit['%s_%i']" % (convert(pname, old='tex', new='str'), k): pvalue.value
for (pname, pvalue) in self._manager[f].parameter.items()})
namespace['fit'].update({
"%s_%i" % (convert(pname, old='tex', new='str'), k): pvalue.value
for (pname, pvalue) in self._manager[f].parameter.items()
})
new_data = self.copy()
for c in cmds: