Exemplo n.º 1
0
def swi_link_inputs(swi_info, link_to_dir, change_to_dir=True):

    util.mkcd_dir([link_to_dir], change_to_dir)

    input_files = swi_info['inputs']

    util.link_inputs(input_files + label_files, link_to_dir)
Exemplo n.º 2
0
def results(ants_ct_info, verbose=False):

    # Create results directory and populate

    util.mkcd_dir([ants_ct_info['base']['results']], True)

    files_to_link = [
        (ants_ct_info['segment']['p_wm'], ants_ct_info['results']['p_wm']),
        (ants_ct_info['segment']['segment'],
         ants_ct_info['results']['segment']),
        (ants_ct_info['register']['ct'], ants_ct_info['results']['ct']),
        (ants_ct_info['register']['subject_to_template_affine'],
         ants_ct_info['results']['subject_to_template_affine']),
        (ants_ct_info['register']['subject_to_template_warp'],
         ants_ct_info['results']['subject_to_template_warp']),
        (ants_ct_info['register']['subject_to_template_jacobian'],
         ants_ct_info['results']['subject_to_template_jacobian']),
        (ants_ct_info['register']['template_to_subject_affine'],
         ants_ct_info['results']['template_to_subject_affine']),
        (ants_ct_info['register']['template_to_subject_warp'],
         ants_ct_info['results']['template_to_subject_warp'])
    ]

    for ii in files_to_link:
        util.force_hard_link(ii[0], ii[1])

    fsl_command = [
        'fslmaths', ants_ct_info['segment']['p_gm_cortical'], '-add',
        ants_ct_info['segment']['p_gm_subcortical'],
        ants_ct_info['results']['p_gm']
    ]

    util.iw_subprocess(fsl_command)

    methods_write_json_redcap_ants_ct_instrument(ants_ct_info, verbose)
Exemplo n.º 3
0
def methods_02_lpa(input_dir, verbose):

    cenc_dirs = cenc.directories(input_dir)

    wm_lesions_dir = cenc_dirs['wmlesions']['dirs']['root']
    wm_lesions_lpa_dir = cenc_dirs['wmlesions']['dirs']['lpa']

    util.mkcd_dir([cenc_dirs['wmlesions']['dirs']['lpa']], True)

    util.copy_inputs([
        os.path.join(cenc_dirs['wmlesions']['dirs']['register'],
                     't2flair_Affine_nu__t2flair_Warped.nii.gz')
    ], cenc_dirs['wmlesions']['dirs']['lpa'])

    glob_files = glob.glob('*.gz')

    for ii in glob_files:
        os.system('gunzip ' + ii)
        os.chmod(str.replace(ii, '.gz', ''),
                 stat.S_IRUSR | stat.S_IRGRP | stat.S_IWUSR | stat.S_IWGRP)

    # Run Matlab

    command = ['cenc_wmlesions_run.sh', cenc_dirs['wmlesions']['dirs']['lpa']]
    util.iw_subprocess(command, verbose, verbose, False)

    os.chdir(cenc_dirs['wmlesions']['dirs']['lpa'])

    for ii in glob.glob('*.nii'):
        os.system('gzip ' + ii)
        os.chmod(str.replace(ii, '.nii', '.nii.gz'),
                 stat.S_IRUSR | stat.S_IRGRP | stat.S_IWUSR | stat.S_IWGRP)
Exemplo n.º 4
0
def methods_02_stats(config, verbose=False):

    input_dir = config['dirs']['input']

    util.mkcd_dir([config['methods']['results']['dir']], True)

    command = [
        'fslmaths',
        os.path.join(config['dirs']['methods']['01-register'],
                     'nu_brain.nii.gz'), '-bin',
        os.path.join(config['dirs']['methods']['results'], 'brain_mask.nii.gz')
    ]

    util.iw_subprocess(command, verbose, verbose, False)

    for ii in ['swi', 'swi_magnitude', 'swi_phase']:

        command = [
            'fslmaths',
            os.path.join(config['dirs']['methods']['01-register'],
                         'swi_Affine_nu__' + ii + '.nii.gz'), '-mas',
            'brain_mask.nii.gz', ii + '.nii.gz'
        ]

        util.iw_subprocess(command, verbose, verbose, False)

    util.force_hard_link(
        os.path.join(config['methods']['input']['dir'], 'nu.nii.gz'),
        'nu.nii.gz')
    util.force_hard_link(
        os.path.join(config['methods']['input']['dir'], 'nu_brain.nii.gz'),
        'nu_brain.nii.gz')
Exemplo n.º 5
0
def swi_link_inputs(input_dir, link_to_dir, change_to_dir=True):

    cenc_dirs = cenc.directories(input_dir)

    util.mkcd_dir([link_to_dir], change_to_dir)

    input_files = cenc_dirs['swi']['inputs']
    label_files = cenc_dirs['swi']['labels']

    util.link_inputs(input_files + label_files, link_to_dir)
Exemplo n.º 6
0
def methods_02_stats(input_dir, verbose=False):

    # Register MT images to nu.nii.gz
    cenc_dirs = cenc.directories(input_dir)

    util.mkcd_dir([cenc_dirs['mt']['dirs']['02-stats']], True)

    methods_write_json_redcap_mt_instrument(input_dir, verbose)

    return
Exemplo n.º 7
0
def results(input_dir):
    """ Gather results and write the MagTran JSON output file"""

    cenc_dirs = cenc.directories(input_dir)

    swi_input_dir = cenc_dirs['swi']['dirs']['input']
    swi_01_register_dir = cenc_dirs['swi']['dirs']['register']
    swi_results_dir = cenc_dirs['swi']['dirs']['results']

    util.mkcd_dir([swi_results_dir], True)

    result_files = [[
        os.path.join(cenc_dirs['swi']['dirs']['register'],
                     'swi_Affine_nu__swi_m0_Warped.nii.gz'),
        os.path.join(cenc_dirs['swi']['dirs']['results'],
                     'swi_Affine_nu__swi_m0.nii.gz')
    ],
                    [
                        os.path.join(cenc_dirs['swi']['dirs']['register'],
                                     'swi_Affine_nu__swi_m1_Warped.nii.gz'),
                        os.path.join(cenc_dirs['swi']['dirs']['results'],
                                     'swi_Affine_nu__swi_m1.nii.gz')
                    ],
                    [
                        os.path.join(cenc_dirs['swi']['dirs']['results'],
                                     'magtrans.json'),
                        os.path.join(cenc_dirs['swi']['dirs']['results'],
                                     'magtrans.json')
                    ],
                    [
                        os.path.join(cenc_dirs['swi']['dirs']['register'],
                                     'swir.nii.gz'),
                        os.path.join(cenc_dirs['swi']['dirs']['results'],
                                     'swir.nii.gz')
                    ],
                    [
                        os.path.join(cenc_dirs['swi']['dirs']['input'],
                                     'nu.nii.gz'),
                        os.path.join(cenc_dirs['swi']['dirs']['results'],
                                     'nu.nii.gz')
                    ],
                    [
                        os.path.join(cenc_dirs['swi']['dirs']['register'],
                                     'swir.nii.gz'),
                        os.path.join(cenc_dirs['results']['dirs']['images'],
                                     'swir.nii.gz')
                    ]]

    for ii in result_files:
        util.force_hard_link(ii[0], ii[1])

    return
Exemplo n.º 8
0
def prepare(input_dir):

    cenc_dirs = cenc.directories(input_dir)

    util.mkcd_dir([cenc_dirs['freesurfer']['input']])

    input_files = [
        os.path.join(cenc_dirs['cenc']['reorient'], 't1w.nii.gz'),
        os.path.join(cenc_dirs['cenc']['reorient'], 't2flair.nii.gz'),
        os.path.join(cenc_dirs['cenc']['reorient'], 't2tse.nii.gz')
    ]

    util.link_inputs(input_files, cenc_dirs['freesurfer']['input'])

    return
Exemplo n.º 9
0
def main():
    ## Parsing Arguments
    #
    #

    usage = "usage: %prog [options] arg1 arg2"

    parser = argparse.ArgumentParser(prog='create_pial_mask')

    parser.add_argument("subject_id", help="Subject ID", default=os.getcwd())
    parser.add_argument("--subjects_dir",
                        help="Subject's Directory (default=$SUBJECTS_DIR)",
                        default=os.getenv('SUBJECTS_DIR'))

    parser.add_argument('--out', help='Output filename', default='mask.nii.gz')
    parser.add_argument('--outdir', help='Output directory', default='./')
    parser.add_argument(
        '-r',
        '--reference',
        help=
        'Reference file to create mask with same orientation and image dimensions (None)',
        default=None)

    parser.add_argument('-v',
                        '--verbose',
                        help="Verbose flag",
                        action="store_true",
                        default=False)
    parser.add_argument('--keep',
                        help="Keep intermediate files",
                        action="store_true",
                        default=False)

    inArgs = parser.parse_args()

    output_directory = os.path.abspath(inArgs.outdir)

    reference_with_full_path = os.path.abspath(inArgs.reference)

    util.mkcd_dir(output_directory, cd_flag=False)

    create_pial_mask(inArgs.subject_id,
                     inArgs.subjects_dir,
                     inArgs.out,
                     output_directory,
                     reference=reference_with_full_path,
                     verbose=inArgs.verbose,
                     save=inArgs.keep)
Exemplo n.º 10
0
def methods_00_input(config, verbose):
    """ Renames inputs from configureation file to standard naming convention"""

    if verbose:
        print
        print(config['config']['dirs'])
        print
        print(config['methods']['input'])
        print

    util.mkcd_dir([config['methods']['input']['dir']], True)

    input_output_pairs = zip(config['methods']['input']['inputs'],
                             config['methods']['input']['outputs'])

    for ii in input_output_pairs:
        os.link(ii[0], ii[1])
Exemplo n.º 11
0
def prepare( input_dir ):

     cenc_dirs = cenc.directories( input_dir)

     wm_lesions_dir       = cenc_dirs['wmlesions']['dirs']['root']
     wm_lesions_input_dir = cenc_dirs['wmlesions']['dirs']['input']
     wm_lesions_lpa_dir   = cenc_dirs['wmlesions']['dirs']['lpa']

     # Create Input Directory if it doesn't exist and link files 

     files = [  os.path.abspath( os.path.join( cenc_dirs['results']['dirs']['images'], 'nu.nii.gz')), 
                os.path.abspath( os.path.join( cenc_dirs['results']['dirs']['labels'], 'mask.nii.gz')), 
                os.path.abspath( os.path.join( cenc_dirs['cenc']['reorient'], 't2flair.nii.gz'))
                ]

     util.mkcd_dir( os.path.join(  wm_lesions_input_dir ) )
     util.link_inputs( files, wm_lesions_input_dir )
Exemplo n.º 12
0
def prepare(input_dir):

    cenc_dirs = cenc.directories(input_dir)

    util.mkcd_dir([cenc_dirs['freesurfer']['input']])

    input_files = [os.path.join(cenc_dirs['cenc']['reorient'], 't1w.nii.gz')]

    #    Preliminary testing of Freesurfer with the T2FLAIR and T2_TSE has not been very successful.
    #    Removing them from the workflow.
    #
    #     input_files = [ os.path.join( cenc_dirs['cenc']['reorient'], 't2flair.nii.gz'),
    #                     os.path.join( cenc_dirs['cenc']['reorient'], 't2tse.nii.gz')
    #                     ]

    util.link_inputs(input_files, cenc_dirs['freesurfer']['input'])

    return
Exemplo n.º 13
0
def methods_01_register( input_dir, verbose ):

    cenc_dirs = cenc.directories( input_dir)

    wm_lesions_dir       = cenc_dirs['wmlesions']['dirs']['root']
    wm_lesions_lpa_dir   = cenc_dirs['wmlesions']['dirs']['lpa']

    # Register

    util.mkcd_dir( [ cenc_dirs['wmlesions']['dirs']['register'] ], True)

    files = [  os.path.join( cenc_dirs['wmlesions']['dirs']['input'], 'nu.nii.gz'),
            os.path.join( cenc_dirs['wmlesions']['dirs']['input'], 't2flair.nii.gz'),
            os.path.join( cenc_dirs['results']['dirs']['labels'], 'mask.nii.gz')
            ]

    util.link_inputs( files, cenc_dirs['wmlesions']['dirs']['register'] )

    ants_register('t2flair')
Exemplo n.º 14
0
def results( input_dir):

    cenc_dirs = cenc.directories( input_dir)
    util.mkcd_dir( [ cenc_dirs['wmlesions']['dirs']['results'] ], True)

    # Link Files

    link_result_files =   [ [  os.path.join( cenc_dirs['wmlesions']['dirs']['stats'], 'wmlesions_lpa_t2flair.nii.gz'),
                               os.path.join( cenc_dirs['wmlesions']['dirs']['results'],  'wmlesions_lpa_t2flair.nii.gz') ],

                               [ os.path.join( cenc_dirs['wmlesions']['dirs']['input'],    'nu.nii.gz'),
                               os.path.join( cenc_dirs['wmlesions']['dirs']['results'],  'nu.nii.gz') ],

                               [ os.path.join( cenc_dirs['wmlesions']['dirs']['stats'], 'wmlesions_lpa_pmap.nii.gz'),
                               os.path.join( cenc_dirs['wmlesions']['dirs']['results'],  'wmlesions_lpa_pmap.nii.gz')],

                               [ os.path.join( cenc_dirs['wmlesions']['dirs']['stats'], 'wmlesions.json'),
                               os.path.join( cenc_dirs['wmlesions']['dirs']['results'],  'wmlesions.json')],

                               [os.path.join(cenc_dirs['wmlesions']['dirs']['stats'], 'wmlesions_lpa_labels.nii.gz'),
                               os.path.join(cenc_dirs['wmlesions']['dirs']['results'], 'wmlesions_lpa_labels.nii.gz')],

                               [os.path.join(cenc_dirs['wmlesions']['dirs']['stats'], 'wmlesions_lpa_labels.csv'),
                               os.path.join(cenc_dirs['wmlesions']['dirs']['results'], 'wmlesions_lpa_labels.csv')],

                               [ os.path.join( cenc_dirs['wmlesions']['dirs']['stats'], 'wmlesions_lpa_mask.nii.gz'),
                               os.path.join( cenc_dirs['wmlesions']['dirs']['results'],  'wmlesions_lpa_mask.nii.gz')],

                               [ os.path.join( cenc_dirs['wmlesions']['dirs']['results'], 'wmlesions_lpa_pmap.nii.gz'),
                               os.path.join( cenc_dirs['results']['dirs']['images'],  'wmlesions_lpa_pmap.nii.gz')],

                               [ os.path.join( cenc_dirs['wmlesions']['dirs']['results'], 'wmlesions_lpa_mask.nii.gz'),
                               os.path.join( cenc_dirs['results']['dirs']['labels'],  'wmlesions_lpa_mask.nii.gz')],

                               [ os.path.join( cenc_dirs['wmlesions']['dirs']['results'], 'wmlesions_lpa_labels.nii.gz'),
                               os.path.join( cenc_dirs['results']['dirs']['labels'],  'wmlesions_lpa_labels.nii.gz')
                               ]
                               ]

    for ii in link_result_files:
        util.force_hard_link( ii[0], ii[1])
Exemplo n.º 15
0
    if inArgs.verbose:
        print('\nCENC ID: ' + id)
        print('CENC participant directory : ', participant_dir)
        print('CENC nifti directory : ', nifti_dir)
        print('CENC fMRI tarball : ', os.path.join(out_dir, tarball_filename))
        print('\n')

    # Create Output Directory if it doesn't exist

    files = [
        os.path.abspath(os.path.join(dicom_dir, 'dcmConvertAll.cfg')),
        os.path.abspath(os.path.join(dicom_dir, 'dcmConvert_cenc.cfg')),
        os.path.abspath(os.path.join(nifti_dir, 'rest.nii.gz'))
    ]

    util.mkcd_dir(out_dir)
    util.link_inputs(files, out_dir)

    files_to_be_tarred = glob.glob('*')

    # Create TarBall

    tarball = tarfile.open(tarball_filename, 'w:gz')

    for f in files_to_be_tarred:
        tarball.add(f)

    tarball.close()

    # Clean Directory
Exemplo n.º 16
0
def methods_03_stats(input_dir, verbose=False, min_lesion_volume=10):

    cenc_dirs = cenc.directories(input_dir)

    wm_lesions_dir = cenc_dirs['wmlesions']['dirs']['root']
    wm_lesions_lpa_dir = cenc_dirs['wmlesions']['dirs']['lpa']

    util.mkcd_dir([cenc_dirs['wmlesions']['dirs']['stats']], True)

    wm_lesions_stats_filename = os.path.join(
        cenc_dirs['wmlesions']['dirs']['stats'], 'wmlesions_lpa_labels.csv')

    # Create labels file from LPA probability map
    iw_labels_label.create(
        os.path.join(cenc_dirs['wmlesions']['dirs']['lpa'],
                     'ples_lpa_mt2flair_Affine_nu__t2flair_Warped.nii.gz'),
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'))

    # Measure statistics of labels
    iw_labels_stats.measure(
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'),
        None,
        False, ['volume_mm3'],
        wm_lesions_stats_filename,
        limits_volume_voxels=[min_lesion_volume, numpy.inf],
        limits_bb_volume_voxels=[0, numpy.inf],
        limits_fill_factor=[0, 1],
        sort='volume_mm3',
        verbose=verbose,
        verbose_nlines=20)

    # Keep labels greater than 10 mm^3.  Limit is set above
    iw_labels_keep.keep(
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'), [],
        wm_lesions_stats_filename,
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'))
    #  1)
    #  2) Create a WM Lesions mask
    #  3)

    command = [[
        'fslmaths',
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'), '-bin', '-mul',
        os.path.join(cenc_dirs['wmlesions']['dirs']['lpa'],
                     'ples_lpa_mt2flair_Affine_nu__t2flair_Warped.nii.gz'),
        '-mas',
        os.path.join(cenc_dirs['wmlesions']['dirs']['input'], 'mask.nii.gz'),
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_pmap.nii.gz')
    ],
               [
                   'fslmaths',
                   os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                                'wmlesions_lpa_labels.nii.gz'), '-bin',
                   os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                                'wmlesions_lpa_mask.nii.gz')
               ],
               [
                   'fslmaths',
                   os.path.join(cenc_dirs['wmlesions']['dirs']['lpa'],
                                'mt2flair_Affine_nu__t2flair_Warped.nii.gz'),
                   '-mas',
                   os.path.join(cenc_dirs['wmlesions']['dirs']['input'],
                                'mask.nii.gz'),
                   os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                                'wmlesions_lpa_t2flair.nii.gz')
               ]]

    for ii in command:
        util.iw_subprocess(ii, verbose, verbose, False)

    # Write out JSON file with RedCap Instrument
    methods_write_json_redcap_instrument(input_dir, wm_lesions_stats_filename,
                                         verbose)
Exemplo n.º 17
0
def methods_03_stats(input_dir,
                     lower_threshold=0.5,
                     upper_threshold=numpy.inf,
                     min_lesion_volume_voxels=10,
                     verbose=False):

    cenc_dirs = cenc.directories(input_dir)

    wm_lesions_dir = cenc_dirs['wmlesions']['dirs']['root']
    wm_lesions_lpa_dir = cenc_dirs['wmlesions']['dirs']['lpa']

    util.mkcd_dir([cenc_dirs['wmlesions']['dirs']['stats']], True)

    wm_lesions_stats_filename = os.path.join(
        cenc_dirs['wmlesions']['dirs']['stats'], 'wmlesions_lpa_labels.csv')
    wm_lesions_pmap_stats_filename = os.path.join(
        cenc_dirs['wmlesions']['dirs']['stats'], 'wmlesions_lpa_pmap.csv')

    # Mask LPA Probability Mask and remove NaN

    command = [[
        'fslmaths',
        os.path.join(cenc_dirs['wmlesions']['dirs']['lpa'],
                     'ples_lpa_mt2flair_Affine_nu__t2flair_Warped.nii.gz'),
        '-mas',
        os.path.join(cenc_dirs['wmlesions']['dirs']['input'],
                     'mask.nii.gz'), '-nan',
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_pmap.nii.gz')
    ]]

    for ii in command:
        util.iw_subprocess(ii, verbose, verbose, False)

    # Create labels file from LPA probability map

    labels.label_connected_components(
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_pmap.nii.gz'),
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'), lower_threshold,
        upper_threshold)

    # Measure properties of labels
    labels.properties(
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'),
        None,
        False, ['volume_mm3'],
        wm_lesions_stats_filename,
        limits_volume_voxels=[min_lesion_volume_voxels, numpy.inf],
        limits_bb_volume_voxels=[0, numpy.inf],
        limits_fill_factor=[0, 1],
        sort='volume_mm3',
        verbose=verbose,
        verbose_nlines=20)

    # Keep labels greater than 10 mm^3.  Limit is set above
    labels.keep(
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'), [],
        wm_lesions_stats_filename,
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'))
    #  1) Create a WM Lesions mask
    #  2) Mask LPA Registered T2 FLAIR

    command = [[
        'fslmaths',
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'), '-bin',
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_mask.nii.gz')
    ],
               [
                   'fslmaths',
                   os.path.join(cenc_dirs['wmlesions']['dirs']['lpa'],
                                'mt2flair_Affine_nu__t2flair_Warped.nii.gz'),
                   '-mas',
                   os.path.join(cenc_dirs['wmlesions']['dirs']['input'],
                                'mask.nii.gz'),
                   os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                                'wmlesions_lpa_t2flair.nii.gz')
               ]]

    for ii in command:
        util.iw_subprocess(ii, verbose, verbose, False)

    # Measure Pmaps stats labels
    df_pmap_measure = labels.measure(
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_labels.nii.gz'),
        os.path.join(cenc_dirs['wmlesions']['dirs']['stats'],
                     'wmlesions_lpa_pmap.nii.gz'))

    df_pmap_measure.to_csv(wm_lesions_pmap_stats_filename, index=False)

    # Write out JSON file with RedCap Instrument
    methods_write_json_redcap_instrument(input_dir, wm_lesions_stats_filename,
                                         wm_lesions_pmap_stats_filename,
                                         verbose)
Exemplo n.º 18
0
def results(input_dir, verbose):

    cenc_dirs = cenc.directories(input_dir)
    cenc_freesurfer_dir = cenc_dirs['freesurfer']['mri']

    util.mkcd_dir([
        cenc_dirs['results']['dirs']['root'],
        cenc_dirs['results']['dirs']['images'],
        cenc_dirs['results']['dirs']['labels']
    ], True)

    files_to_convert = [
        os.path.join(cenc_freesurfer_dir, 'nu.mgz'),
        os.path.join(cenc_freesurfer_dir, 'aseg.mgz'),
        os.path.join(cenc_freesurfer_dir, 'brainmask.mgz'),
        os.path.join(cenc_freesurfer_dir, 'aparc.a2009s+aseg.mgz'),
        os.path.join(cenc_freesurfer_dir, 'wmparc.mgz')
    ]

    # Check if files exist

    if util.check_files(files_to_convert, True) == False:
        sys.exit()

    # Create link to directory

    if not os.path.exists(cenc_dirs['freesurfer']['results']):
        util.force_symbolic_link(cenc_dirs['freesurfer']['mri'],
                                 cenc_dirs['freesurfer']['results'])

    # TODO use input node to run this instead of a loop. The trick part is to have the files named correctly.

    for ii in files_to_convert:
        mc = fs.MRIConvert(in_file=ii,
                           out_file=os.path.join(
                               cenc_dirs['results']['dirs']['labels'],
                               str.replace(os.path.basename(ii), '.mgz',
                                           '.nii.gz')),
                           out_type='niigz')
        mc.run()

        reorient = fsl.Reorient2Std(in_file=mc.inputs.out_file,
                                    out_file=mc.inputs.out_file)
        reorient.run()

    # Link nu.nii.gz to results/native/images

    result_files = [[
        os.path.join(cenc_dirs['results']['dirs']['labels'], 'nu.nii.gz'),
        os.path.join(cenc_dirs['results']['dirs']['images'], 'nu.nii.gz')
    ]]

    for ii in result_files:
        util.force_hard_link(ii[0], ii[1])

    # Create final brain mask.

    cenc.create_mask(
        os.path.join(cenc_dirs['results']['dirs']['labels'],
                     'brainmask.nii.gz'),
        os.path.join(cenc_dirs['results']['dirs']['labels'],
                     'aparc.a2009s+aseg.nii.gz'),
        os.path.join(cenc_dirs['results']['dirs']['labels'], 'mask.nii.gz'))

    # Create macroscopic labels

    labels.extract(os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'aseg.nii.gz'), [],
                   [10, 11, 12, 13, 17, 18, 49, 50, 51, 52, 53, 54],
                   os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'gm.subcortical.nii.gz'),
                   merge=1)

    labels.extract(os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'aseg.nii.gz'), [], [3, 42],
                   os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'gm.cerebral_cortex.nii.gz'),
                   merge=1)

    labels.extract(os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'aseg.nii.gz'), [], [8, 47],
                   os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'gm.cerebellum.nii.gz'),
                   merge=1)

    labels.extract(os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'aseg.nii.gz'), [], [2, 41],
                   os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'wm.cerebral.nii.gz'),
                   merge=1)

    labels.extract(os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'aseg.nii.gz'), [], [7, 46],
                   os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'wm.cerebellum.nii.gz'),
                   merge=1)

    labels.extract(os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'aseg.nii.gz'), [], [4, 43],
                   os.path.join(cenc_dirs['results']['dirs']['labels'],
                                'ventricles.nii.gz'),
                   merge=1)

    # Brain extraction nu.nii.gz
    util.iw_subprocess([
        'fslmaths',
        os.path.join(cenc_dirs['results']['dirs']['images'], 'nu.nii.gz'),
        '-mas',
        os.path.join(cenc_dirs['results']['dirs']['labels'], 'mask.nii.gz'),
        os.path.join(cenc_dirs['results']['dirs']['images'], 'nu_brain.nii.gz')
    ])