def Pyr2Pyr(syn_params, sec_x, sec_id): """Create a pyr2pyr synapse :param syn_params: parameters of a synapse :param sec_x: normalized distance along the section :param sec_id: target section :return: NEURON synapse object """ lsyn = h.pyr2pyr(sec_x, sec=sec_id) if syn_params.get('AlphaTmax_ampa'): lsyn.AlphaTmax_ampa = float(syn_params['AlphaTmax_ampa']) # par.x(21) if syn_params.get('Beta_ampa'): lsyn.Beta_ampa = float(syn_params['Beta_ampa']) # par.x(22) if syn_params.get('Cdur_ampa'): lsyn.Cdur_ampa = float(syn_params['Cdur_ampa']) # par.x(23) if syn_params.get('gbar_ampa'): lsyn.gbar_ampa = float(syn_params['gbar_ampa']) # par.x(24) if syn_params.get('Erev_ampa'): lsyn.Erev_ampa = float(syn_params['Erev_ampa']) # par.x(16) if syn_params.get('AlphaTmax_nmda'): lsyn.AlphaTmax_nmda = float(syn_params['AlphaTmax_nmda']) # par.x(25) if syn_params.get('Beta_nmda'): lsyn.Beta_nmda = float(syn_params['Beta_nmda']) # par.x(26) if syn_params.get('Cdur_nmda'): lsyn.Cdur_nmda = float(syn_params['Cdur_nmda']) # par.x(27) if syn_params.get('gbar_nmda'): lsyn.gbar_nmda = float(syn_params['gbar_nmda']) # par.x(28) if syn_params.get('Erev_nmda'): lsyn.Erev_nmda = float(syn_params['Erev_nmda']) # par.x(16) if syn_params.get('initW'): lsyn.initW = float(syn_params['initW']) * random.uniform(0.5,1.0) # par.x(0) * rC.uniform(0.5,1.0)//rand.normal(0.5,1.5) //`rand.repick() if syn_params.get('Wmax'): lsyn.Wmax = float(syn_params['Wmax']) * lsyn.initW # par.x(1) * lsyn.initW if syn_params.get('Wmin'): lsyn.Wmin = float(syn_params['Wmin']) * lsyn.initW # par.x(2) * lsyn.initW #delay = float(syn_params['initW']) # par.x(3) + delayDistance #lcon = new NetCon(&v(0.5), lsyn, 0, delay, 1) if syn_params.get('lambda1'): lsyn.lambda1 = float(syn_params['lambda1']) # par.x(6) if syn_params.get('lambda2'): lsyn.lambda2 = float(syn_params['lambda2']) # par.x(7) if syn_params.get('threshold1'): lsyn.threshold1 = float(syn_params['threshold1']) # par.x(8) if syn_params.get('threshold2'): lsyn.threshold2 = float(syn_params['threshold2']) # par.x(9) if syn_params.get('tauD1'): lsyn.tauD1 = float(syn_params['tauD1']) # par.x(10) if syn_params.get('d1'): lsyn.d1 = float(syn_params['d1']) # par.x(11) if syn_params.get('tauD2'): lsyn.tauD2 = float(syn_params['tauD2']) # par.x(12) if syn_params.get('d2'): lsyn.d2 = float(syn_params['d2']) # par.x(13) if syn_params.get('tauF'): lsyn.tauF = float(syn_params['tauF']) # par.x(14) if syn_params.get('f'): lsyn.f = float(syn_params['f']) # par.x(15) if syn_params.get('bACH'): lsyn.bACH = float(syn_params['bACH']) # par.x(17) if syn_params.get('aDA'): lsyn.aDA = float(syn_params['aDA']) # par.x(18) if syn_params.get('bDA'): lsyn.bDA = float(syn_params['bDA']) # par.x(19) if syn_params.get('wACH'): lsyn.wACH = float(syn_params['wACH']) # par.x(20) return lsyn
def Pyr2Pyr(syn_params, sec_x, sec_id): """Create a pyr2pyr synapse :param syn_params: parameters of a synapse :param sec_x: normalized distance along the section :param sec_id: target section :return: NEURON synapse object """ # #import pdb; pdb.set_trace() # trg_cell_nid = int(str(sec_id).split("[")[1].split("]")[0]) # # if trg_cell_nid > 0: # # import pdb; pdb.set_trace() # if trg_cell_nid in weight_means["exc"].keys(): # mean_weight = weight_means["exc"][trg_cell_nid] # else: # weight_means["exc"][trg_cell_nid] = mean_weight = np.random.uniform(0.18181829517744805 - 0.18, 0.18181829517744805 + 0.28) # #weight_means["exc"][trg_cell_nid] = mean_weight = np.random.uniform(0.18181829517744805 + 0.32, 0.18181829517744805 + 0.35) lsyn = h.pyr2pyr(sec_x, sec=sec_id) #Assigns random generator of release probability. r = h.Random() r.MCellRan4() r.uniform(0,1) lsyn.setRandObjRef(r) generators.append(r) #lsyn.P_0 = 0.1 #import pdb; pdb.set_trace() if syn_params.get('AlphaTmax_ampa'): lsyn.AlphaTmax_ampa = float(syn_params['AlphaTmax_ampa']) # par.x(21) if syn_params.get('Beta_ampa'): lsyn.Beta_ampa = float(syn_params['Beta_ampa']) # par.x(22) if syn_params.get('Cdur_ampa'): lsyn.Cdur_ampa = float(syn_params['Cdur_ampa']) # par.x(23) if syn_params.get('gbar_ampa'): lsyn.gbar_ampa = float(syn_params['gbar_ampa']) # par.x(24) if syn_params.get('Erev_ampa'): lsyn.Erev_ampa = float(syn_params['Erev_ampa']) # par.x(16) if syn_params.get('AlphaTmax_nmda'): lsyn.AlphaTmax_nmda = float(syn_params['AlphaTmax_nmda']) # par.x(25) if syn_params.get('Beta_nmda'): lsyn.Beta_nmda = float(syn_params['Beta_nmda']) # par.x(26) if syn_params.get('Cdur_nmda'): lsyn.Cdur_nmda = float(syn_params['Cdur_nmda']) # par.x(27) if syn_params.get('gbar_nmda'): lsyn.gbar_nmda = float(syn_params['gbar_nmda']) # par.x(28) if syn_params.get('Erev_nmda'): lsyn.Erev_nmda = float(syn_params['Erev_nmda']) # par.x(16) #global max_exc if syn_params.get('initW'): #lsyn.initW = float(syn_params['initW']) * random.uniform(0.5,1.0) # par.x(0) * rC.uniform(0.5,1.0)//rand.normal(0.5,1.5) //`rand.repick() #lsyn.initW = float(min(lognormal(2.5*0.18181829517744805, 0.13993260156705545), 0.8) * scale) lsyn.initW = 0.5#float(min(lognormal(0.495, 0.09), 0.8) * scale) #lsyn.initW = 5 # if (lsyn.initW > max_exc): # max_exc = lsyn.initW #lsyn.initW = float(lognormal(mean_weight, 0.13993260156705545) * scale) #lsyn.initW = float(min(lognormal(mean_weight, 0.22), 1.20) * scale) #lsyn.initW = 0.18181829517744805 * 10 #print(lsyn.initW) if syn_params.get('Wmax'): lsyn.Wmax = 8#float(syn_params['Wmax']) * lsyn.initW # par.x(1) * lsyn.initW if syn_params.get('Wmin'): lsyn.Wmin = float(syn_params['Wmin']) * lsyn.initW # par.x(2) * lsyn.initW #delay = float(syn_params['initW']) # par.x(3) + delayDistance #lcon = new NetCon(&v(0.5), lsyn, 0, delay, 1) if syn_params.get('lambda1'): lsyn.lambda1 = float(syn_params['lambda1']) # par.x(6) if syn_params.get('lambda2'): lsyn.lambda2 = float(syn_params['lambda2']) # par.x(7) if syn_params.get('threshold1'): lsyn.threshold1 = float(syn_params['threshold1']) # par.x(8) if syn_params.get('threshold2'): lsyn.threshold2 = float(syn_params['threshold2']) # par.x(9) if syn_params.get('tauD1'): lsyn.tauD1 = float(syn_params['tauD1']) # par.x(10) if syn_params.get('d1'): lsyn.d1 = float(syn_params['d1']) # par.x(11) if syn_params.get('tauD2'): lsyn.tauD2 = float(syn_params['tauD2']) # par.x(12) if syn_params.get('d2'): lsyn.d2 = float(syn_params['d2']) # par.x(13) if syn_params.get('tauF'): lsyn.tauF = float(syn_params['tauF']) # par.x(14) if syn_params.get('f'): lsyn.f = float(syn_params['f']) # par.x(15) if syn_params.get('bACH'): lsyn.bACH = float(syn_params['bACH']) # par.x(17) if syn_params.get('aDA'): lsyn.aDA = float(syn_params['aDA']) # par.x(18) if syn_params.get('bDA'): lsyn.bDA = float(syn_params['bDA']) # par.x(19) if syn_params.get('wACH'): lsyn.wACH = float(syn_params['wACH']) # par.x(20) return lsyn
def Pyr2Pyr(syn_params, sec_x, sec_id): """Create a pyr2pyr synapse :param syn_params: parameters of a synapse :param sec_x: normalized distance along the section :param sec_id: target section :return: NEURON synapse object """ lsyn = h.pyr2pyr(sec_x, sec=sec_id) #Assigns random generator of release probability. r = h.Random() r.MCellRan4() r.uniform(0, 1) lsyn.setRandObjRef(r) #A list of random generators is kept so that they are not automatically garbaged. generators.append(r) lsyn.P_0 = np.clip(np.random.normal(0.53, 0.22), 0, 1) #Release probability if syn_params.get('AlphaTmax_ampa'): lsyn.AlphaTmax_ampa = float(syn_params['AlphaTmax_ampa']) # par.x(21) if syn_params.get('Beta_ampa'): lsyn.Beta_ampa = float(syn_params['Beta_ampa']) # par.x(22) if syn_params.get('Cdur_ampa'): lsyn.Cdur_ampa = float(syn_params['Cdur_ampa']) # par.x(23) if syn_params.get('gbar_ampa'): lsyn.gbar_ampa = float(syn_params['gbar_ampa']) # par.x(24) if syn_params.get('Erev_ampa'): lsyn.Erev_ampa = float(syn_params['Erev_ampa']) # par.x(16) if syn_params.get('AlphaTmax_nmda'): lsyn.AlphaTmax_nmda = float(syn_params['AlphaTmax_nmda']) # par.x(25) if syn_params.get('Beta_nmda'): lsyn.Beta_nmda = float(syn_params['Beta_nmda']) # par.x(26) if syn_params.get('Cdur_nmda'): lsyn.Cdur_nmda = float(syn_params['Cdur_nmda']) # par.x(27) if syn_params.get('gbar_nmda'): lsyn.gbar_nmda = float(syn_params['gbar_nmda']) # par.x(28) if syn_params.get('Erev_nmda'): lsyn.Erev_nmda = float(syn_params['Erev_nmda']) # par.x(16) if syn_params.get('initW'): h.distance(sec=sec_id.cell().soma[0]) dist = h.distance(sec_id(sec_x)) fullsecname = sec_id.name() sec_type = fullsecname.split(".")[1][:4] sec_id = int(fullsecname.split("[")[-1].split("]")[0]) # if pyrWeight_s == 0: # base = float(pyrWeight_m) # else: # base = float(np.clip(lognormal(pyrWeight_m, pyrWeight_s), 0, 5)) ####OLD # dend = lambda x: 0.9278403931213186 * ( 1.0022024845737223 ** x ) # close_apic = lambda x: 0.9131511669645764 * ( 1.0019436631560847 ** x ) # far_apic = lambda x: 0.16857988107990907 * ( 1.0039628707324273 ** x ) ############# #distance based conductance scaling functions. #dend = lambda x: 0.9475625702815389 * ( 1.001318965242205 ** x ) #close_apic = lambda x: 0.8522367331040966 * ( 1.0020433032052223 ** x ) #far_apic = lambda x: 0.09043087364217033 * ( 1.004632615014859 ** x ) dend = lambda x: (1.001**x) close_apic = lambda x: (1.002**x) #far_apic = lambda x: ( 1.002 ** x ) far_apic = lambda x: 1 if sec_type == "dend": base = float(np.clip(lognormal(pyrWeight_m, pyrWeight_s), 0, 5)) lsyn.initW = base * dend(dist) elif sec_type == "apic": if dist < 750: base = float(np.clip(lognormal(pyrWeight_m, pyrWeight_s), 0, 5)) lsyn.initW = base * close_apic(dist) else: base = float(np.clip(lognormal(0.17, 0.2), 0, 5)) lsyn.initW = base * far_apic(dist) lsyn.initW = np.clip(float(lsyn.initW), 0, 5) if syn_params.get('Wmax'): lsyn.Wmax = float( syn_params['Wmax']) * lsyn.initW # par.x(1) * lsyn.initW if syn_params.get('Wmin'): lsyn.Wmin = float( syn_params['Wmin']) * lsyn.initW # par.x(2) * lsyn.initW #delay = float(syn_params['initW']) # par.x(3) + delayDistance #lcon = new NetCon(&v(0.5), lsyn, 0, delay, 1) if syn_params.get('lambda1'): lsyn.lambda1 = float(syn_params['lambda1']) # par.x(6) if syn_params.get('lambda2'): lsyn.lambda2 = float(syn_params['lambda2']) # par.x(7) if syn_params.get('threshold1'): lsyn.threshold1 = float(syn_params['threshold1']) # par.x(8) if syn_params.get('threshold2'): lsyn.threshold2 = float(syn_params['threshold2']) # par.x(9) if syn_params.get('tauD1'): lsyn.tauD1 = float(syn_params['tauD1']) # par.x(10) if syn_params.get('d1'): lsyn.d1 = float(syn_params['d1']) # par.x(11) if syn_params.get('tauD2'): lsyn.tauD2 = float(syn_params['tauD2']) # par.x(12) if syn_params.get('d2'): lsyn.d2 = float(syn_params['d2']) # par.x(13) if syn_params.get('tauF'): lsyn.tauF = float(syn_params['tauF']) # par.x(14) if syn_params.get('f'): lsyn.f = float(syn_params['f']) # par.x(15) if syn_params.get('bACH'): lsyn.bACH = float(syn_params['bACH']) # par.x(17) if syn_params.get('aDA'): lsyn.aDA = float(syn_params['aDA']) # par.x(18) if syn_params.get('bDA'): lsyn.bDA = float(syn_params['bDA']) # par.x(19) if syn_params.get('wACH'): lsyn.wACH = float(syn_params['wACH']) # par.x(20) return lsyn
def Pyr2Pyr(syn_params, sec_x, sec_id): """Create a pyr2pyr synapse :param syn_params: parameters of a synapse :param sec_x: normalized distance along the section :param sec_id: target section :return: NEURON synapse object """ lsyn = h.pyr2pyr(sec_x, sec=sec_id) #Assigns random generator of release probability. r = h.Random() r.MCellRan4() r.uniform(0, 1) lsyn.setRandObjRef(r) generators.append(r) lsyn.P_0 = np.max(np.random.normal(0.53, 0.22), 0) #Release probability if syn_params.get('AlphaTmax_ampa'): lsyn.AlphaTmax_ampa = float(syn_params['AlphaTmax_ampa']) # par.x(21) if syn_params.get('Beta_ampa'): lsyn.Beta_ampa = float(syn_params['Beta_ampa']) # par.x(22) if syn_params.get('Cdur_ampa'): lsyn.Cdur_ampa = float(syn_params['Cdur_ampa']) # par.x(23) if syn_params.get('gbar_ampa'): lsyn.gbar_ampa = float(syn_params['gbar_ampa']) # par.x(24) if syn_params.get('Erev_ampa'): lsyn.Erev_ampa = float(syn_params['Erev_ampa']) # par.x(16) if syn_params.get('AlphaTmax_nmda'): lsyn.AlphaTmax_nmda = float(syn_params['AlphaTmax_nmda']) # par.x(25) if syn_params.get('Beta_nmda'): lsyn.Beta_nmda = float(syn_params['Beta_nmda']) # par.x(26) if syn_params.get('Cdur_nmda'): lsyn.Cdur_nmda = float(syn_params['Cdur_nmda']) # par.x(27) if syn_params.get('gbar_nmda'): lsyn.gbar_nmda = float(syn_params['gbar_nmda']) # par.x(28) if syn_params.get('Erev_nmda'): lsyn.Erev_nmda = float(syn_params['Erev_nmda']) # par.x(16) if syn_params.get('initW'): #lsyn.initW = float(syn_params['initW']) * 0.0000001#random.uniform(0.5,1.0) # par.x(0) * rC.uniform(0.5,1.0)//rand.normal(0.5,1.5) //`rand.repick() #lsyn.initW = float(pyrWeight) #lsyn.initW = float(np.random.uniform(pyrWeight_m - pyrWeight_s, pyrWeight_m + pyrWeight_s)) #import pdb; pdb.set_trace() #import pdb; pdb.set_trace() h.distance(sec=sec_id.cell().soma[0]) dist = h.distance(sec_id(sec_x)) fullsecname = sec_id.name() sec_type = fullsecname.split(".")[1][:4] sec_id = int(fullsecname.split("[")[-1].split("]")[0]) if pyrWeight_s == 0: base = float(pyrWeight_m) else: base = float(min(lognormal(pyrWeight_m, pyrWeight_s), 15)) #base = float(max(0.001, min(np.random.normal(pyrWeight_m, pyrWeight_s), 15))) #base = np.random.lognormal(pyrWeight_m, np.sqrt(pyrWeight_s), 1) ####OLD # dend = lambda x: 0.9278403931213186 * ( 1.0022024845737223 ** x ) # close_apic = lambda x: 0.9131511669645764 * ( 1.0019436631560847 ** x ) # far_apic = lambda x: 0.16857988107990907 * ( 1.0039628707324273 ** x ) ############# dend = lambda x: 0.9475625702815389 * (1.001318965242205**x) close_apic = lambda x: 0.8522367331040966 * (1.0020433032052223**x) far_apic = lambda x: 0.09043087364217033 * (1.004632615014859**x) if sec_type == "dend": #lsyn.initW = base * (0.9278403931213186 * ( 1.0022024845737223 ** dist )) lsyn.initW = base * dend(dist) elif sec_type == "apic": if dist < 750: #lsyn.initW = base * (0.9131511669645764 * ( 1.0019436631560847 ** dist)) lsyn.initW = base * close_apic(dist) else: lsyn.initW = base * far_apic(dist) #lsyn.initW = base * (0.16857988107990907 * ( 1.0039628707324273 ** dist)) # if sec_id >= 60: # lsyn.initW = base * (0.59768734 * (1.00326839 ** dist)) # else: # lsyn.initW = base * (0.62153507 * (1.00248601 ** dist)) #lsyn.initW = min(float(lsyn.initW), 1000) lsyn.initW = min(float(lsyn.initW), 50) #lsyn.initW = np.random.uniform(0.02, 2) #lsyn.initW = pyrWeight_m #lsyn.initW = float(min(lognormal(pyrWeight_m, pyrWeight_s), 8)) if syn_params.get('Wmax'): lsyn.Wmax = float( syn_params['Wmax']) * lsyn.initW # par.x(1) * lsyn.initW if syn_params.get('Wmin'): lsyn.Wmin = float( syn_params['Wmin']) * lsyn.initW # par.x(2) * lsyn.initW #delay = float(syn_params['initW']) # par.x(3) + delayDistance #lcon = new NetCon(&v(0.5), lsyn, 0, delay, 1) if syn_params.get('lambda1'): lsyn.lambda1 = float(syn_params['lambda1']) # par.x(6) if syn_params.get('lambda2'): lsyn.lambda2 = float(syn_params['lambda2']) # par.x(7) if syn_params.get('threshold1'): lsyn.threshold1 = float(syn_params['threshold1']) # par.x(8) if syn_params.get('threshold2'): lsyn.threshold2 = float(syn_params['threshold2']) # par.x(9) if syn_params.get('tauD1'): lsyn.tauD1 = float(syn_params['tauD1']) # par.x(10) if syn_params.get('d1'): lsyn.d1 = float(syn_params['d1']) # par.x(11) if syn_params.get('tauD2'): lsyn.tauD2 = float(syn_params['tauD2']) # par.x(12) if syn_params.get('d2'): lsyn.d2 = float(syn_params['d2']) # par.x(13) if syn_params.get('tauF'): lsyn.tauF = float(syn_params['tauF']) # par.x(14) if syn_params.get('f'): lsyn.f = float(syn_params['f']) # par.x(15) if syn_params.get('bACH'): lsyn.bACH = float(syn_params['bACH']) # par.x(17) if syn_params.get('aDA'): lsyn.aDA = float(syn_params['aDA']) # par.x(18) if syn_params.get('bDA'): lsyn.bDA = float(syn_params['bDA']) # par.x(19) if syn_params.get('wACH'): lsyn.wACH = float(syn_params['wACH']) # par.x(20) return lsyn