Exemple #1
0
    stds.append(std)
    # keeping all 10 chans for each LFP for all tracks gives MemoryError:
    del data
    del rec.lfp.data
    #print('.', end='')
#print()
sis = np.hstack(sis)
Vpps = np.hstack(Vpps) / 1e3  # convert from uV to mV
stds = np.hstack(stds)

figure(figsize=figsize)
#plot(Vpps, sis, 'k.', ms=4, alpha=ALPHA)
Vppedges = np.arange(0.25, VPPMAX + 0.25, 0.25)  # mV
Vppmeans, sismeans, sisstds = scatterbin(Vpps,
                                         sis,
                                         Vppedges,
                                         xaverage=None,
                                         yaverage=np.mean)
errorbar(Vppmeans, sismeans, yerr=sisstds, fmt='k.-', ms=6, lw=1, zorder=9999)
xlim(xmin=0, xmax=VPPMAX)
ylim(0.2, 1)
yticks([0.2, 0.4, 0.6, 0.8, 1])
xlabel('LFP $V_{pp}$ (mV)')
ylabel('SI (L/(L+H))')
gcfm().window.setWindowTitle('SI vs Vpp lfpwidth=%g lfptres=%g' %
                             (lfpwidth, lfptres))
tight_layout(pad=0.3)

figure(figsize=figsize)
#plot(stds, sis, 'k.', ms=4, alpha=ALPHA)
stdedges = np.arange(25, STDMAX + 25, 25)  # uV
Exemple #2
0
        std = [ data[tirange[0]:tirange[1]].std() for tirange in tiranges ]
        Vpps.append(Vpp)
        stds.append(std)
        # keeping all 10 chans for each LFP for all tracks gives MemoryError:
        del data
        del rec.lfp.data
        #print('.', end='')
    #print()
sis = np.hstack(sis)
Vpps = np.hstack(Vpps) / 1e3 # convert from uV to mV
stds = np.hstack(stds)

figure(figsize=figsize)
#plot(Vpps, sis, 'k.', ms=4, alpha=ALPHA)
Vppedges = np.arange(0.25, VPPMAX+0.25, 0.25) # mV
Vppmeans, sismeans, sisstds = scatterbin(Vpps, sis, Vppedges,
                                         xaverage=None, yaverage=np.mean)
errorbar(Vppmeans, sismeans, yerr=sisstds, fmt='k.-', ms=6, lw=1, zorder=9999)
xlim(xmin=0, xmax=VPPMAX)
ylim(0.2, 1)
yticks([0.2, 0.4, 0.6, 0.8, 1])
xlabel('LFP $V_{pp}$ (mV)')
ylabel('SI (L/(L+H))')
gcfm().window.setWindowTitle('SI vs Vpp lfpwidth=%g lfptres=%g' % (lfpwidth, lfptres))
tight_layout(pad=0.3)

figure(figsize=figsize)
#plot(stds, sis, 'k.', ms=4, alpha=ALPHA)
stdedges = np.arange(25, STDMAX+25, 25) # uV
stdmeans, sismeans, sisstds = scatterbin(stds, sis, stdedges,
                                         xaverage=None, yaverage=np.mean)
errorbar(stdmeans, sismeans, yerr=sisstds, fmt='k.-', ms=6, lw=1, zorder=9999)
Exemple #3
0
def psthcorr(rec, nids=None, ssnids=None, ssseps=None, natexps=False, strange=None, plot=True):
    if nids == None:
        nids = sorted(rec.n) # use active neurons
    if ssnids == None:
        ssnids = nids # use nids as the superset
    nn = len(nids)
    nnss = len(ssnids)
    # note that using norm=True or norm='ntrials' doesn't seem to make a difference to the
    # results, probably doesn't matter for calculating corrs:
    midbins, psths, spikets = rec.psth(nids=nids, natexps=natexps, strange=strange, plot=False,
                                       binw=0.02, tres=0.005, norm=True)
    rho = np.corrcoef(psths) # defaults to bias=1
    rho[np.diag_indices(nn)] = np.nan # nan the diagonal, which imshow plots as white
    ssrho = np.zeros((nnss, nnss)) # superset rho matrix
    ssrho.fill(np.nan) # init with nans
    # load up values into appropriate spots in superset rho matrix:
    for i in range(nn):
        for j in range(nn):
            ssi, ssj = ssnids.searchsorted([nids[i], nids[j]])
            ssrho[ssi, ssj] = rho[i, j]

    if plot == False:
        return ssrho

    # plot superset rho matrix:
    figure(figsize=FIGSIZE)
    imshow(ssrho, vmin=-1, vmax=1, cmap='jet') # cmap='gray' is too bland
    ssnidticks = np.arange(0, nnss, 10)
    xticks(ssnidticks)
    yticks(ssnidticks)
    if SHOWCOLORBAR:
        colorbar()
    basetitle = rec.absname
    if strange != None:
        strange_sec = tuple(np.array(strange)/1e6) # convert to sec for display
        basetitle += '_strange=(%.f, %.f)' % strange_sec
    gcfm().window.setWindowTitle(basetitle + '_rho_mat')
    tight_layout(pad=0.3)

    # plot rho histogram:
    lti = np.tril_indices(nnss, -1) # lower triangle (below diagonal) indices of ssrho
    ssrhol = ssrho[lti]
    notnanis = np.logical_not(np.isnan(ssrhol)) # indices of non-nan values
    fssrhol = ssrhol[notnanis] # ssrhol filtered out for nans
    fssrholmean = fssrhol.mean()
    t, p = ttest_1samp(fssrhol, 0) # 2-sided ttest relative to 0
    print('mean=%g, t=%g, p=%g' % (fssrholmean, t, p))
    if p < ALPHA0:
        pstring = '$p<%g$' % ceilsigfig(p)
    else:
        pstring = '$p>%g$' % floorsigfig(p)
    figure(figsize=FIGSIZE)
    rhobins = np.arange(RHOMIN, RHOMAX+0.0333, 0.0333) # left edges + rightmost edge
    n = hist(fssrhol, bins=rhobins, color='k')[0]
    axvline(x=fssrholmean, c='r', ls='--') # draw vertical red line at mean fssrhol
    axvline(x=0, c='e', ls='--') # draw vertical grey line at x=0
    xlim(xmin=RHOMIN, xmax=RHOMAX)
    ylim(ymax=n.max()) # effectively normalizes the histogram
    rhoticks = np.arange(-0.2, 1+0.2, 0.2) # excluding the final 1
    xticks(rhoticks)
    yticks([n.max()]) # turn off y ticks to save space
    #yticks([0, n.max()])
    text(0.98, 0.98, '$\mu$=%.2g\n%s' % (fssrholmean, pstring), color='k',
         transform=gca().transAxes, horizontalalignment='right', verticalalignment='top')
    gcfm().window.setWindowTitle(basetitle + '_rho_hist')
    tight_layout(pad=0.3)

    # plot rho vs separation:
    fssseps = ssseps[notnanis] # ssseps filtered out for nans
    figure(figsize=FIGSIZE)
    # scatter plot:
    pl.plot(fssseps, fssrhol, 'k.')
    # bin seps and plot mean rho in each bin:
    sepbins = np.arange(0, fssseps.max()+SEPBINW, SEPBINW) # left edges
    sepmeans, rhomeans, rhostds = scatterbin(fssseps, fssrhol, sepbins)
    #pl.plot(sepmeans, rhomeans, 'r.-', ms=10, lw=2)
    errorbar(sepmeans, rhomeans, yerr=rhostds, fmt='r.-', ms=10, lw=2, zorder=9999)
    xlim(xmin=0, xmax=SEPMAX)
    ylim(ymin=RHOMIN, ymax=RHOMAX)
    septicks = np.arange(0, fssseps.max()+100, 500)
    xticks(septicks)
    yticks(rhoticks)
    gcfm().window.setWindowTitle(basetitle + '_rho_sep')
    tight_layout(pad=0.3)
    return ssrho
Exemple #4
0
def psthcorr(rec,
             nids=None,
             ssnids=None,
             ssseps=None,
             natexps=False,
             strange=None,
             plot=True):
    if nids == None:
        nids = sorted(rec.n)  # use active neurons
    if ssnids == None:
        ssnids = nids  # use nids as the superset
    nn = len(nids)
    nnss = len(ssnids)
    # note that using norm=True or norm='ntrials' doesn't seem to make a difference to the
    # results, probably doesn't matter for calculating corrs:
    midbins, psths, spikets = rec.psth(nids=nids,
                                       natexps=natexps,
                                       strange=strange,
                                       plot=False,
                                       binw=0.02,
                                       tres=0.005,
                                       norm=True)
    rho = np.corrcoef(psths)  # defaults to bias=1
    rho[np.diag_indices(
        nn)] = np.nan  # nan the diagonal, which imshow plots as white
    ssrho = np.zeros((nnss, nnss))  # superset rho matrix
    ssrho.fill(np.nan)  # init with nans
    # load up values into appropriate spots in superset rho matrix:
    for i in range(nn):
        for j in range(nn):
            ssi, ssj = ssnids.searchsorted([nids[i], nids[j]])
            ssrho[ssi, ssj] = rho[i, j]

    if plot == False:
        return ssrho

    # plot superset rho matrix:
    figure(figsize=FIGSIZE)
    imshow(ssrho, vmin=-1, vmax=1, cmap='jet')  # cmap='gray' is too bland
    ssnidticks = np.arange(0, nnss, 10)
    xticks(ssnidticks)
    yticks(ssnidticks)
    if SHOWCOLORBAR:
        colorbar()
    basetitle = rec.absname
    if strange != None:
        strange_sec = tuple(np.array(strange) /
                            1e6)  # convert to sec for display
        basetitle += '_strange=(%.f, %.f)' % strange_sec
    gcfm().window.setWindowTitle(basetitle + '_rho_mat')
    tight_layout(pad=0.3)

    # plot rho histogram:
    lti = np.tril_indices(
        nnss, -1)  # lower triangle (below diagonal) indices of ssrho
    ssrhol = ssrho[lti]
    notnanis = np.logical_not(np.isnan(ssrhol))  # indices of non-nan values
    fssrhol = ssrhol[notnanis]  # ssrhol filtered out for nans
    fssrholmean = fssrhol.mean()
    t, p = ttest_1samp(fssrhol, 0)  # 2-sided ttest relative to 0
    print('mean=%g, t=%g, p=%g' % (fssrholmean, t, p))
    if p < ALPHA0:
        pstring = '$p<%g$' % ceilsigfig(p)
    else:
        pstring = '$p>%g$' % floorsigfig(p)
    figure(figsize=FIGSIZE)
    rhobins = np.arange(RHOMIN, RHOMAX + 0.0333,
                        0.0333)  # left edges + rightmost edge
    n = hist(fssrhol, bins=rhobins, color='k')[0]
    axvline(x=fssrholmean, c='r',
            ls='--')  # draw vertical red line at mean fssrhol
    axvline(x=0, c='e', ls='--')  # draw vertical grey line at x=0
    xlim(xmin=RHOMIN, xmax=RHOMAX)
    ylim(ymax=n.max())  # effectively normalizes the histogram
    rhoticks = np.arange(-0.2, 1 + 0.2, 0.2)  # excluding the final 1
    xticks(rhoticks)
    yticks([n.max()])  # turn off y ticks to save space
    #yticks([0, n.max()])
    text(0.98,
         0.98,
         '$\mu$=%.2g\n%s' % (fssrholmean, pstring),
         color='k',
         transform=gca().transAxes,
         horizontalalignment='right',
         verticalalignment='top')
    gcfm().window.setWindowTitle(basetitle + '_rho_hist')
    tight_layout(pad=0.3)

    # plot rho vs separation:
    fssseps = ssseps[notnanis]  # ssseps filtered out for nans
    figure(figsize=FIGSIZE)
    # scatter plot:
    pl.plot(fssseps, fssrhol, 'k.')
    # bin seps and plot mean rho in each bin:
    sepbins = np.arange(0, fssseps.max() + SEPBINW, SEPBINW)  # left edges
    sepmeans, rhomeans, rhostds = scatterbin(fssseps, fssrhol, sepbins)
    #pl.plot(sepmeans, rhomeans, 'r.-', ms=10, lw=2)
    errorbar(sepmeans,
             rhomeans,
             yerr=rhostds,
             fmt='r.-',
             ms=10,
             lw=2,
             zorder=9999)
    xlim(xmin=0, xmax=SEPMAX)
    ylim(ymin=RHOMIN, ymax=RHOMAX)
    septicks = np.arange(0, fssseps.max() + 100, 500)
    xticks(septicks)
    yticks(rhoticks)
    gcfm().window.setWindowTitle(basetitle + '_rho_sep')
    tight_layout(pad=0.3)
    return ssrho