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)
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)
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)
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')
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)
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
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
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
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)
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])
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 )
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
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')
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])
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
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)
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)
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') ])