def test_MultipleRegressDesign_outputs(): output_map = dict(design_fts=dict(), design_grp=dict(), design_mat=dict(), design_con=dict(), ) outputs = MultipleRegressDesign.output_spec() for key, metadata in output_map.items(): for metakey, value in metadata.items(): yield assert_equal, getattr(outputs.traits()[key], metakey), value
def test_MultipleRegressDesign_outputs(): output_map = dict( design_con=dict(), design_fts=dict(), design_grp=dict(), design_mat=dict(), ) outputs = MultipleRegressDesign.output_spec() for key, metadata in output_map.items(): for metakey, value in metadata.items(): yield assert_equal, getattr(outputs.traits()[key], metakey), value
def test_MultipleRegressDesign_inputs(): input_map = dict(ignore_exception=dict(nohash=True, usedefault=True, ), contrasts=dict(mandatory=True, ), regressors=dict(mandatory=True, ), groups=dict(), ) inputs = MultipleRegressDesign.input_spec() for key, metadata in input_map.items(): for metakey, value in metadata.items(): yield assert_equal, getattr(inputs.traits()[key], metakey), value
def test_MultipleRegressDesign_inputs(): input_map = dict( contrasts=dict(mandatory=True, ), groups=dict(), ignore_exception=dict( nohash=True, usedefault=True, ), regressors=dict(mandatory=True, ), ) inputs = MultipleRegressDesign.input_spec() for key, metadata in input_map.items(): for metakey, value in metadata.items(): yield assert_equal, getattr(inputs.traits()[key], metakey), value
def rs_grouplevel(copes, varcopes, dofs, output_dir, work_dir): from nipype.interfaces.fsl.model import MultipleRegressDesign from nipype.interfaces.utility import Function from nipype.interfaces.fsl.model import FLAMEO from nipype.interfaces.fsl.model import SmoothEstimate from connectivity.interfaces import Cluster from nipype.interfaces.fsl.utils import Merge from nipype.interfaces.fsl import Info from connectivity.interfaces import PtoZ grplevelworkflow = pe.Workflow(name="grplevelworkflow") grplevelworkflow.base_dir = work_dir merger = Merge() merger.inputs.dimension = 't' merger.inputs.in_files = copes merger.inputs.merged_file = op.join(work_dir, 'cope.nii.gz') merger.run() merger.inputs.in_files = varcopes merger.inputs.merged_file = op.join(work_dir, 'varcope.nii.gz') merger.run() merger.inputs.in_files = dofs merger.inputs.merged_file = op.join(work_dir, 'dof.nii.gz') merger.run() model = pe.Node(interface=MultipleRegressDesign(), name='model') model.inputs.contrasts = [['mean', 'T', ['roi'], [1]]] model.inputs.regressors = dict(roi=np.ones(len(copes)).tolist()) flameo = pe.Node(interface=FLAMEO(), name='flameo') flameo.inputs.cope_file = op.join(work_dir, 'cope.nii.gz') flameo.inputs.var_cope_file = op.join(work_dir, 'varcope.nii.gz') flameo.inputs.dof_var_cope_file = op.join(work_dir, 'dof.nii.gz') flameo.inputs.run_mode = 'flame1' flameo.inputs.mask_file = Info.standard_image( 'MNI152_T1_2mm_brain_mask.nii.gz') grplevelworkflow.connect(model, 'design_con', flameo, 't_con_file') grplevelworkflow.connect(model, 'design_grp', flameo, 'cov_split_file') grplevelworkflow.connect(model, 'design_mat', flameo, 'design_file') smoothest = pe.Node(SmoothEstimate(), name='smooth_estimate') grplevelworkflow.connect(flameo, 'zstats', smoothest, 'residual_fit_file') smoothest.inputs.mask_file = Info.standard_image( 'MNI152_T1_2mm_brain_mask.nii.gz') smoothest.inputs.dof = len(dofs) - 1 cluster = pe.Node(Cluster(), name='cluster') ptoz = pe.Node(PtoZ(), name='ptoz') ptoz.inputs.pvalue = 0.001 calculate_resels = pe.Node(Function(input_names=["volume", "resels"], output_names=["resels"], function=calcres), name="calcres") grplevelworkflow.connect(smoothest, 'resels', cluster, 'resels') grplevelworkflow.connect(smoothest, 'resels', calculate_resels, 'resels') grplevelworkflow.connect(smoothest, 'volume', calculate_resels, 'volume') grplevelworkflow.connect(calculate_resels, 'resels', ptoz, 'resels') grplevelworkflow.connect(ptoz, 'zstat', cluster, 'threshold') cluster.inputs.connectivity = 26 cluster.inputs.out_threshold_file = True cluster.inputs.out_index_file = True cluster.inputs.out_localmax_txt_file = True cluster.inputs.voxthresh = True grplevelworkflow.connect(flameo, 'zstats', cluster, 'in_file') datasink = pe.Node(nio.DataSink(), name='sinker') datasink.inputs.base_directory = work_dir grplevelworkflow.connect(flameo, 'zstats', datasink, 'z') grplevelworkflow.connect(cluster, 'threshold_file', datasink, 'z_thresh') grplevelworkflow.run() shutil.rmtree(op.join(work_dir, 'grplevelworkflow')) #copy data to directory shutil.copyfile(op.join(work_dir, 'z', 'zstat1.nii.gz'), op.join(output_dir, 'z.nii.gz')) shutil.copyfile(op.join(work_dir, 'z_thresh', 'zstat1_threshold.nii.gz'), op.join(output_dir, 'z_level-voxel_corr-FWE.nii.gz')) shutil.rmtree(work_dir)
def calcres(smoothest_input) resels = int(smoothest_input[0]/smoothest_input[1]) grplevelworkflow = pe.Workflow(name="grplevelworkflow") merger = Merge() merger.inputs.dimensions = 't' merger.inputs.in_files = copes merger.inputs.merged_file = op.join(work_dir, 'cope.nii.gz') merger.run() merger.inputs.in_files = varcopes merger.inputs.merged_file = op.join(work_dir, 'varcope.nii.gz') merger.run() model = MultipleRegressDesign() model.inputs.contrasts = [['mean', 'T', ['roi'], [1]]] model.intputs.regressors = dict(roi=np.ones(len(copes))) flameo = pe.Node(interface=FLAMEO(), name='flameo') flameo.inputs.cope_file = op.join(work_dir, 'cope.nii.gz') flameo.inputs.var_cope_file = op.join(work_dir, 'varcope.nii.gz') flameo.inputs.run_mode = 'flame1' flameo.inputs.mask = standard_image('MNI152_T1_2mm_brain_mask.nii.gz') grplevelworkflow.connect(model, 'design_con', flameo, 'inputs.t_con_file') grplevelworkflow.connect(model, 'design_grp', flameo, 'inputs.cov_split_file') grplevelworkflow.connect(model, 'design_mat', flameo, 'inputs.design_file') smoothest = Node(SmoothEstimate(), name='smooth_estimate') grplevelworkflow.connect(flameo, 'zstats', smoothest, 'zstat_file')