Example #1
0
def plot_epi_T1_corregistration(mean_epi_file, anat_edge, figsize=(11.7, 8.3)):

    fig = plt.figure(figsize=figsize)

    func = nb.load(mean_epi_file).get_data()
    func_affine = nb.load(mean_epi_file).get_affine()

    anat = nb.load(anat_edge).get_data()
    anat_affine = nb.load(anat_edge).get_affine()

    slicer = viz.plot_anat(
        np.asarray(func),
        np.asarray(func_affine),
        black_bg=True,
        cmap=cm.Greys_r,  # @UndefinedVariable
        cut_coords=(-6, 3, 28),
        figure=fig,
        draw_cross=False)
    slicer.contour_map(np.asarray(anat),
                       np.asarray(anat_affine),
                       levels=[.51],
                       colors=[
                           'r',
                       ])

    return fig
Example #2
0
def warp_report(in_file):
    """Plot the registration summary using nipy contours"""
    mni_file = op.join(os.environ["FSL_DIR"],
                       "data/standard/MNI152_T1_1mm_brain.nii.gz")
    mni_img = nib.load(mni_file)
    mni_data, mni_aff = mni_img.get_data(), mni_img.get_affine()
    sub_img = nib.load(in_file)
    sub_data, sub_aff = sub_img.get_data(), sub_img.get_affine()
    sub_data[sub_data < 1] = 0

    kwargs = dict(draw_cross=False, annotate=False)
    cut_coords = dict(x=(-45, -12, 12, 45),
                      y=(-55, -25, 5, 45),
                      z=(-30, -5, 20, 40))

    colors = sns.color_palette("bright")
    im_data = dict()
    for axis in ["x", "y", "z"]:
        f = plt.figure(figsize=(10, 2.5))
        coords = cut_coords[axis]
        slicer = viz.plot_anat(sub_data, sub_aff, slicer=axis,
                               cut_coords=coords, figure=f, **kwargs)
        slicer.contour_map(mni_data, mni_aff, colors=colors)
        fname = "slices_%s.png" % axis
        f.savefig(fname, facecolor="k", edgecolor="k")
        im_data[axis] = mplimg.imread(fname)

    concat_data = [im_data[axis] for axis in ["x", "y", "z"]]
    concat_data = np.concatenate(concat_data, axis=0)
    mplimg.imsave("warp_report.png", concat_data)
    return op.abspath("warp_report.png")
def contour_image(contour, mean, mask, title=''):
    import nibabel as nib
    import numpy as np
    import nipy.labs.viz as viz
    import os
    import matplotlib.pyplot as plt

    def get_data(imfile):
        img = nib.load(imfile)
        data, affine = img.get_data(), img.get_affine()
        return data, affine

    bold_data, nat_aff = get_data(mean)
    wm_data, _ = get_data(contour)
    brain_mask, _ = get_data(mask)
    f = plt.figure(figsize=(12, 6))
    kwargs = dict(figure=f, draw_cross=False, annotate=False, slicer="y")
    for cut_coords, ax_pos in zip(
            np.linspace(-50, 70, 8).reshape(2, 4), [(0, 0, 1, .5),
                                                    (0, .5, 1, .5)]):
        slicer = viz.plot_anat(bold_data,
                               nat_aff,
                               cut_coords=cut_coords,
                               axes=ax_pos,
                               **kwargs)
        slicer.contour_map(wm_data, nat_aff, colors="palegreen")
        slicer.contour_map(brain_mask, nat_aff, colors="tomato")
        plt.gca().set_title("%s" % title, size=14)
    outfile = os.path.abspath('%s_contour.png' % title)
    plt.savefig(outfile)
    return outfile
def plot_T1_brainmask(T1, brainmask, figsize=(11.7, 8.3)):

    fig = plt.figure(figsize=figsize)
    ax = plt.subplot(1, 1, 1)
    T1_data = nb.load(T1).get_data()
    T1_affine = nb.load(T1).get_affine()

    brain_nii = nb.load(brainmask)
    brain_data = brain_nii.get_data()
    #brain_data[wm_data > 1] = 1
    brain_affine = brain_nii.get_affine()

    slicer = viz.plot_anat(
        np.asarray(T1_data),
        np.asarray(T1_affine),
        black_bg=True,
        cmap=cm.Greys_r,  # @UndefinedVariable
        figure=fig,
        axes=ax,
        draw_cross=False)
    slicer.contour_map(np.asarray(brain_data),
                       np.asarray(brain_affine),
                       linewidths=[0.1],
                       colors=[
                           'r',
                       ])

    fig.suptitle('FS brain extraction', fontsize='14')

    return fig

    plt.show(fig)
Example #5
0
def plot_hipp_subfields(brain_file, subfield_file, figsize=(40.7, 20.3)):

    fig = plt.figure(figsize=figsize)
    ax = plt.subplot(1, 1, 1)

    print "hello"
    brain = nb.load(brain_file).get_data()
    brain_affine = nb.load(brain_file).get_affine()
    subfield = nb.load(subfield_file).get_data()
    subfield_affine = nb.load(subfield_file).get_affine()

    plt.histogram(subfield[:])
    #
    #plt.imshow(subfield[:,:,175], cmap="gray", origin="lower")
    #plt.show()
    subfield[subfield > 1] = 1
    slicer = viz.plot_anat(
        np.asarray(brain),
        np.asarray(brain_affine),
        cut_coords=np.arange(-238, -220, 2),  #None, #[0,50,100,150,200,250],
        slicer='z',
        black_bg=True,
        cmap=cm.Greys_r,  # @UndefinedVariable
        figure=fig,
        axes=ax,
        draw_cross=False)
    slicer.edge_map(np.asarray(subfield),
                    np.asarray(subfield_affine),
                    color='r')
    #
    #    fig.suptitle('subfields', fontsize='14')
    plt.show()

    return fig
Example #6
0
def plot_epi_T1_corregistration(mean_epi_file, wm_file, subject_id, similarity_distribution=None, figsize=(11.7,8.3),):
       
    fig = plt.figure(figsize=figsize)
    
    if similarity_distribution:
        ax = plt.subplot(2,1,1)
        sns.distplot(similarity_distribution.values(), ax=ax)
        ax.set_xlabel("EPI-T1 mincost function (over all subjects)")
        cur_similarity = similarity_distribution[subject_id]
        label = "mincost function = %g"%cur_similarity
        plot_vline(cur_similarity, label, ax=ax)
        
        ax = plt.subplot(2,1,2)
    else:
        ax = plt.subplot(1,1,0)
    
  

    func = nb.load(mean_epi_file).get_data()
    func_affine = nb.load(mean_epi_file).get_affine()
    
    wm_data = nb.load(wm_file).get_data()
    wm_affine = nb.load(wm_file).get_affine()
    
    slicer = viz.plot_anat(np.asarray(func), np.asarray(func_affine), black_bg=True,
                           cmap = cm.Greys_r,  # @UndefinedVariable
                           figure = fig,
                           axes = ax,
                           draw_cross = False)
    slicer.contour_map(np.asarray(wm_data), np.asarray(wm_affine), linewidths=[0.1], colors=['r',])
    
    fig.suptitle('coregistration', fontsize='14')
    
    return fig
    def plot_epi_to_t1_coregistration(epi_file, reg_file, ribbon, fssubjects_dir):
        import pylab as plt
        from nipy.labs import viz
        import nibabel as nb
        import numpy as np
        import os
        import nipype.interfaces.freesurfer as fs

        anat = nb.load(ribbon).get_data()
        anat[anat > 1] = 1
        anat_affine = nb.load(ribbon).get_affine()
        func = nb.load(epi_file).get_data()
        func_affine = nb.load(epi_file).get_affine()
        fig = plt.figure(figsize=(8, 6), edgecolor="k", facecolor="k")
        slicer = viz.plot_anat(
            np.asarray(func),
            np.asarray(func_affine),
            black_bg=True,
            cmap=plt.cm.spectral,
            cut_coords=(-6, 3, 12),
            figure=fig,
            axes=[0, 0.50, 1, 0.33],
        )
        slicer.contour_map(np.asarray(anat), np.asarray(anat_affine), levels=[0.51], colors=["r"])
        slicer.title(
            "Mean EPI with cortical surface contour overlay (before registration)", size=12, color="w", alpha=0
        )

        res = fs.ApplyVolTransform(
            source_file=epi_file, reg_file=reg_file, fs_target=True, subjects_dir=fssubjects_dir
        ).run()

        func = nb.load(res.outputs.transformed_file).get_data()
        func_affine = nb.load(res.outputs.transformed_file).get_affine()
        slicer = viz.plot_anat(
            np.asarray(func),
            np.asarray(func_affine),
            black_bg=True,
            cmap=plt.cm.spectral,
            cut_coords=(-6, 3, 12),
            figure=fig,
            axes=[0, 0, 1, 0.33],
        )
        slicer.contour_map(np.asarray(anat), np.asarray(anat_affine), levels=[0.51], colors=["r"])
        slicer.title("Mean EPI with cortical surface contour overlay (after registration)", size=12, color="w", alpha=0)
        plt.savefig("reg_plot.png", facecolor=fig.get_facecolor(), edgecolor="none")
        return os.path.abspath("reg_plot.png")
Example #8
0
def plot_epi_T1_corregistration(
        mean_epi_file,
        reg_file,
        fssubjects_dir,
        subject_id,
        similarity_distribution=None,
        figsize=(11.7, 8.3),
):

    fig = plt.figure(figsize=figsize)

    if similarity_distribution:
        ax = plt.subplot(2, 1, 1)
        sns.distplot(similarity_distribution.values(), ax=ax)
        ax.set_xlabel(
            "EPI-T1 similarity after coregistration (over all subjects)")
        cur_similarity = similarity_distribution[subject_id]
        label = "similarity = %g" % cur_similarity
        plot_vline(cur_similarity, label, ax=ax)

        ax = plt.subplot(2, 1, 0)
    else:
        ax = plt.subplot(1, 1, 0)

    res = ApplyVolTransform(source_file=mean_epi_file,
                            reg_file=reg_file,
                            fs_target=True,
                            subjects_dir=fssubjects_dir,
                            terminal_output="none").run()

    func = nb.load(res.outputs.transformed_file).get_data()
    func_affine = nb.load(res.outputs.transformed_file).get_affine()

    ribbon_file = "%s/%s/mri/ribbon.mgz" % (fssubjects_dir, subject_id)
    ribbon_nii = nb.load(ribbon_file)
    ribbon_data = ribbon_nii.get_data()
    ribbon_data[ribbon_data > 1] = 1
    ribbon_affine = ribbon_nii.get_affine()

    slicer = viz.plot_anat(
        np.asarray(func),
        np.asarray(func_affine),
        black_bg=True,
        cmap=cm.Greys_r,  # @UndefinedVariable
        cut_coords=(-6, 3, 32),
        figure=fig,
        axes=ax,
        draw_cross=False)
    slicer.contour_map(np.asarray(ribbon_data),
                       np.asarray(ribbon_affine),
                       levels=[.51],
                       colors=[
                           'r',
                       ])

    return fig
Example #9
0
def plot_unwarping(
        mean_epi,
        mean_epi_uncorrected,
        figsize=(11.7, 8.3),
):

    fig = plt.figure(figsize=figsize)

    ax = plt.subplot(2, 1, 1)

    before_unwarp_data = nb.load(mean_epi_uncorrected).get_data()
    before_unwarp_affine = nb.load(mean_epi_uncorrected).get_affine()

    slicer = viz.plot_anat(
        np.asarray(before_unwarp_data),
        np.asarray(before_unwarp_affine),
        black_bg=True,
        cmap=cm.Greys_r,  # @UndefinedVariable
        cut_coords=(-8, 0, 8),
        slicer='x',
        figure=fig,
        axes=ax,
        draw_cross=False)

    ax = plt.subplot(2, 1, 2)

    unwarped_data = nb.load(mean_epi).get_data()
    unwarped_affine = nb.load(mean_epi).get_affine()

    slicer = viz.plot_anat(
        np.asarray(unwarped_data),
        np.asarray(unwarped_affine),
        black_bg=True,
        cmap=cm.Greys_r,  # @UndefinedVariable
        cut_coords=(-8, 0, 8),
        slicer='x',
        figure=fig,
        axes=ax,
        draw_cross=False)

    fig.suptitle('fieldmap correction', fontsize='14')

    return fig
Example #10
0
def plot_anat(brain):
    import os.path
    import pylab as pl
    from nibabel import load
    from nipy.labs import viz   
    import numpy as np

    img = load(brain)
    data = img.get_data()
    data[np.isnan(data)] = 0
    affine = img.get_affine() 
    viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='x')
    
    x_view = os.path.abspath('x_view.png')
    y_view = os.path.abspath('y_view.png')
    z_view = os.path.abspath('z_view.png')
    
    pl.savefig(x_view,bbox_inches='tight')
    
    viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='y')
    pl.savefig(y_view,bbox_inches='tight')
    
    viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='z')
    pl.savefig(z_view,bbox_inches='tight')
    
    images = [x_view, y_view, z_view]
    pl.close()
    return images
Example #11
0
def plot_ribbon(Brain):
    import os.path
    import pylab as pl
    from nibabel import load
    from nipy.labs import viz   
    images = []
    
    for brain in Brain:
        if os.path.split(brain)[1] == 'ribbon.mgz':
            img = load(brain)
            data = img.get_data()*100
            affine = img.get_affine() 
            viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='x', cmap=viz.cm.black_green)
            
            x_view = os.path.abspath('x_view.png')
            y_view = os.path.abspath('y_view.png')
            z_view = os.path.abspath('z_view.png')
            
            pl.savefig(x_view,bbox_inches='tight')
            pl.close()

            viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='y', cmap=viz.cm.black_green)
            pl.savefig(y_view,bbox_inches='tight')
            pl.close()

            viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='z', cmap=viz.cm.black_green)
            pl.savefig(z_view,bbox_inches='tight')
            
            images = [x_view, y_view, z_view]
            pl.close()
    return images
Example #12
0
def plot_anat(brain):
    import os.path
    import pylab as pl
    from nibabel import load
    from nipy.labs import viz   
    import numpy as np

    img = load(brain)
    data = img.get_data()
    data[np.isnan(data)] = 0
    affine = img.get_affine() 
    viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='x')
    
    x_view = os.path.abspath('x_view.png')
    y_view = os.path.abspath('y_view.png')
    z_view = os.path.abspath('z_view.png')
    
    pl.savefig(x_view,bbox_inches='tight')
    
    viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='y')
    pl.savefig(y_view,bbox_inches='tight')
    
    viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='z')
    pl.savefig(z_view,bbox_inches='tight')
    
    images = [x_view, y_view, z_view]
    pl.close()
    return images
Example #13
0
def plot_ribbon(Brain):
    import os.path
    import pylab as pl
    from nibabel import load
    from nipy.labs import viz   
    images = []
    
    for brain in Brain:
        if os.path.split(brain)[1] == 'ribbon.mgz':
            img = load(brain)
            data = img.get_data()*100
            affine = img.get_affine() 
            viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='x', cmap=viz.cm.black_green)
            
            x_view = os.path.abspath('x_view.png')
            y_view = os.path.abspath('y_view.png')
            z_view = os.path.abspath('z_view.png')
            
            pl.savefig(x_view,bbox_inches='tight')
            pl.close()

            viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='y', cmap=viz.cm.black_green)
            pl.savefig(y_view,bbox_inches='tight')
            pl.close()

            viz.plot_anat(anat=data, anat_affine=affine, draw_cross=False, slicer='z', cmap=viz.cm.black_green)
            pl.savefig(z_view,bbox_inches='tight')
            
            images = [x_view, y_view, z_view]
            pl.close()
    return images
def plot_epi_T1_corregistration(mean_epi_file,
                                wm_file,
                                reg_file,
                                fssubjects_dir,
                                subject_id,
                                figsize=(11.7, 8.3)):

    fig = plt.figure(figsize=figsize)

    ax = plt.subplot(1, 1, 1)
    print ax

    res = ApplyVolTransform(source_file=mean_epi_file,
                            reg_file=reg_file,
                            fs_target=True,
                            subjects_dir=fssubjects_dir,
                            terminal_output="none").run()

    func = nb.load(res.outputs.transformed_file).get_data()
    func_affine = nb.load(res.outputs.transformed_file).get_affine()

    #     ribbon_file = "%s/%s/mri/ribbon.mgz"%(fssubjects_dir, subject_id)
    #     ribbon_nii = nb.load(ribbon_file)
    #     ribbon_data = ribbon_nii.get_data()
    #     ribbon_data[ribbon_data > 1] = 1
    #     ribbon_affine = ribbon_nii.get_affine()

    wm_nii = nb.load(wm_file)
    wm_data = wm_nii.get_data()
    wm_data[wm_data > 1] = 1
    wm_affine = wm_nii.get_affine()

    slicer = viz.plot_anat(
        np.asarray(func),
        np.asarray(func_affine),
        black_bg=True,
        cmap=cm.Greys_r,  # @UndefinedVariable
        figure=fig,
        axes=ax,
        draw_cross=False)
    slicer.contour_map(np.asarray(wm_data),
                       np.asarray(wm_affine),
                       linewidths=[0.1],
                       colors=[
                           'r',
                       ])

    fig.suptitle('coregistration', fontsize='14')

    return fig

    plt.show(fig)
Example #15
0
def plot_epi_T1_corregistration(
        mean_epi_file,
        wm_file,
        subject_id,
        similarity_distribution=None,
        figsize=(11.7, 8.3),
):

    fig = plt.figure(figsize=figsize)

    if similarity_distribution:
        ax = plt.subplot(2, 1, 1)
        sns.distplot(similarity_distribution.values(), ax=ax)
        ax.set_xlabel("EPI-T1 mincost function (over all subjects)")
        cur_similarity = similarity_distribution[subject_id]
        label = "mincost function = %g" % cur_similarity
        plot_vline(cur_similarity, label, ax=ax)

        ax = plt.subplot(2, 1, 2)
    else:
        ax = plt.subplot(1, 1, 0)

    func = nb.load(mean_epi_file).get_data()
    func_affine = nb.load(mean_epi_file).get_affine()

    wm_data = nb.load(wm_file).get_data()
    wm_affine = nb.load(wm_file).get_affine()

    slicer = viz.plot_anat(
        np.asarray(func),
        np.asarray(func_affine),
        black_bg=True,
        cmap=cm.Greys_r,  # @UndefinedVariable
        figure=fig,
        axes=ax,
        draw_cross=False)
    slicer.contour_map(np.asarray(wm_data),
                       np.asarray(wm_affine),
                       linewidths=[0.1],
                       colors=[
                           'r',
                       ])

    fig.suptitle('coregistration', fontsize='14')

    return fig
Example #16
0
def plot_epi_T1_corregistration(mean_epi_file, reg_file, fssubjects_dir, subject_id, similarity_distribution=None, figsize=(11.7,8.3),):
       
    fig = plt.figure(figsize=figsize)
    
    if similarity_distribution:
        ax = plt.subplot(2,1,1)
        sns.distplot(similarity_distribution.values(), ax=ax)
        ax.set_xlabel("EPI-T1 similarity after coregistration (over all subjects)")
        cur_similarity = similarity_distribution[subject_id]
        label = "similarity = %g"%cur_similarity
        plot_vline(cur_similarity, label, ax=ax)
        
        ax = plt.subplot(2,1,0)
    else:
        ax = plt.subplot(1,1,0)
    
    res = ApplyVolTransform(source_file = mean_epi_file,
                            reg_file = reg_file,
                            fs_target = True,
                            subjects_dir = fssubjects_dir,
                            terminal_output = "none").run()

    func = nb.load(res.outputs.transformed_file).get_data()
    func_affine = nb.load(res.outputs.transformed_file).get_affine()
    
    ribbon_file = "%s/%s/mri/ribbon.mgz"%(fssubjects_dir, subject_id)
    ribbon_nii = nb.load(ribbon_file)
    ribbon_data = ribbon_nii.get_data()
    ribbon_data[ribbon_data > 1] = 1
    ribbon_affine = ribbon_nii.get_affine()
    
    slicer = viz.plot_anat(np.asarray(func), np.asarray(func_affine), black_bg=True,
                           cmap = cm.Greys_r,  # @UndefinedVariable
                           cut_coords = (-6,3,32),
                           figure = fig,
                           axes = ax,
                           draw_cross = False)
    slicer.contour_map(np.asarray(ribbon_data), np.asarray(ribbon_affine), levels=[.51], colors=['r',])
    
    return fig
def contour_image(contour,mean,mask,title=''):
    import nibabel as nib
    import numpy as np
    import nipy.labs.viz as viz
    import os
    import matplotlib.pyplot as plt
    def get_data(imfile):
        img = nib.load(imfile)
        data, affine = img.get_data(), img.get_affine()
        return data,affine
    bold_data, nat_aff = get_data(mean)
    wm_data, _ = get_data(contour)
    brain_mask, _ = get_data(mask)
    f = plt.figure(figsize=(12, 6))
    kwargs = dict(figure=f, draw_cross=False, annotate=False, slicer="y")
    for cut_coords, ax_pos in zip(np.linspace(-50, 70, 8).reshape(2, 4), [(0, 0, 1, .5), (0, .5, 1, .5)]):
        slicer = viz.plot_anat(bold_data, nat_aff, cut_coords=cut_coords, axes=ax_pos, **kwargs)
        slicer.contour_map(wm_data, nat_aff, colors="palegreen")
        slicer.contour_map(brain_mask, nat_aff, colors="tomato")
        plt.gca().set_title("%s"%title, size=14)
    outfile = os.path.abspath('%s_contour.png'%title)
    plt.savefig(outfile)
    return outfile
Example #18
0
    def plot_epi_to_t1_coregistration(epi_file, reg_file, ribbon,
                                      fssubjects_dir):
        import pylab as plt
        from nipy.labs import viz
        import nibabel as nb
        import numpy as np
        import os
        import nipype.interfaces.freesurfer as fs
        anat = nb.load(ribbon).get_data()
        anat[anat > 1] = 1
        anat_affine = nb.load(ribbon).get_affine()
        func = nb.load(epi_file).get_data()
        func_affine = nb.load(epi_file).get_affine()
        fig = plt.figure(figsize=(8, 6), edgecolor='k', facecolor='k')
        slicer = viz.plot_anat(np.asarray(func),
                               np.asarray(func_affine),
                               black_bg=True,
                               cmap=plt.cm.spectral,
                               cut_coords=(-6, 3, 12),
                               figure=fig,
                               axes=[0, .50, 1, .33])
        slicer.contour_map(np.asarray(anat),
                           np.asarray(anat_affine),
                           levels=[.51],
                           colors=[
                               'r',
                           ])
        slicer.title(
            "Mean EPI with cortical surface contour overlay (before registration)",
            size=12,
            color='w',
            alpha=0)

        res = fs.ApplyVolTransform(source_file=epi_file,
                                   reg_file=reg_file,
                                   fs_target=True,
                                   subjects_dir=fssubjects_dir).run()

        func = nb.load(res.outputs.transformed_file).get_data()
        func_affine = nb.load(res.outputs.transformed_file).get_affine()
        slicer = viz.plot_anat(np.asarray(func),
                               np.asarray(func_affine),
                               black_bg=True,
                               cmap=plt.cm.spectral,
                               cut_coords=(-6, 3, 12),
                               figure=fig,
                               axes=[0, 0, 1, .33])
        slicer.contour_map(np.asarray(anat),
                           np.asarray(anat_affine),
                           levels=[.51],
                           colors=[
                               'r',
                           ])
        slicer.title(
            "Mean EPI with cortical surface contour overlay (after registration)",
            size=12,
            color='w',
            alpha=0)
        plt.savefig("reg_plot.png",
                    facecolor=fig.get_facecolor(),
                    edgecolor='none')
        return os.path.abspath("reg_plot.png")
Example #19
0
cmaps_list = (cmaps['Yl'], cmaps['Gr'], cmaps['Rd'], cmaps['Ma'],
              cmaps['Or'], cmaps['Bl'], cmaps['Cy'], cmaps['Pu'])

###############################################################################

atlas_name = atlas_file.replace('.nii.gz', '')

if os.path.exists(atlas_name):
    shutil.rmtree(atlas_name, ignore_errors=True)

os.mkdir(atlas_name)

fnames = list()

for axis, cut in cuts:
    slicer = viz.plot_anat(slicer=axis, cut_coords=(cut, ),)
    for level in (1, 2, 3):
        level_labels = np.trunc(atlas / 1000. * 10 ** (level - 1))
        level_labels = level_labels.astype(np.int)
        for label in np.unique(level_labels):
            if label == 0:
                continue
            slicer.contour_map(level_labels == label, affine,
                            levels=[.5], colors='k',
                            linewidths=linewidths[level])
    for label in range(1, 9):
        this_altas = atlas.copy()
        this_altas[atlas >= 1000 * (label + 1)] = 0
        slicer.plot_map(atlas, affine,
                        cmap=cmaps_list[label - 1],
                        threshold=1000 * label - 2,
Example #20
0
The idea is to represent the anatomical image to be checked with an overlay of
the edges of the reference image. This idea is borrowed from FSL.

Needs the *templates* data package.

Needs matplotlib.
"""
print(__doc__)

try:
    import matplotlib.pyplot as plt
except ImportError:
    raise RuntimeError("This script needs the matplotlib library")

from nipy.labs import viz
from nipy.labs.viz_tools import anat_cache

# Get the data. Here we are using the reference T1 image
anat, affine, _ = anat_cache._AnatCache.get_anat()

# Here we use the same image as a reference. As a result it is perfectly
# aligned.
reference = anat
reference_affine = affine

slicer = viz.plot_anat(anat, affine, dim=.2, black_bg=True)
slicer.edge_map(reference, reference_affine)

plt.show()
def plot_segmentation(img, gm_filename, wm_filename=None,
                      csf_filename=None,
                      output_filename=None, cut_coords=None,
                      slicer='ortho',
                      cmap=None,
                      title='GM + WM + CSF segmentation'):
    """
    Plot a contour mapping of the GM, WM, and CSF of a subject's anatomical.

    Parameters
    ----------
    img_filename: string or image object
                  path of file containing image data, or image object simply

    gm_filename: string
                 path of file containing Grey Matter template

    wm_filename: string (optional)
                 path of file containing White Matter template

    csf_filename: string (optional)
                 path of file containing Cerebro-Spinal Fluid template


    """

    # sanity
    if cmap is None:
        cmap = pl.cm.gray

    if cut_coords is None:
        cut_coords = (-10, -28, 17)

    if slicer in ['x', 'y', 'z']:
        cut_coords = (cut_coords['xyz'.index(slicer)],)

    # plot img
    if hasattr(img, '__len__'):
        img = compute_mean_3D_image(img)
    # XXX else i'm assuming a nifi object ;)
    anat = img.get_data()
    anat_affine = img.get_affine()
    _slicer = viz.plot_anat(
        anat, anat_affine, cut_coords=cut_coords,
        slicer=slicer,
        cmap=cmap,
        # black_bg=True,
        )

    # draw a GM contour map
    gm = nibabel.load(gm_filename)
    gm_template = gm.get_data()
    gm_affine = gm.get_affine()
    _slicer.contour_map(gm_template, gm_affine, levels=[.51], colors=["r"])

    # draw a WM contour map
    if not wm_filename is None:
        wm = nibabel.load(wm_filename)
        wm_template = wm.get_data()
        wm_affine = wm.get_affine()
        _slicer.contour_map(wm_template, wm_affine, levels=[.51], colors=["g"])

    # draw a CSF contour map
    if not csf_filename is None:
        csf = nibabel.load(csf_filename)
        csf_template = csf.get_data()
        csf_affine = csf.get_affine()
        _slicer.contour_map(
            csf_template, csf_affine, levels=[.51], colors=['b'])

    # misc
    _slicer.title("%s (cmap: %s)" % (title, cmap.name), size=12, color='w',
                 alpha=0)
    # pl.legend(("WM", "CSF", "GM"), loc="lower left", ncol=len(cut_coords))

    if not output_filename is None:
        pl.savefig(output_filename, bbox_inches='tight', dpi=200,
                   facecolor="k",
                   edgecolor="k")
def plot_registration(reference_img, coregistered_img,
                      title="untitled coregistration!",
                      cut_coords=None,
                      slicer='ortho',
                      cmap=None,
                      output_filename=None):
    """Plots a coregistered source as bg/contrast for the reference image

    Parameters
    ----------
    reference_img: string
        path to reference (background) image

    coregistered_img: string
        path to other image (to be compared with reference)

    slicer: string (optional, defaults to 'ortho')
        slicer param to pass to the nipy.labs.viz.plot_??? APIs

    cmap: matplotlib colormap object (optional, defaults to spectral)
        colormap to user for plots

    output_filename: string (optional)
        path where plot will be stored

    """

    # sanity
    if cmap is None:
        cmap = pl.cm.gray  # registration QA always gray cmap!

    if cut_coords is None:
        cut_coords = (-10, -28, 17)

    if slicer in ['x', 'y', 'z']:
        cut_coords = (cut_coords['xyz'.index(slicer)],)

    # plot the coregistered image
    if hasattr(coregistered_img, '__len__'):
        coregistered_img = compute_mean_3D_image(coregistered_img)
    # XXX else i'm assuming a nifi object ;)
    coregistered_data = coregistered_img.get_data()
    coregistered_affine = coregistered_img.get_affine()
    _slicer = viz.plot_anat(
        anat=coregistered_data,
        anat_affine=coregistered_affine,
        cmap=cmap,
        cut_coords=cut_coords,
        slicer=slicer,
        # black_bg=True,
        )

    # overlap the reference image
    if hasattr(reference_img, '__len__'):
        reference_img = compute_mean_3D_image(reference_img)
    # XXX else i'm assuming a nifi object ;)
    reference_data = reference_img.get_data()
    reference_affine = reference_img.get_affine()
    _slicer.edge_map(reference_data, reference_affine)

    # misc
    _slicer.title("%s (cmap: %s)" % (title, cmap.name), size=12, color='w',
                  alpha=0)

    if not output_filename is None:
        try:
            pl.savefig(output_filename, dpi=200, bbox_inches='tight',
                       facecolor="k",
                       edgecolor="k")
        except AttributeError:
            # XXX TODO: handy this case!!
            pass
Example #23
0
The idea is to represent the anatomical image to be checked with an overlay of
the edges of the reference image. This idea is borrowed from FSL.

Needs the *templates* data package.

Needs matplotlib.
"""
print(__doc__)

try:
    import matplotlib.pyplot as plt
except ImportError:
    raise RuntimeError("This script needs the matplotlib library")

from nipy.labs import viz
from nipy.labs.viz_tools import anat_cache

# Get the data. Here we are using the reference T1 image
anat, affine, _ = anat_cache._AnatCache.get_anat()

# Here we use the same image as a reference. As a result it is perfectly
# aligned.
reference = anat
reference_affine = affine

slicer = viz.plot_anat(anat, affine, dim=.2, black_bg=True)
slicer.edge_map(reference, reference_affine)

plt.show()