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
SUBJn'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 etSUMMARY.txtRUN_DIR/drr.pngoudrr_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]].
SUBJpour 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.