Esempio n. 1
0
def plot_dynamics(dynamics, ax=None, start=2,
                  n_columns=None, n_regions=None, clim=[-1, 1],
                  region=None, node=None, column=None, cmap=None):
    if ax is None:
        ax = plt.gca()
    if (column is not None) or (region is not None) or (node is not None):
        n_nodes = (len(dynamics.T) // n_columns - 1) // n_regions
        sel = select_nodes(n_columns=n_columns, n_regions=n_regions,
                           n_nodes=n_nodes, node=node, region=region,
                           column=column)
        dynamics = dynamics[:, sel]
    if cmap is None:
        cmap = nonlinear_cmap('RdBu_r', 0, clim)
        clim = [0., 1.]
    ax.matshow(dynamics.T, vmin=clim[0], vmax=clim[1], cmap=cmap,
               origin='lower')
    if (isinstance(column, list) and len(column) == 1):
        for ii in range(n_columns):
            ax.axhline(ii * (len(dynamics.T) // n_columns) - .5,
                       color='gray', linestyle=':')
    ax.set_ylabel('Modules')
    ax.set_xlabel('Times')
    ax.set_aspect('auto')
    if not isinstance(start, (list, np.ndarray)):
        start = [start]
    for start_ in start:
        ax.set_xticks([start_ - .5])
        ax.set_xticklabels([start_ - start[0]])
    for start_ in start:
        ax.axvline(start_ - .5, color='k')
    pretty_plot(ax)
Esempio n. 2
0
def plot_dynamics(dynamics,
                  ax=None,
                  start=2,
                  n_columns=None,
                  n_regions=None,
                  clim=[-1, 1],
                  region=None,
                  node=None,
                  column=None,
                  cmap=None):
    if ax is None:
        ax = plt.gca()
    if (column is not None) or (region is not None) or (node is not None):
        n_nodes = (len(dynamics.T) // n_columns - 1) // n_regions
        sel = select_nodes(n_columns=n_columns,
                           n_regions=n_regions,
                           n_nodes=n_nodes,
                           node=node,
                           region=region,
                           column=column)
        dynamics = dynamics[:, sel]
    if cmap is None:
        cmap = nonlinear_cmap('RdBu_r', 0, clim)
        clim = [0., 1.]
    ax.matshow(dynamics.T,
               vmin=clim[0],
               vmax=clim[1],
               cmap=cmap,
               origin='lower')
    if (isinstance(column, list) and len(column) == 1):
        for ii in range(n_columns):
            ax.axhline(ii * (len(dynamics.T) // n_columns) - .5,
                       color='gray',
                       linestyle=':')
    ax.set_ylabel('Modules')
    ax.set_xlabel('Time')
    ax.set_aspect('auto')
    if not isinstance(start, (list, np.ndarray)):
        start = [start]
    for start_ in start:
        ax.set_xticks([start_ - .5])
        ax.set_xticklabels([start_ - start[0]])
    for start_ in start:
        ax.axvline(start_ - .5, color='k')
    pretty_plot(ax)
Esempio n. 3
0
def plot_connectivity(connectivity, ax=None, dual=False):
    if ax is None:
        ax = plt.gca()
    ax.matshow(connectivity, cmap='RdBu_r', vmin=-1, vmax=1,
               origin='lower')
    ax.set_xticks([])
    ax.set_yticks([])
    if dual:
        n_nodes = connectivity.shape[0]
        ax.set_xticks([n_nodes / 4.-.5, n_nodes / 2.-.5,
                       .75 * n_nodes-.5, n_nodes-.5])
        ax.set_xticklabels(['feedforward', '', 'feedback', ''])
        ax.set_yticks([n_nodes / 4.-.5, n_nodes / 2.-.5,
                       .75 * n_nodes-.5, n_nodes-.5])
        ax.set_yticklabels(['feedforward', '', 'feedback', ''])
        ax.axhline(n_nodes/2.-.5, color='gray', linestyle=':')
        ax.axvline(n_nodes/2.-.5, color='gray', linestyle=':')
    ax.set_xlabel('neurons')
    # ax.set_ylabel('neurons')
    pretty_plot(ax)
Esempio n. 4
0
def plot_connectivity(connectivity, ax=None, dual=False):
    if ax is None:
        ax = plt.gca()
    ax.matshow(connectivity, cmap='RdBu_r', vmin=-1, vmax=1, origin='lower')
    ax.set_xticks([])
    ax.set_yticks([])
    if dual:
        n_nodes = connectivity.shape[0]
        ax.set_xticks([
            n_nodes / 4. - .5, n_nodes / 2. - .5, .75 * n_nodes - .5,
            n_nodes - .5
        ])
        ax.set_xticklabels(['feedforward', '', 'feedback', ''])
        ax.set_yticks([
            n_nodes / 4. - .5, n_nodes / 2. - .5, .75 * n_nodes - .5,
            n_nodes - .5
        ])
        ax.set_yticklabels(['feedforward', '', 'feedback', ''])
        ax.axhline(n_nodes / 2. - .5, color='gray', linestyle=':')
        ax.axvline(n_nodes / 2. - .5, color='gray', linestyle=':')
    ax.set_xlabel('neurons')
    # ax.set_ylabel('neurons')
    pretty_plot(ax)
def make_3d_plot(ax, xs, y, zs, colors):
    # make areas
    verts = []
    verts_sem = []
    for ii in range(y.shape[2]):
        ys = np.mean(y[:, :, ii], axis=0)
        verts.append(list(zip(np.hstack((0., xs, 1.)),
                              np.hstack((0., ys, 0.)))))
        ys += np.std(y[:, :, ii], axis=0) / np.sqrt(len(subjects))
        verts_sem.append(list(zip(np.hstack((0., xs, 1.)),
                                  np.hstack((0., ys, 0.)))))
    poly = PolyCollection(verts, facecolors=colors, edgecolor='k',
                          linewidth=1)
    poly.set_alpha(.75)
    ax.add_collection3d(poly, zs=zs, zdir='y')

    poly = PolyCollection(verts_sem, facecolors=colors, edgecolor='none')
    poly.set_alpha(0.5)
    ax.add_collection3d(poly, zs=zs, zdir='y')
    return pretty_plot(ax)
    sig = p_val < .05

    # plot effect size
    scores = np.mean(scores, axis=0)
    im = ax.matshow(scores, aspect='auto', origin='lower',
                    extent=[times[0], times[-1], 0, len(freqs)],
                    vmin=analysis['chance'], vmax=np.max(scores),
                    cmap=analysis['cmap'])

    # plot stats
    xx, yy = np.meshgrid(times, range(len(freqs)), copy=False, indexing='xy')
    ax.contour(xx, yy, sig, colors='black', levels=[0],
               linestyles='dotted')

    # pretty plot
    pretty_plot(ax)
    ticks = [0]
    for freq in np.arange(10, 71, 10):
        ticks.append(np.where(np.round(freqs) >= freq)[0][0])
    ticks.append(len(freqs))
    ax.set_yticks(ticks)
    ax.set_yticklabels([])
    if ii in [0, (len(analyses)//2)]:
        ax.set_yticklabels([int(freqs[0]), 10, '', 30, '',
                            '', '', '', int(freqs[-1] + .1)])
    xticks = np.arange(-.200, 1.301, .100)
    ax.set_xticks(xticks)
    ax.set_xticklabels([])
    if ii >= (len(analyses)//2):
        ax.set_xticklabels([int(tim * 1e3) if tim in [.0, .800] else ''
                            for tim in xticks])
Esempio n. 7
0
        zorder = float(vis == 'low')
        y_shift = .1 * float(vis == 'high')
        times = np.linspace(0, 2., len(diag.mean(0))) + .1 * int(vis == 'low')
        axes['decod'].fill_between(
            times, .5 + y_shift, diag.mean(0) + y_shift, color=colors[vis],
            alpha=1., linewidth=0., zorder=zorder)
        axes['decod'].plot(times, diag.mean(0) + y_shift, color='k',
                           zorder=zorder)
        axes['decod'].set_xticks([])
        axes['decod'].set_yticks([])
        axes['decod'].set_aspect('equal')
        for side in ('left', 'right', 'top', 'bottom'):
            axes['decod'].spines[side].set_visible(False)
        axes['decod'].set_ylim(-.1, 1.1)

        # Temporal generalization scores
        axes[vis].matshow(score.mean(0), origin='lower',
                          vmin=0, vmax=1., cmap='RdBu_r')
        axes[vis].set_xticks([])
        axes[vis].set_yticks([])
        pretty_plot(axes[vis])

    # TG subtraction: high vis - low vis
    axes['vis'].matshow(np.mean(scores[:, 1] - scores[:, 0], axis=0),
                        origin='lower', vmin=-.25, vmax=.25, cmap='RdBu_r')
    axes['vis'].set_xticks([])
    axes['vis'].set_yticks([])
    pretty_plot(axes['vis'])
    report.add_figs_to_section([fig], [model], model)
report.save()
fill = lambda z, c: ax.fill_between(np.linspace(0, 1., 4.), z, alpha=.5,
                                    color=cmap(c),  edgecolor='none')
fill(abs_sem, 0.)
fill(pst_sem, 1.)
fill(abs_m, 0.)
fill(pst_m, 1.)
ax.text(0.1, np.mean(x_vis[:, 0, 0], axis=0) - .05, 'Absent', color=cmap(0.),
        ha='left', va='bottom')
ax.text(1., np.mean(x_vis[:, -1, -1], axis=0) + .05, 'Present',
        color=cmap(1.), ha='right', va='bottom')
ax.set_xlabel('Visibility Rating')
ax.set_ylabel('Response %')
ax.set_xticks(np.linspace(0, 1, 2))
ax.set_yticks(np.linspace(0, .7, 2))
ax.set_ylim(0, .75)
ax = pretty_plot(ax)
report.add_figs_to_section(fig, 'visibility 2d', 'visibility')


# #############################################################################
# 2.0 Overall discrimination performance
x = dict(Accuracy=list(), Dprime=list())
for subject in subjects:
    query = 'subject==%s and target_present==True' % subject
    x['Accuracy'].append(np.nanmean(data.query(query)['discrim_correct']))

    def count(tilt, acc):
        query2 = ' and probe_tilt==%s and discrim_correct==%s' % (tilt, acc)
        return len(data.query(query + query2))

    hits = count(1, True)