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:
@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user