diff --git a/src/gui/panels/step8_panel.py b/src/gui/panels/step8_panel.py index b3f845a..74a084a 100644 --- a/src/gui/panels/step8_panel.py +++ b/src/gui/panels/step8_panel.py @@ -47,6 +47,7 @@ class Step8Panel(QWidget): self.builtin_formula_path = get_resource_path("waterindex.csv") self._formula_type_map: Dict[str, str] = {} self._formula_color_map: Dict[str, QColor] = {} + self._formula_coef_map: Dict[str, List[float]] = {} self.init_ui() self._auto_load_formulas() @@ -195,6 +196,7 @@ class Step8Panel(QWidget): return self._formula_type_map.clear() + self._formula_coef_map.clear() for _, row in df.iterrows(): name = str(row['Formula_Name']).strip() if not name: @@ -202,6 +204,17 @@ class Step8Panel(QWidget): ftype = str(row.get('Formula_Type', 'ratio')).strip().lower() 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.index_checkboxes.clear() @@ -247,10 +260,16 @@ class Step8Panel(QWidget): name for name, item in self.index_checkboxes.items() 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 { 'training_csv_path': self.training_data_widget.get_path(), 'formula_csv_file': self.builtin_formula_path, 'formula_names': selected, + 'formula_coefficients': formula_coefficients, 'enabled': self.enable_checkbox.isChecked(), 'output_mode': self.mode_group.checkedId(), }