junifer 0.0.6.dev344__py3-none-any.whl → 0.0.6.dev349__py3-none-any.whl
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.
- junifer/_version.py +2 -2
- junifer/data/masks/_masks.py +69 -20
- {junifer-0.0.6.dev344.dist-info → junifer-0.0.6.dev349.dist-info}/METADATA +1 -1
- {junifer-0.0.6.dev344.dist-info → junifer-0.0.6.dev349.dist-info}/RECORD +9 -9
- {junifer-0.0.6.dev344.dist-info → junifer-0.0.6.dev349.dist-info}/AUTHORS.rst +0 -0
- {junifer-0.0.6.dev344.dist-info → junifer-0.0.6.dev349.dist-info}/LICENSE.md +0 -0
- {junifer-0.0.6.dev344.dist-info → junifer-0.0.6.dev349.dist-info}/WHEEL +0 -0
- {junifer-0.0.6.dev344.dist-info → junifer-0.0.6.dev349.dist-info}/entry_points.txt +0 -0
- {junifer-0.0.6.dev344.dist-info → junifer-0.0.6.dev349.dist-info}/top_level.txt +0 -0
junifer/_version.py
CHANGED
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '0.0.6.
|
16
|
-
__version_tuple__ = version_tuple = (0, 0, 6, '
|
15
|
+
__version__ = version = '0.0.6.dev349'
|
16
|
+
__version_tuple__ = version_tuple = (0, 0, 6, 'dev349')
|
junifer/data/masks/_masks.py
CHANGED
@@ -47,6 +47,8 @@ def compute_brain_mask(
|
|
47
47
|
warp_data: Optional[dict[str, Any]] = None,
|
48
48
|
mask_type: str = "brain",
|
49
49
|
threshold: float = 0.5,
|
50
|
+
source: str = "template",
|
51
|
+
extra_input: Optional[dict[str, Any]] = None,
|
50
52
|
) -> "Nifti1Image":
|
51
53
|
"""Compute the whole-brain, grey-matter or white-matter mask.
|
52
54
|
|
@@ -72,6 +74,13 @@ def compute_brain_mask(
|
|
72
74
|
(default "brain").
|
73
75
|
threshold : float, optional
|
74
76
|
The value under which the template is cut off (default 0.5).
|
77
|
+
source : {"subject", "template"}, optional
|
78
|
+
The source of the mask. If "subject", the mask is computed from the
|
79
|
+
subject's data (``VBM_GM`` or ``VBM_WM``). If "template", the mask is
|
80
|
+
computed from the template data (default "template").
|
81
|
+
extra_input : dict, optional
|
82
|
+
The other fields in the data object. Useful for accessing other data
|
83
|
+
types (default None).
|
75
84
|
|
76
85
|
Returns
|
77
86
|
-------
|
@@ -82,7 +91,13 @@ def compute_brain_mask(
|
|
82
91
|
------
|
83
92
|
ValueError
|
84
93
|
If ``mask_type`` is invalid or
|
85
|
-
if ``
|
94
|
+
if ``source`` is invalid or
|
95
|
+
if ``source="subject"`` and ``mask_type`` is invalid or
|
96
|
+
if ``warp_data`` is None when ``target_data``'s space is native or
|
97
|
+
if ``extra_input`` is None when ``source="subject"`` or
|
98
|
+
if ``VBM_GM`` or ``VBM_WM`` data types are not in ``extra_input``
|
99
|
+
when ``source="subject"`` and ``mask_type`` is ``"gm"`` or ``"wm"``
|
100
|
+
respectively.
|
86
101
|
|
87
102
|
"""
|
88
103
|
logger.debug(f"Computing {mask_type} mask")
|
@@ -90,6 +105,12 @@ def compute_brain_mask(
|
|
90
105
|
if mask_type not in ["brain", "gm", "wm"]:
|
91
106
|
raise_error(f"Unknown mask type: {mask_type}")
|
92
107
|
|
108
|
+
if source not in ["subject", "template"]:
|
109
|
+
raise_error(f"Unknown mask source: {source}")
|
110
|
+
|
111
|
+
if source == "subject" and mask_type not in ["gm", "wm"]:
|
112
|
+
raise_error(f"Unknown mask type: {mask_type} for subject space")
|
113
|
+
|
93
114
|
# Check pre-requirements for space manipulation
|
94
115
|
if target_data["space"] == "native":
|
95
116
|
# Warp data check
|
@@ -101,25 +122,50 @@ def compute_brain_mask(
|
|
101
122
|
# Set space to fetch template using
|
102
123
|
target_std_space = target_data["space"]
|
103
124
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
125
|
+
if source == "subject":
|
126
|
+
key = f"VBM_{mask_type.upper()}"
|
127
|
+
# Check for extra inputs
|
128
|
+
if extra_input is None:
|
129
|
+
raise_error(
|
130
|
+
f"No extra input provided, requires `{key}` "
|
131
|
+
"data type to infer target template data and space."
|
132
|
+
)
|
133
|
+
# Check for missing data type
|
134
|
+
if key not in extra_input:
|
135
|
+
raise_error(
|
136
|
+
f"Cannot compute {mask_type} from subject's data. "
|
137
|
+
f"Missing {key} in extra input."
|
138
|
+
)
|
139
|
+
template = extra_input[key]["data"]
|
140
|
+
template_space = extra_input[key]["space"]
|
141
|
+
else:
|
142
|
+
# Fetch template in closest resolution
|
143
|
+
template = get_template(
|
144
|
+
space=target_std_space,
|
145
|
+
target_img=target_data["data"],
|
146
|
+
extra_input=None,
|
147
|
+
template_type=mask_type,
|
122
148
|
)
|
149
|
+
template_space = target_std_space
|
150
|
+
# Resample and warp template if target space is native
|
151
|
+
if target_data["space"] == "native" and template_space != "native":
|
152
|
+
if warp_data["warper"] == "fsl":
|
153
|
+
resampled_template = FSLMaskWarper().warp(
|
154
|
+
mask_name=f"template_{target_std_space}_for_compute_brain_mask",
|
155
|
+
mask_img=template,
|
156
|
+
target_data=target_data,
|
157
|
+
warp_data=warp_data,
|
158
|
+
)
|
159
|
+
elif warp_data["warper"] == "ants":
|
160
|
+
resampled_template = ANTsMaskWarper().warp(
|
161
|
+
mask_name=f"template_{target_std_space}_for_compute_brain_mask",
|
162
|
+
# use template here
|
163
|
+
mask_img=template,
|
164
|
+
src=target_std_space,
|
165
|
+
dst="native",
|
166
|
+
target_data=target_data,
|
167
|
+
warp_data=warp_data,
|
168
|
+
)
|
123
169
|
# Resample template to target image
|
124
170
|
else:
|
125
171
|
resampled_template = resample_to_img(
|
@@ -503,7 +549,10 @@ class MaskRegistry(BasePipelineDataRegistry, metaclass=Singleton):
|
|
503
549
|
# custom compute_brain_mask
|
504
550
|
elif mask_name == "compute_brain_mask":
|
505
551
|
mask_img = mask_object(
|
506
|
-
target_data,
|
552
|
+
target_data=target_data,
|
553
|
+
warp_data=warper_spec,
|
554
|
+
extra_input=extra_input,
|
555
|
+
**mask_params,
|
507
556
|
)
|
508
557
|
# custom registered; arm kept for clarity
|
509
558
|
else:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.6.
|
3
|
+
Version: 0.0.6.dev349
|
4
4
|
Summary: JUelich NeuroImaging FEature extractoR
|
5
5
|
Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
|
6
6
|
Maintainer-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
junifer/__init__.py,sha256=2McgH1yNue6Z1V26-uN_mfMjbTcx4CLhym-DMBl5xA4,266
|
2
2
|
junifer/__init__.pyi,sha256=SsTvgq2Dod6UqJN96GH1lCphH6hJQQurEJHGNhHjGUI,508
|
3
|
-
junifer/_version.py,sha256=
|
3
|
+
junifer/_version.py,sha256=aHBrRVpok6-bqJl1ZQ6KAqY2zMxvhfYBv8BAfrUa6tE,428
|
4
4
|
junifer/conftest.py,sha256=PWYkkRDU8ly2lYwv7VBKMHje4et6HX7Yey3Md_I2KbA,613
|
5
5
|
junifer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
junifer/stats.py,sha256=e9aaagMGtgpRfW3Wdpz9ocpnYld1IWylCDcjFUgX9Mk,6225
|
@@ -106,7 +106,7 @@ junifer/data/masks/__init__.py,sha256=eEEhHglyVEx1LrqwXjq3cOmjf4sTsgBstRx5-k7zIQ
|
|
106
106
|
junifer/data/masks/__init__.pyi,sha256=lcgr8gmWDPibC4RxnWBXb8DDpIkO73Aax09u6VXiJJI,114
|
107
107
|
junifer/data/masks/_ants_mask_warper.py,sha256=Mwgc2_ZMf28vS_-fviRvZnHyT7JoQ1cQLozo7nUZSyM,5350
|
108
108
|
junifer/data/masks/_fsl_mask_warper.py,sha256=VApp-ofGBKePNmCdgTg1HoEA66lMQiAPT0ihkhB2ezY,2415
|
109
|
-
junifer/data/masks/_masks.py,sha256=
|
109
|
+
junifer/data/masks/_masks.py,sha256=8w-J-ZBKuik99gk9tYHntbmanpx_Mbu9oUujzxO7y1w,25874
|
110
110
|
junifer/data/masks/tests/test_masks.py,sha256=W0bzRB5Bp-iGO44VtEmaf7BuT-joe_2tQI0lma5NQHA,16090
|
111
111
|
junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz,sha256=jcX1pDOrDsoph8cPMNFVKH5gZYio5G4rJNpOFXm9wJI,946636
|
112
112
|
junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz,sha256=j6EY8EtRnUuRxeKgD65Q6B0GPEPIALKDJEIje1TfnAU,88270
|
@@ -341,10 +341,10 @@ junifer/utils/tests/test_config.py,sha256=7ltIXuwb_W4Mv_1dxQWyiyM10XgUAfsWKV6D_i
|
|
341
341
|
junifer/utils/tests/test_fs.py,sha256=WQS7cKlKEZ742CIuiOYYpueeAhY9PqlastfDVpVVtvE,923
|
342
342
|
junifer/utils/tests/test_helpers.py,sha256=k5qqfxK8dFyuewTJyR1Qn6-nFaYNuVr0ysc18bfPjyU,929
|
343
343
|
junifer/utils/tests/test_logging.py,sha256=duO4ou365hxwa_kwihFtKPLaL6LC5XHiyhOijrrngbA,8009
|
344
|
-
junifer-0.0.6.
|
345
|
-
junifer-0.0.6.
|
346
|
-
junifer-0.0.6.
|
347
|
-
junifer-0.0.6.
|
348
|
-
junifer-0.0.6.
|
349
|
-
junifer-0.0.6.
|
350
|
-
junifer-0.0.6.
|
344
|
+
junifer-0.0.6.dev349.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
|
345
|
+
junifer-0.0.6.dev349.dist-info/LICENSE.md,sha256=MqCnOBu8uXsEOzRZWh9EBVfVz-kE9NkXcLCrtGXo2yU,34354
|
346
|
+
junifer-0.0.6.dev349.dist-info/METADATA,sha256=rzDvV7h-fyKVUrFJWcNNyC6UFs-Y1fXs-7xT6loyXKs,8429
|
347
|
+
junifer-0.0.6.dev349.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
348
|
+
junifer-0.0.6.dev349.dist-info/entry_points.txt,sha256=6O8ru0BP-SP7YMUZiizFNoaZ2HvJpadO2G7nKk4PwjI,48
|
349
|
+
junifer-0.0.6.dev349.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
|
350
|
+
junifer-0.0.6.dev349.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|