pop0 = oc.add_population_in_rectangular_region(network, 'pop0', 'pyr_4_sym', 5, 0,offset,0, xDim,yDim,zDim) offset+=yDim ##### Projections oc.add_probabilistic_projection(network, "proj0", pop0, pop0, synAmpa1.id, 0.5) ##### Inputs oc.add_inputs_to_population(network, "Stim0", pop0, pg0.id, only_cells=[0]) oc.add_inputs_to_population(network, "Stim1", pop0, pg1.id, only_cells=[1]) oc.add_inputs_to_population(network, "Stim2",
'HH_471141261', scale_pop_size(40), xs,ys,zs, xDim,yDim,zDim) ''' popBBP = oc.add_single_cell_population(network, 'popBBP', 'cADpyr229_L23_PC_5ecbf9b163_0_0', z=200)''' ##### Projections oc.add_probabilistic_projection(network, "proj0", popExc, popExc, synAmpa1.id, 0.3) oc.add_probabilistic_projection(network, "proj1", popExc, popInh, synAmpa1.id, 0.5) oc.add_probabilistic_projection(network, "proj3", popInh, popExc, synGaba1.id, 0.7) oc.add_probabilistic_projection(network, "proj4", popInh, popInh, synGaba1.id, 0.5)
def generate(reference = "L23TraubDemo", num_rs =2, num_bask =2, scalex=1, scaley=1, scalez=1, connections=True, poisson_inputs=True, offset_curents=False, global_delay = 0, duration = 300, segments_to_plot_record = {'pop_rs':[0],'pop_bask':[0]}, format='xml'): nml_doc, network = oc.generate_network(reference) #oc.add_cell_and_channels(nml_doc, 'acnet2/pyr_4_sym.cell.nml','pyr_4_sym') oc.add_cell_and_channels(nml_doc, 'Thalamocortical/L23PyrRS.cell.nml','L23PyrRS') oc.add_cell_and_channels(nml_doc, 'Thalamocortical/SupBasket.cell.nml','SupBasket') xDim = 500*scalex yDim = 200*scaley zDim = 500*scalez pop_rs = oc.add_population_in_rectangular_region(network, 'pop_rs', 'L23PyrRS', num_rs, 0,0,0, xDim,yDim,zDim) pop_bask = oc.add_population_in_rectangular_region(network, 'pop_bask', 'SupBasket', num_bask, 0,0,0, xDim,yDim,zDim) syn0 = oc.add_exp_two_syn(nml_doc, id="syn0", gbase="1nS", erev="0mV", tau_rise="0.5ms", tau_decay="10ms") syn1 = oc.add_exp_two_syn(nml_doc, id="syn1", gbase="2nS", erev="0mV", tau_rise="1ms", tau_decay="15ms") if poisson_inputs: pfs = oc.add_poisson_firing_synapse(nml_doc, id="poissonFiringSyn", average_rate="150 Hz", synapse_id=syn0.id) oc.add_inputs_to_population(network, "Stim0", pop_rs, pfs.id, all_cells=True) if offset_curents: pg0 = oc.add_pulse_generator(nml_doc, id="pg0", delay="0ms", duration="%sms"%duration, amplitude="0.5nA") oc.add_inputs_to_population(network, "Stim0", pop_rs, pg0.id, all_cells=True) oc.add_inputs_to_population(network, "Stim0", pop_bask, pg0.id, all_cells=True) total_conns = 0 if connections: proj = oc.add_probabilistic_projection(network, "proj0", pop_rs, pop_bask, syn1.id, 0.3, weight=0.05, delay=global_delay) if proj: total_conns += len(proj.connection_wds) if num_rs != 2 or num_bask!=2: new_reference = '%s_%scells_%sconns'%(nml_doc.id,num_rs+num_bask,total_conns) network.id = new_reference nml_doc.id = new_reference nml_file_name = '%s.net.%s'%(network.id,'nml.h5' if format == 'hdf5' else 'nml') oc.save_network(nml_doc, nml_file_name, validate=(format=='xml'), format = format) if format=='xml': gen_plots_for_quantities = {} # Dict with displays vs lists of quantity paths gen_saves_for_quantities = {} # Dict with file names vs lists of quantity paths for pop in segments_to_plot_record.keys(): pop_nml = network.get_by_id(pop) if pop_nml is not None and pop_nml.size>0: for i in range(int(pop_nml.size)): gen_plots_for_quantities['Display_%s_%i_v'%(pop,i)] = [] gen_saves_for_quantities['Sim_%s.%s.%i.v.dat'%(nml_doc.id,pop,i)] = [] for seg in segments_to_plot_record[pop]: quantity = '%s/%i/%s/%i/v'%(pop,i,pop_nml.component,seg) gen_plots_for_quantities['Display_%s_%i_v'%(pop,i)].append(quantity) gen_saves_for_quantities['Sim_%s.%s.%i.v.dat'%(nml_doc.id,pop,i)].append(quantity) lems_file_name = oc.generate_lems_simulation(nml_doc, network, nml_file_name, duration = duration, dt = 0.025, gen_plots_for_all_v = False, gen_plots_for_quantities = gen_plots_for_quantities, gen_saves_for_all_v = False, gen_saves_for_quantities = gen_saves_for_quantities) else: lems_file_name = None return nml_doc, nml_file_name, lems_file_name
def generate(reference = "Balanced", num_bbp =1, scalePops = 1, scalex=1, scaley=1, scalez=1, connections=True, duration = 1000, global_delay = 0, format='xml'): num_exc = scale_pop_size(80,scalePops) num_inh = scale_pop_size(40,scalePops) nml_doc, network = oc.generate_network(reference) oc.add_cell_and_channels(nml_doc, 'AllenInstituteCellTypesDB_HH/HH_464198958.cell.nml','HH_464198958') oc.add_cell_and_channels(nml_doc, 'AllenInstituteCellTypesDB_HH/HH_471141261.cell.nml','HH_471141261') if num_bbp>0: oc.add_cell_and_channels(nml_doc, 'BlueBrainProject_NMC/cADpyr229_L23_PC_5ecbf9b163_0_0.cell.nml', 'cADpyr229_L23_PC_5ecbf9b163_0_0') xDim = 400*scalex yDim = 500*scaley zDim = 300*scalez xs = -200 ys = -150 zs = 100 ##### Synapses synAmpa1 = oc.add_exp_two_syn(nml_doc, id="synAmpa1", gbase="1nS", erev="0mV", tau_rise="0.5ms", tau_decay="5ms") synGaba1 = oc.add_exp_two_syn(nml_doc, id="synGaba1", gbase="2nS", erev="-80mV", tau_rise="1ms", tau_decay="20ms") ##### Input types pfs1 = oc.add_poisson_firing_synapse(nml_doc, id="psf1", average_rate="150 Hz", synapse_id=synAmpa1.id) ##### Populations popExc = oc.add_population_in_rectangular_region(network, 'popExc', 'HH_464198958', num_exc, xs,ys,zs, xDim,yDim,zDim) popInh = oc.add_population_in_rectangular_region(network, 'popInh', 'HH_471141261', num_inh, xs,ys,zs, xDim,yDim,zDim) if num_bbp == 1: popBBP = oc.add_single_cell_population(network, 'popBBP', 'cADpyr229_L23_PC_5ecbf9b163_0_0', z=200) elif num_bbp > 1: popBBP = oc.add_population_in_rectangular_region(network, 'popBBP', 'cADpyr229_L23_PC_5ecbf9b163_0_0', num_bbp, xs,ys,zs, xDim,yDim,zDim) ##### Projections total_conns = 0 if connections: proj = oc.add_probabilistic_projection(network, "proj0", popExc, popExc, synAmpa1.id, 0.3, delay = global_delay) total_conns += len(proj.connection_wds) proj = oc.add_probabilistic_projection(network, "proj1", popExc, popInh, synAmpa1.id, 0.5, delay = global_delay) total_conns += len(proj.connection_wds) proj = oc.add_probabilistic_projection(network, "proj3", popInh, popExc, synGaba1.id, 0.7, delay = global_delay) total_conns += len(proj.connection_wds) proj = oc.add_probabilistic_projection(network, "proj4", popInh, popInh, synGaba1.id, 0.5, delay = global_delay) total_conns += len(proj.connection_wds) if num_bbp>0: proj = oc.add_probabilistic_projection(network, "proj5", popExc, popBBP, synAmpa1.id, 0.5, delay = global_delay) total_conns += len(proj.connection_wds) ##### Inputs oc.add_inputs_to_population(network, "Stim0", popExc, pfs1.id, all_cells=True) ##### Save NeuroML and LEMS Simulation files if num_bbp != 1: new_reference = 'Balanced_%scells_%sconns'%(num_bbp+num_exc+num_inh,total_conns) network.id = new_reference nml_doc.id = new_reference nml_file_name = '%s.net.%s'%(network.id,'nml.h5' if format == 'hdf5' else 'nml') oc.save_network(nml_doc, nml_file_name, validate=(format=='xml'), format = format) if format=='xml': lems_file_name = oc.generate_lems_simulation(nml_doc, network, nml_file_name, duration = duration, dt = 0.025) else: lems_file_name = None return nml_doc, nml_file_name, lems_file_name
pfs = oc.add_poisson_firing_synapse(nml_doc, id="poissonFiringSyn", average_rate="150 Hz", synapse_id=syn0.id) oc.add_inputs_to_population(network, "Stim0", pop_pre, pfs.id, all_cells=True) oc.add_probabilistic_projection(network, "proj0", pop_pre, pop_post, syn1.id, 0.3, weight=0.05, delay=5) nml_file_name = '%s.net.nml'%network.id oc.save_network(nml_doc, nml_file_name, validate=True) oc.generate_lems_simulation(nml_doc, network, nml_file_name, duration = 300, dt = 0.025)