|
38 | 38 |
|
39 | 39 | def init_register_template_wf(
|
40 | 40 | *,
|
41 |
| - sloppy, |
42 |
| - omp_nthreads, |
43 |
| - templates, |
| 41 | + sloppy: bool, |
| 42 | + omp_nthreads: int, |
| 43 | + templates: list[str], |
| 44 | + image_type: str = 'T1w', |
44 | 45 | name='register_template_wf',
|
45 | 46 | ):
|
46 | 47 | """
|
@@ -89,6 +90,8 @@ def init_register_template_wf(
|
89 | 90 | input domain to enable standardization of lesioned brains.
|
90 | 91 | template
|
91 | 92 | Template name and specification
|
| 93 | + image_type |
| 94 | + Moving image modality |
92 | 95 |
|
93 | 96 | Outputs
|
94 | 97 | -------
|
@@ -170,6 +173,15 @@ def init_register_template_wf(
|
170 | 173 | run_without_submitting=True,
|
171 | 174 | )
|
172 | 175 |
|
| 176 | + set_reference = pe.Node( |
| 177 | + niu.Function( |
| 178 | + function=_set_reference, |
| 179 | + output_names=['reference_type', 'use_histogram_matching'], |
| 180 | + ), |
| 181 | + name='set_reference', |
| 182 | + ) |
| 183 | + set_reference.inputs.image_type = image_type |
| 184 | + |
173 | 185 | # With the improvements from nipreps/niworkflows#342 this truncation is now necessary
|
174 | 186 | trunc_mov = pe.Node(
|
175 | 187 | ants.ImageMath(operation='TruncateImageIntensity', op2='0.01 0.999 256'),
|
@@ -203,6 +215,14 @@ def init_register_template_wf(
|
203 | 215 | ('name', 'template'),
|
204 | 216 | ('spec', 'template_spec'),
|
205 | 217 | ]),
|
| 218 | + (tf_select, set_reference, [ |
| 219 | + ('t1w_file', 'template_t1w'), |
| 220 | + ('t2w_file', 'template_t2w'), |
| 221 | + ]) |
| 222 | + (set_reference, registration, [ |
| 223 | + ('reference_type', 'reference'), |
| 224 | + ('use_histogram_matching', 'use_histogram_matching'), |
| 225 | + ]) |
206 | 226 | (split_desc, registration, [
|
207 | 227 | ('name', 'template'),
|
208 | 228 | ('spec', 'template_spec'),
|
@@ -243,3 +263,27 @@ def _fmt_cohort(template, spec):
|
243 | 263 | if cohort is not None:
|
244 | 264 | template = f'{template}:cohort-{cohort}'
|
245 | 265 | return template, spec
|
| 266 | + |
| 267 | + |
| 268 | +def _set_reference(image_type, template_t1w, template_t2w): |
| 269 | + """ |
| 270 | + Determine the normalization reference and whether histogram matching will be used. |
| 271 | +
|
| 272 | + Parameters |
| 273 | + ---------- |
| 274 | + image_type : MR image type of anatomical reference (T1w, T2w) |
| 275 | + template_t1w : T1w file |
| 276 | + template_t2w : T2w file or undefined |
| 277 | +
|
| 278 | + Returns |
| 279 | + ------- |
| 280 | + reference_type : modality of template reference (T1w, T2w) |
| 281 | + histogram_matching : False when image_type does not match reference image, otherwise Undefined |
| 282 | + """ |
| 283 | + from nipype.interfaces.base import Undefined |
| 284 | + |
| 285 | + if image_type == 'T2w': |
| 286 | + if template_t2w: |
| 287 | + return 'T2w', Undefined |
| 288 | + return 'T1w', False |
| 289 | + return 'T1w', Undefined |
0 commit comments