def plot_bifurc(gkbar_list, indir, color_li): for i, gkbar in enumerate(gkbar_list): gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(indir, gkdir) curtvec = np.load(os.path.join(subdir, 'curtvec.npy')) fpli = np.load(os.path.join(subdir, 'fpli.npy')) lab = labeldir.gkbar_lab(gkbar) color = color_li[i] plot_bifdiag(curtvec, fpli, label=lab, newfig=False, color=color, ms=2., alpha=0.7) plt.xlabel('$I_{inpq}$ (nA)') # plt.xlim((0, 0.2)) plt.ylabel('Membrane voltage at AIS (mV)') # plt.ylim((0, 80)) plt.legend(loc=4, fancybox=True, framealpha=0.5) plt.minorticks_on() plt.tight_layout() plt.savefig('%s/bifurc.pdf' % indir) plt.show()
def varygk_sta(gkbarli, indir_base): for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) indir = os.path.join(indir_base, gkdir) if not os.path.exists(indir): raise OSError('No such directory: {}'.format(indir)) submit_to_cluster('sta', '../../run/run_sta.py', [indir])
def plot_gains(gkbarli, indir, figpath, normalized=False, cutoff=False, statlab=False): plt.figure() for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(indir, gkdir) transfdir = os.path.join(subdir, 'transfer') lab = labeldir.gkbar_lab(gkbar) if statlab: lab = lab + plotgain.get_statlab(indir) plotgain.plot_gain(transfdir, normalized, cutoff, label=lab) plt.xlabel('Frequency (Hz)') if normalized: plt.ylabel('Normalized gain') plt.ylim(bottom=0.01) if cutoff: plt.axhline(1 / np.sqrt(2), color='black', linewidth=3, linestyle='dashed', alpha=0.4) else: plt.ylabel('Gain (Hz/nA)') plt.ylim(bottom=100) if cutoff: plotgain.plot_cutoff(transfdir) plt.legend(loc=1, prop={'size': 12}, fancybox=True, framealpha=0.5) plt.tight_layout() plt.savefig(figpath)
def varygk_sta(gkbarli, indir_base): for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) indir = os.path.join(indir_base, gkdir) if not os.path.exists(indir): raise OSError('No such directory: {}'.format(indir)) sbmj.run_sta(qname, indir)
def plot_varygk_vthr(gkbarli, indir, vname='v_ais', iname='icap_ais', figpath=None, binwidth=None): print vname plt.figure() for gkbar in gkbarli: gklab = labeldir.gkbar_lab(gkbar) gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(indir, gkdir) with open(os.path.join(subdir, 'fifos.p')) as f: fifos = pickle.load(f) vthrli = get_vthr_list(fifos, vname, iname) print np.mean(vthrli) if binwidth: bins = np.arange(min(vthrli), max(vthrli) + binwidth, binwidth) plt.hist(vthrli, label=gklab, alpha=0.7, bins=bins) else: plt.hist(vthrli, label=gklab, alpha=0.7) plt.xlabel('Voltage at threshold (mV)') plt.ylabel('# spikes') plt.legend(prop={'size': 12}, fancybox=True, framealpha=0.5) plt.tight_layout() if figpath: plt.savefig(figpath)
def varygk_spkstat(gkbarli, indir_base): for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) indir = os.path.join(indir_base, gkdir) if not os.path.exists(indir): raise OSError('No such directory: {}'.format(indir)) spkstat.get_spkstat_from_file(indir)
def varygk_simulation(gkbarli, ttime, pardir_base, outdir_base): for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) pardir = os.path.join(pardir_base, gkdir) outdir = os.path.join(outdir_base, gkdir) if not os.path.exists(outdir): os.makedirs(outdir) run_simulation(ttime, outdir, pardir)
def plot_operpoint(gkbar, spdir, frtli, colorli, cv=1, rad=0.005): gkdir = labeldir.gkbar_dir(gkbar) for i, frt in enumerate(frtli): targsdir = labeldir.targs_dir(frt, cv) indir = os.path.join(spdir, targsdir, gkdir) stimpar = jspar.load(os.path.join(indir, 'stimpar.json')) yrad = 2 * rad color = colorli[i] ell = patches.Ellipse((stimpar['mean'], stimpar['std']), rad, yrad, color=color, alpha=0.5) ax = plt.gca() ax.add_artist(ell)
def varygk_contours(gkbarli, bracketli, outdir, *args, **kwargs): for i, gkbar in enumerate(gkbarli): gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(outdir, gkdir) if not os.path.exists(subdir): os.mkdir(subdir) ncellpar = {'gkbar': gkbar} cellpar = copy.copy(deflt_cellpar) cellpar.update(ncellpar) bracket = bracketli[i] run_contours(subdir, cellpar, spkthr, bracket, *args, **kwargs)
def plot_gains(gkbarli, indir, figpath, normalized=False, statlab=False): plt.figure(figsize=(8, 4)) for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(indir, gkdir) transfdir = os.path.join(subdir, 'transfer') transf = np.load(os.path.join(transfdir, 'transf.npy')) fvec = np.load(os.path.join(transfdir, 'fvec.npy')) gain = np.absolute(transf) phase = np.angle(transf) phase = np.negative( phase ) ## this is used before changing phase to negative in transfer.py lab = labeldir.gkbar_lab(gkbar) if statlab: statfile = os.path.join(subdir, 'spkstat.json') if not os.path.isfile(statfile): spkstat.get_spkstat_from_file(subdir) stat = jspar.load(statfile) stat_lab = '(frt:%.1f cv:%.2f lv:%.2f)' % (stat['frt'], stat['cv'], stat['lv']) lab = lab + ' ' + stat_lab if normalized: gain = gain / gain[1] plt.subplot(121) plt.semilogx(fvec, gain, label=lab) plt.subplot(122) plt.semilogx(fvec, phase, label=lab) plt.subplot(121) plt.xlabel('Frequency (Hz)') if normalized: plt.ylabel('Gain') else: plt.ylabel('Gain (Hz/nA)') # plt.ylim(5e5, 2e6) plt.legend(loc=1, prop={'size': 8}, fancybox=True, framealpha=0.5) plt.subplot(122) plt.xlabel('Frequency (Hz)') plt.ylabel('Phase') # plt.legend(prop={'size':8}, loc=4) plt.legend(loc=1, prop={'size': 8}, fancybox=True, framealpha=0.5) plt.tight_layout() if figpath: plt.savefig(figpath)
def varygk_ficurve(gkbarli, curtvec, outdir, noise=0, tau=0): if not os.path.exists(outdir): raise OSError('No such output directory: {}'.format(outdir)) for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(outdir, gkdir) if not os.path.exists(subdir): os.mkdir(subdir) ncellpar = {'gkbar': gkbar} cellpar = copy.copy(deflt_cellpar) cellpar.update(ncellpar) run_ficurve(curtvec, cellpar, subdir, noise, tau)
def plot_hists(indir, figpath, gkbarli, nbin=20): plt.figure() for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(indir, gkdir) spktimes = np.load(os.path.join(subdir, 'spktimes.npy')) gklab = labeldir.gkbar_lab(gkbar) ssg.plot_hist(spktimes, nbin, log=True, label=gklab) plt.xlabel('ISI (ms)') plt.ylabel('# ISI / total # ISI') plt.legend(loc=1, prop={'size': 14}, fancybox=True, framealpha=0.5) plt.savefig(figpath)
def plot_gains(tauli, indir, gkbar, frttarg, cvtarg, figpath, normalized=False, statlab=False): plt.figure(figsize=(8, 4)) gkdir = labeldir.gkbar_dir(gkbar) firgain = 0 for i, tau in enumerate(tauli): optsubdir = labeldir.opt_subdir(tau, frttarg, cvtarg) subdir = os.path.join(indir, optsubdir, gkdir) transfdir = os.path.join(subdir, 'transfer') transf = np.load(os.path.join(transfdir, 'transf.npy')) fvec = np.load(os.path.join(transfdir, 'fvec.npy')) gain = np.absolute(transf) phase = np.angle(transf) if normalized: gain = gain / gain[1] lab = labeldir.tau_lab(tau) if statlab: statfile = os.path.join(subdir, 'stat.json') if not os.path.isfile(statfile): spkstat.get_stat_from_file(subdir) stat = jspar.load(statfile) stat_lab = '(frt:%.1f cv:%.2f lv:%.2f)' % (stat['frt'], stat['cv'], stat['lv']) lab = lab + ' ' + stat_lab plt.subplot(121) plt.semilogx(fvec, gain, label=lab) plt.subplot(122) plt.semilogx(fvec, phase, label=lab) plt.subplot(121) plt.xlabel('$f$ (Hz)') if normalized: plt.ylabel('Gain') else: plt.ylabel('Gain (Hz/nA)') # plt.ylim(5e5, 2e6) plt.legend(loc=1, prop={'size': 8}, fancybox=True, framealpha=0.5) plt.subplot(122) plt.xlabel('$f$ (Hz)') plt.ylabel('Phase') # plt.legend(prop={'size':8}, loc=4) plt.legend(loc=1, prop={'size': 8}, fancybox=True, framealpha=0.5) plt.tight_layout() if figpath: plt.savefig(figpath)
def plot_thresh_hists(gkbarli, figpath): plt.figure(figsize=(23, 5)) for gkbar in gkbarli: gklab = labeldir.gkbar_lab(gkbar) vthrli, ivslopeli, mvslopeli, indli = varygk_ivslope(gkbar, ppsubdir) gkdir = labeldir.gkbar_dir(gkbar) indir = os.path.join(ppsubdir, gkdir) with open(os.path.join(indir, 'fifos.p')) as f: fifos = pickle.load(f) mtslopeli = get_slope_list(fifos, 'time', 'nav_m', 'icap_ais') print gkbar print 'nspk', len(vthrli) print 'v', np.mean(vthrli) print 'didv', np.mean(ivslopeli) print 'dmdv', np.mean(mvslopeli) print 'dmdt', np.mean(mtslopeli) print 't2spk', 40 - np.mean(indli) * 0.025 plt.subplot(141) plt.hist(vthrli, alpha=0.7, label=gklab) plt.subplot(142) plt.hist(ivslopeli, alpha=0.7, label=gklab) plt.subplot(143) plt.hist(mvslopeli, alpha=0.7, label=gklab) plt.subplot(144) plt.hist(mtslopeli, alpha=0.7, label=gklab) plt.subplot(141) plt.xlabel('Voltage at threshold (mV)') plt.ylabel('# spikes') plt.legend(prop={'size': 12}, fancybox=True, framealpha=0.5) plt.subplot(142) plt.xlabel('dI/dV (nA/mV)') plt.ylabel('# spikes') plt.legend(prop={'size': 12}, fancybox=True, framealpha=0.5) plt.subplot(143) plt.xlabel('dm/dV (/mV)') plt.ylabel('# spikes') plt.legend(prop={'size': 12}, fancybox=True, framealpha=0.5) plt.subplot(144) plt.xlabel('dm/dt (/ms)') plt.ylabel('# spikes') plt.legend(prop={'size': 12}, fancybox=True, framealpha=0.5) plt.tight_layout() plt.savefig(figpath)
def varygk_cutoff(indir, gkbarli): cofreqli = [] for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(indir, gkdir) transfdir = os.path.join(subdir, 'transfer') transf = np.load(os.path.join(transfdir, 'transf.npy')) fvec = np.load(os.path.join(transfdir, 'fvec.npy')) gain = np.absolute(transf) cofreq = transfer.get_cutoff_freq(fvec, gain) cofreqli.append(cofreq) return np.array(cofreqli)
def plot_srcrs(indir, figpath, gkbarli, norder=10): plt.figure() for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(indir, gkdir) spktimes = np.load(os.path.join(subdir, 'spktimes.npy')) gklab = labeldir.gkbar_lab(gkbar) ssg.plot_srcr(spktimes, norder, label=gklab) plt.xlabel('Order') plt.ylabel('Spearman Rank Coefficient') plt.ylim((-0.025, 0.15)) plt.legend(loc=1, prop={'size': 14}, fancybox=True, framealpha=0.5) plt.tight_layout() plt.savefig(figpath)
def plot_ficurves(gkbarli, indir, marker='o-', labapd='', colorli=None, **kwargs): for i, gkbar in enumerate(gkbarli): gkdir = labeldir.gkbar_dir(gkbar) lab = labeldir.gkbar_lab(gkbar) if labapd: lab = lab + labapd subdir = os.path.join(indir, gkdir) if colorli: color = colorli[i] kwargs['color'] = color plotficurve.plot_ficurve(subdir, marker, label=lab, **kwargs)
def plot_ficurve(gkbarli, indir): for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(indir, gkdir) curtvec = np.load(os.path.join(subdir, 'curtvec.npy')) frtvec = np.load(os.path.join(subdir, 'frtvec.npy')) lab = labeldir.gkbar_lab(gkbar) plt.plot(curtvec, frtvec, 'o-', label=lab, ms=2., alpha=0.7) plt.xlabel('I (nA)') # plt.xlim((0, 0.2)) plt.ylabel('Firing rate (Hz)') # plt.ylim((0, 80)) plt.legend(loc=4, prop={'size': 7}, fancybox=True, framealpha=0.5) plt.minorticks_on() plt.savefig(os.path.join(indir, 'fi_curve.pdf')) plt.show()
def plot_transfs(gkbarli, indir, figpath, statlab=False): plt.figure(figsize=(8, 4)) for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(indir, gkdir) transfdir = os.path.join(subdir, 'transfer') lab = labeldir.gkbar_lab(gkbar) if statlab: lab = lab + plotgain.get_statlab(indir) plotgain.plot_transf(transfdir, label=lab) plt.subplot(121) plt.xlabel('Frequency (Hz)') plt.ylabel('Gain (Hz/nA)') plt.legend(loc=1, prop={'size': 12}, fancybox=True, framealpha=0.5) plt.subplot(122) plt.xlabel('Frequency (Hz)') plt.ylabel('Phase') plt.legend(loc=1, prop={'size': 12}, fancybox=True, framealpha=0.5) plt.tight_layout() plt.savefig(figpath)
def varygk_optstimpar(gkbarli, xzeroli, ttime, tau, frttarg, cvtarg, outdir_base): print 'Start to optimize stimpar ...' print 'gkbar_list: ' + str(gkbarli) print 'x0_list: ' + str(xzeroli) print 'tau: %.0f' % tau print 'frt: %.0f\tcv: %.1f' % (frttarg, cvtarg) optsubdir = labeldir.opt_subdir(tau, frttarg, cvtarg) outdir = os.path.join(outdir_base, optsubdir) if not os.path.exists(outdir): os.makedirs(outdir) for gkbar, x0 in zip(gkbarli, xzeroli): gkdir = labeldir.gkbar_dir(gkbar) subdir = os.path.join(outdir, gkdir) if not os.path.exists(subdir): os.mkdir(subdir) ncellpar = {'gkbar': gkbar} cellpar = copy.copy(deflt_cellpar) cellpar.update(ncellpar) run_optstimpar(subdir, cellpar, spkthr, x0, tau, ttime, frttarg, cvtarg)
frttarg = 5 cvtarg = 1. tfcsubdir = labeldir.opt_subdir(tau, frttarg, cvtarg) optsubdir = os.path.join(optdir, tfcsubdir) threxsubdir = os.path.join(threxdir, tfcsubdir) # gkbar = 0 # gkdir = labeldir.gkbar_dir(gkbar) # outdir = os.path.join(threxsubdir, gkdir) # # plot_traj_thresh(outdir, 'time', 'nav_m') # plot_align_from_file(outdir, 'nav_m') # plt.show() gkbarli = [0, 5e-3, 15e-3] trajcolorli = ['#1f77b4', '#ff7f0e', '#2ca02c'] thrcolorli = ['darkblue', 'chocolate', 'darkgreen'] for i, gkbar in enumerate(gkbarli): trajcolor = trajcolorli[i] thrcolor = thrcolorli[i] gkdir = labeldir.gkbar_dir(gkbar) outdir = os.path.join(threxsubdir, gkdir) # plot_traj_thresh(outdir, 'time', 'nav_m') gklab = labeldir.gkbar_lab(gkbar) plot_align_thresh(outdir, 'nav_m', trajcolor, thrcolor, label=gklab) plt.xlabel('time to spike (ms)') plt.ylabel('Nav gating variable $m$') plt.legend() plt.savefig(os.path.join(threxsubdir, 'mt.pdf')) plt.show()
def varygk_ivslope(gkbar, ppsubdir): gkdir = labeldir.gkbar_dir(gkbar) indir = os.path.join(ppsubdir, gkdir) with open(os.path.join(indir, 'fifos.p')) as f: fifos = pickle.load(f) return get_ivslope_list(fifos)
def varygk_transfer(gkbarli, indir_base): for gkbar in gkbarli: gkdir = labeldir.gkbar_dir(gkbar) indir = os.path.join(indir_base, gkdir) transfer.run_transfer(indir)