| 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] | |