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