| # Parallel HD95/ASSD re-score for the heavy nnU-Net datasets (IDs 6-10), all folds, | |
| # seggen env. Datasets 1-5 are already scored correctly and are left untouched. | |
| # Each (dataset,fold) runs as its own process; 384 cores easily absorb 15 at once. | |
| set -u | |
| cd /home/wzhang/LSC/Code/NPJ | |
| source /opt/anaconda3/etc/profile.d/conda.sh | |
| conda activate seggen | |
| # Cap intra-op threads: MONAI/torch otherwise grab all 384 cores per process, so | |
| # 15 procs oversubscribe (load ~880) and thrash. 8 threads x 15 procs = ~120 << 384. | |
| export OMP_NUM_THREADS=8 MKL_NUM_THREADS=8 OPENBLAS_NUM_THREADS=8 NUMEXPR_NUM_THREADS=8 | |
| DATA_ROOT=/home/wzhang/LSC/Dataset/Segmentation/processed_unified | |
| RAW=/home/wzhang/LSC/Code/NPJ/nnunet_workspace/raw | |
| PRED=/home/wzhang/LSC/Code/NPJ/nnunet_workspace/predTs | |
| LOGD=nnunet_workspace/eval_par_logs | |
| mkdir -p "$LOGD" | |
| for id in 6 7 8 9 10; do | |
| case $id in | |
| 6) ds=idridd_segmentation; proto=fold01;; | |
| 7) ds=acdc_png; proto=official;; | |
| 8) ds=pannuke_semantic; proto=fold01;; | |
| 9) ds=medsegdb_isic2018; proto=holdout;; | |
| 10) ds=medsegdb_kits19; proto=fold01;; | |
| esac | |
| for f in 0 1 2; do | |
| ( | |
| python framework/nnunet_eval.py --data_root "$DATA_ROOT" \ | |
| --dataset "$ds" --protocol "$proto" --raw "$RAW" \ | |
| --dataset_id "$id" --fold "$f" --pred_dir "$PRED/d${id}_f${f}" \ | |
| --arch nnunet --exp_name baselines > "$LOGD/d${id}_f${f}.log" 2>&1 | |
| echo "done d${id}_f${f}: $(tail -1 "$LOGD/d${id}_f${f}.log")" | |
| ) & | |
| done | |
| done | |
| wait | |
| echo PAR_EVAL_DONE | |