def build_input_node(self): """Build and connect an input node to the pipeline.""" import os from os.path import exists, join import nipype.interfaces.utility as nutil import nipype.pipeline.engine as npe from clinica.iotools.utils.data_handling import ( check_relative_volume_location_in_world_coordinate_system, ) from clinica.utils.exceptions import ClinicaException from clinica.utils.filemanip import save_participants_sessions from clinica.utils.input_files import ( T1W_NII, bids_pet_nii, t1_volume_deformation_to_template, t1_volume_final_group_template, t1_volume_native_tpm, t1_volume_native_tpm_in_mni, ) from clinica.utils.inputs import clinica_file_reader, clinica_group_reader from clinica.utils.pet import get_suvr_mask, read_psf_information from clinica.utils.stream import cprint from clinica.utils.ux import ( print_groups_in_caps_directory, print_images_to_process, ) # Check that group already exists if not exists( join(self.caps_directory, "groups", f"group-{self.parameters['group_label']}")): print_groups_in_caps_directory(self.caps_directory) raise ClinicaException( f"Group {self.parameters['group_label']} does not exist. " "Did you run t1-volume or t1-volume-create-dartel pipeline?") # Tissues DataGrabber # ==================== all_errors = [] # Grab reference mask reference_mask_file = get_suvr_mask( self.parameters["suvr_reference_region"]) # PET from BIDS directory try: pet_bids = clinica_file_reader( self.subjects, self.sessions, self.bids_directory, bids_pet_nii(self.parameters["acq_label"]), ) except ClinicaException as e: all_errors.append(e) # Native T1w-MRI try: t1w_bids = clinica_file_reader(self.subjects, self.sessions, self.bids_directory, T1W_NII) except ClinicaException as e: all_errors.append(e) # mask_tissues tissues_input = [] for tissue_number in self.parameters["mask_tissues"]: try: current_file = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, t1_volume_native_tpm_in_mni(tissue_number, False), ) tissues_input.append(current_file) except ClinicaException as e: all_errors.append(e) # Tissues_input has a length of len(self.parameters['mask_tissues']). Each of these elements has a size of # len(self.subjects). We want the opposite: a list of size len(self.subjects) whose elements have a size of # len(self.parameters['mask_tissues']. The trick is to iter on elements with zip(*my_list) tissues_input_final = [] for subject_tissue_list in zip(*tissues_input): tissues_input_final.append(subject_tissue_list) tissues_input = tissues_input_final # Flowfields try: flowfields_caps = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, t1_volume_deformation_to_template( self.parameters["group_label"]), ) except ClinicaException as e: all_errors.append(e) # Dartel Template try: final_template = clinica_group_reader( self.caps_directory, t1_volume_final_group_template(self.parameters["group_label"]), ) except ClinicaException as e: all_errors.append(e) if self.parameters["pvc_psf_tsv"] is not None: iterables_psf = read_psf_information( self.parameters["pvc_psf_tsv"], self.subjects, self.sessions, self.parameters["acq_label"], ) self.parameters["apply_pvc"] = True else: iterables_psf = [[]] * len(self.subjects) self.parameters["apply_pvc"] = False if self.parameters["apply_pvc"]: # pvc tissues input pvc_tissues_input = [] for tissue_number in self.parameters["pvc_mask_tissues"]: try: current_file = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, t1_volume_native_tpm(tissue_number), ) pvc_tissues_input.append(current_file) except ClinicaException as e: all_errors.append(e) if len(all_errors) == 0: pvc_tissues_input_final = [] for subject_tissue_list in zip(*pvc_tissues_input): pvc_tissues_input_final.append(subject_tissue_list) pvc_tissues_input = pvc_tissues_input_final else: pvc_tissues_input = [] if len(all_errors) > 0: error_message = "Clinica faced error(s) while trying to read files in your CAPS/BIDS directories.\n" for msg in all_errors: error_message += str(msg) raise ClinicaException(error_message) check_relative_volume_location_in_world_coordinate_system( "T1w-MRI", t1w_bids, self.parameters["acq_label"] + " PET", pet_bids, self.bids_directory, self.parameters["acq_label"], skip_question=self.parameters["skip_question"], ) # Save subjects to process in <WD>/<Pipeline.name>/participants.tsv folder_participants_tsv = os.path.join(self.base_dir, self.name) save_participants_sessions(self.subjects, self.sessions, folder_participants_tsv) if len(self.subjects): print_images_to_process(self.subjects, self.sessions) cprint("List available in %s" % os.path.join(folder_participants_tsv, "participants.tsv")) cprint( "The pipeline will last approximately 10 minutes per image.") read_input_node = npe.Node( name="LoadingCLIArguments", interface=nutil.IdentityInterface(fields=self.get_input_fields(), mandatory_inputs=True), iterables=[ ("pet_image", pet_bids), ("t1_image_native", t1w_bids), ("mask_tissues", tissues_input), ("psf", iterables_psf), ("flow_fields", flowfields_caps), ("pvc_mask_tissues", pvc_tissues_input), ], synchronize=True, ) read_input_node.inputs.reference_mask = reference_mask_file read_input_node.inputs.dartel_template = final_template # fmt: off self.connect([(read_input_node, self.input_node, [("pet_image", "pet_image"), ("t1_image_native", "t1_image_native"), ("mask_tissues", "mask_tissues"), ("flow_fields", "flow_fields"), ("dartel_template", "dartel_template"), ("reference_mask", "reference_mask"), ("psf", "psf"), ("pvc_mask_tissues", "pvc_mask_tissues")])])
def build_input_node(self): """Build and connect an input node to the pipeline.""" import os from os.path import join, exists from colorama import Fore import nipype.interfaces.utility as nutil import nipype.pipeline.engine as npe from clinica.utils.inputs import clinica_file_reader, clinica_group_reader from clinica.utils.input_files import ( t1_volume_final_group_template, t1_volume_native_tpm, t1_volume_native_tpm_in_mni, t1_volume_deformation_to_template, bids_pet_nii, T1W_NII) from clinica.utils.exceptions import ClinicaException from clinica.utils.ux import print_groups_in_caps_directory, print_images_to_process from clinica.iotools.utils.data_handling import check_relative_volume_location_in_world_coordinate_system from clinica.utils.filemanip import save_participants_sessions from clinica.utils.pet import read_psf_information, get_suvr_mask from clinica.utils.stream import cprint # Check that group already exists if not exists( join(self.caps_directory, 'groups', 'group-' + self.parameters['group_label'])): print_groups_in_caps_directory(self.caps_directory) raise ClinicaException( '%sGroup %s does not exist. Did you run t1-volume or t1-volume-create-dartel pipeline?%s' % (Fore.RED, self.parameters['group_label'], Fore.RESET)) # Tissues DataGrabber # ==================== all_errors = [] # Grab reference mask reference_mask_file = get_suvr_mask( self.parameters['suvr_reference_region']) # PET from BIDS directory try: pet_bids = clinica_file_reader( self.subjects, self.sessions, self.bids_directory, bids_pet_nii(self.parameters['acq_label'])) except ClinicaException as e: all_errors.append(e) # Native T1w-MRI try: t1w_bids = clinica_file_reader(self.subjects, self.sessions, self.bids_directory, T1W_NII) except ClinicaException as e: all_errors.append(e) # mask_tissues tissues_input = [] for tissue_number in self.parameters['mask_tissues']: try: current_file = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, t1_volume_native_tpm_in_mni(tissue_number, False)) tissues_input.append(current_file) except ClinicaException as e: all_errors.append(e) # Tissues_input has a length of len(self.parameters['mask_tissues']). Each of these elements has a size of # len(self.subjects). We want the opposite: a list of size len(self.subjects) whose elements have a size of # len(self.parameters['mask_tissues']. The trick is to iter on elements with zip(*my_list) tissues_input_final = [] for subject_tissue_list in zip(*tissues_input): tissues_input_final.append(subject_tissue_list) tissues_input = tissues_input_final # Flowfields try: flowfields_caps = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, t1_volume_deformation_to_template( self.parameters['group_label'])) except ClinicaException as e: all_errors.append(e) # Dartel Template try: final_template = clinica_group_reader( self.caps_directory, t1_volume_final_group_template(self.parameters['group_label'])) except ClinicaException as e: all_errors.append(e) if self.parameters['pvc_psf_tsv'] is not None: iterables_psf = read_psf_information( self.parameters['pvc_psf_tsv'], self.subjects, self.sessions) self.parameters['apply_pvc'] = True else: iterables_psf = [[]] * len(self.subjects) self.parameters['apply_pvc'] = False if self.parameters['apply_pvc']: # pvc tissues input pvc_tissues_input = [] for tissue_number in self.parameters['pvc_mask_tissues']: try: current_file = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, t1_volume_native_tpm(tissue_number)) pvc_tissues_input.append(current_file) except ClinicaException as e: all_errors.append(e) if len(all_errors) == 0: pvc_tissues_input_final = [] for subject_tissue_list in zip(*pvc_tissues_input): pvc_tissues_input_final.append(subject_tissue_list) pvc_tissues_input = pvc_tissues_input_final else: pvc_tissues_input = [] if len(all_errors) > 0: error_message = 'Clinica faced error(s) while trying to read files in your CAPS/BIDS directories.\n' for msg in all_errors: error_message += str(msg) raise ClinicaException(error_message) check_relative_volume_location_in_world_coordinate_system( 'T1w-MRI', t1w_bids, self.parameters['acq_label'] + ' PET', pet_bids, self.bids_directory, self.parameters['acq_label']) # Save subjects to process in <WD>/<Pipeline.name>/participants.tsv folder_participants_tsv = os.path.join(self.base_dir, self.name) save_participants_sessions(self.subjects, self.sessions, folder_participants_tsv) if len(self.subjects): print_images_to_process(self.subjects, self.sessions) cprint('List available in %s' % os.path.join(folder_participants_tsv, 'participants.tsv')) cprint( 'The pipeline will last approximately 10 minutes per image.') read_input_node = npe.Node( name="LoadingCLIArguments", interface=nutil.IdentityInterface(fields=self.get_input_fields(), mandatory_inputs=True), iterables=[('pet_image', pet_bids), ('t1_image_native', t1w_bids), ('mask_tissues', tissues_input), ('psf', iterables_psf), ('flow_fields', flowfields_caps), ('pvc_mask_tissues', pvc_tissues_input)], synchronize=True) read_input_node.inputs.reference_mask = reference_mask_file read_input_node.inputs.dartel_template = final_template self.connect([(read_input_node, self.input_node, [('pet_image', 'pet_image'), ('t1_image_native', 't1_image_native'), ('mask_tissues', 'mask_tissues'), ('flow_fields', 'flow_fields'), ('dartel_template', 'dartel_template'), ('reference_mask', 'reference_mask'), ('psf', 'psf'), ('pvc_mask_tissues', 'pvc_mask_tissues')])])
def build_input_node_longitudinal(self): import nipype.interfaces.utility as nutil import nipype.pipeline.engine as npe import clinica.utils.input_files as input_files from clinica.iotools.utils.data_handling import ( check_relative_volume_location_in_world_coordinate_system, ) from clinica.utils.exceptions import ClinicaException from clinica.utils.inputs import clinica_file_reader read_parameters_node = npe.Node( name="LoadingCLIArguments", interface=nutil.IdentityInterface( fields=self.get_input_fields(), mandatory_inputs=True ), synchronize=True, ) all_errors = [] try: read_parameters_node.inputs.pet = clinica_file_reader( self.subjects, self.sessions, self.bids_directory, input_files.bids_pet_nii(self.parameters["acq_label"]), ) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.orig_nu = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_LONG_ORIG_NU, ) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.white_surface_right = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_LONG_SURF_R, ) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.white_surface_left = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_LONG_SURF_L, ) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.destrieux_left = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_LONG_DESTRIEUX_PARC_L, ) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.destrieux_right = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_LONG_DESTRIEUX_PARC_R, ) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.desikan_left = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_LONG_DESIKAN_PARC_L, ) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.desikan_right = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_LONG_DESIKAN_PARC_R, ) except ClinicaException as e: all_errors.append(e) if len(all_errors) > 0: error_message = "Clinica faced errors while trying to read files in your BIDS or CAPS directories.\n" for msg in all_errors: error_message += str(msg) raise ClinicaException(error_message) check_relative_volume_location_in_world_coordinate_system( "T1w-MRI (orig_nu.mgz)", read_parameters_node.inputs.orig_nu, self.parameters["acq_label"] + " PET", read_parameters_node.inputs.pet, self.bids_directory, self.parameters["acq_label"], ) # fmt: off self.connect( [ (read_parameters_node, self.input_node, [("pet", "pet"), ("orig_nu", "orig_nu"), ("white_surface_left", "white_surface_left"), ("white_surface_right", "white_surface_right"), ("destrieux_left", "destrieux_left"), ("destrieux_right", "destrieux_right"), ("desikan_left", "desikan_left"), ("desikan_right", "desikan_right")]) ] )
def build_input_node_cross_sectional(self): import nipype.interfaces.utility as nutil import nipype.pipeline.engine as npe from clinica.utils.inputs import clinica_file_reader from clinica.utils.exceptions import ClinicaException from clinica.iotools.utils.data_handling import check_relative_volume_location_in_world_coordinate_system import clinica.utils.input_files as input_files read_parameters_node = npe.Node(name="LoadingCLIArguments", interface=nutil.IdentityInterface( fields=self.get_input_fields(), mandatory_inputs=True), synchronize=True) all_errors = [] try: read_parameters_node.inputs.pet = clinica_file_reader( self.subjects, self.sessions, self.bids_directory, input_files.bids_pet_nii(self.parameters['acq_label'])) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.orig_nu = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_ORIG_NU) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.white_surface_right = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_WM_SURF_R) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.white_surface_left = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_WM_SURF_L) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.destrieux_left = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_DESTRIEUX_PARC_L) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.destrieux_right = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_DESTRIEUX_PARC_R) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.desikan_left = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_DESIKAN_PARC_L) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.desikan_right = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_DESIKAN_PARC_R) except ClinicaException as e: all_errors.append(e) if len(all_errors) > 0: error_message = 'Clinica faced errors while trying to read files in your BIDS or CAPS directories.\n' for msg in all_errors: error_message += str(msg) raise ClinicaException(error_message) check_relative_volume_location_in_world_coordinate_system( 'T1w-MRI (orig_nu.mgz)', read_parameters_node.inputs.orig_nu, self.parameters['acq_label'] + ' PET', read_parameters_node.inputs.pet, self.bids_directory, self.parameters['acq_label']) self.connect([(read_parameters_node, self.input_node, [('pet', 'pet'), ('orig_nu', 'orig_nu'), ('white_surface_left', 'white_surface_left'), ('white_surface_right', 'white_surface_right'), ('destrieux_left', 'destrieux_left'), ('destrieux_right', 'destrieux_right'), ('desikan_left', 'desikan_left'), ('desikan_right', 'desikan_right')])])
def build_input_node(self): """Build and connect an input node to the pipelines. """ from colorama import Fore from os.path import join, split, realpath, exists import nipype.interfaces.utility as nutil import nipype.pipeline.engine as npe from .pet_volume_utils import read_psf_information from clinica.utils.inputs import clinica_file_reader, clinica_group_reader, insensitive_glob from clinica.utils.input_files import (t1_volume_final_group_template, t1_volume_native_tpm, t1_volume_native_tpm_in_mni, t1_volume_deformation_to_template) from clinica.utils.exceptions import ClinicaException from clinica.utils.ux import print_groups_in_caps_directory from clinica.iotools.utils.data_handling import check_relative_volume_location_in_world_coordinate_system import clinica.utils.input_files as input_files # Check that group already exists if not exists(join(self.caps_directory, 'groups', 'group-' + self.parameters['group_id'])): print_groups_in_caps_directory(self.caps_directory) raise ClinicaException( '%sGroup %s does not exist. Did you run t1-volume or t1-volume-create-dartel pipeline?%s' % (Fore.RED, self.parameters['group_id'], Fore.RESET) ) # Tissues DataGrabber # ==================== all_errors = [] # Grab reference mask if self.parameters['pet_tracer'] == 'fdg': reference_mask_template = 'region-pons_eroded-6mm_mask.nii*' self.parameters['suvr_region'] = 'pons' pet_file_to_grab = input_files.PET_FDG_NII elif self.parameters['pet_tracer'] == 'av45': reference_mask_template = 'region-cerebellumPons_eroded-6mm_mask.nii*' self.parameters['suvr_region'] = 'cerebellumPons' pet_file_to_grab = input_files.PET_AV45_NII else: raise NotImplementedError('Only "fdg" or "av45" tracers are currently accepted (given tracer "%s").' % self.parameters['pet_tracer']) reference_mask_path = join(split(realpath(__file__))[0], '../../resources/masks', reference_mask_template) reference_mask_file = insensitive_glob(reference_mask_path) if len(reference_mask_file) != 1: all_errors.append('An error happened while trying to get reference mask ' + str(reference_mask_path)) else: reference_mask_file = reference_mask_file[0] # PET from BIDS directory try: pet_bids = clinica_file_reader(self.subjects, self.sessions, self.bids_directory, pet_file_to_grab) except ClinicaException as e: all_errors.append(e) # Native T1w-MRI try: t1w_bids = clinica_file_reader(self.subjects, self.sessions, self.bids_directory, input_files.T1W_NII) except ClinicaException as e: all_errors.append(e) # mask_tissues tissues_input = [] for tissue_number in self.parameters['mask_tissues']: try: current_file = clinica_file_reader(self.subjects, self.sessions, self.caps_directory, t1_volume_native_tpm_in_mni(tissue_number, False)) tissues_input.append(current_file) except ClinicaException as e: all_errors.append(e) # Tissues_input has a length of len(self.parameters['mask_tissues']). Each of these elements has a size of # len(self.subjects). We want the opposite: a list of size len(self.subjects) whose elements have a size of # len(self.parameters['mask_tissues']. The trick is to iter on elements with zip(*my_list) tissues_input_final = [] for subject_tissue_list in zip(*tissues_input): tissues_input_final.append(subject_tissue_list) tissues_input = tissues_input_final # Flowfields try: flowfields_caps = clinica_file_reader(self.subjects, self.sessions, self.caps_directory, t1_volume_deformation_to_template(self.parameters['group_id'])) except ClinicaException as e: all_errors.append(e) # Dartel Template try: final_template = clinica_group_reader(self.caps_directory, t1_volume_final_group_template(self.parameters['group_id'])) except ClinicaException as e: all_errors.append(e) if self.parameters['psf_tsv'] is not None: iterables_fwhm = read_psf_information(self.parameters['psf_tsv'], self.subjects, self.sessions) self.parameters['apply_pvc'] = True else: iterables_fwhm = [[]] * len(self.subjects) self.parameters['apply_pvc'] = False if self.parameters['apply_pvc']: # pvc tissues input pvc_tissues_input = [] for tissue_number in self.parameters['pvc_mask_tissues']: try: current_file = clinica_file_reader(self.subjects, self.sessions, self.caps_directory, t1_volume_native_tpm(tissue_number)) pvc_tissues_input.append(current_file) except ClinicaException as e: all_errors.append(e) if len(all_errors) == 0: pvc_tissues_input_final = [] for subject_tissue_list in zip(*pvc_tissues_input): pvc_tissues_input_final.append(subject_tissue_list) pvc_tissues_input = pvc_tissues_input_final else: pvc_tissues_input = [] if len(all_errors) > 0: error_message = 'Clinica faced error(s) while trying to read files in your CAPS/BIDS directories.\n' for msg in all_errors: error_message += str(msg) raise ClinicaException(error_message) check_relative_volume_location_in_world_coordinate_system('T1w-MRI', t1w_bids, self.parameters['pet_tracer'] + ' PET', pet_bids, self.bids_directory, self.parameters['pet_tracer']) read_input_node = npe.Node(name="LoadingCLIArguments", interface=nutil.IdentityInterface( fields=self.get_input_fields(), mandatory_inputs=True), iterables=[('pet_image', pet_bids), ('t1_image_native', t1w_bids), ('mask_tissues', tissues_input), ('fwhm', iterables_fwhm), ('flow_fields', flowfields_caps), ('pvc_mask_tissues', pvc_tissues_input)], synchronize=True) read_input_node.inputs.reference_mask = reference_mask_file read_input_node.inputs.dartel_template = final_template self.connect([(read_input_node, self.input_node, [('pet_image', 'pet_image')]), (read_input_node, self.input_node, [('t1_image_native', 't1_image_native')]), (read_input_node, self.input_node, [('mask_tissues', 'mask_tissues')]), (read_input_node, self.input_node, [('flow_fields', 'flow_fields')]), (read_input_node, self.input_node, [('dartel_template', 'dartel_template')]), (read_input_node, self.input_node, [('reference_mask', 'reference_mask')]), (read_input_node, self.input_node, [('fwhm', 'fwhm')]), (read_input_node, self.input_node, [('pvc_mask_tissues', 'pvc_mask_tissues')])])
def build_input_node(self): """We iterate over subjects to get all the files needed to run the pipeline """ import nipype.interfaces.utility as nutil import nipype.pipeline.engine as npe from clinica.utils.inputs import clinica_file_reader from clinica.utils.exceptions import ClinicaException from clinica.iotools.utils.data_handling import check_relative_volume_location_in_world_coordinate_system import clinica.utils.input_files as input_files read_parameters_node = npe.Node(name="LoadingCLIArguments", interface=nutil.IdentityInterface( fields=self.get_input_fields(), mandatory_inputs=True), synchronize=True) if self.parameters['pet_tracer'].lower() == 'fdg': pet_file_to_grab = input_files.PET_FDG_NII pet_json_file_to_grab = input_files.PET_FDG_JSON elif self.parameters['pet_tracer'].lower() == 'av45': pet_file_to_grab = input_files.PET_AV45_NII pet_json_file_to_grab = input_files.PET_AV45_JSON else: raise NotImplementedError( 'Only "fdg" or "av45" tracers are currently accepted (given tracer "%s").' % self.parameters['pet_tracer']) all_errors = [] try: read_parameters_node.inputs.pet = clinica_file_reader( self.subjects, self.sessions, self.bids_directory, pet_file_to_grab) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.orig_nu = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_ORIG_NU) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.psf = clinica_file_reader( self.subjects, self.sessions, self.bids_directory, pet_json_file_to_grab) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.white_surface_right = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_WM_SURF_R) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.white_surface_left = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_WM_SURF_L) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.destrieux_left = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_DESTRIEUX_PARC_L) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.destrieux_right = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_DESTRIEUX_PARC_R) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.desikan_left = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_DESIKAN_PARC_L) except ClinicaException as e: all_errors.append(e) try: read_parameters_node.inputs.desikan_right = clinica_file_reader( self.subjects, self.sessions, self.caps_directory, input_files.T1_FS_DESIKAN_PARC_R) except ClinicaException as e: all_errors.append(e) if len(all_errors) > 0: error_message = 'Clinica faced errors while trying to read files in your BIDS or CAPS directories.\n' for msg in all_errors: error_message += str(msg) raise ClinicaException(error_message) check_relative_volume_location_in_world_coordinate_system( 'T1w-MRI (orig_nu.mgz)', read_parameters_node.inputs.orig_nu, self.parameters['pet_tracer'].upper() + ' PET', read_parameters_node.inputs.pet, self.bids_directory, self.parameters['pet_tracer'].lower()) self.connect([ (read_parameters_node, self.input_node, [('pet', 'pet')]), (read_parameters_node, self.input_node, [('orig_nu', 'orig_nu')]), (read_parameters_node, self.input_node, [('psf', 'psf')]), (read_parameters_node, self.input_node, [('white_surface_left', 'white_surface_left')]), (read_parameters_node, self.input_node, [('white_surface_right', 'white_surface_right')]), (read_parameters_node, self.input_node, [('destrieux_left', 'destrieux_left')]), (read_parameters_node, self.input_node, [('destrieux_right', 'destrieux_right')]), (read_parameters_node, self.input_node, [('desikan_left', 'desikan_left')]), (read_parameters_node, self.input_node, [('desikan_right', 'desikan_right')]) ])