diff --git a/src/gui/core/viz_thread.py b/src/gui/core/viz_thread.py index 2abc686..ca657e9 100644 --- a/src/gui/core/viz_thread.py +++ b/src/gui/core/viz_thread.py @@ -20,17 +20,28 @@ def _viz_training_spectra_csv_path(work_path: Path) -> Path: def _viz_infer_wavelength_start_column(df) -> Union[str, int]: """推断光谱起始列(training_spectra 通常以波长数值为列名,未必含 UTM_Y)。""" + import re import pandas as pd + _PREFIX_RE = re.compile(r"^(?:nm|wavelength|wl|\u03bb|wave_len)[_\s\-]*", re.IGNORECASE) for i, col in enumerate(df.columns): name = str(col).strip().lstrip("\ufeff") try: v = float(name) except ValueError: - continue - if 200.0 <= v <= 3000.0: + v = None + if v is not None and 200.0 <= v <= 3000.0: return i + stripped = _PREFIX_RE.sub("", name) + if stripped != name: + try: + v = float(stripped) + except ValueError: + continue + if 200.0 <= v <= 3000.0: + return i if "UTM_Y" in df.columns: return "UTM_Y" + print(f"DEBUG: 尝试解析的列名: {df.columns.tolist()}") return 0