use same value in widget and multimodel to count parameter

This commit is contained in:
Dominik Demuth 2023-03-01 19:26:12 +01:00
parent b73d6f08b8
commit 1601f1455c
2 changed files with 7 additions and 6 deletions

View File

@ -4,7 +4,6 @@ from functools import reduce
from itertools import count, cycle
from operator import add
from string import ascii_letters
from typing import Dict, List, Tuple
import numpy as np
from pyqtgraph import mkPen
@ -144,7 +143,7 @@ class QFitDialog(QtWidgets.QWidget, Ui_FitDialog):
self._complex[self._current_model] = self.functionwidget.get_complex_state()
self._func_list[self._current_model] = self.functionwidget.get_parameter_list()
def load(self, ids: List[str]):
def load(self, ids: list[str]):
"""
Add name and id of dataset to list.
"""
@ -216,7 +215,7 @@ class QFitDialog(QtWidgets.QWidget, Ui_FitDialog):
self.model_frame.hide()
def _prepare(self, model: list, function_use: list = None,
parameter: dict = None, add_idx: bool = False, cnt: int = 0) -> Tuple[dict, int]:
parameter: dict = None, add_idx: bool = False, cnt: int = 0) -> tuple[dict, int]:
if parameter is None:
parameter = {'parameter': {}, 'lb': (), 'ub': (), 'var': [],
'glob': {'idx': [], 'p': [], 'var': [], 'lb': [], 'ub': []},
@ -241,6 +240,8 @@ class QFitDialog(QtWidgets.QWidget, Ui_FitDialog):
parameter['links'] += links
parameter['color'] += [f['color']]
cnt = f['cnt']
for p_k, v_k in p.items():
if add_idx:
kw_k = {f'{k}_{cnt}': v for k, v in v_k[1].items()}
@ -450,7 +451,7 @@ class QFitDialog(QtWidgets.QWidget, Ui_FitDialog):
return self.preview_lines
def set_parameter(self, parameter: Dict[str, FitResult]):
def set_parameter(self, parameter: dict[str, FitResult]):
# which data uses which model
data = self.data_table.collect_data(default=self.default_combobox.currentData())
@ -468,7 +469,7 @@ class QFitDialog(QtWidgets.QWidget, Ui_FitDialog):
self.set_parameter_iter(None, mean_parameter, self.models[fitted_model])
def set_parameter_iter(self, fit_id: str | None, param: List[float], functions: List, cnt: int = 0):
def set_parameter_iter(self, fit_id: str | None, param: list[float], functions: list, cnt: int = 0):
for model_p in functions:
if model_p['active']:
cnt += self.param_widgets[model_p['cnt']].set_parameter(fit_id, param[cnt:])

View File

@ -29,7 +29,7 @@ class ModelFactory:
right_cnt = None
else:
right = func['func']
right_cnt = func['pos']
right_cnt = func['cnt']
if left is None:
left = right