# 2-compartment circuit parameters eN = 0 eL = -70 eI = -90 gLD = 0.25 gLS = 4 gA = 2.5 gNbar = .5 V = npy.arange(-90, 0.01, 0.01) def gN(gNbar, V): # The Supp Methods reports 22 and 12 for the constants below for # mg2+ block. More precise constants below reproduce figure 4d mgB = (1 + npy.exp( -(V + 22.117)/12.657))**-1 g = gNbar*mgB return g def I(g, V, e): I = g*(V - e) return I def calcIs(nsyn, nsyn2=0): ILD = I(gLD, V, eL) IND = I(gN(gNbar*nsyn, V), V, eN) Idend = ILD + IND VS = V + Idend/gA ILS = I(gLS, VS, eL) INP = I(gN(gNbar*nsyn2, VS), VS, eN) Itot = Idend + ILS + INP return (ILD, IND, ILS, INP, Idend, Itot) def calcVs(nsyn, nsyn2=0): (ILD, IND, ILS, INP, Idend, Itot) = calcIs(nsyn, nsyn2) VS = V + Idend/gA fixedpts = npy.diff(Itot>0).sum() if fixedpts == 1: V0 = npy.interp(0, Itot, V) V0S = npy.interp(0, Itot, VS) if fixedpts == 3: # with multiple fixed pts, take smallest one first = npy.where(npy.diff(Itot>0))[0][0] V0 = npy.interp(0, Itot[first:first+1], V[first:first+1]) V0S = npy.interp(0, Itot[first:first+1], VS[first:first+1]) return (V0, V0S, fixedpts) syns = npy.arange(21) ss = [] for pmodlevel in npy.arange(41): # prox mod numfixedpts = npy.zeros(syns.size) Vs = npy.zeros(syns.size) VsS = npy.zeros(syns.size) for nsyn in syns: (Vs[nsyn], VsS[nsyn], numfixedpts[nsyn]) = calcVs(nsyn, pmodlevel) ss.append(VsS) s = npy.array(ss).T # normalize 2C model responses to MC model (MC model max) s90150max = 15.217 s -= s.min() s *= s90150max/s.max() h = f4plot(s) h.savefig(os.path.join('figs','Figure 4d.png'))