Beispiel #1
0
def compute_tensor_model(dir_src, dir_out, verbose=False):

    fbval = pjoin(dir_src, 'bvals_' + par_b_tag)
    fbvec = pjoin(dir_src, 'bvecs_' + par_b_tag)
    fdwi = pjoin(dir_src, 'data_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')
    fmask = pjoin(dir_src, 'nodif_brain_mask_' + par_dim_tag + '.nii.gz')

    bvals, bvecs = read_bvals_bvecs(fbval, fbvec)
    gtab = gradient_table(bvals, bvecs, b0_threshold=par_b0_threshold)
    data, affine = load_nifti(fdwi, verbose)
    mask, _ = load_nifti(fmask, verbose)

    ten_model = TensorModel(gtab)
    ten_fit = ten_model.fit(data, mask)

    FA = ten_fit.fa
    MD = ten_fit.md
    EV = ten_fit.evecs.astype(np.float32)

    fa_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_FA.nii.gz'
    save_nifti(pjoin(dir_out, fa_name), FA, affine)
    md_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_MD.nii.gz'
    save_nifti(pjoin(dir_out, md_name), MD, affine)
    ev_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_EV.nii.gz'
    save_nifti(pjoin(dir_out, ev_name), EV, affine)
def compute_tensor_model(dir_src, dir_out, verbose=False):

    fbval = pjoin(dir_src, 'bvals_' + par_b_tag)
    fbvec = pjoin(dir_src, 'bvecs_' + par_b_tag)
    fdwi =  pjoin(dir_src, 'data_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')
    fmask = pjoin(dir_src, 'nodif_brain_mask_' + par_dim_tag + '.nii.gz')

    bvals, bvecs = read_bvals_bvecs(fbval, fbvec)
    gtab = gradient_table(bvals, bvecs, b0_threshold=par_b0_threshold)
    data, affine = load_nifti(fdwi, verbose)
    mask, _ = load_nifti(fmask, verbose)

    ten_model = TensorModel(gtab)
    ten_fit = ten_model.fit(data, mask)

    FA = ten_fit.fa
    MD = ten_fit.md
    EV = ten_fit.evecs.astype(np.float32)

    fa_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_FA.nii.gz'
    save_nifti(pjoin(dir_out, fa_name), FA, affine)
    md_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_MD.nii.gz'
    save_nifti(pjoin(dir_out, md_name), MD, affine)
    ev_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_EV.nii.gz'
    save_nifti(pjoin(dir_out, ev_name), EV, affine)
def tracking_prob(dir_src, dir_out, verbose=False):

    wm_name = 'wm_mask_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    wm_mask, affine = load_nifti(pjoin(dir_src, wm_name), verbose)

    sh_name = 'sh_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    sh, _ = load_nifti(pjoin(dir_src, sh_name), verbose)

    sphere = get_sphere('symmetric724') 

    classifier = ThresholdTissueClassifier(wm_mask.astype('f8'), .5)
    classifier = BinaryTissueClassifier(wm_mask)
    max_dg = ProbabilisticDirectionGetter.from_shcoeff(sh, max_angle=par_trk_max_angle, sphere=sphere)
    seeds = utils.seeds_from_mask(wm_mask, density=2, affine=affine)
    streamlines = LocalTracking(max_dg, classifier, seeds, affine, step_size=par_trk_step_size)
    streamlines = list(streamlines)

    trk_name = 'tractogram_' + par_b_tag + '_' + par_dim_tag + '_' + par_trk_prob_tag + '.trk'
    trk_out = os.path.join(dir_out, trk_name)
 
    save_trk(trk_out, streamlines, affine, wm_mask.shape)

    dpy_out = trk_out.replace('.trk', '.dpy')
    dpy = Dpy(dpy_out, 'w')
    dpy.write_tracks(streamlines)
    dpy.close()
def resample_data_resolution(dir_src, dir_out, verbose=False):
    
    fmask = pjoin(dir_src, 'nodif_brain_mask.nii.gz')
    fdwi = pjoin(dir_out, 'data_' + par_b_tag + '.nii.gz')
    
    data, affine = load_nifti(fdwi, verbose)
    mask, _ = load_nifti(fmask, verbose)

    data2, affine2 = reslice(data, affine, (1.25,) * 3, (par_dim_vox,) * 3)
    mask2, _ = reslice(mask, affine, (1.25,) * 3, (par_dim_vox,) * 3, order=0)

    fname = 'data_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), data2, affine2)
    fname = 'nodif_brain_mask_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), mask2, affine2)
    
    fwmparc = pjoin(dir_src, '../wmparc.nii.gz')
    data, affine = load_nifti(fwmparc, verbose)
    data2, affine2 = reslice(data, affine, (0.7,) * 3, (par_dim_vox,) * 3, order=0)
    fname = 'wmparc_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), data2, affine2)

    ft1w = pjoin(dir_src, '../T1w_acpc_dc_restore_brain.nii.gz')
    data, affine = load_nifti(ft1w, verbose)
    data2, affine2 = reslice(data, affine, (0.7,) * 3, (par_dim_vox,) * 3, order=0, mode='constant')
    fname = 't1w_acpc_dc_restore_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), data2, affine2)
def tracking_eudx(dir_src, dir_out, verbose=False):

    # Loading FA and evecs data
    fa_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_FA.nii.gz'
    FA, affine = load_nifti(pjoin(dir_src, fa_name), verbose)

    evecs_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_EV.nii.gz'
    evecs, _ = load_nifti(pjoin(dir_src, evecs_name), verbose)

    # Computation of streamlines
    sphere = get_sphere('symmetric724') 
    peak_indices = quantize_evecs(evecs, sphere.vertices)
    streamlines = EuDX(FA.astype('f8'),
                       ind=peak_indices, 
                       seeds=par_eudx_seeds,
                       odf_vertices= sphere.vertices,
                       a_low=par_eudx_threshold)

    # Saving tractography
    voxel_size =  (par_dim_vox,) * 3
    dims = FA.shape[:3]
    hdr = nib.trackvis.empty_header()
    hdr['voxel_size'] = voxel_size
    hdr['voxel_order'] = 'LAS'
    hdr['dim'] = dims
    hdr['vox_to_ras'] = affine
    strm = ((sl, None, None) for sl in streamlines)
    trk_name = 'tractogram_' + par_b_tag + '_' + par_dim_tag + '_' + par_rec_tag + '_' + par_eudx_tag + '.trk'
    trk_out = os.path.join(dir_out, trk_name)
    nib.trackvis.write(trk_out, strm, hdr, points_space='voxel')    

    dpy_out = trk_out.replace('.trk', '.dpy')
    dpy = Dpy(dpy_out, 'w')
    dpy.write_tracks(streamlines)
    dpy.close()
Beispiel #6
0
def tracking_eudx(dir_src, dir_out, verbose=False):

    # Loading FA and evecs data
    fa_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_FA.nii.gz'
    FA, affine = load_nifti(pjoin(dir_src, fa_name), verbose)

    evecs_name = 'data_' + par_b_tag + '_' + par_dim_tag + '_EV.nii.gz'
    evecs, _ = load_nifti(pjoin(dir_src, evecs_name), verbose)

    # Computation of streamlines
    sphere = get_sphere('symmetric724')
    peak_indices = quantize_evecs(evecs, sphere.vertices)
    streamlines = EuDX(FA.astype('f8'),
                       ind=peak_indices,
                       seeds=par_eudx_seeds,
                       odf_vertices=sphere.vertices,
                       a_low=par_eudx_threshold)

    # Saving tractography
    voxel_size = (par_dim_vox, ) * 3
    dims = FA.shape[:3]
    hdr = nib.trackvis.empty_header()
    hdr['voxel_size'] = voxel_size
    hdr['voxel_order'] = 'LAS'
    hdr['dim'] = dims
    hdr['vox_to_ras'] = affine
    strm = ((sl, None, None) for sl in streamlines)
    trk_name = 'tractogram_' + par_b_tag + '_' + par_dim_tag + '_' + par_rec_tag + '_' + par_eudx_tag + '.trk'
    trk_out = os.path.join(dir_out, trk_name)
    nib.trackvis.write(trk_out, strm, hdr, points_space='voxel')
def constrained_spherical_deconvolution(dir_src, dir_out, verbose=False):

    # Load data
    fbval = pjoin(dir_src, 'bvals_' + par_b_tag)
    fbvec = pjoin(dir_src, 'bvecs_' + par_b_tag)
    fdwi =  pjoin(dir_src, 'data_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')
    #fmask = pjoin(dir_src, 'nodif_brain_mask_' + par_dim_tag + '.nii.gz')
    fmask = pjoin(dir_src, 'wm_mask_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')

    bvals, bvecs = read_bvals_bvecs(fbval, fbvec)
    gtab = gradient_table(bvals, bvecs, b0_threshold=par_b0_threshold)
    data, affine = load_nifti(fdwi, verbose)
    mask, _ = load_nifti(fmask, verbose)

    sphere = get_sphere('symmetric724')

    response, ratio = auto_response(gtab, data, roi_radius=par_ar_radius, 
                                    fa_thr=par_ar_fa_th)
    # print('Response function', response)

    # Model fitting
    csd_model = ConstrainedSphericalDeconvModel(gtab, response)
    csd_fit = csd_model.fit(data, mask=mask)

    # Saving Spherical Harmonic Coefficient
    out_peaks = 'sh_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, out_peaks), csd_fit.shm_coeff, affine)
Beispiel #8
0
def resample_data_resolution(dir_src, dir_out, verbose=False):

    fmask = pjoin(dir_src, 'nodif_brain_mask.nii.gz')
    fdwi = pjoin(dir_out, 'data_' + par_b_tag + '.nii.gz')

    data, affine = load_nifti(fdwi, verbose)
    mask, _ = load_nifti(fmask, verbose)

    data2, affine2 = reslice(data, affine, (1.25, ) * 3, (par_dim_vox, ) * 3)
    mask2, _ = reslice(mask,
                       affine, (1.25, ) * 3, (par_dim_vox, ) * 3,
                       order=0)

    fname = 'data_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), data2, affine2)
    fname = 'nodif_brain_mask_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), mask2, affine2)

    fwmparc = pjoin(dir_src, '../wmparc.nii.gz')
    data, affine = load_nifti(fwmparc, verbose)
    data2, affine2 = reslice(data,
                             affine, (0.7, ) * 3, (par_dim_vox, ) * 3,
                             order=0)
    fname = 'wmparc_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), data2, affine2)

    ft1w = pjoin(dir_src, '../T1w_acpc_dc_restore_brain.nii.gz')
    data, affine = load_nifti(ft1w, verbose)
    data2, affine2 = reslice(data,
                             affine, (0.7, ) * 3, (par_dim_vox, ) * 3,
                             order=0,
                             mode='constant')
    fname = 't1w_acpc_dc_restore_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), data2, affine2)
Beispiel #9
0
def constrained_spherical_deconvolution(dir_src, dir_out, verbose=False):

    # Load data
    fbval = pjoin(dir_src, 'bvals_' + par_b_tag)
    fbvec = pjoin(dir_src, 'bvecs_' + par_b_tag)
    fdwi = pjoin(dir_src, 'data_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')
    #fmask = pjoin(dir_src, 'nodif_brain_mask_' + par_dim_tag + '.nii.gz')
    fmask = pjoin(dir_src,
                  'wm_mask_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')

    bvals, bvecs = read_bvals_bvecs(fbval, fbvec)
    gtab = gradient_table(bvals, bvecs, b0_threshold=par_b0_threshold)
    data, affine = load_nifti(fdwi, verbose)
    mask, _ = load_nifti(fmask, verbose)

    sphere = get_sphere('symmetric724')

    response, ratio = auto_response(gtab,
                                    data,
                                    roi_radius=par_ar_radius,
                                    fa_thr=par_ar_fa_th)
    # print('Response function', response)

    # Model fitting
    csd_model = ConstrainedSphericalDeconvModel(gtab, response)
    csd_fit = csd_model.fit(data, mask=mask)

    # Saving Spherical Harmonic Coefficient
    out_peaks = 'sh_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, out_peaks), csd_fit.shm_coeff, affine)
def white_matter_mask_FA(dir_src, dir_out, verbose=False):

    src_fa =  'data_' + par_b_tag + '_' + par_dim_tag + '_FA.nii.gz'
    src_md =  'data_' + par_b_tag + '_' + par_dim_tag + '_MD.nii.gz'
    FA, affine = load_nifti(pjoin(dir_src, src_fa), verbose)
    MD, _ = load_nifti(pjoin(dir_src, src_md), verbose)

    wm_mask = (np.logical_or(FA >= 0.4, 
                             (np.logical_and(FA >= 0.15, MD >= 0.0011/2.))))

    out_wm = 'wm_mask_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, out_wm), wm_mask.astype('f4'), affine)
Beispiel #11
0
def white_matter_mask_FA(dir_src, dir_out, verbose=False):

    src_fa = 'data_' + par_b_tag + '_' + par_dim_tag + '_FA.nii.gz'
    src_md = 'data_' + par_b_tag + '_' + par_dim_tag + '_MD.nii.gz'
    FA, affine = load_nifti(pjoin(dir_src, src_fa), verbose)
    MD, _ = load_nifti(pjoin(dir_src, src_md), verbose)

    wm_mask = (np.logical_or(FA >= 0.4,
                             (np.logical_and(FA >= 0.15, MD >= 0.0011 / 2.))))

    out_wm = 'wm_mask_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, out_wm), wm_mask.astype('f4'), affine)
Beispiel #12
0
def tracking_eudx4csd(dir_src, dir_out, verbose=False):

    # Load data
    fbval = pjoin(dir_src, 'bvals_' + par_b_tag)
    fbvec = pjoin(dir_src, 'bvecs_' + par_b_tag)
    fdwi = pjoin(dir_src, 'data_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')
    #fmask = pjoin(dir_src, 'nodif_brain_mask_' + par_dim_tag + '.nii.gz')
    fmask = pjoin(dir_src,
                  'wm_mask_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')

    bvals, bvecs = read_bvals_bvecs(fbval, fbvec)
    gtab = gradient_table(bvals, bvecs, b0_threshold=par_b0_threshold)
    data, affine = load_nifti(fdwi, verbose)
    mask, _ = load_nifti(fmask, verbose)

    sphere = get_sphere('symmetric724')

    response, ratio = auto_response(gtab,
                                    data,
                                    roi_radius=par_ar_radius,
                                    fa_thr=par_ar_fa_th)
    # print('Response function', response)

    # Model fitting
    csd_model = ConstrainedSphericalDeconvModel(gtab, response)
    csd_peaks = peaks_from_model(csd_model,
                                 data,
                                 sphere,
                                 relative_peak_threshold=.5,
                                 min_separation_angle=25,
                                 parallel=False)

    # Computation of streamlines
    streamlines = EuDX(csd_peaks.peak_values,
                       csd_peaks.peak_indices,
                       seeds=par_eudx_seeds,
                       odf_vertices=sphere.vertices,
                       a_low=par_eudx_threshold)

    # Saving tractography
    voxel_size = (par_dim_vox, ) * 3
    dims = mask.shape[:3]
    hdr = nib.trackvis.empty_header()
    hdr['voxel_size'] = voxel_size
    hdr['voxel_order'] = 'LAS'
    hdr['dim'] = dims
    hdr['vox_to_ras'] = affine
    strm = ((sl, None, None) for sl in streamlines)
    trk_name = 'tractogram_' + par_b_tag + '_' + par_dim_tag + '_' + par_csd_tag + '_' + par_eudx_tag + '.trk'
    trk_out = os.path.join(dir_out, trk_name)
    nib.trackvis.write(trk_out, strm, hdr, points_space='voxel')
def tracking_eudx4csd(dir_src, dir_out, verbose=False):

    # Load data
    fbval = pjoin(dir_src, 'bvals_' + par_b_tag)
    fbvec = pjoin(dir_src, 'bvecs_' + par_b_tag)
    fdwi =  pjoin(dir_src, 'data_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')
    #fmask = pjoin(dir_src, 'nodif_brain_mask_' + par_dim_tag + '.nii.gz')
    fmask = pjoin(dir_src, 'wm_mask_' + par_b_tag + '_' + par_dim_tag + '.nii.gz')

    bvals, bvecs = read_bvals_bvecs(fbval, fbvec)
    gtab = gradient_table(bvals, bvecs, b0_threshold=par_b0_threshold)
    data, affine = load_nifti(fdwi, verbose)
    mask, _ = load_nifti(fmask, verbose)

    sphere = get_sphere('symmetric724') 

    response, ratio = auto_response(gtab, data, roi_radius=par_ar_radius, 
                                    fa_thr=par_ar_fa_th)
    # print('Response function', response)

    # Model fitting
    csd_model = ConstrainedSphericalDeconvModel(gtab, response)
    csd_peaks = peaks_from_model(csd_model, 
                                 data, 
                                 sphere,
                                 relative_peak_threshold=.5,
                                 min_separation_angle=25,
                                 parallel=False)

    # Computation of streamlines
    streamlines = EuDX(csd_peaks.peak_values,
                       csd_peaks.peak_indices, 
                       seeds=par_eudx_seeds,
                       odf_vertices= sphere.vertices,
                       a_low=par_eudx_threshold)

    # Saving tractography
    voxel_size =  (par_dim_vox,) * 3
    dims = mask.shape[:3]
    hdr = nib.trackvis.empty_header()
    hdr['voxel_size'] = voxel_size
    hdr['voxel_order'] = 'LAS'
    hdr['dim'] = dims
    hdr['vox_to_ras'] = affine
    strm = ((sl, None, None) for sl in streamlines)
    trk_name = 'tractogram_' + par_b_tag + '_' + par_dim_tag + '_' + par_csd_tag + '_' + par_eudx_tag + '.trk'
    trk_out = os.path.join(dir_out, trk_name)
    nib.trackvis.write(trk_out, strm, hdr, points_space='voxel')    
def single_shell_extraction(dir_src, dir_out, verbose=False):

    fbval = pjoin(dir_src, 'bvals')
    fbvec = pjoin(dir_src, 'bvecs')
    fmask = pjoin(dir_src, 'nodif_brain_mask.nii.gz')
    fdwi = pjoin(dir_src, 'data.nii.gz')

    bvals, bvecs = read_bvals_bvecs(fbval, fbvec)
    data, affine = load_nifti(fdwi, verbose)

    if par_b_shell == 1000:
        sind = (bvals < 10) | ((bvals < 1100) & (bvals > 900))
    elif par_b_shell == 2000:
        sind = (bvals < 10) | ((bvals < 2100) & (bvals > 1900))
    elif par_b_shell == 3000:
        sind = (bvals < 10) | ((bvals < 3100) & (bvals > 2900))

    shell_data = data[..., sind]
    shell_gtab = gradient_table(bvals[sind], bvecs[sind, :],
                                  b0_threshold=par_b0_threshold)

    fname = 'data_' + par_b_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), shell_data, affine)
    np.savetxt(pjoin(dir_out, 'bvals_' + par_b_tag), shell_gtab.bvals)
    np.savetxt(pjoin(dir_out, 'bvecs_' + par_b_tag), shell_gtab.bvecs.T)
Beispiel #15
0
def single_shell_extraction(dir_src, dir_out, verbose=False):

    fbval = pjoin(dir_src, 'bvals')
    fbvec = pjoin(dir_src, 'bvecs')
    fmask = pjoin(dir_src, 'nodif_brain_mask.nii.gz')
    fdwi = pjoin(dir_src, 'data.nii.gz')

    bvals, bvecs = read_bvals_bvecs(fbval, fbvec)
    data, affine = load_nifti(fdwi, verbose)

    if par_b_shell == 1000:
        sind = (bvals < 10) | ((bvals < 1100) & (bvals > 900))
    elif par_b_shell == 2000:
        sind = (bvals < 10) | ((bvals < 2100) & (bvals > 1900))
    elif par_b_shell == 3000:
        sind = (bvals < 10) | ((bvals < 3100) & (bvals > 2900))

    shell_data = data[..., sind]
    shell_gtab = gradient_table(bvals[sind],
                                bvecs[sind, :],
                                b0_threshold=par_b0_threshold)

    fname = 'data_' + par_b_tag + '.nii.gz'
    save_nifti(pjoin(dir_out, fname), shell_data, affine)
    np.savetxt(pjoin(dir_out, 'bvals_' + par_b_tag), shell_gtab.bvals)
    np.savetxt(pjoin(dir_out, 'bvecs_' + par_b_tag), shell_gtab.bvecs.T)
Beispiel #16
0
def tracking_maxodf(dir_src, dir_out, verbose=False):

    wm_name = 'wm_mask_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    wm_mask, affine = load_nifti(pjoin(dir_src, wm_name), verbose)

    sh_name = 'sh_' + par_b_tag + '_' + par_dim_tag + '.nii.gz'
    sh, _ = load_nifti(pjoin(dir_src, sh_name), verbose)

    sphere = get_sphere('symmetric724') 

    classifier = ThresholdTissueClassifier(wm_mask.astype('f8'), .5)
    classifier = BinaryTissueClassifier(wm_mask)
    max_dg = DeterministicMaximumDirectionGetter.from_shcoeff(sh, max_angle=par_trk_max_angle, sphere=sphere)
    seeds = utils.seeds_from_mask(wm_mask, density=2, affine=affine)
    streamlines = LocalTracking(max_dg, classifier, seeds, affine, step_size=par_trk_step_size)
    streamlines = list(streamlines)

    trk_name = 'tractogram_' + par_b_tag + '_' + par_dim_tag + '_' + par_trk_odf_tag + '.trk'
    save_trk(pjoin(dir_out, trk_name), streamlines, affine, wm_mask.shape)
def white_matter_mask_wmparc(dir_src, dir_out, verbose=False):

    fwmparc_src = pjoin(dir_src, 'wmparc.nii.gz')
    fribbon_src = pjoin(dir_src, 'ribbon.nii.gz')
    wmparc, affine = load_nifti(fwmparc_src)
    ribbon, affine = load_nifti(fribbon_src)
    mask = np.zeros_like(wmparc)

    for label in ribbon_structures:
        mask[ribbon == label] = 1

    for label in wmparc_structures + wmparc_cc_structures:
        mask[wmparc == label] = 1

    for label in wmparc_del_structures + wmparc_del_structures2:
        mask[wmparc == label] = 0

    mask = mask.astype('f8')
    mask2, affine2 = resample(mask, affine,
                              (0.7,) * 3, (par_dim_vox,) * 3, order=0)

    wm_out = "wm_mask_%s_%s_%s.nii.gz" % (par_b_tag, par_dim_tag, par_wmp_tag)
    save_nifti(pjoin(dir_out, wm_out), mask2, affine2)
Beispiel #18
0
def white_matter_mask_wmparc(dir_src, dir_out, verbose=False):

    fwmparc_src = pjoin(dir_src, 'wmparc.nii.gz')
    fribbon_src = pjoin(dir_src, 'ribbon.nii.gz')
    wmparc, affine = load_nifti(fwmparc_src)
    ribbon, affine = load_nifti(fribbon_src)
    mask = np.zeros_like(wmparc)

    for label in ribbon_structures:
        mask[ribbon == label] = 1

    for label in wmparc_structures + wmparc_cc_structures:
        mask[wmparc == label] = 1

    for label in wmparc_del_structures + wmparc_del_structures2:
        mask[wmparc == label] = 0

    mask = mask.astype('f8')
    mask2, affine2 = resample(mask, affine,
                              (0.7,) * 3, (par_dim_vox,) * 3, order=0)

    wm_out = "wm_mask_%s_%s_%s.nii.gz" % (par_b_tag, par_dim_tag, par_wmp_tag)
    save_nifti(pjoin(dir_out, wm_out), mask2, affine2)