from typing import List from .data_loader import METRIC_CHOICES, DIMENSION_METRICS def get_metric_choices() -> List[str]: """获取带标记的指标选项""" # 获取基础指标(排除维度指标和EWMScore) basic_metrics = [m for m in METRIC_CHOICES if m not in DIMENSION_METRICS and m != "EWMScore"] # 对维度指标加特殊标记,并按特定顺序排序 # 定义维度指标的顺序 dimension_order = ["Visual Quality", "Motion Quality", "Content Consistency", "Physics Adherence", "3D Accuracy", "Controllability"] # 确保维度指标按照指定顺序排列 ordered_dimensions = [] for dim in dimension_order: if dim in DIMENSION_METRICS: ordered_dimensions.append(dim) # 添加可能遗漏的维度指标 for dim in DIMENSION_METRICS: if dim not in ordered_dimensions: ordered_dimensions.append(dim) dimension_choices = [f"📊 {m}" for m in ordered_dimensions] # 将EWMScore放在第一个,然后维度指标,最后基础指标 return ["EWMScore"] + dimension_choices + sorted(basic_metrics) def clean_metric_names(metrics: List[str]) -> List[str]: """清理指标名称(去除特殊标记)""" return [m.replace("📊 ", "") for m in metrics]