brainles-preprocessing 0.5.0__tar.gz → 0.6.1__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.
Files changed (123) hide show
  1. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/PKG-INFO +28 -6
  2. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/README.md +26 -4
  3. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/constants.py +3 -0
  4. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/defacing/quickshear/quickshear.py +11 -1
  5. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/modality.py +90 -72
  6. brainles_preprocessing-0.6.1/brainles_preprocessing/preprocessor/__init__.py +15 -0
  7. brainles_preprocessing-0.6.1/brainles_preprocessing/preprocessor/atlas_centric_preprocessor.py +351 -0
  8. brainles_preprocessing-0.6.1/brainles_preprocessing/preprocessor/native_space_preprocessor.py +202 -0
  9. brainles_preprocessing-0.6.1/brainles_preprocessing/preprocessor/preprocessor.py +361 -0
  10. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/ANTs/ANTs.py +1 -1
  11. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg.py +4 -2
  12. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/transform.py +2 -4
  13. brainles_preprocessing-0.6.1/brainles_preprocessing/utils/citation_reminder.py +41 -0
  14. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/utils/zenodo.py +1 -6
  15. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/pyproject.toml +3 -2
  16. brainles_preprocessing-0.5.0/brainles_preprocessing/preprocessor.py +0 -632
  17. brainles_preprocessing-0.5.0/brainles_preprocessing/utils/logging_utils.py +0 -131
  18. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/LICENSE +0 -0
  19. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/__init__.py +0 -0
  20. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/brain_extraction/__init__.py +0 -0
  21. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/brain_extraction/brain_extractor.py +0 -0
  22. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/brats/__init__.py +0 -0
  23. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/brats/t1_centric.py +0 -0
  24. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/brats/t1c_centric.py +0 -0
  25. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/cli.py +0 -0
  26. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/defacing/__init__.py +0 -0
  27. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/defacing/defacer.py +0 -0
  28. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/defacing/quickshear/__init__.py +0 -0
  29. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/defacing/quickshear/nipy_quickshear.py +0 -0
  30. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/n4_bias_correction/__init__.py +0 -0
  31. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/n4_bias_correction/n4_bias_corrector.py +0 -0
  32. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/n4_bias_correction/sitk/__init__.py +0 -0
  33. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/n4_bias_correction/sitk/sitk_n4_bias_corrector.py +0 -0
  34. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/normalization/__init__.py +0 -0
  35. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/normalization/normalizer_base.py +0 -0
  36. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/normalization/percentile_normalizer.py +0 -0
  37. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/normalization/windowing_normalizer.py +0 -0
  38. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/ANTs/TODO_ANTs_parameters.py +0 -0
  39. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/ANTs/__init__.py +0 -0
  40. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/__init__.py +0 -0
  41. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/elastix/__init__.py +0 -0
  42. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/elastix/elastix.py +0 -0
  43. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/greedy/__init__.py +0 -0
  44. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/greedy/greedy.py +0 -0
  45. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/__init__.py +0 -0
  46. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/groupwise_niftyreg_params.sh +0 -0
  47. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/groupwise_niftyreg_run.sh +0 -0
  48. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_aladin +0 -0
  49. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_average +0 -0
  50. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_f3d +0 -0
  51. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_jacobian +0 -0
  52. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_measure +0 -0
  53. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_resample +0 -0
  54. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_tools +0 -0
  55. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_transform +0 -0
  56. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/AffineDeformationFieldKernel.h +0 -0
  57. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/AladinContent.h +0 -0
  58. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/BlockMatchingKernel.h +0 -0
  59. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUAffineDeformationFieldKernel.h +0 -0
  60. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUBlockMatchingKernel.h +0 -0
  61. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUConvolutionKernel.h +0 -0
  62. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUKernelFactory.h +0 -0
  63. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUOptimiseKernel.h +0 -0
  64. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUResampleImageKernel.h +0 -0
  65. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/ConvolutionKernel.h +0 -0
  66. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/Kernel.h +0 -0
  67. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/KernelFactory.h +0 -0
  68. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/OptimiseKernel.h +0 -0
  69. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/Platform.h +0 -0
  70. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/ResampleImageKernel.h +0 -0
  71. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ReadWriteImage.h +0 -0
  72. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ReadWriteMatrix.h +0 -0
  73. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin.cpp +0 -0
  74. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin.h +0 -0
  75. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin_sym.cpp +0 -0
  76. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin_sym.h +0 -0
  77. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_base.h +0 -0
  78. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_blockMatching.h +0 -0
  79. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_dti.h +0 -0
  80. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d.h +0 -0
  81. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d2.h +0 -0
  82. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d_sym.h +0 -0
  83. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_femTrans.h +0 -0
  84. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_globalTrans.h +0 -0
  85. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_kld.h +0 -0
  86. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_lncc.h +0 -0
  87. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans.h +0 -0
  88. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans_jac.h +0 -0
  89. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans_regul.h +0 -0
  90. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_macros.h +0 -0
  91. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_maths.h +0 -0
  92. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_maths_eigen.h +0 -0
  93. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_measure.h +0 -0
  94. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_mind.h +0 -0
  95. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_nmi.h +0 -0
  96. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_optimiser.cpp +0 -0
  97. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_optimiser.h +0 -0
  98. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_resampling.h +0 -0
  99. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_splineBasis.h +0 -0
  100. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ssd.h +0 -0
  101. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_stringFormat.h +0 -0
  102. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_tools.h +0 -0
  103. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/nifti1.h +0 -0
  104. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/nifti1_io.h +0 -0
  105. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/png.h +0 -0
  106. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngconf.h +0 -0
  107. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngdebug.h +0 -0
  108. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pnginfo.h +0 -0
  109. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pnglibconf.h +0 -0
  110. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngpriv.h +0 -0
  111. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngstruct.h +0 -0
  112. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/readpng.h +0 -0
  113. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/reg_png.h +0 -0
  114. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/zlib.h +0 -0
  115. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/znzlib.h +0 -0
  116. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/zutil.h +0 -0
  117. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_aladin +0 -0
  118. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_resample +0 -0
  119. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/rigid_reg.sh +0 -0
  120. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/transform.sh +0 -0
  121. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/registration/registrator.py +0 -0
  122. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/utils/__init__.py +0 -0
  123. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.1}/brainles_preprocessing/utils/generic.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: brainles_preprocessing
3
- Version: 0.5.0
3
+ Version: 0.6.1
4
4
  Summary: Tool for preprocessing tasks in biomedical imaging, with a focus on (but not limited to) multi-modal brain MRI
5
5
  License: Apache-2.0
6
6
  Keywords: brain tumor,glioma,BraTS,skullstripping,brain extraction
@@ -21,9 +21,9 @@ Provides-Extra: itk-elastix
21
21
  Provides-Extra: picsl-greedy
22
22
  Requires-Dist: antspyx (>=0.5.4,<1.0.0)
23
23
  Requires-Dist: auxiliary (>=0.3.1)
24
- Requires-Dist: black (>=22.1.0,<23.0.0)
25
24
  Requires-Dist: brainles_hd_bet (>=0.0.10,<1.0.0)
26
25
  Requires-Dist: itk-elastix (>=0.20.0,<0.21.0) ; extra == "all" or extra == "itk-elastix"
26
+ Requires-Dist: loguru (>=0.7.3,<0.8.0)
27
27
  Requires-Dist: nibabel (>=3.2.1)
28
28
  Requires-Dist: numpy (>=1.23.0,<2.0.0)
29
29
  Requires-Dist: pathlib (>=1.0.1,<2.0.0)
@@ -150,9 +150,25 @@ For further information please have a look at our [Jupyter Notebook tutorials](h
150
150
 
151
151
 
152
152
 
153
+ ## Citation
153
154
 
155
+ > [!IMPORTANT]
156
+ > If you use `brainles-preprocessing` in your research, please cite it to support the development!
154
157
 
155
- <!-- TODO citation -->
158
+ Kofler, F., Rosier, M., Astaraki, M., Möller, H., Mekki, I. I., Buchner, J. A., Schmick, A., Pfiffer, A., Oswald, E., Zimmer, L., Rosa, E. de la, Pati, S., Canisius, J., Piffer, A., Baid, U., Valizadeh, M., Linardos, A., Peeken, J. C., Shit, S., … Menze, B. (2025). *BrainLesion Suite: A Flexible and User-Friendly Framework for Modular Brain Lesion Image Analysis* [arXiv preprint arXiv:2507.09036](https://doi.org/10.48550/arXiv.2507.09036)
159
+
160
+
161
+ ```
162
+ @misc{kofler2025brainlesionsuiteflexibleuserfriendly,
163
+ title={BrainLesion Suite: A Flexible and User-Friendly Framework for Modular Brain Lesion Image Analysis},
164
+ author={Florian Kofler and Marcel Rosier and Mehdi Astaraki and Hendrik Möller and Ilhem Isra Mekki and Josef A. Buchner and Anton Schmick and Arianna Pfiffer and Eva Oswald and Lucas Zimmer and Ezequiel de la Rosa and Sarthak Pati and Julian Canisius and Arianna Piffer and Ujjwal Baid and Mahyar Valizadeh and Akis Linardos and Jan C. Peeken and Surprosanna Shit and Felix Steinbauer and Daniel Rueckert and Rolf Heckemann and Spyridon Bakas and Jan Kirschke and Constantin von See and Ivan Ezhov and Marie Piraud and Benedikt Wiestler and Bjoern Menze},
165
+ year={2025},
166
+ eprint={2507.09036},
167
+ archivePrefix={arXiv},
168
+ primaryClass={cs.CV},
169
+ url={https://arxiv.org/abs/2507.09036},
170
+ }
171
+ ```
156
172
 
157
173
  ## Documentation
158
174
  We provide a (WIP) documentation. Have a look [here](https://brainles-preprocessing.readthedocs.io/en/latest/?badge=latest)
@@ -161,11 +177,17 @@ We provide a (WIP) documentation. Have a look [here](https://brainles-preprocess
161
177
  Please credit the authors by citing their work.
162
178
 
163
179
  ### Registration
164
- We currently provide support for [ANTs](https://github.com/ANTsX/ANTs) (default), [Niftyreg](https://github.com/KCL-BMEIS/niftyreg) (Linux).
180
+ We currently provide support for [ANTs](https://github.com/ANTsX/ANTs) (default), [Niftyreg](https://github.com/KCL-BMEIS/niftyreg) (Linux). We also offer basic support for [greedy](https://greedy.readthedocs.io/en/latest/reference.html#greedy-usage) and [elastix](https://pypi.org/project/itk-elastix/0.13.0/).
165
181
 
166
182
  ### Atlas Reference
167
- We provide the SRI-24 atlas from this [publication](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2915788/).
168
- However, custom atlases in NIfTI format are supported.
183
+ We provide a range of different atlases, namely:
184
+ - [SRI24](https://www.nitrc.org/frs/download.php/4502/sri24_anatomy_unstripped_nifti.zip) and its [skull-stripped version](https://www.nitrc.org/frs/download.php/4499/sri24_anatomy_nifti.zip)
185
+ - A slightly modified SRI24 atlas as found in the BraTS challenges (also with a skull-stripped version)
186
+ - MNI152: [MNI_ICBM_2009c_Nonlinear_Symmetric](https://nist.mni.mcgill.ca/icbm-152-nonlinear-atlases-2009/)
187
+ - A slightly modified MNI152 atlas as found in the BraTS challenge
188
+
189
+ We also support supplying a custom atlas in NIfTI format
190
+
169
191
 
170
192
  ### N4 Bias correction
171
193
  We currently provide support for N4 Bias correction based on [SimpleITK](https://simpleitk.org/)
@@ -111,9 +111,25 @@ For further information please have a look at our [Jupyter Notebook tutorials](h
111
111
 
112
112
 
113
113
 
114
+ ## Citation
114
115
 
116
+ > [!IMPORTANT]
117
+ > If you use `brainles-preprocessing` in your research, please cite it to support the development!
115
118
 
116
- <!-- TODO citation -->
119
+ Kofler, F., Rosier, M., Astaraki, M., Möller, H., Mekki, I. I., Buchner, J. A., Schmick, A., Pfiffer, A., Oswald, E., Zimmer, L., Rosa, E. de la, Pati, S., Canisius, J., Piffer, A., Baid, U., Valizadeh, M., Linardos, A., Peeken, J. C., Shit, S., … Menze, B. (2025). *BrainLesion Suite: A Flexible and User-Friendly Framework for Modular Brain Lesion Image Analysis* [arXiv preprint arXiv:2507.09036](https://doi.org/10.48550/arXiv.2507.09036)
120
+
121
+
122
+ ```
123
+ @misc{kofler2025brainlesionsuiteflexibleuserfriendly,
124
+ title={BrainLesion Suite: A Flexible and User-Friendly Framework for Modular Brain Lesion Image Analysis},
125
+ author={Florian Kofler and Marcel Rosier and Mehdi Astaraki and Hendrik Möller and Ilhem Isra Mekki and Josef A. Buchner and Anton Schmick and Arianna Pfiffer and Eva Oswald and Lucas Zimmer and Ezequiel de la Rosa and Sarthak Pati and Julian Canisius and Arianna Piffer and Ujjwal Baid and Mahyar Valizadeh and Akis Linardos and Jan C. Peeken and Surprosanna Shit and Felix Steinbauer and Daniel Rueckert and Rolf Heckemann and Spyridon Bakas and Jan Kirschke and Constantin von See and Ivan Ezhov and Marie Piraud and Benedikt Wiestler and Bjoern Menze},
126
+ year={2025},
127
+ eprint={2507.09036},
128
+ archivePrefix={arXiv},
129
+ primaryClass={cs.CV},
130
+ url={https://arxiv.org/abs/2507.09036},
131
+ }
132
+ ```
117
133
 
118
134
  ## Documentation
119
135
  We provide a (WIP) documentation. Have a look [here](https://brainles-preprocessing.readthedocs.io/en/latest/?badge=latest)
@@ -122,11 +138,17 @@ We provide a (WIP) documentation. Have a look [here](https://brainles-preprocess
122
138
  Please credit the authors by citing their work.
123
139
 
124
140
  ### Registration
125
- We currently provide support for [ANTs](https://github.com/ANTsX/ANTs) (default), [Niftyreg](https://github.com/KCL-BMEIS/niftyreg) (Linux).
141
+ We currently provide support for [ANTs](https://github.com/ANTsX/ANTs) (default), [Niftyreg](https://github.com/KCL-BMEIS/niftyreg) (Linux). We also offer basic support for [greedy](https://greedy.readthedocs.io/en/latest/reference.html#greedy-usage) and [elastix](https://pypi.org/project/itk-elastix/0.13.0/).
126
142
 
127
143
  ### Atlas Reference
128
- We provide the SRI-24 atlas from this [publication](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2915788/).
129
- However, custom atlases in NIfTI format are supported.
144
+ We provide a range of different atlases, namely:
145
+ - [SRI24](https://www.nitrc.org/frs/download.php/4502/sri24_anatomy_unstripped_nifti.zip) and its [skull-stripped version](https://www.nitrc.org/frs/download.php/4499/sri24_anatomy_nifti.zip)
146
+ - A slightly modified SRI24 atlas as found in the BraTS challenges (also with a skull-stripped version)
147
+ - MNI152: [MNI_ICBM_2009c_Nonlinear_Symmetric](https://nist.mni.mcgill.ca/icbm-152-nonlinear-atlases-2009/)
148
+ - A slightly modified MNI152 atlas as found in the BraTS challenge
149
+
150
+ We also support supplying a custom atlas in NIfTI format
151
+
130
152
 
131
153
  ### N4 Bias correction
132
154
  We currently provide support for N4 Bias correction based on [SimpleITK](https://simpleitk.org/)
@@ -24,3 +24,6 @@ class Atlas(str, Enum):
24
24
 
25
25
  BRATS_MNI152 = "brats_MNI152lin_T1_1mm.nii.gz"
26
26
  """Slightly modified MNI152 atlas as found in the BraTS challenges"""
27
+
28
+ MNI152 = "mni_icbm152_t1_tal_nlin_sym_09c.nii"
29
+ """MNI_ICBM_2009c_Nonlinear_Symmetric atlas from https://nist.mni.mcgill.ca/icbm-152-nonlinear-atlases-2009/"""
@@ -6,6 +6,7 @@ from auxiliary.io import read_image, write_image
6
6
 
7
7
  from brainles_preprocessing.defacing.defacer import Defacer
8
8
  from brainles_preprocessing.defacing.quickshear.nipy_quickshear import run_quickshear
9
+ from brainles_preprocessing.constants import Atlas
9
10
 
10
11
 
11
12
  class QuickshearDefacer(Defacer):
@@ -29,14 +30,23 @@ class QuickshearDefacer(Defacer):
29
30
  ```
30
31
  """
31
32
 
32
- def __init__(self, buffer: float = 10.0):
33
+ def __init__(
34
+ self,
35
+ buffer: float = 10.0,
36
+ force_atlas_registration: bool = True,
37
+ atlas_image_path: Union[str, Path, Atlas] = Atlas.SRI24,
38
+ ):
33
39
  """Initialize Quickshear defacer
34
40
 
35
41
  Args:
36
42
  buffer (float, optional): buffer parameter from quickshear algorithm. Defaults to 10.0.
43
+ force_atlas_registration (bool, optional): If True, forces atlas registration of the BET mask before defacing to potentially boost quickshear performance. Defaults to True.
44
+ atlas_image_path (Union[str, Path, Atlas], optional): Path to the atlas image or an Atlas enum value that will be used for the optional atlas registrations. Defaults to Atlas.SRI24.
37
45
  """
38
46
  super().__init__()
39
47
  self.buffer = buffer
48
+ self.force_atlas_registration = force_atlas_registration
49
+ self.atlas_image_path = atlas_image_path
40
50
 
41
51
  def deface(
42
52
  self,
@@ -5,9 +5,10 @@ from pathlib import Path
5
5
  from typing import Dict, Optional, Union
6
6
 
7
7
  from auxiliary.io import read_image, write_image
8
+ from loguru import logger
8
9
 
9
10
  from brainles_preprocessing.brain_extraction.brain_extractor import BrainExtractor
10
- from brainles_preprocessing.constants import PreprocessorSteps
11
+ from brainles_preprocessing.constants import Atlas, PreprocessorSteps
11
12
  from brainles_preprocessing.defacing import Defacer, QuickshearDefacer
12
13
  from brainles_preprocessing.normalization.normalizer_base import Normalizer
13
14
  from brainles_preprocessing.registration import ( # TODO: this will throw warnings if ANTs or NiftyReg are not installed, not ideal
@@ -15,8 +16,7 @@ from brainles_preprocessing.registration import ( # TODO: this will throw warni
15
16
  NiftyRegRegistrator,
16
17
  )
17
18
  from brainles_preprocessing.registration.registrator import Registrator
18
-
19
- logger = logging.getLogger(__name__)
19
+ from brainles_preprocessing.utils.zenodo import verify_or_download_atlases
20
20
 
21
21
 
22
22
  class Modality:
@@ -295,7 +295,7 @@ class Modality:
295
295
  if self.bet:
296
296
  mask_path = Path(mask_path)
297
297
  bet_dir = Path(bet_dir)
298
- bet_img = bet_dir / f"atlas__{self.modality_name}_bet.nii.gz"
298
+ bet_img = bet_dir / f"{self.modality_name}_bet.nii.gz"
299
299
 
300
300
  brain_extractor.apply_mask(
301
301
  input_image_path=self.current,
@@ -324,14 +324,27 @@ class Modality:
324
324
  if self.requires_deface:
325
325
  mask_path = Path(mask_path)
326
326
  deface_dir = Path(deface_dir)
327
- defaced_img = deface_dir / f"atlas__{self.modality_name}_defaced.nii.gz"
328
- input_img = self.steps[
329
- (
330
- PreprocessorSteps.ATLAS_CORRECTED
331
- if self.atlas_correction
332
- else PreprocessorSteps.ATLAS_REGISTERED
327
+ defaced_img = deface_dir / f"{self.modality_name}_defaced.nii.gz"
328
+
329
+ # For Atlas centric preprocessing, we use the atlas corrected or registered image as input
330
+ # For Native space preprocessing, we use the coregistered image as input
331
+ input_img = (
332
+ self.steps[
333
+ (
334
+ PreprocessorSteps.ATLAS_CORRECTED
335
+ if self.atlas_correction
336
+ else PreprocessorSteps.ATLAS_REGISTERED
337
+ )
338
+ ]
339
+ or self.steps[PreprocessorSteps.COREGISTERED]
340
+ )
341
+
342
+ if input_img is None:
343
+ raise ValueError(
344
+ "Input image for defacing is missing. Ensure that the required preprocessing steps "
345
+ "have been performed before defacing."
333
346
  )
334
- ]
347
+
335
348
  defacer.apply_mask(
336
349
  input_image_path=input_img,
337
350
  mask_path=mask_path,
@@ -428,65 +441,40 @@ class Modality:
428
441
  "Legacy method. Please Migrate to use the CenterModality Class. Will be removed in future versions.",
429
442
  category=DeprecationWarning,
430
443
  )
431
-
432
444
  bet_dir_path = Path(bet_dir_path)
433
445
  bet_log = bet_dir_path / "brain-extraction.log"
434
446
 
435
- atlas_bet_cm = bet_dir_path / f"atlas__{self.modality_name}_bet.nii.gz"
436
- mask_path = bet_dir_path / f"atlas__{self.modality_name}_brain_mask.nii.gz"
447
+ bet = bet_dir_path / f"{self.modality_name}_bet.nii.gz"
448
+ mask_path = bet_dir_path / f"{self.modality_name}_brain_mask.nii.gz"
437
449
 
438
450
  brain_extractor.extract(
439
451
  input_image_path=self.current,
440
- masked_image_path=atlas_bet_cm,
452
+ masked_image_path=bet,
441
453
  brain_mask_path=mask_path,
442
454
  log_file_path=bet_log,
443
455
  )
444
456
 
445
457
  # always temporarily store bet image for center modality, since e.g. quickshear defacing could require it
446
458
  # down the line even if the user does not wish to save the bet image
447
- self.steps[PreprocessorSteps.BET] = atlas_bet_cm
459
+ self.steps[PreprocessorSteps.BET] = bet
448
460
 
449
461
  if self.bet:
450
- self.current = atlas_bet_cm
462
+ self.current = bet
451
463
  return mask_path
452
464
 
453
465
  def deface(
454
466
  self,
455
467
  defacer,
456
468
  defaced_dir_path: Union[str, Path],
457
- ) -> Path:
469
+ registrator: Optional[Registrator] = None,
470
+ ) -> Path | None:
458
471
  """
459
472
  WARNING: Legacy method. Please Migrate to use the CenterModality Class. Will be removed in future versions.
460
-
461
- Deface the current modality using the specified defacer.
462
-
463
- Args:
464
- defacer (Defacer): The defacer object.
465
- defaced_dir_path (str or Path): Directory to store defacing results.
466
-
467
- Returns:
468
- Path: Path to the extracted brain mask.
469
473
  """
470
- warnings.warn(
471
- "Legacy method. Please Migrate to use the CenterModality class. Will be removed in future versions.",
472
- category=DeprecationWarning,
474
+ raise RuntimeError(
475
+ "The 'deface' method has been deprecated and moved to the CenterModality class as its only supposed to be called once from the CenterModality. "
476
+ "Please update your code to use the 'CenterModality.deface()' method instead."
473
477
  )
474
- if isinstance(defacer, QuickshearDefacer):
475
- defaced_dir_path = Path(defaced_dir_path)
476
- atlas_mask_path = (
477
- defaced_dir_path / f"atlas__{self.modality_name}_deface_mask.nii.gz"
478
- )
479
-
480
- defacer.deface(
481
- mask_image_path=atlas_mask_path,
482
- input_image_path=self.steps[PreprocessorSteps.BET],
483
- )
484
- return atlas_mask_path
485
- else:
486
- logger.warning(
487
- "Defacing method not implemented yet. Skipping defacing for this modality."
488
- )
489
- return None
490
478
 
491
479
  def save_current_image(
492
480
  self,
@@ -612,6 +600,7 @@ class CenterModality(Modality):
612
600
  bet_dir_path: Union[str, Path],
613
601
  ) -> Path:
614
602
  """
603
+
615
604
  Extract the brain region using the specified brain extractor.
616
605
 
617
606
  Args:
@@ -621,66 +610,95 @@ class CenterModality(Modality):
621
610
  Returns:
622
611
  Path: Path to the extracted brain mask.
623
612
  """
613
+
624
614
  bet_dir_path = Path(bet_dir_path)
625
615
  bet_log = bet_dir_path / "brain-extraction.log"
626
616
 
627
- atlas_bet_cm = bet_dir_path / f"atlas__{self.modality_name}_bet.nii.gz"
628
- mask_path = bet_dir_path / f"atlas__{self.modality_name}_brain_mask.nii.gz"
617
+ bet = bet_dir_path / f"{self.modality_name}_bet.nii.gz"
618
+ mask_path = bet_dir_path / f"{self.modality_name}_brain_mask.nii.gz"
629
619
 
630
620
  brain_extractor.extract(
631
621
  input_image_path=self.current,
632
- masked_image_path=atlas_bet_cm,
622
+ masked_image_path=bet,
633
623
  brain_mask_path=mask_path,
634
624
  log_file_path=bet_log,
635
625
  )
636
626
 
637
- if self.bet_mask_output_path:
638
- logger.debug(f"Saving bet mask to {self.bet_mask_output_path}")
639
- self.save_mask(mask_path=mask_path, output_path=self.bet_mask_output_path)
640
-
641
627
  # always temporarily store bet image for center modality, since e.g. quickshear defacing could require it
642
628
  # down the line even if the user does not wish to save the bet image
643
- self.steps[PreprocessorSteps.BET] = atlas_bet_cm
629
+ self.steps[PreprocessorSteps.BET] = bet
644
630
 
645
631
  if self.bet:
646
- self.current = atlas_bet_cm
632
+ self.current = bet
647
633
  return mask_path
648
634
 
649
635
  def deface(
650
636
  self,
651
- defacer,
637
+ defacer: Defacer,
652
638
  defaced_dir_path: Union[str, Path],
653
- ) -> Path:
639
+ registrator: Optional[Registrator] = None,
640
+ ) -> Path | None:
654
641
  """
655
642
  Deface the current modality using the specified defacer.
656
643
 
657
644
  Args:
658
645
  defacer (Defacer): The defacer object.
659
646
  defaced_dir_path (str or Path): Directory to store defacing results.
647
+ registrator (Registrator, optional): The registrator object for atlas registration.
660
648
 
661
649
  Returns:
662
- Path: Path to the extracted brain mask.
650
+ Path | None: Path to the defacing mask if successful, None otherwise.
663
651
  """
664
-
665
652
  if isinstance(defacer, QuickshearDefacer):
666
653
  defaced_dir_path = Path(defaced_dir_path)
667
- atlas_mask_path = (
668
- defaced_dir_path / f"atlas__{self.modality_name}_deface_mask.nii.gz"
669
- )
654
+ mask_path = defaced_dir_path / f"{self.modality_name}_deface_mask.nii.gz"
670
655
 
671
- defacer.deface(
672
- mask_image_path=atlas_mask_path,
673
- input_image_path=self.steps[PreprocessorSteps.BET],
674
- )
656
+ if self.steps.get(PreprocessorSteps.BET, None) is None:
657
+ raise ValueError(
658
+ "Brain extraction must be performed before defacing. "
659
+ "Please run brain extraction first."
660
+ )
675
661
 
676
- if self.defacing_mask_output_path:
677
- logger.debug(f"Saving deface mask to {self.defacing_mask_output_path}")
678
- self.save_mask(
679
- mask_path=atlas_mask_path,
680
- output_path=self.defacing_mask_output_path,
662
+ if defacer.force_atlas_registration and registrator is not None:
663
+ logger.info("Forcing atlas registration before defacing as requested.")
664
+ atlas_bet = defaced_dir_path / "atlas_bet.nii.gz"
665
+ atlas_bet_M = defaced_dir_path / "M_atlas_bet"
666
+
667
+ # resolve atlas image path
668
+ if isinstance(defacer.atlas_image_path, Atlas):
669
+ atlas_folder = verify_or_download_atlases()
670
+ atlas_image_path = atlas_folder / defacer.atlas_image_path.value
671
+ else:
672
+ atlas_image_path = Path(defacer.atlas_image_path)
673
+
674
+ registrator.register(
675
+ fixed_image_path=atlas_image_path,
676
+ moving_image_path=self.steps[PreprocessorSteps.BET],
677
+ transformed_image_path=atlas_bet,
678
+ matrix_path=atlas_bet_M,
679
+ log_file_path=defaced_dir_path / "atlas_bet.log",
680
+ )
681
+
682
+ deface_mask_atlas = defaced_dir_path / "deface_mask_atlas.nii.gz"
683
+ defacer.deface(
684
+ input_image_path=atlas_bet,
685
+ mask_image_path=deface_mask_atlas,
686
+ )
687
+
688
+ registrator.inverse_transform(
689
+ fixed_image_path=self.steps[PreprocessorSteps.BET],
690
+ moving_image_path=deface_mask_atlas,
691
+ transformed_image_path=mask_path,
692
+ matrix_path=atlas_bet_M,
693
+ log_file_path=defaced_dir_path / "inverse_transform.log",
694
+ )
695
+ else:
696
+ defacer.deface(
697
+ input_image_path=self.steps[PreprocessorSteps.BET],
698
+ mask_image_path=mask_path,
681
699
  )
682
700
 
683
- return atlas_mask_path
701
+ return mask_path
684
702
  else:
685
703
  logger.warning(
686
704
  "Defacing method not implemented yet. Skipping defacing for this modality."
@@ -0,0 +1,15 @@
1
+ import warnings
2
+ from .atlas_centric_preprocessor import AtlasCentricPreprocessor
3
+ from .native_space_preprocessor import NativeSpacePreprocessor
4
+
5
+
6
+ # Deprecation warning for Preprocessor alias, added to ensure backward compatibility.
7
+ class Preprocessor(AtlasCentricPreprocessor):
8
+ def __init__(self, *args, **kwargs):
9
+ warnings.warn(
10
+ "Preprocessor has been renamed to AtlasCentricPreprocessor and is deprecated."
11
+ "The alias will be removed in future releases, please migrate to AtlasCentricPreprocessor.",
12
+ DeprecationWarning,
13
+ stacklevel=2,
14
+ )
15
+ super().__init__(*args, **kwargs)