def sort_pes(pes): from nipype import config, logging from nipype.interfaces.fsl import Merge from os.path import abspath config.enable_debug_mode() logging.update_logging(config) print(pes) pe1s = [] pe0s = [] for file in pes: if 'pe0' in file: pe0s.append(file) elif 'pe1' in file: pe1s.append(file) pe1s = sorted(pe1s) pe0s = sorted(pe0s) me = Merge() merged_pes = [] for i in range(0,len(pe1s)): num=pe1s[i][-12:-11] me.inputs.in_files = [pe1s[i],pe0s[i]] me.inputs.dimension='t' me.inputs.merged_file = 'merged_pes%s.nii.gz' % num me.run() file = abspath('merged_pes%s.nii.gz' % num) merged_pes.append(file) return(merged_pes)
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)
from nipype.interfaces.fsl.model import SmoothEstimate from interfaces import Cluster from nipype.interfaces.fsl.utils import Merge from nipype.interfaces.fsl.Info import standard_image from interfaces import PtoZ 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')