适用于 2026-10-08 当前实现。程序名为 PyUCoMX,支持 VMAT/IMRT、TOMO、CyberKnife MLC、Aurora SVMAT。完整定义见指标目录和公式契约。
Windows 用户运行 dist/PyUCoMX.exe。源码用户安装 requirements.txt 中的依赖,再运行 python ucomx.py。
Input Type选择Single RT Plan(单文件)或Folder Batch(文件夹)。- 使用
Browse选择 RTPLAN 或目录;子目录需要勾选Recursive folder scan。 Mode通常选AUTO。也可显式选择VMAT_IMRT、TOMO、CYBERKNIFE_MLC、AURORA;手动模式不补足缺失的输入信息。- 点击
Run Analysis。在Plans选择计划,查看Metadata、Metrics、Metric Notes和Warnings / Notes。 - 点击
Export Current Results导出当前结果集合,并非仅导出所选行。
READY 表示当前路径支持该计划,不保证每个指标都有数值。UNSUPPORTED 表示当前路径不能完成分析。空值表示不可用,不代表零,也不一定是字段遗漏;先查看警告。
| 模式 | 当前公式版本 | 边界 |
|---|---|---|
| VMAT/IMRT | geometry-v4 |
原生层、有效交集、stacked 及 Halcyon/Ethos 专属定义分别解读。 |
| TOMO | tomo-v3 |
螺旋投影及叶片开放分数;当前螺旋读取器不支持固定角度。 |
| CyberKnife MLC | geometry-v4 |
六项 MLC 指标;XML 分段路径和标准 MLC 回退定义不同。 |
| Aurora SVMAT | aurora-v5-unified-physical-closure1mm |
77 项:V2 21、V3 40、legacy 9、物理孔径 V4 7。 |
Aurora 的版本字段标识七项 V4 定义;其余 70 项保留研究/代理定义,不能因此统称为物理孔径指标。
| 模式/机器 | 输入与检查 | 首先核对 | 详细公式 |
|---|---|---|---|
| IMRT/VMAT | 标准 MLC、完整控制点、jaws、meterset | 静态 IMRT 无角运动时不能把运动类零值解释为实际交付平稳;时间是估计值 | IMRT/VMAT |
| Halcyon/Ethos | 可识别双层及边界,专属结构条件 | 原生层、effective、stacked 分开;报告 SAS10/1−MCS/PR 使用独立配置 | Halcyon/Ethos |
| TOMO | 支持的螺旋 sinogram、时间与私有 creator | 内部闭合投影保留;缺时间/场宽的研究回退查看警告,未知床运动不填零 | TOMO |
| CyberKnife MLC | 标准 MLC 或可匹配的 XML 分段 | 无标准 MLC 的 Precision 计划需要 XML;cone/Iris 不在六项支持范围 | CyberKnife |
| Aurora SVMAT | 双层控制点、轴向信息;V4 还需真实 bank、边界、jaws、权重 | 旧 70 项代理与 V4 七项分别解释,不自动套用 Halcyon 结构 | Aurora 全家族 |
同名指标不保证同定义。例如 TOMO MF 为均值/最大值;通用 MCS 使用端点均值乘积,Aurora 是开放端点上的间隙 LSV 改编,CyberKnife XML 又按分段计算。SAS 的严格阈值、计数/权重及闭合规则也因模式不同。请通过逐键公式索引查到当前键的公式章节,再对照逐项契约。
公式文档以 Markdown 保存,可直接编辑 LaTeX:行内用 $A$,独立公式用两行 $$ 包围。源文件保留符号和方程;在支持数学渲染的 Markdown 预览器中查看。定义表和公式索引由导出器生成,应修改定义源或 metric_math_links.py 后重新导出,避免直接编辑生成文件。
用真实叶片边界分别重建每层 A/B 叶片的开放区域,求双层交集并裁剪 X/Y jaws。采样为正 meterset 增量区间的末端控制点。
七项统一只保留面积 A > 0 的样本,计算 sum_open(w*f)/sum_open(w)。完全闭合样本从分子和分母排除,SAS、LSV 不计闭合叶片。
| 导出键 | 含义 | 单位 |
|---|---|---|
mean_ba |
条件平均面积 | mm² |
mean_bi |
条件平均 P²/(4πA) |
无量纲 |
mean_ca |
条件平均 P/A,不是圆度 |
mm⁻¹ |
mean_sas5 / mean_sas10 |
正间隙子条带中,严格小于 5/10 mm 的比例的条件平均 | 无量纲 |
mean_mcs_aurora |
条件平均 AAV × LSV,Aurora 改编定义 |
无量纲 |
mcs_complexity_aurora |
1 - mean_mcs_aurora |
无量纲 |
权重为 ΔCMW/final_CMW × BeamMeterset。排除闭合样本后统一归一化,不重新将各射束变成等权。完整算法见孔径指标说明。
主程序导出 results.csv 时,同时生成 results_columns.csv,记录指标键、显示名和说明。主结果还含来源、模式、状态、版本、警告等;混合模式允许不适用的空列。总列数不是指标数。
独立 Aurora CLI 可分别导出计划、射束、轨迹 CSV,不生成主程序的列字典。计划和射束表有公式版本;计划表仅提供 warning_count,不包含主导出中的完整警告文本,应在 GUI/服务结果查看详情。轨迹表是控制点记录,不是 77 项指标表。
比较时按指标键对齐,核实输入身份,不仅凭计划名或文件名判断同一 DICOM。保留输入哈希、代码提交、公式版本和精度信息。旧代理几何、初版物理孔径、当前开放条件均值的七项不能直接混用,应统一版本复算。
VMAT/IMRT 和 CyberKnife 默认 API 保留历史舍入;验证调用 analyze_plan_file(..., full_precision=True)。TOMO、Aurora 路径返回浮点数;TOMO 众数保留其明确分箱规则。CSV 导出不会恢复之前舍入丢失的精度。
| 警告标识 | 含义 |
|---|---|
AURORA_V4_CLOSED_SAMPLES_EXCLUDED |
已排除闭合端点;记录数量和权重比例,通常仍有结果。 |
AURORA_V4_NO_OPEN_APERTURE |
没有正权重开放端点,七项均不可用。 |
AURORA_V4_RELATIVE_WEIGHTS |
MU 缺失;所有贡献射束先按全部正区间归一化为单位相对总权重,再排除闭合样本。 |
AURORA_V4_UNAVAILABLE |
缺少/非法几何、权重等;查看原因。七项不可用不等于其余 70 项也不可用。 |
闭合端点不证明整个区间全程闭合。当前指标是端点采样描述,未插值重建连续交付。相对权重回退时,排除比例不是实际 MU 比例。
通用单文件分析只输出控制台信息,不提供 CSV 参数:
python main.py --input-file path/to/plan.dcm --verbose独立 Aurora 计划、射束、轨迹导出:
python aurora_svmat_cli.py --input-file path/to/plan.dcm --output-csv aurora_plan.csv --beam-output-csv aurora_beams.csv --trajectory-output-csv aurora_trajectory.csv --verboseAurora 目录分析使用 --input-dir path/to/plans,该入口递归查找 *.dcm,没有 --recursive 参数。其他批处理入口见根 README。
python -m pytest tests -q
python tools/export_metric_definitions.py
python -m metric_formula_contracts
python tools/export_aurora_formula_pdf.py
python tools/export_app_summary_pdf.pyWindows 安装 PyInstaller 后运行 tools/build_windows_exe.ps1,输出 dist/PyUCoMX.exe。确认构建成功退出,再检查窗口启动。源代码更新不会自动更新旧 exe。