longitudinal/scripts_nnu/01_prepare_dataset.py
Furen Xiao a516408c4e Add iterative pseudo-labeling scripts for MONAI and nnU-Net
- Implemented 09_run_iterative.py for MONAI to orchestrate iterative pseudo-labeling rounds, including training, predicting, and evaluation.
- Created 01_prepare_dataset.py, 02_plan_preprocess.py, 06_pseudo_label.py, 07_train.py, 08_eval.py, and 09_run_iterative.py for nnU-Net to manage dataset preparation, planning, training, evaluation, and iterative pseudo-labeling.
- Enhanced error handling and logging throughout the scripts for better traceability.
- Added functionality to handle negative pseudo-labels and TTA options during inference.
- Included visualization of Dice scores across rounds for both MONAI and nnU-Net.
2026-10-08 06:13:13 +08:00

31 lines
No EOL
1.2 KiB
Python

"""Build/rebuild the nnU-Net raw dataset (Dataset210_NTUH_T1C_PL) from rows jsonl.
rows: {key, img, label} where img is the NATIVE (unprocessed) T1c nifti and
label a nifti mask on (or warpable to) that grid. No resampling/cropping/
normalization is applied here — nnUNetv2_plan_and_preprocess (02) does the
preprocessing; imagesTr entries are symlinks to the native volumes, labelsTr
entries are symlinks when already 0/1 on the image grid, else nearest-warped
+ binarized copies (label fix-up only).
Usage: python scripts_nnu/01_nnu_prepare_dataset.py --rows <rows.jsonl>
"""
import argparse
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from src.common import load_jsonl
from nnu_common import make_raw_dataset, raw_ds
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--rows", required=True, help="jsonl with {key, img, label} (native paths)")
args = ap.parse_args()
rows = load_jsonl(args.rows)
n = make_raw_dataset(rows)
print(f"[nnu:prepare] {raw_ds()}: {n} cases", flush=True)
if __name__ == "__main__":
main()