| 名称 | i4h-catheter-navigation-e2e |
| 版本 | “0.7.0” |
| 描述 | 导管导航端到端冒烟:涵盖设置、数字孪生、DRR 与单元测试。当需要运行完整导管工作流冒烟或演示 v0.7 流水线时使用。 |
| 开源协议 | Apache-2.0 metadata: |
| 作者 | “Isaac for Healthcare Team isaac-for-healthcare-support@nvidia.com” tags: - isaac-for-healthcare - i4h - catheter-navigation - end-to-end - smoke |
i4h 导管导航 - 端到端冒烟
目的
运行 v0.7 冒烟流水线:验证设置,从 TotalSegmentator 受试者构建数字孪生,从缓存渲染 DRR,并运行 CPU 单元测试。跳过交互式视口(需要显示器)。
基础代码
ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"
if [ ! -d "$ROOT/workflows/catheter_navigation" ]; then
ROOT="${I4H_WORKFLOWS:-$HOME/i4h-workflows}"
[ -d "$ROOT/workflows/catheter_navigation" ] || git clone https://github.com/isaac-for-healthcare/i4h-workflows "$ROOT"
fi
export I4H_WORKFLOWS="$ROOT"; cd "$ROOT"
基础
阶段映射到独立技能;此技能使用共享的 RUN_DIR 和 CACHE 将它们串起来。
| 阶段 | 技能 |
|---|---|
| 设置 + CPU 冒烟 | [[i4h-catheter-navigation-setup]] |
| 数字孪生 | [[i4h-catheter-navigation-digital-twin]] |
| GPU DRR | [[i4h-catheter-navigation-render-drr]] |
| 单元测试 | [[i4h-catheter-navigation-smoke]] |
运行
按顺序运行以下步骤。每一步都是独立的 bash 调用;变量在本地代理的 tmux 会话中持久化。
Step 1 - 初始化运行
REPO_ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"; [ -d "$REPO_ROOT/workflows/catheter_navigation" ] || REPO_ROOT="$HOME/i4h-workflows"
WF_ROOT="${REPO_ROOT}/workflows/catheter_navigation"
RUN_DIR="${WF_ROOT}/runs/e2e_$(date +%Y%m%d_%H%M%S)"
mkdir -p "${RUN_DIR}/logs"
ln -sfn "${RUN_DIR}" "${WF_ROOT}/runs/.latest"
CACHE="${CACHE:-/tmp/ct_cache}"
SUBJ="${SUBJ:-}"
export I4H_WORKFLOWS="$REPO_ROOT"
Step 2 - 设置验证
遵循 [[i4h-catheter-navigation-setup]] 步骤 1-3;将输出通过 tee 保存到 ${RUN_DIR}/logs/setup.log。
Step 3 - 数字孪生(需要 SUBJ)
将 SUBJ 设置为已提取的 TotalSegmentator 受试者,然后遵循 [[i4h-catheter-navigation-digital-twin]] 步骤 3-4。
如果 SUBJ 未设置,则跳到带有合成 DRR 的 Step 4,并在摘要中注明部分 e2e。
Step 4 - 渲染 DRR
如果 Step 3 成功,设置 CACHE 并遵循 [[i4h-catheter-navigation-render-drr]] 缓存变体。
否则,运行合成渲染到 ${RUN_DIR}/drr_synthetic.png。
Step 5 - 冒烟测试
遵循 [[i4h-catheter-navigation-smoke]];记录日志到 ${RUN_DIR}/logs/smoke.log。
Step 6 - 摘要
cat > "${RUN_DIR}/logs/SUMMARY.txt" <<EOF
Catheter navigation e2e smoke
RUN_DIR=${RUN_DIR}
CACHE=${CACHE}
SUBJ=${SUBJ:-<skipped>}
Artifacts:
$(ls -1 "${RUN_DIR}" 2>/dev/null || true)
EOF
cat "${RUN_DIR}/logs/SUMMARY.txt"
标志(非正式)
- 当
SUBJ未设置时跳过数字孪生 -> 仅合成 DRR。 - 当有显示器时,通过 [[i4h-catheter-navigation-viewport]] 手动添加视口。
输出
RUN_DIR/logs/- 各阶段日志和SUMMARY.txtRUN_DIR/drr.png或drr_synthetic.png- 渲染帧CACHE/- 当 Step 3 运行时的数字孪生产物
先决条件
- [[i4h-catheter-navigation-setup]] 主机要求。
- 完整 e2e 需要
SUBJ(否则执行部分冒烟)。 - Step 4 缓存渲染需要 GPU。
限制
- 不启动交互式视口(需要显示器)。
- 不涵盖 RL/IL 训练循环。
故障排查
- 没有 CT 数据时的部分运行 - 这是预期;记录哪些阶段运行了。
- GPU 渲染失败 - 回退到合成 DRR 并报告 GPU 设置差距。
最终响应
打印 RUN_DIR、已完成/跳过的阶段、DRR 输出路径、冒烟测试状态,并建议 [[i4h-catheter-navigation-viewport]] 进行交互式演示。