Skip to content

Commit 0f4ab11

Browse files
max_index (#312)
* max_index * use_T2 error in prepare * if erode/dilate else gcc only * using stereoINT template for marmo
1 parent 50aa8e5 commit 0f4ab11

9 files changed

Lines changed: 413 additions & 186 deletions

macapype/nodes/correct_bias.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,4 +258,4 @@ def itk_debias(img_file):
258258
mask_img_file = os.path.abspath(fname + "_mask" + ext)
259259
sitk.WriteImage(input_image_mask, mask_img_file)
260260

261-
return cor_img_file, bias_img_file
261+
return cor_img_file, bias_img_file, mask_img_file

macapype/nodes/prepare.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ def _list_outputs(self):
273273

274274
###############################################################################
275275
# Equivalent of flirt_average in FSL
276-
def average_align(list_img, reorient=False):
276+
def average_align(list_img, reorient=False, max_index=None):
277277

278278
import os
279279
import nibabel as nib
@@ -299,7 +299,16 @@ def average_align(list_img, reorient=False):
299299
data_0_shape = data_0.shape
300300
list_data = [data_0]
301301

302-
for i, img in enumerate(list_img[1:]):
302+
if max_index is not None:
303+
assert max_index < len(list_img), f"Error with {max_index=}"
304+
305+
for i, img in enumerate(list_img[1:], 1):
306+
307+
if max_index is not None:
308+
if i > max_index:
309+
print(f"Iter {i=} higher than {max_index=}")
310+
continue
311+
303312
data_orig_shape = nib.load(img).get_fdata().shape
304313
if data_orig_shape != data_0_shape:
305314
print(f"**** Warning , original image shape \

macapype/pipelines/prepare.py

Lines changed: 92 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -588,13 +588,25 @@ def create_short_preparation_pipe(params, params_template={},
588588
N4debias_T2, "indiv_params")
589589

590590
# outputnode
591-
data_preparation_pipe.connect(
592-
N4debias_T1, "output_image",
593-
outputnode, "stereo_debiased_T1")
591+
if "use_T2" in params.keys():
594592

595-
data_preparation_pipe.connect(
596-
N4debias_T2, "output_image",
597-
outputnode, "stereo_debiased_T2")
593+
data_preparation_pipe.connect(
594+
N4debias_T1, "output_image",
595+
outputnode, "stereo_debiased_T2")
596+
597+
data_preparation_pipe.connect(
598+
N4debias_T2, "output_image",
599+
outputnode, "stereo_debiased_T1")
600+
601+
else:
602+
603+
data_preparation_pipe.connect(
604+
N4debias_T1, "output_image",
605+
outputnode, "stereo_debiased_T1")
606+
607+
data_preparation_pipe.connect(
608+
N4debias_T2, "output_image",
609+
outputnode, "stereo_debiased_T2")
598610

599611
elif "fast" in params.keys():
600612

@@ -647,13 +659,26 @@ def create_short_preparation_pipe(params, params_template={},
647659
fast_T2, "indiv_params")
648660

649661
# outputnode
650-
data_preparation_pipe.connect(
651-
fast_T1, "restored_image",
652-
outputnode, "stereo_debiased_T1")
653662

654-
data_preparation_pipe.connect(
655-
fast_T2, "restored_image",
656-
outputnode, "stereo_debiased_T2")
663+
if "use_T2" in params.keys():
664+
665+
data_preparation_pipe.connect(
666+
fast_T1, "restored_image",
667+
outputnode, "stereo_debiased_T2")
668+
669+
data_preparation_pipe.connect(
670+
fast_T2, "restored_image",
671+
outputnode, "stereo_debiased_T1")
672+
673+
else:
674+
675+
data_preparation_pipe.connect(
676+
fast_T1, "restored_image",
677+
outputnode, "stereo_debiased_T1")
678+
679+
data_preparation_pipe.connect(
680+
fast_T2, "restored_image",
681+
outputnode, "stereo_debiased_T2")
657682

658683
elif "itk_debias" in params:
659684

@@ -663,7 +688,7 @@ def create_short_preparation_pipe(params, params_template={},
663688
itk_debias_T1 = NodeParams(
664689
interface=niu.Function(
665690
input_names=["img_file"],
666-
output_names=["cor_img_file", "bias_img_file"],
691+
output_names=["cor_img_file", "bias_img_file", "mask_file"],
667692
function=itk_debias),
668693
params=parse_key(params, "itk_debias"),
669694
name='itk_debias_T1')
@@ -681,7 +706,7 @@ def create_short_preparation_pipe(params, params_template={},
681706
itk_debias_T2 = NodeParams(
682707
interface=niu.Function(
683708
input_names=["img_file"],
684-
output_names=["cor_img_file", "bias_img_file"],
709+
output_names=["cor_img_file", "bias_img_file", "mask_file"],
685710
function=itk_debias),
686711
params=parse_key(params, "itk_debias"),
687712
name='itk_debias_T2')
@@ -696,34 +721,72 @@ def create_short_preparation_pipe(params, params_template={},
696721
itk_debias_T2, "img_file")
697722

698723
# outputnode
699-
data_preparation_pipe.connect(
700-
itk_debias_T1, "cor_img_file",
701-
outputnode, "stereo_debiased_T1")
702724

703-
data_preparation_pipe.connect(
704-
itk_debias_T2, "cor_img_file",
705-
outputnode, "stereo_debiased_T2")
725+
if "use_T2" in params.keys():
706726

707-
else:
708-
print("No debias will be performed before extract_pipe")
727+
data_preparation_pipe.connect(
728+
itk_debias_T1, "cor_img_file",
729+
outputnode, "stereo_debiased_T2")
709730

710-
if "denoise" in params.keys():
711731
data_preparation_pipe.connect(
712-
denoise_T1, "output_image",
732+
itk_debias_T2, "cor_img_file",
713733
outputnode, "stereo_debiased_T1")
714734

715-
data_preparation_pipe.connect(
716-
denoise_T2, "output_image",
717-
outputnode, "stereo_debiased_T2")
718735
else:
736+
719737
data_preparation_pipe.connect(
720-
crop_aladin_pipe, "outputnode.stereo_T1",
738+
itk_debias_T1, "cor_img_file",
721739
outputnode, "stereo_debiased_T1")
722740

723741
data_preparation_pipe.connect(
724-
apply_crop_aladin_T2, 'out_file',
742+
itk_debias_T2, "cor_img_file",
725743
outputnode, "stereo_debiased_T2")
726744

745+
else:
746+
print("No debias will be performed before extract_pipe")
747+
748+
if "denoise" in params.keys():
749+
750+
if "use_T2" in params.keys():
751+
752+
data_preparation_pipe.connect(
753+
denoise_T1, "output_image",
754+
outputnode, "stereo_debiased_T2")
755+
756+
data_preparation_pipe.connect(
757+
denoise_T2, "output_image",
758+
outputnode, "stereo_debiased_T1")
759+
else:
760+
761+
data_preparation_pipe.connect(
762+
denoise_T1, "output_image",
763+
outputnode, "stereo_debiased_T1")
764+
765+
data_preparation_pipe.connect(
766+
denoise_T2, "output_image",
767+
outputnode, "stereo_debiased_T2")
768+
769+
else:
770+
771+
if "use_T2" in params.keys():
772+
773+
data_preparation_pipe.connect(
774+
crop_aladin_pipe, "outputnode.stereo_T1",
775+
outputnode, "stereo_debiased_T2")
776+
777+
data_preparation_pipe.connect(
778+
apply_crop_aladin_T2, 'out_file',
779+
outputnode, "stereo_debiased_T1")
780+
else:
781+
782+
data_preparation_pipe.connect(
783+
crop_aladin_pipe, "outputnode.stereo_T1",
784+
outputnode, "stereo_debiased_T1")
785+
786+
data_preparation_pipe.connect(
787+
apply_crop_aladin_T2, 'out_file',
788+
outputnode, "stereo_debiased_T2")
789+
727790
# resample T1 to higher dimension
728791
if "pad_template" in params.keys():
729792

macapype/pipelines/segment.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -375,16 +375,6 @@ def create_segment_atropos_pipe(params={}, name="segment_atropos_pipe"):
375375

376376
seg_at.inputs.prior_weight = params["use_priors"]
377377

378-
# split dseg_mask
379-
split_dseg_mask = pe.Node(
380-
interface=niu.Function(input_names=["nii_file"],
381-
output_names=["list_split_files"],
382-
function=split_indexed_mask),
383-
name="split_dseg_mask")
384-
385-
segment_pipe.connect(seg_at, 'segmented_file',
386-
split_dseg_mask, "nii_file")
387-
388378
# on segmentation indexed mask (with labels)
389379
outputnode = pe.Node(
390380
niu.IdentityInterface(
@@ -396,6 +386,16 @@ def create_segment_atropos_pipe(params={}, name="segment_atropos_pipe"):
396386
segment_pipe.connect(seg_at, 'segmented_file',
397387
outputnode, 'segmented_file')
398388

389+
# split dseg_mask
390+
split_dseg_mask = pe.Node(
391+
interface=niu.Function(input_names=["nii_file"],
392+
output_names=["list_split_files"],
393+
function=split_indexed_mask),
394+
name="split_dseg_mask")
395+
396+
segment_pipe.connect(seg_at, 'segmented_file',
397+
split_dseg_mask, "nii_file")
398+
399399
if "tissue_dict" in params.keys():
400400
tissue_dict = params["tissue_dict"]
401401

0 commit comments

Comments
 (0)