fix(gui): step8_panel增加Formula_Type/Coefficient UI支持,get_config输出formula_coefficients
This commit is contained in:
@ -47,6 +47,7 @@ class Step8Panel(QWidget):
|
|||||||
self.builtin_formula_path = get_resource_path("waterindex.csv")
|
self.builtin_formula_path = get_resource_path("waterindex.csv")
|
||||||
self._formula_type_map: Dict[str, str] = {}
|
self._formula_type_map: Dict[str, str] = {}
|
||||||
self._formula_color_map: Dict[str, QColor] = {}
|
self._formula_color_map: Dict[str, QColor] = {}
|
||||||
|
self._formula_coef_map: Dict[str, List[float]] = {}
|
||||||
|
|
||||||
self.init_ui()
|
self.init_ui()
|
||||||
self._auto_load_formulas()
|
self._auto_load_formulas()
|
||||||
@ -195,6 +196,7 @@ class Step8Panel(QWidget):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self._formula_type_map.clear()
|
self._formula_type_map.clear()
|
||||||
|
self._formula_coef_map.clear()
|
||||||
for _, row in df.iterrows():
|
for _, row in df.iterrows():
|
||||||
name = str(row['Formula_Name']).strip()
|
name = str(row['Formula_Name']).strip()
|
||||||
if not name:
|
if not name:
|
||||||
@ -202,6 +204,17 @@ class Step8Panel(QWidget):
|
|||||||
ftype = str(row.get('Formula_Type', 'ratio')).strip().lower()
|
ftype = str(row.get('Formula_Type', 'ratio')).strip().lower()
|
||||||
self._formula_type_map[name] = ftype
|
self._formula_type_map[name] = ftype
|
||||||
|
|
||||||
|
# Parse Coefficient for concentration formulas
|
||||||
|
coef_str = str(row.get('Coefficient', '')).strip()
|
||||||
|
if coef_str:
|
||||||
|
try:
|
||||||
|
coeffs = [float(c.strip()) for c in coef_str.split(',') if c.strip()]
|
||||||
|
self._formula_coef_map[name] = coeffs
|
||||||
|
except Exception:
|
||||||
|
self._formula_coef_map[name] = []
|
||||||
|
else:
|
||||||
|
self._formula_coef_map[name] = []
|
||||||
|
|
||||||
self.formula_list.clear()
|
self.formula_list.clear()
|
||||||
self.index_checkboxes.clear()
|
self.index_checkboxes.clear()
|
||||||
|
|
||||||
@ -247,10 +260,16 @@ class Step8Panel(QWidget):
|
|||||||
name for name, item in self.index_checkboxes.items()
|
name for name, item in self.index_checkboxes.items()
|
||||||
if item.checkState() == Qt.Checked
|
if item.checkState() == Qt.Checked
|
||||||
]
|
]
|
||||||
|
# Build coefficient dict for selected formulas
|
||||||
|
formula_coefficients = {
|
||||||
|
name: self._formula_coef_map.get(name, [])
|
||||||
|
for name in selected
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
'training_csv_path': self.training_data_widget.get_path(),
|
'training_csv_path': self.training_data_widget.get_path(),
|
||||||
'formula_csv_file': self.builtin_formula_path,
|
'formula_csv_file': self.builtin_formula_path,
|
||||||
'formula_names': selected,
|
'formula_names': selected,
|
||||||
|
'formula_coefficients': formula_coefficients,
|
||||||
'enabled': self.enable_checkbox.isChecked(),
|
'enabled': self.enable_checkbox.isChecked(),
|
||||||
'output_mode': self.mode_group.checkedId(),
|
'output_mode': self.mode_group.checkedId(),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user