brainles-preprocessing 0.6.10__tar.gz → 0.6.12__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.6.10 → brainles_preprocessing-0.6.12}/PKG-INFO +1 -1
- brainles_preprocessing-0.6.12/brainles_preprocessing/brain_extraction/__init__.py +6 -0
- brainles_preprocessing-0.6.12/brainles_preprocessing/brain_extraction/brain_extractor.py +69 -0
- brainles_preprocessing-0.6.10/brainles_preprocessing/brain_extraction/brain_extractor.py → brainles_preprocessing-0.6.12/brainles_preprocessing/brain_extraction/hd_bet.py +2 -67
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/cli.py +5 -2
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/preprocessor/preprocessor.py +2 -4
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/utils/zenodo.py +31 -2
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/pyproject.toml +1 -1
- brainles_preprocessing-0.6.10/brainles_preprocessing/brain_extraction/__init__.py +0 -1
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/LICENSE +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/README.md +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/brain_extraction/synthstrip.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/brats/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/brats/t1_centric.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/brats/t1c_centric.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/constants.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/defacing/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/defacing/defacer.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/defacing/quickshear/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/defacing/quickshear/nipy_quickshear.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/defacing/quickshear/quickshear.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/modality.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/n4_bias_correction/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/n4_bias_correction/n4_bias_corrector.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/n4_bias_correction/sitk/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/n4_bias_correction/sitk/sitk_n4_bias_corrector.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/normalization/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/normalization/normalizer_base.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/normalization/percentile_normalizer.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/normalization/windowing_normalizer.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/preprocessor/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/preprocessor/atlas_centric_preprocessor.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/preprocessor/native_space_preprocessor.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/ANTs/ANTs.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/ANTs/TODO_ANTs_parameters.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/ANTs/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/elastix/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/elastix/elastix.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/greedy/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/greedy/greedy.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/groupwise_niftyreg_params.sh +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/groupwise_niftyreg_run.sh +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_aladin +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_average +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_f3d +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_jacobian +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_measure +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_resample +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_tools +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/bin/reg_transform +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/AffineDeformationFieldKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/AladinContent.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/BlockMatchingKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUAffineDeformationFieldKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUBlockMatchingKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUConvolutionKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUKernelFactory.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUOptimiseKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/CPUResampleImageKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/ConvolutionKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/Kernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/KernelFactory.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/OptimiseKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/Platform.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/ResampleImageKernel.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ReadWriteImage.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ReadWriteMatrix.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin.cpp +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin_sym.cpp +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_aladin_sym.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_base.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_blockMatching.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_dti.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d2.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_f3d_sym.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_femTrans.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_globalTrans.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_kld.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_lncc.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans_jac.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_localTrans_regul.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_macros.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_maths.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_maths_eigen.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_measure.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_mind.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_nmi.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_optimiser.cpp +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_optimiser.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_resampling.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_splineBasis.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_ssd.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_stringFormat.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/_reg_tools.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/nifti1.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/nifti1_io.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/png.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngconf.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngdebug.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pnginfo.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pnglibconf.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngpriv.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/pngstruct.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/readpng.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/reg_png.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/zlib.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/znzlib.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/niftyreg_1.5.68/include/zutil.h +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_aladin +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/reg_resample +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/rigid_reg.sh +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/niftyreg/niftyreg_scripts/transform.sh +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/registration/registrator.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/transform.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/utils/__init__.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/utils/citation_reminder.py +0 -0
- {brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/utils/generic.py +0 -0
|
@@ -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
|
|
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,
|
{brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/cli.py
RENAMED
|
@@ -59,11 +59,15 @@ def main(
|
|
|
59
59
|
),
|
|
60
60
|
],
|
|
61
61
|
output_dir: Annotated[
|
|
62
|
-
|
|
62
|
+
Path,
|
|
63
63
|
typer.Option(
|
|
64
64
|
"-o",
|
|
65
65
|
"--output_dir",
|
|
66
66
|
help="The path to the output directory",
|
|
67
|
+
exists=False,
|
|
68
|
+
file_okay=False,
|
|
69
|
+
dir_okay=True,
|
|
70
|
+
resolve_path=True,
|
|
67
71
|
),
|
|
68
72
|
],
|
|
69
73
|
input_atlas: Annotated[
|
|
@@ -89,7 +93,6 @@ def main(
|
|
|
89
93
|
Preprocess the input images according to the BraTS protocol.
|
|
90
94
|
"""
|
|
91
95
|
|
|
92
|
-
output_dir = Path(output_dir)
|
|
93
96
|
output_dir.mkdir(parents=True, exist_ok=True)
|
|
94
97
|
|
|
95
98
|
# specify a normalizer
|
|
@@ -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
|
-
|
|
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
|
|
@@ -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.
|
|
17
|
+
version = "0.6.12" # 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
|
|
File without changes
|
|
File without changes
|
{brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/modality.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainles_preprocessing-0.6.10 → brainles_preprocessing-0.6.12}/brainles_preprocessing/transform.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|