def fod_pipeline(self, **name_maps): # @UnusedVariable """ Estimates the fibre orientation distribution (FOD) using constrained spherical deconvolution Parameters ---------- """ # inputs=[FilesetSpec('bias_correct', nifti_gz_format), # FilesetSpec('grad_dirs', fsl_bvecs_format), # FilesetSpec('bvalues', fsl_bvals_format), # FilesetSpec('wm_response', text_format), # FilesetSpec('brain_mask', nifti_gz_format)], # outputs=[FilesetSpec('fod', nifti_gz_format)], pipeline = self.new_pipeline( name='fod', desc=("Estimates the fibre orientation distribution in each" " voxel"), references=[mrtrix_cite], name_maps=name_maps) if self.branch('fod_algorithm', 'msmt_csd'): pipeline.add_input(FilesetSpec('gm_response', text_format)) pipeline.add_input(FilesetSpec('csf_response', text_format)) # Create fod fit node dwi2fod = pipeline.add( 'dwi2fod', EstimateFOD(), requirements=[mrtrix_req.v('3.0rc3')]) dwi2fod.inputs.algorithm = self.parameter('fod_algorithm') # Gradient merge node fsl_grads = pipeline.add("fsl_grads", MergeTuple(2)) # Connect nodes pipeline.connect(fsl_grads, 'out', dwi2fod, 'grad_fsl') # Connect to inputs pipeline.connect_input('grad_dirs', fsl_grads, 'in1') pipeline.connect_input('bvalues', fsl_grads, 'in2') pipeline.connect_input('bias_correct', dwi2fod, 'in_file') pipeline.connect_input('wm_response', dwi2fod, 'wm_txt') pipeline.connect_input('brain_mask', dwi2fod, 'mask_file') # Connect to outputs pipeline.connect_output('wm_odf', dwi2fod, 'wm_odf') # If multi-tissue if self.multi_tissue: pipeline.connect_input('gm_response', dwi2fod, 'gm_txt') pipeline.connect_input('csf_response', dwi2fod, 'csf_txt') dwi2fod.inputs.gm_odf = 'gm.mif' dwi2fod.inputs.csf_odf = 'csf.mif' pipeline.connect_output('gm_odf', dwi2fod, 'gm_odf') pipeline.connect_output('csf_odf', dwi2fod, 'csf_odf') # Check inputs/output are connected return pipeline
def fod_pipeline(self, **name_maps): # @UnusedVariable """ Estimates the fibre orientation distribution (FOD) using constrained spherical deconvolution Parameters ---------- """ pipeline = self.new_pipeline( name='fod', desc=("Estimates the fibre orientation distribution in each" " voxel"), citations=[mrtrix_cite], name_maps=name_maps) if self.branch('fod_algorithm', 'msmt_csd'): pipeline.add_input(FilesetSpec('gm_response', text_format)) pipeline.add_input(FilesetSpec('csf_response', text_format)) # Create fod fit node dwi2fod = pipeline.add( 'dwi2fod', EstimateFOD(algorithm=self.parameter('fod_algorithm')), inputs={ 'in_file': (self.series_preproc_spec_name, nifti_gz_format), 'wm_txt': ('wm_response', text_format), 'mask_file': (self.brain_mask_spec_name, nifti_gz_format), 'grad_fsl': self.fsl_grads(pipeline) }, outputs={'wm_odf': ('wm_odf', nifti_gz_format)}, requirements=[mrtrix_req.v('3.0rc3')]) if self.multi_tissue: dwi2fod.inputs.gm_odf = 'gm.mif', dwi2fod.inputs.csf_odf = 'csf.mif', pipeline.connect_input('gm_response', dwi2fod, 'gm_txt', text_format), pipeline.connect_input('csf_response', dwi2fod, 'csf_txt', text_format), pipeline.connect_output('gm_odf', dwi2fod, 'gm_odf', nifti_gz_format), pipeline.connect_output('csf_odf', dwi2fod, 'csf_odf', nifti_gz_format), # Check inputs/output are connected return pipeline
def fod_pipeline(self, **kwargs): # @UnusedVariable """ Estimates the fibre orientation distribution (FOD) using constrained spherical deconvolution Parameters ---------- """ inputs = [ DatasetSpec('bias_correct', nifti_gz_format), DatasetSpec('grad_dirs', fsl_bvecs_format), DatasetSpec('bvalues', fsl_bvals_format), DatasetSpec('wm_response', text_format), DatasetSpec('brain_mask', nifti_gz_format) ] outputs = [DatasetSpec('wm_odf', mrtrix_format)] if self.multi_tissue: inputs.append(DatasetSpec('gm_response', text_format)) inputs.append(DatasetSpec('csf_response', text_format)) outputs.append(DatasetSpec('gm_odf', mrtrix_format)) outputs.append(DatasetSpec('csf_odf', mrtrix_format)) algorithm = 'msmt_csd' else: algorithm = 'csd' pipeline = self.create_pipeline( name='fod', inputs=inputs, outputs=outputs, desc=("Estimates the fibre orientation distribution in each" " voxel"), version=1, citations=[mrtrix_cite], **kwargs) # Create fod fit node dwi2fod = pipeline.create_node(EstimateFOD(), name='dwi2fod', requirements=[mrtrix3_req]) dwi2fod.inputs.algorithm = algorithm # Gradient merge node fsl_grads = pipeline.create_node(MergeTuple(2), name="fsl_grads") # Connect nodes pipeline.connect(fsl_grads, 'out', dwi2fod, 'grad_fsl') # Connect to inputs pipeline.connect_input('grad_dirs', fsl_grads, 'in1') pipeline.connect_input('bvalues', fsl_grads, 'in2') pipeline.connect_input('bias_correct', dwi2fod, 'in_file') pipeline.connect_input('wm_response', dwi2fod, 'wm_txt') pipeline.connect_input('brain_mask', dwi2fod, 'mask_file') # Connect to outputs pipeline.connect_output('wm_odf', dwi2fod, 'wm_odf') # If multi-tissue if self.multi_tissue: pipeline.connect_input('gm_response', dwi2fod, 'gm_txt') pipeline.connect_input('csf_response', dwi2fod, 'csf_txt') dwi2fod.inputs.gm_odf = 'gm.mif' dwi2fod.inputs.csf_odf = 'csf.mif' pipeline.connect_output('gm_odf', dwi2fod, 'gm_odf') pipeline.connect_output('csf_odf', dwi2fod, 'csf_odf') # Check inputs/output are connected return pipeline