brainles-preprocessing 0.5.0__tar.gz → 0.6.0__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 (122) hide show
  1. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/PKG-INFO +18 -3
  2. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/README.md +17 -1
  3. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/constants.py +3 -0
  4. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/quickshear/quickshear.py +11 -1
  5. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/modality.py +89 -70
  6. brainles_preprocessing-0.6.0/brainles_preprocessing/preprocessor/__init__.py +15 -0
  7. brainles_preprocessing-0.5.0/brainles_preprocessing/preprocessor.py → brainles_preprocessing-0.6.0/brainles_preprocessing/preprocessor/atlas_centric_preprocessor.py +19 -303
  8. brainles_preprocessing-0.6.0/brainles_preprocessing/preprocessor/native_space_preprocessor.py +200 -0
  9. brainles_preprocessing-0.6.0/brainles_preprocessing/preprocessor/preprocessor.py +355 -0
  10. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/ANTs/ANTs.py +1 -1
  11. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg.py +4 -2
  12. brainles_preprocessing-0.6.0/brainles_preprocessing/utils/citation_reminder.py +41 -0
  13. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/pyproject.toml +2 -2
  14. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/LICENSE +0 -0
  15. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/__init__.py +0 -0
  16. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brain_extraction/__init__.py +0 -0
  17. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brain_extraction/brain_extractor.py +0 -0
  18. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brats/__init__.py +0 -0
  19. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brats/t1_centric.py +0 -0
  20. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brats/t1c_centric.py +0 -0
  21. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/cli.py +0 -0
  22. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/__init__.py +0 -0
  23. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/defacer.py +0 -0
  24. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/quickshear/__init__.py +0 -0
  25. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/quickshear/nipy_quickshear.py +0 -0
  26. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/n4_bias_correction/__init__.py +0 -0
  27. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/n4_bias_correction/n4_bias_corrector.py +0 -0
  28. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/n4_bias_correction/sitk/__init__.py +0 -0
  29. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/n4_bias_correction/sitk/sitk_n4_bias_corrector.py +0 -0
  30. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/normalization/__init__.py +0 -0
  31. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/normalization/normalizer_base.py +0 -0
  32. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/normalization/percentile_normalizer.py +0 -0
  33. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/normalization/windowing_normalizer.py +0 -0
  34. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/ANTs/TODO_ANTs_parameters.py +0 -0
  35. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/ANTs/__init__.py +0 -0
  36. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/__init__.py +0 -0
  37. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/elastix/__init__.py +0 -0
  38. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/elastix/elastix.py +0 -0
  39. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/greedy/__init__.py +0 -0
  40. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/greedy/greedy.py +0 -0
  41. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/__init__.py +0 -0
  42. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/groupwise_niftyreg_params.sh +0 -0
  43. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/groupwise_niftyreg_run.sh +0 -0
  44. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_aladin +0 -0
  45. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_average +0 -0
  46. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_f3d +0 -0
  47. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_jacobian +0 -0
  48. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_measure +0 -0
  49. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_resample +0 -0
  50. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_tools +0 -0
  51. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_transform +0 -0
  52. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/AffineDeformationFieldKernel.h +0 -0
  53. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/AladinContent.h +0 -0
  54. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/BlockMatchingKernel.h +0 -0
  55. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUAffineDeformationFieldKernel.h +0 -0
  56. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUBlockMatchingKernel.h +0 -0
  57. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUConvolutionKernel.h +0 -0
  58. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUKernelFactory.h +0 -0
  59. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUOptimiseKernel.h +0 -0
  60. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUResampleImageKernel.h +0 -0
  61. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/ConvolutionKernel.h +0 -0
  62. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/Kernel.h +0 -0
  63. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/KernelFactory.h +0 -0
  64. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/OptimiseKernel.h +0 -0
  65. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/Platform.h +0 -0
  66. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/ResampleImageKernel.h +0 -0
  67. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ReadWriteImage.h +0 -0
  68. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ReadWriteMatrix.h +0 -0
  69. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin.cpp +0 -0
  70. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin.h +0 -0
  71. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin_sym.cpp +0 -0
  72. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin_sym.h +0 -0
  73. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_base.h +0 -0
  74. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_blockMatching.h +0 -0
  75. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_dti.h +0 -0
  76. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d.h +0 -0
  77. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d2.h +0 -0
  78. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d_sym.h +0 -0
  79. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_femTrans.h +0 -0
  80. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_globalTrans.h +0 -0
  81. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_kld.h +0 -0
  82. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_lncc.h +0 -0
  83. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans.h +0 -0
  84. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans_jac.h +0 -0
  85. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans_regul.h +0 -0
  86. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_macros.h +0 -0
  87. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_maths.h +0 -0
  88. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_maths_eigen.h +0 -0
  89. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_measure.h +0 -0
  90. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_mind.h +0 -0
  91. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_nmi.h +0 -0
  92. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_optimiser.cpp +0 -0
  93. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_optimiser.h +0 -0
  94. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_resampling.h +0 -0
  95. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_splineBasis.h +0 -0
  96. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ssd.h +0 -0
  97. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_stringFormat.h +0 -0
  98. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_tools.h +0 -0
  99. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/nifti1.h +0 -0
  100. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/nifti1_io.h +0 -0
  101. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/png.h +0 -0
  102. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngconf.h +0 -0
  103. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngdebug.h +0 -0
  104. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pnginfo.h +0 -0
  105. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pnglibconf.h +0 -0
  106. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngpriv.h +0 -0
  107. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngstruct.h +0 -0
  108. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/readpng.h +0 -0
  109. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/reg_png.h +0 -0
  110. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/zlib.h +0 -0
  111. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/znzlib.h +0 -0
  112. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/zutil.h +0 -0
  113. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_aladin +0 -0
  114. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_resample +0 -0
  115. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/rigid_reg.sh +0 -0
  116. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/transform.sh +0 -0
  117. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/registrator.py +0 -0
  118. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/transform.py +0 -0
  119. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/utils/__init__.py +0 -0
  120. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/utils/generic.py +0 -0
  121. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/utils/logging_utils.py +0 -0
  122. {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/utils/zenodo.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.0
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,7 +21,6 @@ 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"
27
26
  Requires-Dist: nibabel (>=3.2.1)
@@ -150,9 +149,25 @@ For further information please have a look at our [Jupyter Notebook tutorials](h
150
149
 
151
150
 
152
151
 
152
+ ## Citation
153
153
 
154
+ > [!IMPORTANT]
155
+ > If you use `brainles-preprocessing` in your research, please cite it to support the development!
154
156
 
155
- <!-- TODO citation -->
157
+ 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)
158
+
159
+
160
+ ```
161
+ @misc{kofler2025brainlesionsuiteflexibleuserfriendly,
162
+ title={BrainLesion Suite: A Flexible and User-Friendly Framework for Modular Brain Lesion Image Analysis},
163
+ 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},
164
+ year={2025},
165
+ eprint={2507.09036},
166
+ archivePrefix={arXiv},
167
+ primaryClass={cs.CV},
168
+ url={https://arxiv.org/abs/2507.09036},
169
+ }
170
+ ```
156
171
 
157
172
  ## Documentation
158
173
  We provide a (WIP) documentation. Have a look [here](https://brainles-preprocessing.readthedocs.io/en/latest/?badge=latest)
@@ -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)
@@ -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,
@@ -7,7 +7,7 @@ from typing import Dict, Optional, Union
7
7
  from auxiliary.io import read_image, write_image
8
8
 
9
9
  from brainles_preprocessing.brain_extraction.brain_extractor import BrainExtractor
10
- from brainles_preprocessing.constants import PreprocessorSteps
10
+ from brainles_preprocessing.constants import Atlas, PreprocessorSteps
11
11
  from brainles_preprocessing.defacing import Defacer, QuickshearDefacer
12
12
  from brainles_preprocessing.normalization.normalizer_base import Normalizer
13
13
  from brainles_preprocessing.registration import ( # TODO: this will throw warnings if ANTs or NiftyReg are not installed, not ideal
@@ -15,6 +15,7 @@ from brainles_preprocessing.registration import ( # TODO: this will throw warni
15
15
  NiftyRegRegistrator,
16
16
  )
17
17
  from brainles_preprocessing.registration.registrator import Registrator
18
+ from brainles_preprocessing.utils.zenodo import verify_or_download_atlases
18
19
 
19
20
  logger = logging.getLogger(__name__)
20
21
 
@@ -295,7 +296,7 @@ class Modality:
295
296
  if self.bet:
296
297
  mask_path = Path(mask_path)
297
298
  bet_dir = Path(bet_dir)
298
- bet_img = bet_dir / f"atlas__{self.modality_name}_bet.nii.gz"
299
+ bet_img = bet_dir / f"{self.modality_name}_bet.nii.gz"
299
300
 
300
301
  brain_extractor.apply_mask(
301
302
  input_image_path=self.current,
@@ -324,14 +325,27 @@ class Modality:
324
325
  if self.requires_deface:
325
326
  mask_path = Path(mask_path)
326
327
  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
328
+ defaced_img = deface_dir / f"{self.modality_name}_defaced.nii.gz"
329
+
330
+ # For Atlas centric preprocessing, we use the atlas corrected or registered image as input
331
+ # For Native space preprocessing, we use the coregistered image as input
332
+ input_img = (
333
+ self.steps[
334
+ (
335
+ PreprocessorSteps.ATLAS_CORRECTED
336
+ if self.atlas_correction
337
+ else PreprocessorSteps.ATLAS_REGISTERED
338
+ )
339
+ ]
340
+ or self.steps[PreprocessorSteps.COREGISTERED]
341
+ )
342
+
343
+ if input_img is None:
344
+ raise ValueError(
345
+ "Input image for defacing is missing. Ensure that the required preprocessing steps "
346
+ "have been performed before defacing."
333
347
  )
334
- ]
348
+
335
349
  defacer.apply_mask(
336
350
  input_image_path=input_img,
337
351
  mask_path=mask_path,
@@ -428,65 +442,40 @@ class Modality:
428
442
  "Legacy method. Please Migrate to use the CenterModality Class. Will be removed in future versions.",
429
443
  category=DeprecationWarning,
430
444
  )
431
-
432
445
  bet_dir_path = Path(bet_dir_path)
433
446
  bet_log = bet_dir_path / "brain-extraction.log"
434
447
 
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"
448
+ bet = bet_dir_path / f"{self.modality_name}_bet.nii.gz"
449
+ mask_path = bet_dir_path / f"{self.modality_name}_brain_mask.nii.gz"
437
450
 
438
451
  brain_extractor.extract(
439
452
  input_image_path=self.current,
440
- masked_image_path=atlas_bet_cm,
453
+ masked_image_path=bet,
441
454
  brain_mask_path=mask_path,
442
455
  log_file_path=bet_log,
443
456
  )
444
457
 
445
458
  # always temporarily store bet image for center modality, since e.g. quickshear defacing could require it
446
459
  # down the line even if the user does not wish to save the bet image
447
- self.steps[PreprocessorSteps.BET] = atlas_bet_cm
460
+ self.steps[PreprocessorSteps.BET] = bet
448
461
 
449
462
  if self.bet:
450
- self.current = atlas_bet_cm
463
+ self.current = bet
451
464
  return mask_path
452
465
 
453
466
  def deface(
454
467
  self,
455
468
  defacer,
456
469
  defaced_dir_path: Union[str, Path],
457
- ) -> Path:
470
+ registrator: Optional[Registrator] = None,
471
+ ) -> Path | None:
458
472
  """
459
473
  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
474
  """
470
- warnings.warn(
471
- "Legacy method. Please Migrate to use the CenterModality class. Will be removed in future versions.",
472
- category=DeprecationWarning,
475
+ raise RuntimeError(
476
+ "The 'deface' method has been deprecated and moved to the CenterModality class as its only supposed to be called once from the CenterModality. "
477
+ "Please update your code to use the 'CenterModality.deface()' method instead."
473
478
  )
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
479
 
491
480
  def save_current_image(
492
481
  self,
@@ -612,6 +601,7 @@ class CenterModality(Modality):
612
601
  bet_dir_path: Union[str, Path],
613
602
  ) -> Path:
614
603
  """
604
+
615
605
  Extract the brain region using the specified brain extractor.
616
606
 
617
607
  Args:
@@ -621,66 +611,95 @@ class CenterModality(Modality):
621
611
  Returns:
622
612
  Path: Path to the extracted brain mask.
623
613
  """
614
+
624
615
  bet_dir_path = Path(bet_dir_path)
625
616
  bet_log = bet_dir_path / "brain-extraction.log"
626
617
 
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"
618
+ bet = bet_dir_path / f"{self.modality_name}_bet.nii.gz"
619
+ mask_path = bet_dir_path / f"{self.modality_name}_brain_mask.nii.gz"
629
620
 
630
621
  brain_extractor.extract(
631
622
  input_image_path=self.current,
632
- masked_image_path=atlas_bet_cm,
623
+ masked_image_path=bet,
633
624
  brain_mask_path=mask_path,
634
625
  log_file_path=bet_log,
635
626
  )
636
627
 
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
628
  # always temporarily store bet image for center modality, since e.g. quickshear defacing could require it
642
629
  # down the line even if the user does not wish to save the bet image
643
- self.steps[PreprocessorSteps.BET] = atlas_bet_cm
630
+ self.steps[PreprocessorSteps.BET] = bet
644
631
 
645
632
  if self.bet:
646
- self.current = atlas_bet_cm
633
+ self.current = bet
647
634
  return mask_path
648
635
 
649
636
  def deface(
650
637
  self,
651
- defacer,
638
+ defacer: Defacer,
652
639
  defaced_dir_path: Union[str, Path],
653
- ) -> Path:
640
+ registrator: Optional[Registrator] = None,
641
+ ) -> Path | None:
654
642
  """
655
643
  Deface the current modality using the specified defacer.
656
644
 
657
645
  Args:
658
646
  defacer (Defacer): The defacer object.
659
647
  defaced_dir_path (str or Path): Directory to store defacing results.
648
+ registrator (Registrator, optional): The registrator object for atlas registration.
660
649
 
661
650
  Returns:
662
- Path: Path to the extracted brain mask.
651
+ Path | None: Path to the defacing mask if successful, None otherwise.
663
652
  """
664
-
665
653
  if isinstance(defacer, QuickshearDefacer):
666
654
  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
- )
655
+ mask_path = defaced_dir_path / f"{self.modality_name}_deface_mask.nii.gz"
670
656
 
671
- defacer.deface(
672
- mask_image_path=atlas_mask_path,
673
- input_image_path=self.steps[PreprocessorSteps.BET],
674
- )
657
+ if self.steps.get(PreprocessorSteps.BET, None) is None:
658
+ raise ValueError(
659
+ "Brain extraction must be performed before defacing. "
660
+ "Please run brain extraction first."
661
+ )
675
662
 
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,
663
+ if defacer.force_atlas_registration and registrator is not None:
664
+ logger.info("Forcing atlas registration before defacing as requested.")
665
+ atlas_bet = defaced_dir_path / "atlas_bet.nii.gz"
666
+ atlas_bet_M = defaced_dir_path / "M_atlas_bet"
667
+
668
+ # resolve atlas image path
669
+ if isinstance(defacer.atlas_image_path, Atlas):
670
+ atlas_folder = verify_or_download_atlases()
671
+ atlas_image_path = atlas_folder / defacer.atlas_image_path.value
672
+ else:
673
+ atlas_image_path = Path(defacer.atlas_image_path)
674
+
675
+ registrator.register(
676
+ fixed_image_path=atlas_image_path,
677
+ moving_image_path=self.steps[PreprocessorSteps.BET],
678
+ transformed_image_path=atlas_bet,
679
+ matrix_path=atlas_bet_M,
680
+ log_file_path=defaced_dir_path / "atlas_bet.log",
681
+ )
682
+
683
+ deface_mask_atlas = defaced_dir_path / "deface_mask_atlas.nii.gz"
684
+ defacer.deface(
685
+ input_image_path=atlas_bet,
686
+ mask_image_path=deface_mask_atlas,
687
+ )
688
+
689
+ registrator.inverse_transform(
690
+ fixed_image_path=self.steps[PreprocessorSteps.BET],
691
+ moving_image_path=deface_mask_atlas,
692
+ transformed_image_path=mask_path,
693
+ matrix_path=atlas_bet_M,
694
+ log_file_path=defaced_dir_path / "inverse_transform.log",
695
+ )
696
+ else:
697
+ defacer.deface(
698
+ input_image_path=self.steps[PreprocessorSteps.BET],
699
+ mask_image_path=mask_path,
681
700
  )
682
701
 
683
- return atlas_mask_path
702
+ return mask_path
684
703
  else:
685
704
  logger.warning(
686
705
  "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)