예제 #1
0
파일: rs_corr.py 프로젝트: NBCLab/niconn
def rs_grouplevel(z, prefix, output_dir, work_dir):

    from nipype.interfaces.fsl.model import Randomise
    from nipype.interfaces import fsl as fsl


    merger = fsl.utils.Merge()
    merger.inputs.in_files = z
    merger.inputs.dimension = 't'
    merger.inputs.merged_file = op.join(work_dir, 'z_merge.nii.gz')
    merger.run()

    immaths = fsl.utils.ImageMaths()
    immaths.inputs.in_file = op.join(work_dir, 'z_merge.nii.gz')
    immaths.inputs.op_string = "-abs -bin -Tmin"
    immaths.inputs.out_file = op.join(work_dir, 'mask.nii.gz')
    immaths.run()

    masker = fsl.maths.ApplyMask()
    masker.inputs.in_file = op.join(work_dir, 'z_merge.nii.gz')
    masker.inputs.mask_file = op.join(work_dir, 'mask.nii.gz')
    masker.inputs.out_file = op.join(work_dir, 'z_merge.nii.gz')
    masker.run()

    meaner = fsl.utils.ImageMaths()
    meaner.inputs.in_file = op.join(work_dir, 'z_merge.nii.gz')
    meaner.inputs.op_string = "-Tmean"
    meaner.inputs.out_file = op.join(work_dir, 'z.nii.gz')
    meaner.run()
    shutil.copyfile(op.join(work_dir, 'z.nii.gz'), op.join(output_dir, '{prefix}_z.nii.gz'.format(prefix=prefix)))

    randomise = Randomise()
    randomise.inputs.in_file = op.join(work_dir, 'z_merge.nii.gz')
    randomise.inputs.mask = op.join(work_dir, 'mask.nii.gz')
    randomise.inputs.one_sample_group_mean = True
    randomise.inputs.raw_stats_imgs = True
    randomise.inputs.vox_p_values = True
    randomise.inputs.base_name = 'randomise'
    os.chdir(work_dir)
    randomise.run()

    thresher = fsl.utils.ImageMaths()
    thresher.inputs.in_file = op.join(work_dir, 'randomise_vox_corrp_tstat1.nii.gz')
    thresher.inputs.op_string = "-thr 0.999"
    thresher.inputs.out_file = op.join(work_dir, 'randomise_vox_corrp_tstat1_thr001.nii.gz')
    thresher.run()

    masker = fsl.maths.ApplyMask()
    masker.inputs.in_file = op.join(work_dir, 'randomise_tstat1.nii.gz')
    masker.inputs.mask_file = op.join(work_dir, 'randomise_vox_corrp_tstat1_thr001.nii.gz')
    masker.inputs.out_file = op.join(work_dir, 'randomise_tstat1_thr001.nii.gz')
    masker.run()

    #copy data to directory vox_corrp_tstat1.nii.gz
    shutil.copyfile(op.join(work_dir, 'randomise_tstat1.nii.gz'), op.join(output_dir, '{prefix}_tstat1.nii.gz'.format(prefix=prefix)))
    shutil.copyfile(op.join(work_dir, 'randomise_vox_corrp_tstat1.nii.gz'), op.join(output_dir, '{prefix}_vox_corrp.nii.gz'.format(prefix=prefix)))
    shutil.copyfile(op.join(work_dir, 'randomise_tstat1_thr001.nii.gz'), op.join(output_dir, '{prefix}_tstat1_thr001.nii.gz'.format(prefix=prefix)))

    shutil.rmtree(work_dir)