brainles-preprocessing 0.6.9__tar.gz → 0.6.11__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 (124) hide show
  1. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/PKG-INFO +1 -1
  2. brainles_preprocessing-0.6.11/brainles_preprocessing/brain_extraction/__init__.py +6 -0
  3. brainles_preprocessing-0.6.11/brainles_preprocessing/brain_extraction/brain_extractor.py +69 -0
  4. brainles_preprocessing-0.6.9/brainles_preprocessing/brain_extraction/brain_extractor.py → brainles_preprocessing-0.6.11/brainles_preprocessing/brain_extraction/hd_bet.py +2 -67
  5. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/defacing/defacer.py +17 -14
  6. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/defacing/quickshear/nipy_quickshear.py +4 -8
  7. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/preprocessor/preprocessor.py +2 -4
  8. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/__init__.py +0 -2
  9. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/utils/zenodo.py +31 -2
  10. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/pyproject.toml +1 -1
  11. brainles_preprocessing-0.6.9/brainles_preprocessing/brain_extraction/__init__.py +0 -1
  12. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/LICENSE +0 -0
  13. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/README.md +0 -0
  14. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/__init__.py +0 -0
  15. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/brain_extraction/synthstrip.py +0 -0
  16. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/brats/__init__.py +0 -0
  17. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/brats/t1_centric.py +0 -0
  18. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/brats/t1c_centric.py +0 -0
  19. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/cli.py +0 -0
  20. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/constants.py +0 -0
  21. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/defacing/__init__.py +0 -0
  22. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/defacing/quickshear/__init__.py +0 -0
  23. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/defacing/quickshear/quickshear.py +0 -0
  24. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/modality.py +0 -0
  25. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/n4_bias_correction/__init__.py +0 -0
  26. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/n4_bias_correction/n4_bias_corrector.py +0 -0
  27. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/n4_bias_correction/sitk/__init__.py +0 -0
  28. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/n4_bias_correction/sitk/sitk_n4_bias_corrector.py +0 -0
  29. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/normalization/__init__.py +0 -0
  30. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/normalization/normalizer_base.py +0 -0
  31. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/normalization/percentile_normalizer.py +0 -0
  32. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/normalization/windowing_normalizer.py +0 -0
  33. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/preprocessor/__init__.py +0 -0
  34. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/preprocessor/atlas_centric_preprocessor.py +0 -0
  35. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/preprocessor/native_space_preprocessor.py +0 -0
  36. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/ANTs/ANTs.py +0 -0
  37. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/ANTs/TODO_ANTs_parameters.py +0 -0
  38. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/ANTs/__init__.py +0 -0
  39. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/elastix/__init__.py +0 -0
  40. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/elastix/elastix.py +0 -0
  41. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/greedy/__init__.py +0 -0
  42. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/greedy/greedy.py +0 -0
  43. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/__init__.py +0 -0
  44. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg.py +0 -0
  45. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/groupwise_niftyreg_params.sh +0 -0
  46. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/groupwise_niftyreg_run.sh +0 -0
  47. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_aladin +0 -0
  48. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_average +0 -0
  49. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_f3d +0 -0
  50. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_jacobian +0 -0
  51. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_measure +0 -0
  52. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_resample +0 -0
  53. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_tools +0 -0
  54. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_transform +0 -0
  55. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/AffineDeformationFieldKernel.h +0 -0
  56. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/AladinContent.h +0 -0
  57. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/BlockMatchingKernel.h +0 -0
  58. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUAffineDeformationFieldKernel.h +0 -0
  59. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUBlockMatchingKernel.h +0 -0
  60. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUConvolutionKernel.h +0 -0
  61. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUKernelFactory.h +0 -0
  62. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUOptimiseKernel.h +0 -0
  63. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUResampleImageKernel.h +0 -0
  64. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/ConvolutionKernel.h +0 -0
  65. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/Kernel.h +0 -0
  66. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/KernelFactory.h +0 -0
  67. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/OptimiseKernel.h +0 -0
  68. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/Platform.h +0 -0
  69. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/ResampleImageKernel.h +0 -0
  70. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ReadWriteImage.h +0 -0
  71. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ReadWriteMatrix.h +0 -0
  72. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin.cpp +0 -0
  73. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin.h +0 -0
  74. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin_sym.cpp +0 -0
  75. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin_sym.h +0 -0
  76. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_base.h +0 -0
  77. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_blockMatching.h +0 -0
  78. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_dti.h +0 -0
  79. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d.h +0 -0
  80. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d2.h +0 -0
  81. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d_sym.h +0 -0
  82. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_femTrans.h +0 -0
  83. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_globalTrans.h +0 -0
  84. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_kld.h +0 -0
  85. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_lncc.h +0 -0
  86. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans.h +0 -0
  87. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans_jac.h +0 -0
  88. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans_regul.h +0 -0
  89. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_macros.h +0 -0
  90. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_maths.h +0 -0
  91. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_maths_eigen.h +0 -0
  92. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_measure.h +0 -0
  93. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_mind.h +0 -0
  94. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_nmi.h +0 -0
  95. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_optimiser.cpp +0 -0
  96. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_optimiser.h +0 -0
  97. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_resampling.h +0 -0
  98. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_splineBasis.h +0 -0
  99. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ssd.h +0 -0
  100. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_stringFormat.h +0 -0
  101. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_tools.h +0 -0
  102. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/nifti1.h +0 -0
  103. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/nifti1_io.h +0 -0
  104. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/png.h +0 -0
  105. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngconf.h +0 -0
  106. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngdebug.h +0 -0
  107. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pnginfo.h +0 -0
  108. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pnglibconf.h +0 -0
  109. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngpriv.h +0 -0
  110. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngstruct.h +0 -0
  111. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/readpng.h +0 -0
  112. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/reg_png.h +0 -0
  113. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/zlib.h +0 -0
  114. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/znzlib.h +0 -0
  115. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/zutil.h +0 -0
  116. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_aladin +0 -0
  117. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_resample +0 -0
  118. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/rigid_reg.sh +0 -0
  119. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/transform.sh +0 -0
  120. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/registration/registrator.py +0 -0
  121. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/transform.py +0 -0
  122. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/utils/__init__.py +0 -0
  123. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/utils/citation_reminder.py +0 -0
  124. {brainles_preprocessing-0.6.9 → brainles_preprocessing-0.6.11}/brainles_preprocessing/utils/generic.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brainles_preprocessing
3
- Version: 0.6.9
3
+ Version: 0.6.11
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
  License-File: LICENSE
@@ -0,0 +1,6 @@
1
+ from .hd_bet import HDBetExtractor
2
+
3
+ try:
4
+ from .synthstrip import SynthStripExtractor
5
+ except ImportError:
6
+ pass
@@ -0,0 +1,69 @@
1
+ # TODO add typing and docs
2
+ from abc import abstractmethod, ABC
3
+ from pathlib import Path
4
+ from typing import Union
5
+
6
+ from auxiliary.io import read_image, write_image
7
+
8
+
9
+ class BrainExtractor(ABC):
10
+ @abstractmethod
11
+ def extract(
12
+ self,
13
+ input_image_path: Union[str, Path],
14
+ masked_image_path: Union[str, Path],
15
+ brain_mask_path: Union[str, Path],
16
+ **kwargs,
17
+ ) -> None:
18
+ """
19
+ Abstract method to extract the brain from an input image.
20
+
21
+ Args:
22
+ input_image_path (str or Path): Path to the input image.
23
+ masked_image_path (str or Path): Path where the brain-extracted image will be saved.
24
+ brain_mask_path (str or Path): Path where the brain mask will be saved.
25
+ mode (str or Mode): Extraction mode.
26
+ **kwargs: Additional keyword arguments.
27
+ """
28
+ pass
29
+
30
+ def apply_mask(
31
+ self,
32
+ input_image_path: Union[str, Path],
33
+ mask_path: Union[str, Path],
34
+ bet_image_path: Union[str, Path],
35
+ ) -> None:
36
+ """
37
+ Apply a brain mask to an input image.
38
+
39
+ Args:
40
+ input_image_path (str or Path): Path to the input image (NIfTI format).
41
+ mask_path (str or Path): Path to the brain mask image (NIfTI format).
42
+ bet_image_path (str or Path): Path to save the resulting masked image (NIfTI format).
43
+ """
44
+
45
+ try:
46
+ # Read data
47
+ input_data = read_image(str(input_image_path))
48
+ mask_data = read_image(str(mask_path))
49
+ except FileNotFoundError as e:
50
+ raise FileNotFoundError(f"File not found: {e.filename}") from e
51
+ except Exception as e:
52
+ raise RuntimeError(f"Error reading files: {e}") from e
53
+
54
+ # Check that the input and mask have the same shape
55
+ if input_data.shape != mask_data.shape:
56
+ raise ValueError("Input image and mask must have the same dimensions.")
57
+
58
+ # Mask and save it
59
+ masked_data = input_data * mask_data
60
+
61
+ try:
62
+ write_image(
63
+ input_array=masked_data,
64
+ output_path=str(bet_image_path),
65
+ reference_path=str(input_image_path),
66
+ create_parent_directory=True,
67
+ )
68
+ except Exception as e:
69
+ raise RuntimeError(f"Error writing output file: {e}") from e
@@ -1,11 +1,9 @@
1
- # TODO add typing and docs
2
- import shutil
3
- from abc import ABC, abstractmethod
4
1
  from pathlib import Path
5
2
  from typing import Optional, Union
3
+ import shutil
6
4
  from enum import Enum
7
5
 
8
- from auxiliary.io import read_image, write_image
6
+ from brainles_preprocessing.brain_extraction.brain_extractor import BrainExtractor
9
7
  from brainles_hd_bet import run_hd_bet
10
8
 
11
9
 
@@ -14,69 +12,6 @@ class Mode(Enum):
14
12
  ACCURATE = "accurate"
15
13
 
16
14
 
17
- class BrainExtractor:
18
- @abstractmethod
19
- def extract(
20
- self,
21
- input_image_path: Union[str, Path],
22
- masked_image_path: Union[str, Path],
23
- brain_mask_path: Union[str, Path],
24
- **kwargs,
25
- ) -> None:
26
- """
27
- Abstract method to extract the brain from an input image.
28
-
29
- Args:
30
- input_image_path (str or Path): Path to the input image.
31
- masked_image_path (str or Path): Path where the brain-extracted image will be saved.
32
- brain_mask_path (str or Path): Path where the brain mask will be saved.
33
- mode (str or Mode): Extraction mode.
34
- **kwargs: Additional keyword arguments.
35
- """
36
- pass
37
-
38
- def apply_mask(
39
- self,
40
- input_image_path: Union[str, Path],
41
- mask_path: Union[str, Path],
42
- bet_image_path: Union[str, Path],
43
- ) -> None:
44
- """
45
- Apply a brain mask to an input image.
46
-
47
- Args:
48
- input_image_path (str or Path): Path to the input image (NIfTI format).
49
- mask_path (str or Path): Path to the brain mask image (NIfTI format).
50
- bet_image_path (str or Path): Path to save the resulting masked image (NIfTI format).
51
- """
52
-
53
- try:
54
- # Read data
55
- input_data = read_image(str(input_image_path))
56
- mask_data = read_image(str(mask_path))
57
- except FileNotFoundError as e:
58
- raise FileNotFoundError(f"File not found: {e.filename}") from e
59
- except Exception as e:
60
- raise RuntimeError(f"Error reading files: {e}") from e
61
-
62
- # Check that the input and mask have the same shape
63
- if input_data.shape != mask_data.shape:
64
- raise ValueError("Input image and mask must have the same dimensions.")
65
-
66
- # Mask and save it
67
- masked_data = input_data * mask_data
68
-
69
- try:
70
- write_image(
71
- input_array=masked_data,
72
- output_path=str(bet_image_path),
73
- reference_path=str(input_image_path),
74
- create_parent_directory=True,
75
- )
76
- except Exception as e:
77
- raise RuntimeError(f"Error writing output file: {e}") from e
78
-
79
-
80
15
  class HDBetExtractor(BrainExtractor):
81
16
  def extract(
82
17
  self,
@@ -22,20 +22,20 @@ class Defacer(ABC):
22
22
  # probably be implemented as a property of the the specific modality
23
23
  self.masking_value = masking_value
24
24
 
25
- @abstractmethod
26
- def deface(
27
- self,
28
- input_image_path: Union[str, Path],
29
- mask_image_path: Union[str, Path],
30
- ) -> None:
31
- """
32
- Generate a defacing mask provided an input image.
25
+ @abstractmethod
26
+ def deface(
27
+ self,
28
+ input_image_path: Union[str, Path],
29
+ mask_image_path: Union[str, Path],
30
+ ) -> None:
31
+ """
32
+ Generate a defacing mask provided an input image.
33
33
 
34
- Args:
35
- input_image_path (str or Path): Path to the input image (NIfTI format).
36
- mask_image_path (str or Path): Path to the output mask image (NIfTI format).
37
- """
38
- pass
34
+ Args:
35
+ input_image_path (str or Path): Path to the input image (NIfTI format).
36
+ mask_image_path (str or Path): Path to save the output mask image (NIfTI format).
37
+ """
38
+ pass
39
39
 
40
40
  def apply_mask(
41
41
  self,
@@ -52,6 +52,9 @@ class Defacer(ABC):
52
52
  defaced_image_path (str or Path): Path to save the resulting defaced image (NIfTI format).
53
53
  """
54
54
 
55
+ input_image_path = Path(input_image_path)
56
+ mask_path = Path(mask_path)
57
+
55
58
  if not input_image_path.is_file():
56
59
  raise FileNotFoundError(
57
60
  f"Input image file does not exist: {input_image_path}"
@@ -72,7 +75,7 @@ class Defacer(ABC):
72
75
  if input_data.shape != mask_data.shape:
73
76
  raise ValueError("Input image and mask must have the same dimensions.")
74
77
 
75
- # check whether a global masking value was passed, otherwise choose minimum
78
+ # Check whether a global masking value was passed, otherwise choose minimum
76
79
  if self.masking_value is None:
77
80
  current_masking_value = np.min(input_data)
78
81
  else:
@@ -11,6 +11,7 @@ import sys
11
11
  import nibabel as nb
12
12
  import numpy as np
13
13
  from numpy.typing import NDArray
14
+ from scipy.ndimage import convolve
14
15
 
15
16
  try:
16
17
  from duecredit import BibTeX, due
@@ -83,14 +84,9 @@ def edge_mask(mask):
83
84
  brain = mask.any(axis=0)
84
85
 
85
86
  # Simple edge detection
86
- edgemask = (
87
- 4 * brain
88
- - np.roll(brain, 1, 0)
89
- - np.roll(brain, -1, 0)
90
- - np.roll(brain, 1, 1)
91
- - np.roll(brain, -1, 1)
92
- != 0
93
- )
87
+ kernel = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]])
88
+ edgemask = convolve(brain, kernel, mode="constant", cval=0.0) != 0
89
+
94
90
  return edgemask.astype("uint8")
95
91
 
96
92
 
@@ -11,10 +11,8 @@ from typing import List, Optional, Union
11
11
 
12
12
  from loguru import logger
13
13
 
14
- from brainles_preprocessing.brain_extraction.brain_extractor import (
15
- BrainExtractor,
16
- HDBetExtractor,
17
- )
14
+ from brainles_preprocessing.brain_extraction.brain_extractor import BrainExtractor
15
+ from brainles_preprocessing.brain_extraction.hd_bet import HDBetExtractor
18
16
  from brainles_preprocessing.constants import PreprocessorSteps
19
17
  from brainles_preprocessing.defacing import Defacer, QuickshearDefacer
20
18
  from brainles_preprocessing.modality import CenterModality, Modality
@@ -1,6 +1,5 @@
1
1
  import warnings
2
2
 
3
-
4
3
  try:
5
4
  from .ANTs.ANTs import ANTsRegistrator
6
5
  except ImportError:
@@ -11,7 +10,6 @@ except ImportError:
11
10
 
12
11
  from .niftyreg.niftyreg import NiftyRegRegistrator
13
12
 
14
-
15
13
  try:
16
14
  from .elastix.elastix import ElastixRegistrator
17
15
  except ImportError:
@@ -4,7 +4,7 @@ import shutil
4
4
  import zipfile
5
5
  from io import BytesIO
6
6
  from pathlib import Path
7
- from typing import Dict, List, Tuple
7
+ from typing import ClassVar, Dict, List, Tuple
8
8
 
9
9
  import requests
10
10
  from loguru import logger
@@ -56,6 +56,9 @@ class ZenodoException(Exception):
56
56
  class ZenodoRecord:
57
57
  BASE_URL = "https://zenodo.org/api/records"
58
58
 
59
+ # Process-level cache: maps (record_id, target_dir) -> resolved Path
60
+ _cache: ClassVar[Dict[Tuple[str, str], Path]] = {}
61
+
59
62
  def __init__(
60
63
  self,
61
64
  record_id: str,
@@ -66,8 +69,34 @@ class ZenodoRecord:
66
69
  self.target_dir = target_dir
67
70
  self.label = label
68
71
 
72
+ @classmethod
73
+ def clear_cache(cls) -> None:
74
+ """Clear the process-level fetch cache. Primarily intended for testing."""
75
+ cls._cache.clear()
76
+
77
+ def _cache_key(self) -> Tuple[str, str]:
78
+ return (self.record_id, str(self.target_dir))
79
+
69
80
  def fetch(self) -> Path:
70
- """Fetch the latest version of the record from Zenodo or from local storage."""
81
+ """Fetch the latest version of the record from Zenodo or from local storage.
82
+
83
+ Results are cached for the lifetime of the process so that repeated calls
84
+ (e.g. when processing many subjects in a loop) do not trigger redundant
85
+ Zenodo API requests.
86
+ """
87
+ key = self._cache_key()
88
+
89
+ cached = ZenodoRecord._cache.get(key)
90
+ if cached is not None:
91
+ logger.debug(f"Using cached {self.label} path: {cached}")
92
+ return cached
93
+
94
+ result = self._fetch_uncached()
95
+ ZenodoRecord._cache[key] = result
96
+ return result
97
+
98
+ def _fetch_uncached(self) -> Path:
99
+ """Perform the actual Zenodo check / download without consulting the cache."""
71
100
  zenodo_response = self._get_metadata_and_archive_url()
72
101
 
73
102
  pattern = self._glob_pattern()
@@ -14,7 +14,7 @@ exclude = [
14
14
  ]
15
15
 
16
16
  name = "brainles_preprocessing"
17
- version = "0.6.9" # will be overwritten by poetry-dynamic-versioning but needs to be set
17
+ version = "0.6.11" # will be overwritten by poetry-dynamic-versioning but needs to be set
18
18
  description = "Tool for preprocessing tasks in biomedical imaging, with a focus on (but not limited to) multi-modal brain MRI"
19
19
  license = "Apache-2.0"
20
20
 
@@ -1 +0,0 @@
1
- from .brain_extractor import HDBetExtractor