fix(wavelength_prefix): viz_thread.py 同步 _viz_infer_wavelength_start_column 修改

src/gui/core/viz_thread.py 的 _viz_infer_wavelength_start_column 是

step12_viz_panel.py 副本(无跨文件引用),两处独立维护必须同步。

同步前缀兼容与 DEBUG 日志逻辑。

Why: 同一函数双份副本不一致会导致 worker 子线程路径与 panel 主线程

路径在相同列名格式下表现差异。同步保证行为一致。
This commit is contained in:
DXC
2026-06-22 16:37:57 +08:00
parent e9c4535bb0
commit 56d8a292be

View File

@ -20,17 +20,28 @@ def _viz_training_spectra_csv_path(work_path: Path) -> Path:
def _viz_infer_wavelength_start_column(df) -> Union[str, int]: def _viz_infer_wavelength_start_column(df) -> Union[str, int]:
"""推断光谱起始列training_spectra 通常以波长数值为列名,未必含 UTM_Y""" """推断光谱起始列training_spectra 通常以波长数值为列名,未必含 UTM_Y"""
import re
import pandas as pd 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): for i, col in enumerate(df.columns):
name = str(col).strip().lstrip("\ufeff") name = str(col).strip().lstrip("\ufeff")
try: try:
v = float(name) v = float(name)
except ValueError:
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: except ValueError:
continue continue
if 200.0 <= v <= 3000.0: if 200.0 <= v <= 3000.0:
return i return i
if "UTM_Y" in df.columns: if "UTM_Y" in df.columns:
return "UTM_Y" return "UTM_Y"
print(f"DEBUG: 尝试解析的列名: {df.columns.tolist()}")
return 0 return 0