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.
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/PKG-INFO +18 -3
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/README.md +17 -1
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/constants.py +3 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/quickshear/quickshear.py +11 -1
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/modality.py +89 -70
- brainles_preprocessing-0.6.0/brainles_preprocessing/preprocessor/__init__.py +15 -0
- brainles_preprocessing-0.5.0/brainles_preprocessing/preprocessor.py → brainles_preprocessing-0.6.0/brainles_preprocessing/preprocessor/atlas_centric_preprocessor.py +19 -303
- brainles_preprocessing-0.6.0/brainles_preprocessing/preprocessor/native_space_preprocessor.py +200 -0
- brainles_preprocessing-0.6.0/brainles_preprocessing/preprocessor/preprocessor.py +355 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/ANTs/ANTs.py +1 -1
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg.py +4 -2
- brainles_preprocessing-0.6.0/brainles_preprocessing/utils/citation_reminder.py +41 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/pyproject.toml +2 -2
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/LICENSE +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brain_extraction/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brain_extraction/brain_extractor.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brats/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brats/t1_centric.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/brats/t1c_centric.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/cli.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/defacer.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/quickshear/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/defacing/quickshear/nipy_quickshear.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/n4_bias_correction/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/n4_bias_correction/n4_bias_corrector.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/n4_bias_correction/sitk/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/n4_bias_correction/sitk/sitk_n4_bias_corrector.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/normalization/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/normalization/normalizer_base.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/normalization/percentile_normalizer.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/normalization/windowing_normalizer.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/ANTs/TODO_ANTs_parameters.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/ANTs/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/elastix/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/elastix/elastix.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/greedy/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/greedy/greedy.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_aladin +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_resample +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/rigid_reg.sh +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/transform.sh +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/registration/registrator.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/transform.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/utils/__init__.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/utils/generic.py +0 -0
- {brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/utils/logging_utils.py +0 -0
- {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.
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
{brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/constants.py
RENAMED
|
@@ -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__(
|
|
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,
|
{brainles_preprocessing-0.5.0 → brainles_preprocessing-0.6.0}/brainles_preprocessing/modality.py
RENAMED
|
@@ -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"
|
|
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"
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
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
|
-
|
|
436
|
-
mask_path = bet_dir_path / f"
|
|
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=
|
|
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] =
|
|
460
|
+
self.steps[PreprocessorSteps.BET] = bet
|
|
448
461
|
|
|
449
462
|
if self.bet:
|
|
450
|
-
self.current =
|
|
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
|
-
|
|
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
|
-
|
|
471
|
-
"
|
|
472
|
-
|
|
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
|
-
|
|
628
|
-
mask_path = bet_dir_path / f"
|
|
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=
|
|
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] =
|
|
630
|
+
self.steps[PreprocessorSteps.BET] = bet
|
|
644
631
|
|
|
645
632
|
if self.bet:
|
|
646
|
-
self.current =
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
672
|
-
|
|
673
|
-
|
|
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
|
|
677
|
-
logger.
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
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
|
|
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)
|