from pylab import * import scipy.io import pickle from os.path import exists from matplotlib.collections import PatchCollection import scipy.stats def mystr(x): mystr = str(x) if '000000' in mystr or '999999' in mystr: for q in range(7,0,-1): mystr = ('{:.'+str(q)+'f}').format(x) ilast = len(mystr)-1 if 'e' in mystr: ilast = mystr.find('e') - 1 if mystr[ilast] != '0': return mystr return mystr def myscistr(x): mystr = '{:e}'.format(x) if '0000' in mystr or '9999' in mystr: for q in range(7,0,-1): mystr = ('{:.'+str(q)+'e}').format(x) ilast = mystr.find('e') - 1 if mystr[ilast] != '0': return mystr return mystr def discontlog(ax,x,y,width=18,height=1.05,col='#000000'): ax.plot([x-width/2,x+width/2],[y/sqrt(height),y*sqrt(height)],'k-',lw=2.3,clip_on=False,color=col) ax.plot([x-width,x+width],[y/height,y*height],'w-',lw=1.0,clip_on=False,zorder=100) f,axarr = subplots(6,1) for iax in range(0,6): for tick in axarr[iax].xaxis.get_major_ticks() + axarr[iax].yaxis.get_major_ticks(): tick.label.set_fontsize(3.5) axarr[iax].spines['top'].set_visible(False) axarr[iax].spines['right'].set_visible(False) axarr[iax].get_xaxis().tick_bottom() axarr[iax].get_yaxis().tick_left() for ix in range(0,3): axarr[ix].set_xlabel('') for iy in range(0,2): for ix in range(0,3): axarr[3*iy+ix].set_position([0.09+0.313*ix,0.62-0.37*iy,0.28,0.33]) axarr[3*iy+ix].set_ylim([1,200]) dists = [50.0, 100.0, 150.0, 200.0, 250.0, 300.0, 350.0, 400.0, 450.0, 500.0, 550.0, 600.0, 650.0, 700.0, 750.0, 800.0, 850.0, 900.0, 950.0, 1000.0] styles = ['bx-','kx-'] for imodul in range(0,2): txt1stmod = 'DA' if imodul == 0 else 'ACh' txt2ndmod = 'ACh' if imodul == 0 else 'DA' #Hay Thresholds, proximal DA (+10 mV) or ACh (-10 mV) moduldv = 10.0-20*imodul Ithreshs_all = [] for idist in range(0,len(dists)): dist = dists[idist] Ithreshs_both = [] for iIhcoeff in range(0,3): filename = '../modulhcn_hay/strongdendthresh'+str(dist)+'_Ihcoeff1.0.sav' if iIhcoeff == 0: filename = '../modulhcn_hay/strongdendthresh'+str(dist)+'_Ihmod2ways'+str(moduldv)+',0.0,500_absbound.sav' elif iIhcoeff == 1: filename = '../modulhcn_hay/strongdendthresh'+str(dist)+'_Ihmod2ways'+str(moduldv)+','+str(-moduldv)+',500_absbound.sav' if not exists(filename): print(filename+" does not exist") continue unpicklefile = open(filename,'rb');unpickledlist = pickle.load(unpicklefile);unpicklefile.close() print(filename+" loaded") Ithreshs_both.append(unpickledlist[0][-1]) Ithreshs_all.append(Ithreshs_both[:]) try: axarr[3*imodul].semilogy(dists, [Ithreshs_all[i][0] for i in range(0,len(Ithreshs_all))], 'bx-',lw=0.5,mew=0.5,ms=2.0) axarr[3*imodul].semilogy(dists, [Ithreshs_all[i][1] for i in range(0,len(Ithreshs_all))], 'mx-',lw=0.5,mew=0.5,ms=2.0) axarr[3*imodul].semilogy(dists, [Ithreshs_all[i][2] for i in range(0,len(Ithreshs_all))], 'kx--',lw=0.5,mew=0.5,ms=2.0) except: print("except") #Almog Thresholds, proximal DA (+5 mV) or ACh (-5 mV) moduldv = 5.0-10*imodul Ithreshs_all = [] for idist in range(0,len(dists)): dist = dists[idist] Ithreshs_both = [] for iIhcoeff in range(0,3): filename = 'strongdendthresh'+str(dist)+'_Ihcoeff1.0.sav' if iIhcoeff == 0: filename = 'strongdendthresh'+str(dist)+'_Ihmod2ways'+str(moduldv)+',0.0,800_absbound.sav' elif iIhcoeff == 1: filename = 'strongdendthresh'+str(dist)+'_Ihmod2ways'+str(moduldv)+','+str(-moduldv)+',800_absbound.sav' if not exists(filename): print(filename+" does not exist") continue unpicklefile = open(filename,'rb');unpickledlist = pickle.load(unpicklefile);unpicklefile.close() print(filename+" loaded") Ithreshs_both.append(unpickledlist[0][-1]) Ithreshs_all.append(Ithreshs_both[:]) axarr[3*imodul+1].semilogy(dists, [Ithreshs_all[i][0] for i in range(0,len(Ithreshs_all))], 'bx-',lw=0.5,mew=0.5,ms=2.0) axarr[3*imodul+1].semilogy(dists, [Ithreshs_all[i][1] for i in range(0,len(Ithreshs_all))], 'mx-',lw=0.5,mew=0.5,ms=2.0) axarr[3*imodul+1].semilogy(dists, [Ithreshs_all[i][2] for i in range(0,len(Ithreshs_all))], 'kx--',lw=0.5,mew=0.5,ms=2.0) #Almog Thresholds, proximal DA (+5 mV) or ACh (-5 mV) moduldv = 5.0-10*imodul Ithreshs_all = [] for idist in range(0,len(dists)): dist = dists[idist] Ithreshs_both = [] for iIhcoeff in range(0,3): filename = 'strongdendthresh'+str(dist)+'_Ihcoeff1.0_apicalCaLVAHay_0.003_100.0_dists585-985_absbound.sav' if iIhcoeff == 0: filename = 'strongdendthresh'+str(dist)+'_Ihmod2ways'+str(moduldv)+',0.0,800_apicalCaLVAHay_0.003_100.0_dists585-985_absbound.sav' elif iIhcoeff == 1: filename = 'strongdendthresh'+str(dist)+'_Ihmod2ways'+str(moduldv)+','+str(-moduldv)+',800_apicalCaLVAHay_0.003_100.0_dists585-985_absbound.sav' if not exists(filename): print(filename+" does not exist") continue unpicklefile = open(filename,'rb');unpickledlist = pickle.load(unpicklefile);unpicklefile.close() print(filename+" loaded") Ithreshs_both.append(unpickledlist[0][-1]) Ithreshs_all.append(Ithreshs_both[:]) axarr[3*imodul+2].semilogy(dists, [Ithreshs_all[i][2] for i in range(0,len(Ithreshs_all))], 'kx--',lw=0.5,mew=0.5,ms=2.0,label='Control',zorder=5) axarr[3*imodul+2].semilogy(dists, [Ithreshs_all[i][0] for i in range(0,len(Ithreshs_all))], 'bx-',lw=0.5,mew=0.5,ms=2.0,label=txt1stmod+' at proximal dendrite') axarr[3*imodul+2].semilogy(dists, [Ithreshs_all[i][1] for i in range(0,len(Ithreshs_all))], 'mx-',lw=0.5,mew=0.5,ms=2.0,label=txt1stmod+' at prox., '+txt2ndmod+' at dist. dend.') for ix in range(0,3): axarr[ix].set_xticklabels([]) axarr[3+ix].set_xlabel('distance ($\mu$m)',fontsize=6) for iy in range(0,2): axarr[3*iy].set_ylabel('$I$ (nA)',fontsize=6) for ix in range(1,3): axarr[3*iy+ix].set_yticklabels([]) axarr[0].set_title('Hay model',fontsize=6) axarr[1].set_title('Almog model',fontsize=6) axarr[2].set_title('Almog model with hot zone of Ca$^{2+}$ channels ',fontsize=6) #axarr[0].set_ylabel('DA at prox. dend.',fontsize=6) #axarr[3].set_ylabel('ACh at prox. dend.',fontsize=6) axarr[2].legend(fontsize=5,edgecolor='none', facecolor=(1, 1, 1, 0.1),loc='upper left',borderpad=-0.25) axarr[5].legend(fontsize=5,edgecolor='none', facecolor=(1, 1, 1, 0.1),loc='upper left',borderpad=-0.25) dist1s = [200,300,400,500,600,700,800,900,1000,1100,1200,1300] treename = 'apic' patchxs0 = [[0.5-0.45*sin(0.025*x*2*pi) for x in range(0,21)],[0.5-0.45*sin(0.025*x*2*pi) for x in range(20,41)]] patchys0 = [[0.5+0.45*cos(0.025*x*2*pi) for x in range(0,21)],[0.5+0.45*cos(0.025*x*2*pi) for x in range(20,41)]] patchxs = patchxs0[0]+[0.5,0,0,1,1,0.5]+patchxs0[1] patchys = patchys0[0]+[0,0,1,1,0,0]+patchys0[1] for iax in range(0,6): pos = axarr[iax].get_position() f.text(pos.x0 - 0.03, pos.y1 - 0.01, chr(ord('A')+iax), fontsize=9) f.savefig("figS6.eps")