GANDLF 0.1.4.dev20250609__tar.gz → 0.1.4.dev20250610__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of GANDLF might be problematic. Click here for more details.

Files changed (206) hide show
  1. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/generate_metrics.py +20 -7
  2. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/metrics/panoptica_config_brats.yaml +12 -6
  3. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/__init__.py +1 -0
  4. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/imaging.py +55 -33
  5. gandlf-0.1.4.dev20250610/GANDLF/version.py +1 -0
  6. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF.egg-info/PKG-INFO +1 -1
  7. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/PKG-INFO +1 -1
  8. gandlf-0.1.4.dev20250609/GANDLF/version.py +0 -1
  9. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/.dockerignore +0 -0
  10. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/CODE_OF_CONDUCT.md +0 -0
  11. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/CONTRIBUTING.md +0 -0
  12. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/Dockerfile-CPU +0 -0
  13. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/Dockerfile-CUDA11.8 +0 -0
  14. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/Dockerfile-CUDA12.1 +0 -0
  15. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/Dockerfile-ROCm +0 -0
  16. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/__init__.py +0 -0
  17. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/anonymize/__init__.py +0 -0
  18. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/anonymize/convert_to_nifti.py +0 -0
  19. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/__init__.py +0 -0
  20. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/config_generator.py +0 -0
  21. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/data_split_saver.py +0 -0
  22. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/deploy.py +0 -0
  23. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/huggingface_hub_handler.py +0 -0
  24. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/main_run.py +0 -0
  25. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/patch_extraction.py +0 -0
  26. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/post_training_model_optimization.py +0 -0
  27. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/preprocess_and_save.py +0 -0
  28. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/cli/recover_config.py +0 -0
  29. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/compute/__init__.py +0 -0
  30. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/compute/forward_pass.py +0 -0
  31. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/compute/generic.py +0 -0
  32. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/compute/inference_loop.py +0 -0
  33. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/compute/loss_and_metric.py +0 -0
  34. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/compute/step.py +0 -0
  35. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/compute/training_loop.py +0 -0
  36. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/config_manager.py +0 -0
  37. {gandlf-0.1.4.dev20250609/GANDLF/privacy → gandlf-0.1.4.dev20250610/GANDLF/configuration}/__init__.py +0 -0
  38. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/default_config.py +0 -0
  39. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/differential_privacy_config.py +0 -0
  40. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/exclude_parameters.py +0 -0
  41. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/model_config.py +0 -0
  42. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/nested_training_config.py +0 -0
  43. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/optimizer_config.py +0 -0
  44. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/parameters_config.py +0 -0
  45. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/patch_sampler_config.py +0 -0
  46. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/post_processing_config.py +0 -0
  47. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/pre_processing_config.py +0 -0
  48. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/scheduler_config.py +0 -0
  49. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/user_defined_config.py +0 -0
  50. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/utils.py +0 -0
  51. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/configuration/validators.py +0 -0
  52. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/ImagesFromDataFrame.py +0 -0
  53. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/__init__.py +0 -0
  54. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/augmentation/__init__.py +0 -0
  55. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/augmentation/blur_enhanced.py +0 -0
  56. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/augmentation/hed_augs.py +0 -0
  57. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/augmentation/noise_enhanced.py +0 -0
  58. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/augmentation/rgb_augs.py +0 -0
  59. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/augmentation/rotations.py +0 -0
  60. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/augmentation/wrap_torchio.py +0 -0
  61. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/inference_dataloader_histopath.py +0 -0
  62. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/lightning_datamodule.py +0 -0
  63. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/patch_miner/__init__.py +0 -0
  64. {gandlf-0.1.4.dev20250609/GANDLF/models/seg_modules → gandlf-0.1.4.dev20250610/GANDLF/data/patch_miner/opm}/__init__.py +0 -0
  65. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/patch_miner/opm/patch.py +0 -0
  66. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/patch_miner/opm/patch_manager.py +0 -0
  67. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/patch_miner/opm/utils.py +0 -0
  68. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/post_process/__init__.py +0 -0
  69. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/post_process/morphology.py +0 -0
  70. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/post_process/tensor.py +0 -0
  71. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/__init__.py +0 -0
  72. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/crop_zero_planes.py +0 -0
  73. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/non_zero_normalize.py +0 -0
  74. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/normalize_rgb.py +0 -0
  75. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/resample_minimum.py +0 -0
  76. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/rgb_conversion.py +0 -0
  77. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/template_matching/__init__.py +0 -0
  78. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/template_matching/base.py +0 -0
  79. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/template_matching/histogram_matching.py +0 -0
  80. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/template_matching/stain_extractors.py +0 -0
  81. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/template_matching/stain_normalizer.py +0 -0
  82. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/template_matching/utils.py +0 -0
  83. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/data/preprocessing/threshold_and_clip.py +0 -0
  84. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/__init__.py +0 -0
  85. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/anonymizer.py +0 -0
  86. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/cli_tool.py +0 -0
  87. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/collect_stats.py +0 -0
  88. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/config_generator.py +0 -0
  89. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/construct_csv.py +0 -0
  90. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/debug_info.py +0 -0
  91. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/deploy.py +0 -0
  92. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/generate_metrics.py +0 -0
  93. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/hf_hub_integration.py +0 -0
  94. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/optimize_model.py +0 -0
  95. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/patch_miner.py +0 -0
  96. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/preprocess.py +0 -0
  97. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/recover_config.py +0 -0
  98. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/run.py +0 -0
  99. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/split_csv.py +0 -0
  100. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/subcommands.py +0 -0
  101. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/entrypoints/verify_install.py +0 -0
  102. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/grad_clipping/__init__.py +0 -0
  103. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/grad_clipping/adaptive_gradient_clipping.py +0 -0
  104. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/grad_clipping/clip_gradients.py +0 -0
  105. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/grad_clipping/grad_scaler.py +0 -0
  106. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/inference_manager.py +0 -0
  107. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/logger.py +0 -0
  108. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/logging_config.yaml +0 -0
  109. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/losses/__init__.py +0 -0
  110. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/losses/hybrid.py +0 -0
  111. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/losses/hybrid_new.py +0 -0
  112. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/losses/loss_calculators.py +0 -0
  113. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/losses/loss_interface.py +0 -0
  114. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/losses/regression.py +0 -0
  115. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/losses/regression_new.py +0 -0
  116. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/losses/segmentation.py +0 -0
  117. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/losses/segmentation_new.py +0 -0
  118. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/metrics/__init__.py +0 -0
  119. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/metrics/classification.py +0 -0
  120. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/metrics/generic.py +0 -0
  121. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/metrics/metric_calculators.py +0 -0
  122. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/metrics/regression.py +0 -0
  123. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/metrics/segmentation.py +0 -0
  124. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/metrics/segmentation_panoptica.py +0 -0
  125. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/metrics/synthesis.py +0 -0
  126. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/MSDNet.py +0 -0
  127. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/__init__.py +0 -0
  128. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/brain_age.py +0 -0
  129. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/deep_unet.py +0 -0
  130. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/densenet.py +0 -0
  131. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/dynunet_wrapper.py +0 -0
  132. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/efficientnet.py +0 -0
  133. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/fcn.py +0 -0
  134. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/imagenet_unet.py +0 -0
  135. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/imagenet_vgg.py +0 -0
  136. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/light_unet.py +0 -0
  137. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/light_unet_multilayer.py +0 -0
  138. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/lightning_module.py +0 -0
  139. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/modelBase.py +0 -0
  140. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/resnet.py +0 -0
  141. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/sdnet.py +0 -0
  142. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/DecodingModule.py +0 -0
  143. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/DownsamplingModule.py +0 -0
  144. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/EncodingModule.py +0 -0
  145. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/FCNUpsamplingModule.py +0 -0
  146. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/IncConv.py +0 -0
  147. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/IncDownsamplingModule.py +0 -0
  148. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/IncDropout.py +0 -0
  149. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/IncUpsamplingModule.py +0 -0
  150. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/InceptionModule.py +0 -0
  151. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/InitialConv.py +0 -0
  152. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/Interpolate.py +0 -0
  153. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/ResNetModule.py +0 -0
  154. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/UpsamplingModule.py +0 -0
  155. {gandlf-0.1.4.dev20250609/GANDLF/data/patch_miner/opm → gandlf-0.1.4.dev20250610/GANDLF/models/seg_modules}/__init__.py +0 -0
  156. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/add_conv_block.py +0 -0
  157. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/add_downsample_conv_block.py +0 -0
  158. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/average_pool.py +0 -0
  159. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/seg_modules/out_conv.py +0 -0
  160. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/transunet.py +0 -0
  161. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/uinc.py +0 -0
  162. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/unet.py +0 -0
  163. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/unet_multilayer.py +0 -0
  164. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/unetr.py +0 -0
  165. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/models/vgg.py +0 -0
  166. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/optimizers/__init__.py +0 -0
  167. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/optimizers/thirdparty/__init__.py +0 -0
  168. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/optimizers/thirdparty/ademamix.py +0 -0
  169. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/optimizers/thirdparty/adopt.py +0 -0
  170. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/optimizers/thirdparty/lion.py +0 -0
  171. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/optimizers/wrap_monai.py +0 -0
  172. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/optimizers/wrap_torch.py +0 -0
  173. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/parseConfig.py +0 -0
  174. {gandlf-0.1.4.dev20250609/GANDLF/configuration → gandlf-0.1.4.dev20250610/GANDLF/privacy}/__init__.py +0 -0
  175. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/privacy/opacus/__init__.py +0 -0
  176. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/privacy/opacus/config_parsing.py +0 -0
  177. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/privacy/opacus/model_handling.py +0 -0
  178. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/privacy/opacus/opacus_anonymization_manager.py +0 -0
  179. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/privacy/opacus/training_utils.py +0 -0
  180. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/schedulers/__init__.py +0 -0
  181. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/schedulers/wrap_monai.py +0 -0
  182. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/schedulers/wrap_torch.py +0 -0
  183. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/training_manager.py +0 -0
  184. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/data_splitter.py +0 -0
  185. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/exceptions.py +0 -0
  186. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/gandlf_logging.py +0 -0
  187. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/generic.py +0 -0
  188. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/handle_collisions.py +0 -0
  189. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/modelbase.py +0 -0
  190. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/modelio.py +0 -0
  191. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/parameter_processing.py +0 -0
  192. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/pred_target_processors.py +0 -0
  193. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/tensor.py +0 -0
  194. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF/utils/write_parse.py +0 -0
  195. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF.egg-info/SOURCES.txt +0 -0
  196. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF.egg-info/dependency_links.txt +0 -0
  197. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF.egg-info/entry_points.txt +0 -0
  198. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF.egg-info/not-zip-safe +0 -0
  199. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF.egg-info/requires.txt +0 -0
  200. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/GANDLF.egg-info/top_level.txt +0 -0
  201. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/LICENSE +0 -0
  202. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/MANIFEST.in +0 -0
  203. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/README.md +0 -0
  204. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/SECURITY.md +0 -0
  205. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/setup.cfg +0 -0
  206. {gandlf-0.1.4.dev20250609 → gandlf-0.1.4.dev20250610}/setup.py +0 -0
@@ -10,7 +10,11 @@ import SimpleITK as sitk
10
10
  import numpy as np
11
11
 
12
12
  from GANDLF.config_manager import ConfigManager
13
- from GANDLF.utils import find_problem_type_from_parameters, one_hot
13
+ from GANDLF.utils import (
14
+ find_problem_type_from_parameters,
15
+ one_hot,
16
+ sanity_check_on_file_readers,
17
+ )
14
18
  from GANDLF.metrics import (
15
19
  overall_stats,
16
20
  structural_similarity_index,
@@ -176,6 +180,9 @@ def generate_metrics_dict(
176
180
  for _, row in tqdm(input_df.iterrows(), total=input_df.shape[0]):
177
181
  current_subject_id = row["SubjectID"]
178
182
  overall_stats_dict[current_subject_id] = {}
183
+ sanity_check_on_file_readers(
184
+ row["Target"], row["Prediction"], current_subject_id
185
+ )
179
186
  label_image = torchio.LabelMap(row["Target"])
180
187
  pred_image = torchio.LabelMap(row["Prediction"])
181
188
  label_tensor = label_image.data
@@ -264,17 +271,20 @@ def generate_metrics_dict(
264
271
  for _, row in tqdm(input_df.iterrows(), total=input_df.shape[0]):
265
272
  current_subject_id = row["SubjectID"]
266
273
  overall_stats_dict[current_subject_id] = {}
274
+ sanity_check_on_file_readers(
275
+ row["Target"], row["Prediction"], current_subject_id
276
+ )
267
277
  label_image = torchio.LabelMap(row["Target"])
268
278
  pred_image = torchio.LabelMap(row["Prediction"])
269
279
  label_tensor = label_image.data
270
280
  pred_tensor = pred_image.data
271
281
  spacing = label_image.spacing
272
- if label_tensor.data.shape[-1] == 1:
273
- spacing = spacing[0:2]
274
- # add dimension for batch
275
- parameters["subject_spacing"] = torch.Tensor(spacing).unsqueeze(0)
276
- label_array = label_tensor.unsqueeze(0).numpy()
277
- pred_array = pred_tensor.unsqueeze(0).numpy()
282
+ # if label_tensor.data.shape[-1] == 1:
283
+ # spacing = spacing[0:2]
284
+ # remove dimension to ensure 3D tensors
285
+ if label_tensor.data.ndim == 4:
286
+ label_array = label_tensor.squeeze(0).numpy().astype(int)
287
+ pred_array = pred_tensor.squeeze(0).numpy().astype(int)
278
288
 
279
289
  overall_stats_dict[current_subject_id] = generate_instance_segmentation(
280
290
  prediction=pred_array, target=label_array
@@ -340,6 +350,9 @@ def generate_metrics_dict(
340
350
  for _, row in tqdm(input_df.iterrows(), total=input_df.shape[0]):
341
351
  current_subject_id = row["SubjectID"]
342
352
  overall_stats_dict[current_subject_id] = {}
353
+ sanity_check_on_file_readers(
354
+ row["Target"], row["Prediction"], current_subject_id
355
+ )
343
356
  target_image = __fix_2d_tensor(torchio.ScalarImage(row["Target"]).data)
344
357
  pred_image = __fix_2d_tensor(torchio.ScalarImage(row["Prediction"]).data)
345
358
  # if "Mask" is not in the row, we assume that the whole image is the mask
@@ -13,7 +13,10 @@ edge_case_handler: !EdgeCaseHandler
13
13
  !Metric IOU: !MetricZeroTPEdgeCaseHandling {empty_prediction_result: !EdgeCaseResult ZERO,
14
14
  empty_reference_result: !EdgeCaseResult ZERO, no_instances_result: !EdgeCaseResult NAN,
15
15
  normal: !EdgeCaseResult ZERO}
16
- !Metric ASSD: !MetricZeroTPEdgeCaseHandling {empty_prediction_result: !EdgeCaseResult INF,
16
+ !Metric NSD: !MetricZeroTPEdgeCaseHandling {empty_prediction_result: !EdgeCaseResult INF,
17
+ empty_reference_result: !EdgeCaseResult INF, no_instances_result: !EdgeCaseResult NAN,
18
+ normal: !EdgeCaseResult INF}
19
+ !Metric HD95: !MetricZeroTPEdgeCaseHandling {empty_prediction_result: !EdgeCaseResult INF,
17
20
  empty_reference_result: !EdgeCaseResult INF, no_instances_result: !EdgeCaseResult NAN,
18
21
  normal: !EdgeCaseResult INF}
19
22
  !Metric RVD: !MetricZeroTPEdgeCaseHandling {empty_prediction_result: !EdgeCaseResult NAN,
@@ -27,24 +30,27 @@ global_metrics: [!Metric DSC]
27
30
  instance_approximator: !ConnectedComponentsInstanceApproximator {cca_backend: null}
28
31
  instance_matcher: !NaiveThresholdMatching {allow_many_to_one: false, matching_metric: !Metric IOU,
29
32
  matching_threshold: 0.5}
30
- instance_metrics: [!Metric DSC, !Metric IOU, !Metric ASSD, !Metric RVD]
33
+ instance_metrics: [!Metric DSC, !Metric IOU, !Metric RVD, !Metric NSD, !Metric HD95]
31
34
  log_times: false
32
35
  save_group_times: false
33
36
  segmentation_class_groups: !SegmentationClassGroups
34
37
  groups:
35
- ed: !LabelGroup
38
+ snfh: !LabelGroup
36
39
  single_instance: false
37
40
  value_labels: [2]
38
41
  et: !LabelGroup
39
42
  single_instance: false
40
43
  value_labels: [3]
41
- net: !LabelGroup
44
+ netc: !LabelGroup
42
45
  single_instance: false
43
46
  value_labels: [1]
47
+ rc: !LabelGroup
48
+ single_instance: false
49
+ value_labels: [4]
44
50
  tc: !LabelMergeGroup
45
51
  single_instance: false
46
- value_labels: [1, 3]
52
+ value_labels: [1, 3, 4]
47
53
  wt: !LabelMergeGroup
48
54
  single_instance: false
49
- value_labels: [1, 2, 3]
55
+ value_labels: [1, 2, 3, 4]
50
56
  verbose: false
@@ -7,6 +7,7 @@ from .imaging import (
7
7
  resize_image,
8
8
  resample_image,
9
9
  perform_sanity_check_on_subject,
10
+ sanity_check_on_file_readers,
10
11
  write_training_patches,
11
12
  get_correct_padding_size,
12
13
  applyCustomColorMap,
@@ -123,6 +123,56 @@ def softer_sanity_check(
123
123
  return result
124
124
 
125
125
 
126
+ def sanity_check_on_file_readers(
127
+ file_reader_0: Union[str, sitk.ImageFileReader],
128
+ file_reader_1: Union[str, sitk.ImageFileReader],
129
+ subject_id: Optional[str] = "",
130
+ threshold: Optional[float] = 0.00001,
131
+ ) -> bool:
132
+ """
133
+ This function performs a sanity check on the file readers to ensure that the properties of the images are consistent.
134
+
135
+ Args:
136
+ file_reader_0 (Union[str, sitk.ImageFileReader]): The first file reader.
137
+ file_reader_1 (Union[str, sitk.ImageFileReader]): The second file reader.
138
+ threshold (Optional[float], optional): The threshold for comparison. Defaults to 0.00001.
139
+
140
+ Returns:
141
+ bool: True if the sanity check passes.
142
+ """
143
+
144
+ if isinstance(file_reader_0, str):
145
+ temp_file = file_reader_0
146
+ file_reader_0 = sitk.ImageFileReader()
147
+ file_reader_0.SetFileName(temp_file)
148
+ file_reader_0.ReadImageInformation()
149
+
150
+ if isinstance(file_reader_1, str):
151
+ temp_file = file_reader_1
152
+ file_reader_1 = sitk.ImageFileReader()
153
+ file_reader_1.SetFileName(temp_file)
154
+ file_reader_1.ReadImageInformation()
155
+ # this check needs to be absolute
156
+ assert file_reader_0.GetDimension() == file_reader_1.GetDimension(), (
157
+ "Dimensions for Subject '" + subject_id + "' are not consistent."
158
+ )
159
+
160
+ # other checks can be softer
161
+ assert softer_sanity_check(
162
+ file_reader_0.GetOrigin(), file_reader_1.GetOrigin(), threshold=threshold
163
+ ), ("Origin for Subject '" + subject_id + "' are not consistent.")
164
+
165
+ assert softer_sanity_check(
166
+ file_reader_0.GetDirection(), file_reader_1.GetDirection(), threshold=threshold
167
+ ), ("Orientation for Subject '" + subject_id + "' are not consistent.")
168
+
169
+ assert softer_sanity_check(
170
+ file_reader_0.GetSpacing(), file_reader_1.GetSpacing(), threshold=threshold
171
+ ), ("Spacing for Subject '" + subject_id + "' are not consistent.")
172
+
173
+ return True
174
+
175
+
126
176
  def perform_sanity_check_on_subject(subject: torchio.Subject, parameters: dict) -> bool:
127
177
  """
128
178
  This function performs a sanity check on the image modalities in input subject to ensure that they are consistent.
@@ -169,39 +219,11 @@ def perform_sanity_check_on_subject(subject: torchio.Subject, parameters: dict)
169
219
  else:
170
220
  file_reader_current = _get_itkimage_or_filereader(subject[str(key)])
171
221
 
172
- # this check needs to be absolute
173
- assert (
174
- file_reader_base.GetDimension()
175
- == file_reader_current.GetDimension()
176
- ), (
177
- "Dimensions for Subject '"
178
- + subject["subject_id"]
179
- + "' are not consistent."
180
- )
181
-
182
- # other checks can be softer
183
- assert softer_sanity_check(
184
- file_reader_base.GetOrigin(), file_reader_current.GetOrigin()
185
- ), (
186
- "Origin for Subject '"
187
- + subject["subject_id"]
188
- + "' are not consistent."
189
- )
190
-
191
- assert softer_sanity_check(
192
- file_reader_base.GetDirection(), file_reader_current.GetDirection()
193
- ), (
194
- "Orientation for Subject '"
195
- + subject["subject_id"]
196
- + "' are not consistent."
197
- )
198
-
199
- assert softer_sanity_check(
200
- file_reader_base.GetSpacing(), file_reader_current.GetSpacing()
201
- ), (
202
- "Spacing for Subject '"
203
- + subject["subject_id"]
204
- + "' are not consistent."
222
+ sanity_check_on_file_readers(
223
+ file_reader_base,
224
+ file_reader_current,
225
+ subject_id=subject["subject_id"],
226
+ threshold=parameters.get("sanity_check_threshold", 0.00001),
205
227
  )
206
228
 
207
229
  return True
@@ -0,0 +1 @@
1
+ __version__ = "0.1.4-dev20250610"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GANDLF
3
- Version: 0.1.4.dev20250609
3
+ Version: 0.1.4.dev20250610
4
4
  Summary: PyTorch-based framework that handles segmentation/regression/classification using various DL architectures for medical imaging.
5
5
  Author: MLCommons
6
6
  Author-email: gandlf@mlcommons.org
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GANDLF
3
- Version: 0.1.4.dev20250609
3
+ Version: 0.1.4.dev20250610
4
4
  Summary: PyTorch-based framework that handles segmentation/regression/classification using various DL architectures for medical imaging.
5
5
  Author: MLCommons
6
6
  Author-email: gandlf@mlcommons.org
@@ -1 +0,0 @@
1
- __version__ = "0.1.4-dev20250609"