Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion macapype/nodes/correct_bias.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,4 +258,4 @@ def itk_debias(img_file):
mask_img_file = os.path.abspath(fname + "_mask" + ext)
sitk.WriteImage(input_image_mask, mask_img_file)

return cor_img_file, bias_img_file
return cor_img_file, bias_img_file, mask_img_file
13 changes: 11 additions & 2 deletions macapype/nodes/prepare.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ def _list_outputs(self):

###############################################################################
# Equivalent of flirt_average in FSL
def average_align(list_img, reorient=False):
def average_align(list_img, reorient=False, max_index=None):

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

for i, img in enumerate(list_img[1:]):
if max_index is not None:
assert max_index < len(list_img), f"Error with {max_index=}"

for i, img in enumerate(list_img[1:], 1):

if max_index is not None:
if i > max_index:
print(f"Iter {i=} higher than {max_index=}")
continue

data_orig_shape = nib.load(img).get_fdata().shape
if data_orig_shape != data_0_shape:
print(f"**** Warning , original image shape \
Expand Down
121 changes: 92 additions & 29 deletions macapype/pipelines/prepare.py
Original file line number Diff line number Diff line change
Expand Up @@ -588,13 +588,25 @@ def create_short_preparation_pipe(params, params_template={},
N4debias_T2, "indiv_params")

# outputnode
data_preparation_pipe.connect(
N4debias_T1, "output_image",
outputnode, "stereo_debiased_T1")
if "use_T2" in params.keys():

data_preparation_pipe.connect(
N4debias_T2, "output_image",
outputnode, "stereo_debiased_T2")
data_preparation_pipe.connect(
N4debias_T1, "output_image",
outputnode, "stereo_debiased_T2")

data_preparation_pipe.connect(
N4debias_T2, "output_image",
outputnode, "stereo_debiased_T1")

else:

data_preparation_pipe.connect(
N4debias_T1, "output_image",
outputnode, "stereo_debiased_T1")

data_preparation_pipe.connect(
N4debias_T2, "output_image",
outputnode, "stereo_debiased_T2")

elif "fast" in params.keys():

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

# outputnode
data_preparation_pipe.connect(
fast_T1, "restored_image",
outputnode, "stereo_debiased_T1")

data_preparation_pipe.connect(
fast_T2, "restored_image",
outputnode, "stereo_debiased_T2")
if "use_T2" in params.keys():

data_preparation_pipe.connect(
fast_T1, "restored_image",
outputnode, "stereo_debiased_T2")

data_preparation_pipe.connect(
fast_T2, "restored_image",
outputnode, "stereo_debiased_T1")

else:

data_preparation_pipe.connect(
fast_T1, "restored_image",
outputnode, "stereo_debiased_T1")

data_preparation_pipe.connect(
fast_T2, "restored_image",
outputnode, "stereo_debiased_T2")

elif "itk_debias" in params:

Expand All @@ -663,7 +688,7 @@ def create_short_preparation_pipe(params, params_template={},
itk_debias_T1 = NodeParams(
interface=niu.Function(
input_names=["img_file"],
output_names=["cor_img_file", "bias_img_file"],
output_names=["cor_img_file", "bias_img_file", "mask_file"],
function=itk_debias),
params=parse_key(params, "itk_debias"),
name='itk_debias_T1')
Expand All @@ -681,7 +706,7 @@ def create_short_preparation_pipe(params, params_template={},
itk_debias_T2 = NodeParams(
interface=niu.Function(
input_names=["img_file"],
output_names=["cor_img_file", "bias_img_file"],
output_names=["cor_img_file", "bias_img_file", "mask_file"],
function=itk_debias),
params=parse_key(params, "itk_debias"),
name='itk_debias_T2')
Expand All @@ -696,34 +721,72 @@ def create_short_preparation_pipe(params, params_template={},
itk_debias_T2, "img_file")

# outputnode
data_preparation_pipe.connect(
itk_debias_T1, "cor_img_file",
outputnode, "stereo_debiased_T1")

data_preparation_pipe.connect(
itk_debias_T2, "cor_img_file",
outputnode, "stereo_debiased_T2")
if "use_T2" in params.keys():

else:
print("No debias will be performed before extract_pipe")
data_preparation_pipe.connect(
itk_debias_T1, "cor_img_file",
outputnode, "stereo_debiased_T2")

if "denoise" in params.keys():
data_preparation_pipe.connect(
denoise_T1, "output_image",
itk_debias_T2, "cor_img_file",
outputnode, "stereo_debiased_T1")

data_preparation_pipe.connect(
denoise_T2, "output_image",
outputnode, "stereo_debiased_T2")
else:

data_preparation_pipe.connect(
crop_aladin_pipe, "outputnode.stereo_T1",
itk_debias_T1, "cor_img_file",
outputnode, "stereo_debiased_T1")

data_preparation_pipe.connect(
apply_crop_aladin_T2, 'out_file',
itk_debias_T2, "cor_img_file",
outputnode, "stereo_debiased_T2")

else:
print("No debias will be performed before extract_pipe")

if "denoise" in params.keys():

if "use_T2" in params.keys():

data_preparation_pipe.connect(
denoise_T1, "output_image",
outputnode, "stereo_debiased_T2")

data_preparation_pipe.connect(
denoise_T2, "output_image",
outputnode, "stereo_debiased_T1")
else:

data_preparation_pipe.connect(
denoise_T1, "output_image",
outputnode, "stereo_debiased_T1")

data_preparation_pipe.connect(
denoise_T2, "output_image",
outputnode, "stereo_debiased_T2")

else:

if "use_T2" in params.keys():

data_preparation_pipe.connect(
crop_aladin_pipe, "outputnode.stereo_T1",
outputnode, "stereo_debiased_T2")

data_preparation_pipe.connect(
apply_crop_aladin_T2, 'out_file',
outputnode, "stereo_debiased_T1")
else:

data_preparation_pipe.connect(
crop_aladin_pipe, "outputnode.stereo_T1",
outputnode, "stereo_debiased_T1")

data_preparation_pipe.connect(
apply_crop_aladin_T2, 'out_file',
outputnode, "stereo_debiased_T2")

# resample T1 to higher dimension
if "pad_template" in params.keys():

Expand Down
20 changes: 10 additions & 10 deletions macapype/pipelines/segment.py
Original file line number Diff line number Diff line change
Expand Up @@ -375,16 +375,6 @@ def create_segment_atropos_pipe(params={}, name="segment_atropos_pipe"):

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

# split dseg_mask
split_dseg_mask = pe.Node(
interface=niu.Function(input_names=["nii_file"],
output_names=["list_split_files"],
function=split_indexed_mask),
name="split_dseg_mask")

segment_pipe.connect(seg_at, 'segmented_file',
split_dseg_mask, "nii_file")

# on segmentation indexed mask (with labels)
outputnode = pe.Node(
niu.IdentityInterface(
Expand All @@ -396,6 +386,16 @@ def create_segment_atropos_pipe(params={}, name="segment_atropos_pipe"):
segment_pipe.connect(seg_at, 'segmented_file',
outputnode, 'segmented_file')

# split dseg_mask
split_dseg_mask = pe.Node(
interface=niu.Function(input_names=["nii_file"],
output_names=["list_split_files"],
function=split_indexed_mask),
name="split_dseg_mask")

segment_pipe.connect(seg_at, 'segmented_file',
split_dseg_mask, "nii_file")

if "tissue_dict" in params.keys():
tissue_dict = params["tissue_dict"]

Expand Down
Loading