def ApplyTransform_pipeline(self, **kwargs): pipeline = self.new_pipeline( name='applytransform', desc=('Apply transformation the the 4D PET timeseries'), citations=[], **kwargs) merge_trans = pipeline.add('merge_transforms', Merge(2), inputs={ 'in1': ('warp_file', nifti_gz_format), 'in2': ('affine_mat', text_matrix_format) }) pipeline.add( 'ApplyTransform', ApplyTransforms(reference_image=self.parameter('trans_template'), interpolation='Linear', input_image_type=3), inputs={ 'input_image': ('pet_volumes', nifti_gz_format), 'transforms': (merge_trans, 'out') }, outputs={'registered_volumes': ('output_image', nifti_gz_format)}) return pipeline
def cet_T1(self, **name_maps): pipeline = self.new_pipeline( name='CET_T1', name_maps=name_maps, desc=("Construct cerebellum mask using SUIT template"), citations=[fsl_cite]) # FIXME: Should convert to inputs nl = self._lookup_nl_tfm_inv_name('MNI') linear = self._lookup_l_tfm_to_name('MNI') # Initially use MNI space to warp SUIT into T1 and threshold to mask merge_trans = pipeline.add('merge_transforms', Merge(2), inputs={ 'in2': (nl, nifti_gz_format), 'in1': (linear, nifti_gz_format) }) apply_trans = pipeline.add('ApplyTransform', ants.resampling.ApplyTransforms( interpolation='NearestNeighbor', input_image_type=3, invert_transform_flags=[True, False]), inputs={ 'reference_image': ('betted_T1', nifti_gz_format), 'input_image': ('suit_mask', nifti_gz_format), 'transforms': (merge_trans, 'out') }, requirements=[ants_req.v('1.9')], mem_gb=16, wall_time=120) pipeline.add('maths2', fsl.utils.ImageMaths(suffix='_optiBET_cerebellum', op_string='-mas'), inputs={ 'in_file': ('betted_T1', nifti_gz_format), 'in_file2': (apply_trans, 'output_image') }, outputs={ 'cetted_T1': ('out_file', nifti_gz_format), 'cetted_T1_mask': ('output_image', nifti_gz_format) }, requirements=[fsl_req.v('5.0.8')], mem_gb=16, wall_time=5) return pipeline
def combined_pipeline(self, **name_maps): pipeline = self.new_pipeline( name='combined', desc=("A dummy pipeline used to test MultiMultiStudy class"), citations=[], name_maps=name_maps) merge = pipeline.add("merge", Merge(3)) math = pipeline.add("math", TestMath()) math.inputs.op = self.parameter('combined_op') math.inputs.as_file = True # Connect inputs pipeline.connect_input('ss1_z', merge, 'in1') pipeline.connect_input('full_e', merge, 'in2') pipeline.connect_input('partial_ss2_z', merge, 'in3') # Connect nodes pipeline.connect(merge, 'out', math, 'x') # Connect outputs pipeline.connect_output('g', math, 'z') return pipeline
def cet_T2s(self, **options): pipeline = self.new_pipeline( name='CET_T2s', desc=("Construct cerebellum mask using SUIT template"), default_options={ 'SUIT_mask': self._lookup_template_mask_path('SUIT') }, citations=[fsl_cite], options=options) # Initially use MNI space to warp SUIT mask into T2s space merge_trans = pipeline.add( 'merge_transforms', Merge(3), inputs={ 'in3': (self._lookup_nl_tfm_inv_name('SUIT'), nifti_gz_format), 'in2': (self._lookup_l_tfm_to_name('SUIT'), nifti_gz_format), 'in1': ('T2s_to_T1_mat', text_matrix_format) }) apply_trans = pipeline.add( 'ApplyTransform', ants.resampling.ApplyTransforms( interpolation='NearestNeighbor', input_image_type=3, invert_transform_flags=[True, True, False], input_image=pipeline.option('SUIT_mask')), inputs={ 'transforms': (merge_trans, 'out'), 'reference_image': ('betted_T2s', nifti_gz_format) }, outputs={'cetted_T2s_mask': ('output_image', nifti_gz_format)}, requirements=[ants_req.v('1.9')], mem_gb=16, wall_time=120) # Combine masks maths1 = pipeline.add('combine_masks', fsl.utils.ImageMaths(suffix='_optiBET_masks', op_string='-mas', output_type='NIFTI_GZ'), inputs={ 'in_file': ('betted_T2s_mask', nifti_gz_format), 'in_file2': (apply_trans, 'output_image') }, requirements=[fsl_req.v('5.0.8')], mem_gb=16, wall_time=5) # Mask out t2s image pipeline.add('mask_t2s', fsl.utils.ImageMaths(suffix='_optiBET_cerebellum', op_string='-mas', output_type='NIFTI_GZ'), inputs={ 'in_file': ('betted_T2s', nifti_gz_format), 'in_file2': (maths1, 'output_image') }, outputs={'cetted_T2s': ('out_file', nifti_gz_format)}, requirements=[fsl_req.v('5.0.8')], mem_gb=16, wall_time=5) pipeline.add( 'mask_t2s_last_echo', fsl.utils.ImageMaths(suffix='_optiBET_cerebellum', op_string='-mas', output_type='NIFTI_GZ'), inputs={ 'in_file': ('betted_T2s_last_echo', nifti_gz_format), 'in_file2': (maths1, 'output_image') }, outputs={'cetted_T2s_last_echo': ('out_file', nifti_gz_format)}, requirements=[fsl_req.v('5.0.8')], mem_gb=16, wall_time=5) return pipeline
def cv_pipeline(self, **name_maps): pipeline = self.new_pipeline(name='cv_pipeline', name_maps=name_maps, desc="Compute Composite Vein Image", citations=[fsl_cite, matlab_cite]) # Interpolate priors and atlas merge_trans = pipeline.add('merge_transforms', Merge(3), inputs={ 'in1': ('coreg_ants_mat', text_matrix_format), 'in2': ('coreg_to_tmpl_ants_mat', text_matrix_format), 'in3': ('coreg_to_tmpl_ants_warp', nifti_gz_format) }) apply_trans_q = pipeline.add( 'ApplyTransform_Q_Prior', ants.resampling.ApplyTransforms( interpolation='Linear', input_image_type=3, invert_transform_flags=[True, True, False]), inputs={ 'input_image': ('mni_template_qsm_prior', nifti_gz_format), 'reference_image': ('qsm', nifti_gz_format), 'transforms': (merge_trans, 'out') }, requirements=[ants_req.v('1.9')], mem_gb=16, wall_time=30) apply_trans_s = pipeline.add( 'ApplyTransform_S_Prior', ants.resampling.ApplyTransforms( interpolation='Linear', input_image_type=3, invert_transform_flags=[True, True, False]), inputs={ 'input_image': ('mni_template_swi_prior', nifti_gz_format), 'reference_image': ('qsm', nifti_gz_format), 'transforms': (merge_trans, 'out') }, requirements=[ants_req.v('1.9')], mem_gb=16, wall_time=30) apply_trans_a = pipeline.add( 'ApplyTransform_A_Prior', ants.resampling.ApplyTransforms( interpolation='Linear', input_image_type=3, invert_transform_flags=[True, True, False], ), inputs={ 'reference_image': ('qsm', nifti_gz_format), 'input_image': ('mni_template_atlas_prior', nifti_gz_format), 'transforms': (merge_trans, 'out') }, requirements=[ants_req.v('1.9')], mem_gb=16, wall_time=30) apply_trans_v = pipeline.add( 'ApplyTransform_V_Atlas', ants.resampling.ApplyTransforms( interpolation='Linear', input_image_type=3, invert_transform_flags=[True, True, False]), inputs={ 'input_image': ('mni_template_vein_atlas', nifti_gz_format), 'reference_image': ('qsm', nifti_gz_format), 'transforms': (merge_trans, 'out') }, requirements=[ants_req.v('1.9')], mem_gb=16, wall_time=30) # Run CV code pipeline.add( 'cv_image', interface=CompositeVeinImage(), inputs={ 'mask': ('brain_mask', nifti_format), 'qsm': ('qsm', nifti_format), 'swi': ('swi', nifti_format), 'q_prior': (apply_trans_q, 'output_image'), 's_prior': (apply_trans_s, 'output_image'), 'a_prior': (apply_trans_a, 'output_image'), 'vein_atlas': (apply_trans_v, 'output_image') }, outputs={'composite_vein_image': ('out_file', nifti_format)}, requirements=[matlab_req.v('R2015a')], wall_time=300, mem_gb=24) return pipeline