i4h-catheter-navigation-e2e

Par nvidia · skills

Test de bout en bout (smoke test) pour la navigation par cathéter, couvrant la configuration, le jumeau numérique, les DRR et les tests unitaires. À utiliser lorsqu'on demande d'exécuter le smoke test complet du workflow cathéter ou de démontrer le pipeline v0.7.

npx skills add https://github.com/nvidia/skills --skill i4h-catheter-navigation-e2e

i4h Catheter Navigation - Smoke End-to-End

Purpose

Exécuter un pipeline smoke v0.7 : vérifier la configuration, construire un digital twin à partir d'un sujet TotalSegmentator, générer un DRR depuis le cache, et exécuter des tests unitaires CPU. Ignore le viewport interactif (nécessite un affichage).

Base Code

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"

Basics

Les étapes correspondent à des skills individuels ; cette skill les chaîne avec RUN_DIR et CACHE partagés.

Étape Skill
setup + smoke CPU [[i4h-catheter-navigation-setup]]
digital twin [[i4h-catheter-navigation-digital-twin]]
GPU DRR [[i4h-catheter-navigation-render-drr]]
unittest [[i4h-catheter-navigation-smoke]]

Run

Exécutez les étapes ci-dessous dans l'ordre. Chaque étape est un appel bash distinct ; les variables persistent dans la session tmux de l'agent local.

Step 1 - initialize run

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 - setup verify

Suivez [[i4h-catheter-navigation-setup]] étapes 1-3 ; redirigez vers ${RUN_DIR}/logs/setup.log.

Step 3 - digital twin (requires SUBJ)

Définissez SUBJ sur un sujet TotalSegmentator extrait, puis suivez [[i4h-catheter-navigation-digital-twin]] étapes 3-4.

Si SUBJ n'est pas défini, passez à l'étape 4 avec DRR synthétique uniquement et notez e2e partiel dans le résumé.

Step 4 - render DRR

Si l'étape 3 a réussi, définissez CACHE et suivez la variante cache de [[i4h-catheter-navigation-render-drr]]. Sinon, exécutez le rendu synthétique vers ${RUN_DIR}/drr_synthetic.png.

Step 5 - smoke tests

Suivez [[i4h-catheter-navigation-smoke]] ; enregistrez dans ${RUN_DIR}/logs/smoke.log.

Step 6 - summary

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"

Flags (informal)

  • Ignorer digital twin quand SUBJ n'est pas défini -> DRR synthétique uniquement.
  • Ajouter le viewport manuellement via [[i4h-catheter-navigation-viewport]] si un affichage est disponible.

Outputs

  • RUN_DIR/logs/ - logs par étape et SUMMARY.txt
  • RUN_DIR/drr.png ou drr_synthetic.png - frame généré
  • CACHE/ - artefacts du digital twin si l'étape 3 a été exécutée

Prerequisites

  • Exigences d'hôte de [[i4h-catheter-navigation-setup]].
  • SUBJ pour un e2e complet (sinon smoke partiel).
  • GPU pour le rendu cache de l'étape 4.

Limitations

  • Ne lance pas le viewport interactif (affichage requis).
  • Ne couvre pas les boucles d'entraînement RL/IL.

Troubleshooting

  • Exécution partielle sans données CT - prévu ; documentez quelles étapes ont été exécutées.
  • Échec du rendu GPU - basculez vers DRR synthétique et signalez la lacune de configuration GPU.

Final Response

Imprimez RUN_DIR, étapes complétées/ignorées, chemin de sortie DRR, statut smoke-test, et recommandez [[i4h-catheter-navigation-viewport]] pour la démo interactive.

Skills similaires