def run(argv): sim = ncs.Simulation() phasic_spiking_parameters = sim.addNeuron( "phasic_spiking", "izhikevich", { "a": 0.02, "b": 0.25, "c": -65.0, "d": 6.0, "u": -16.25, "v": -65.0, "threshold": 30, }) group_1 = sim.addNeuronGroup("group_1", 1, phasic_spiking_parameters, None) if not sim.init(argv): print "failed to initialize simulation." return sim.addStimulus("rectangular_current", { "amplitude": 0.5, "width": 1, "frequency": 1 }, group_1, 1, 0.01, 1.0) voltage_report = sim.addReport("group_1", "neuron", "neuron_voltage", 1.0, 0.0, 1.0) voltage_report.toAsciiFile("./phasic_spiking_izh.txt") sim.run(duration=1.0) return
def run(argv): sim = ncs.Simulation() bursting_parameters = sim.addNeuron("bursting","izhikevich", { "a": 0.02, "b": 0.3, "c": -50.0, "d": 4.0, "u": -12.0, "v": -65.0, "threshold": 30, }) group_1=sim.addNeuronGroup("group_1",1,bursting_parameters,None) group_2=sim.addNeuronGroup("group_2",1,bursting_parameters,None) flat_parameters = sim.addSynapse("flat_synapse", "flat", { "delay": 3, "current": 10.0 }) sim.addSynapseGroup("1_to_2", group_1, group_2, 1.0, flat_parameters) if not sim.init(argv): print "failed to initialize simulation." return sim.addStimulus("rectangular_current",{"amplitude":18,"width": 1, "frequency": 1},group_1,1,0.0,1.0) # current_report=sim.addReport("group_1","neuron","synaptic_current",1.0) # current_report.toStdOut() voltage_report=sim.addReport("group_2","neuron","synaptic_current",1.0,0.0,0.1).toStdOut() #voltage_report.toAsciiFile("./bursting_izh.txt") sim.run(duration = 0.1) return
def run(argv): sim = ncs.Simulation() bursting_parameters = sim.addNeuron( "bursting", "izhikevich", { "a": 0.02, "b": 0.3, "c": -50.0, "d": 4.0, "u": -12.0, "v": -65.0, "threshold": 30, }) group_1 = sim.addNeuronGroup("group_1", 2, bursting_parameters, None) if not sim.init(argv): print "failed to initialize simulation." return sim.addStimulus("rectangular_current", { "amplitude": 18, "width": 1, "frequency": 1 }, group_1, 1, 0.01, 1.0) voltage_report = sim.addReport("group_1", "neuron", "neuron_fire", 1.0, 0.0, 1.0).toStdOut() sim.run(duration=1.0) del sim del voltage_report return
def run(argv): sim = ncs.Simulation() regular_spiking_parameters = sim.addNeuron("regular_spiking","izhikevich", { "a": 0.02, "b": 0.2, "c": -65.0, "d": 8.0, "u": -12.0, "v": -60.0, "threshold": 30 }) group_1=sim.addNeuronGroup("group_1",1,regular_spiking_parameters,None) if not sim.init(argv): print "failed to initialize simulation." return input_parameters = { "amplitude":10 } sim.addStimulus("rectangular_current", input_parameters, group_1, 1, 0.01, 1.0) voltage_report=sim.addReport("group_1", "neuron", "neuron_voltage", 1, 0.0, 1.0) voltage_report.toAsciiFile("./regular_spiking_izh.txt") sim.run(duration=1.0) return
def run(argv): sim = ncs.Simulation() fast_spiking_parameters = sim.addNeuron("fast_spiking","izhikevich", { "a": 0.1, "b": 0.3, "c": -55.0, "d": 2.0, "u": -12.0, "v": -65.0, "threshold": 30, }) group_1=sim.addNeuronGroup("group_1",1,fast_spiking_parameters,None) if not sim.init(argv): print "failed to initialize simulation." return sim.addStimulus("rectangular_current",{"amplitude":10,"width": 1, "frequency": 1},group_1,1,0.01,1.0) voltage_report=sim.addReport("group_1","neuron","neuron_voltage",1.0,0.0,0.01) #Place report file in current directory voltage_report.toAsciiFile("./fast_spiking.txt") sim.run(duration=0.01) return
def run(argv): sim = ncs.Simulation() bursting_parameters = sim.addNeuron( "bursting", "izhikevich", { "a": 0.02, "b": 0.3, "c": -50.0, "d": 4.0, "u": -12.0, "v": -65.0, "threshold": 30, }) group_1 = sim.addNeuronGroup("group_1", 2, bursting_parameters, None) if not sim.init(argv): print "failed to initialize simulation." return sim.addStimulus( "sine_current", { "amplitude_scale": 10, "time_scale": 200.0 / math.pi, "phase": 0.0, "amplitude_shift": 10 }, group_1, 1, 0.01, 1.0) # current_report=sim.addReport("group_1","neuron","synaptic_current",1.0) # current_report.toStdOut() voltage_report = sim.addReport("group_1", "neuron", "input_current", 1.0, 0.0, 1.0).toStdOut() #voltage_report.toAsciiFile("./bursting_izh.txt") sim.run(duration=1.0) return
def run(argv): sim = ncs.Simulation() excitatory_parameters = sim.addNeuron("label_excitatory", "izhikevich", { "a": 0.2, "b": 0.2, "c": -65.0, "d": ncs.Uniform(7.0, 9.0), "u": ncs.Uniform(-15.0, -11.0), "v": ncs.Normal(-60.0, 5.0), "threshold": 30, } ) group_1 = sim.addNeuronGroup("group_1", 100, "label_excitatory", None) # last param is geometry group_2 = sim.addNeuronGroup("group_2", 100, excitatory_parameters) all_cells = sim.addNeuronAlias("all_cells", [group_1, "group_2"]) sim.addNeuronAlias("all", all_cells) sim.addNeuronAlias("all_2", "all_cells") flat_parameters = sim.addSynapse("flat_synapse", "flat", { "delay": 2, "current": ncs.Normal(18.0,2.0) }) all_to_all = sim.addSynapseGroup("all_to_all", all_cells, "all_2", 0.1, flat_parameters) all_to_all_2 = sim.addSynapseGroup("all_to_all_2", [group_1, group_2], "all_2", 0.1, flat_parameters) one_to_two = sim.addSynapseGroup("one_to_two", group_1, "group_2", 0.1, "flat_synapse") all_connections = sim.addSynapseAlias("all_connections", [all_to_all, one_to_two]) if not sim.init(argv): print "Failed to initialize simulation." return sim.addStimulus("rectangular_current", { "amplitude": 18.0 }, group_1, 0.1, 0.0, 1.0) sim.addStimulus("rectangular_current", { "amplitude": 18.0 }, "all", 0.1, 0.0, 0.5) sim.addStimulus("rectangular_current", { "amplitude": 18.0 }, "group_2", 0.1, 0.1, 1.1) voltage_report = sim.addReport("group_1", "neuron", "neuron_voltage", 1.0,0.0,0.01) voltage_report.toAsciiFile("/tmp/foo.txt") fire_report = sim.addReport(all_cells, "neuron", "neuron_fire", 1.0,0.0,0.01) fire_report.toStdOut() sim.run(duration=0.01) return
def Run(argv): sim = ncs.Simulation() anatomy_pcrain.add(sim) if not sim.init(argv): print "Failed to initialize simulation." return sim.step(50) return
def Run(argv): sim = ncs.Simulation() excitatory_parameters = sim.addNeuron( "label_excitatory", "izhikevich", { "a": 0.2, "b": 0.2, "c": -65.0, "d": ncs.Uniform(7.0, 9.0), "u": ncs.Uniform(-15.0, -11.0), "v": ncs.Normal(-60.0, 5.0), "threshold": 30, }) group_1 = sim.addNeuronGroup("group_1", 1, "label_excitatory", None) # last param is geometry group_2 = sim.addNeuronGroup("group_2", 1, excitatory_parameters) flat_parameters = sim.addNeuron( "synapse", "ncs", { "utilization": ncs.Normal(0.5, 0.05), "redistribution": 1.0, "last_prefire_time": 0.0, "last_postfire_time": 0.0, "tau_facilitation": 0.001, "tau_depression": 0.001, "tau_ltp": 0.015, "tau_ltd": 0.03, "A_ltp_minimum": 0.003, "A_ltd_minimum": 0.003, "max_conductance": 0.004, "reversal_potential": 0.0, "tau_postsynaptic_conductance": 0.025, "psg_waveform_duration": 0.05, "delay": ncs.Uniform(1, 5), }) synapse = sim.addSynapseGroup("1_to_2", group_1, "group_2", 1, flat_parameters) if not sim.init(argv): print "Failed to initialize simulation." return sim.addStimulus("rectangular_current", {"amplitude": 18.0}, group_1, 1.0, 0.0, 1.0) #current_report = sim.addReport(group_2, "neuron", "synaptic_current", 1.0) current_report = sim.addReport(group_2, "neuron", "synaptic_current", 1.0, 0.0, 0.05) current_report.toStdOut() sim.run(duration=0.05) return
def run(argv): #ncs.simulation() is required sim = ncs.Simulation() #start writing model - biology information #addNeuron function #Parameters for addNeuron function: # 1. A neuron name (string) # 2. A neuron type (string) # izhikevich, ncs, or hh # 3. A map for parameter names to their values(Generators) # Generators can be exact, Normal, uniform # exact example : "a": 0.02 # uniform example: "a": ncs.Uniform(min, max) # normal example: "a": ncs.Normal(mean, standard deviation) # Example of addNeuron with regular_spiking izhikevich neuron regular_spiking_parameters = sim.addNeuron("regular_spiking","izhikevich", { "a": 0.02, "b": 0.2, "c": -65.0, "d": 8.0, "u": -12.0, "v": -60.0, "threshold": 30, }) #addSynapse function #Parameters for addSynapse function # 1. A synapse name (string) # 2. A synapse type (string) # ncs or flat # 3. A map for parameter names to their values (Generators) ncs_synapse_parameters = sim.addSynapse("flat_synapse","ncs",{ "utilization": ncs.Normal(0.5,0.05), "redistribution": 1.0, "last_prefire_time": 0.0, "last_postfire_time": 0.0, "tau_facilitation": 0.001, "tau_depression": 0.001, "tau_ltp": 0.015, "tau_ltd": 0.03, "A_ltp_minimum": 0.003, "A_ltd_minimum": 0.003, "max_conductance": 0.3, "reversal_potential":0.0, "tau_postsynaptic_conductance": 0.02, "psg_waveform_duration": 0.05, "delay": 1, }) #addNeuronGroup function #Parameters for addNeuronGroup function: # 1. A name of the group (string) # 2. Number of cells (integer) # 3. Neuron parameters # 4. Geometry generator (optional) group_1=sim.addNeuronGroup("group_1",1,regular_spiking_parameters,None) group_2=sim.addNeuronGroup("group_2",1,regular_spiking_parameters,None) #addSynapseGroup function #Parameters for addSynapseGroup function: # 1. A name of the connection # 2. Presynaptic NeuronAlias or NeuronGroup # 3. Postsynaptic NeuronAlias or NeuronGroup # 4. Probability of connection # 5. Parameters for synapse connection1=sim.addSynapseGroup("connection1","group_1","group_2",1,"flat_synapse"); #initialize simulation if not sim.init(argv): print "failed to initialize simulation." return #addStimulus function #parameters for addStimulus function: # 1. A stimulus type (string) # rectangular_current, rectangular_voltage, linear_current, linear_voltage, # sine_current, or sine_voltage # 2. A map from parameter names (strings) to their values (Generators) # Parameter names are amplitude, starting_amplitude, ending_amplitude, # delay, current, amplitude_scale, time_scale, phase, amplitude_shift, # etc. based on the stimulus type # 3. A set of target neuron groups # 4. probability of a neuron receiving input # 5. start time for stimulus (seconds) # For example, if you wanted to start stimulus at 1 ms, write 0.01 # 6. end time for stimulus (seconds) sim.addStimulus("rectangular_current",{"amplitude":10},group_1,1,0.01,1.0) #addReport function #Parameters for addReport function: # 1. A set of neuron group or a set of synapse group to report on # 2. A target type: "neuron" or "synapses" # 3. type of report: synaptic_current, neuron_voltage, neuron_fire, # input current, etc. # 4. Probability (the percentage of elements to report on) voltage_report_1=sim.addReport([group_1,group_2],"neuron","neuron_voltage",1.0,0.0,1.0) #An example of a report to file voltage_report_1.toAsciiFile("reg_voltage_report.txt"); #duration (in seconds) - each time step is 1 ms sim.run(duration=1.0) return
def run(argv): sim = ncs.Simulation() excitatory_parameters = sim.addNeuron("label_excitatory", "izhikevich", { "a": 0.2, "b": 0.2, "c": -65.0, "d": ncs.Uniform(7.0, 9.0), "u": ncs.Uniform(-15.0, -11.0), "v": ncs.Normal(-60.0, 5.0), "threshold": 30 } ) group_1 = sim.addNeuronGroup("group_1", 100, "label_excitatory", None) # last param is geometry group_2 = sim.addNeuronGroup("group_2", 100, excitatory_parameters) all_cells = sim.addNeuronAlias("all_cells", [group_1, "group_2"]) sim.addNeuronAlias("all", all_cells) sim.addNeuronAlias("all_2", "all_cells") flat_parameters = sim.addSynapse("synapse", "ncs", { "utilization": ncs.Normal(0.5, 0.05), "redistribution": 1.0, "last_prefire_time": 0.0, "last_postfire_time": 0.0, "tau_facilitation": 0.001, "tau_depression": 0.001, "tau_ltp": 0.015, "tau_ltd": 0.03, "A_ltp_minimum": 0.003, "A_ltd_minimum": 0.003, "max_conductance": 0.004, "reversal_potential": 0.0, "tau_postsynaptic_conductance": 0.025, "psg_waveform_duration": 0.05, "delay": ncs.Uniform(1,5) }) all_to_all = sim.addSynapseGroup("all_to_all", all_cells, "all_2", 0.1, flat_parameters) all_to_all_2 = sim.addSynapseGroup("all_to_all_2", [group_1, group_2], "all_2", 0.1, flat_parameters) one_to_two = sim.addSynapseGroup("one_to_two", group_1, "group_2", 0.1, "synapse") all_connections = sim.addSynapseAlias("all_connections", [all_to_all, one_to_two]) if not sim.init(argv): print "Failed to initialize simulation." return sim.addStimulus("rectangular_current", { "amplitude": 18.0 }, group_1, 0.1, 0.0, 0.1) sim.addStimulus("rectangular_current", { "amplitude": 18.0 }, "all", 0.1, 0.0, 0.2) sim.addStimulus("rectangular_current", { "amplitude": 18.0 }, "group_2", 0.1, 0.1, 0.3) voltage_report = sim.addReport("group_1", "neuron", "neuron_voltage", 1.0, 0.0, 0.01) voltage_report.toAsciiFile("foo.txt") fire_report = sim.addReport(all_cells, "neuron", "neuron_fire", 1.0, 0.0, 0.01) fire_report.toStdOut() current_report = sim.addReport(all_cells, "neuron", "synaptic_current", 1.0, 0.0, 0.01) current_report.toStdOut() sim.run(duration=0.5) del sim return
def run(argv): calcium_channel = { #type of channel "type": "calcium_dependent", #starting value, Unit: none "m_initial": 0.0, #Unit: mV "reversal_potential": -80, "m_power": 2, #conductance = unitary_g * strength, unit = pS/(cm^2) "conductance": 6.0 * 0.025, "forward_scale": 0.000125, "forward_exponent": 2, "backwards_rate": 2.5, "tau_scale": 0.01, } ncs_cell = { "threshold": -47.0, "resting_potential": -65.0, #initial calcium concentration (required. default 0) "calcium": 5.0, #increment calcium concentration by this value each time the cell spikes #required. default 0 "calcium_spike_increment": 100.0, "tau_calcium": 0.08, #decay time for voltage, Unit:seconds "tau_membrane": 0.020, #resistance, Unit ohms "r_membrane": 180, "leak_reversal_potential": 0.0, "leak_conductance": 0.0, #spike template "spike_shape": [-38, 30, -38, -43], #channels "channels": [ calcium_channel, ], "capacitance": 1.0, } sim = ncs.Simulation() neuron_parameters = sim.addNeuron("ncs_neuron", "ncs", ncs_cell) group_1 = sim.addNeuronGroup("group_1", 1, "ncs_neuron", None) #initialize if not sim.init(argv): print "Failed to initialize simulation" return #stimulus #sim.addInput("linear_current",{"starting_amplitude":1.98, "ending_amplitude":1.98,"width":0.3,"time_increment":0.01,"dyn_range": ncs.Uniform(25,60)},group_1,1,0.02,1.0) sim.addStimulus("linear_current", { "starting_amplitude": 1.98, "ending_amplitude": 1.98 }, group_1, 1, 0.02, 1.0) voltage_report = sim.addReport("group_1", "neuron", "neuron_voltage", 1.0, 0.0, 1.0) voltage_report.toAsciiFile("./reg_voltage.txt") current_report = sim.addReport("group_1", "neuron", "input_current", 1.0, 0.0, 1.0) current_report.toAsciiFile("./reg_current.txt") sim.run(duration=1.0) del sim return
def Run(argv): ak = 10.0 / (100.0 * (math.exp(1.0) - 1)) bk = 0.125 tk = 1.0 / (ak + bk) xk0 = ak * tk potassium_channel = { "type": "voltage_gated", "conductance": 36.0, "reversal_potential": -72.0, "particles": [ { #n "x_initial": xk0, "alpha": { "a": 0.5, "b": 0.01, "c": 1.0, "d": 50.0, "f": -10.0, "h": -1.0, }, "beta": { "a": 0.125, "b": 0.0, "c": 0.0, "d": 60.0, "f": 80.0, "h": 1.0, }, "power": 4.0, } ], } am = 25.0 / (10.0 * (math.exp(2.5) - 1.0)) bm = 4.0 tm = 1.0 / (am + bm) xm0 = am * tm ah = 0.07 bh = 1.0 / (math.exp(3.0) + 1) th = 1.0 / (ah + bh) xh0 = ah * th sodium_activation = { "x_initial": xm0, "alpha": { "a": 3.5, "b": 0.1, "c": 1.0, "d": 35.0, "f": -10.0, "h": -1.0, }, "beta": { "a": 4.0, "b": 0.0, "c": 0.0, "d": 60.0, "f": 18.0, "h": 1.0, }, "power": 3.0, } sodium_deactivation = { "x_initial": xh0, "alpha": { "a": 0.07, "b": 0.0, "c": 0.0, "d": 60.0, "f": 20.0, "h": 1.0, }, "beta": { "a": 1.0, "b": 0.0, "c": 1.0, "d": 30.0, "f": -10.0, "h": 1.0, }, "power": 1.0, } sodium_channel = { "type": "voltage_gated", "conductance": 120.0, "reversal_potential": 55.0, "particles": [sodium_activation, sodium_deactivation], } leak_channel = { "type": "voltage_gated", "conductance": 0.3, "reversal_potential": 10.6 - 60.0, "particles": [ { #m "x_initial": 1.0, "alpha": { "a": 1.0, "b": 0.0, "c": 1.0, "d": 0.0, "f": 0.0, "h": 0.0, }, "beta": { "a": 1.0, "b": 0.0, "c": 1.0, "d": 0.0, "f": 0.0, "h": 0.0, }, "power": 1.0, } ], } hh_cell = { "threshold": -50.0, "resting_potential": -60.0, "capacitance": 1.0, "channels": [potassium_channel, sodium_channel, leak_channel] } sim = ncs.Simulation() neuron_parameters = sim.addNeuron("hh_neuron", "hh", hh_cell) group_1 = sim.addNeuronGroup("group_1", 1, "hh_neuron", None) # last param is geometry all_cells = sim.addNeuronAlias("all_cells", [group_1]) sim.addNeuronAlias("all", all_cells) sim.addNeuronAlias("all_2", "all_cells") if not sim.init(argv): print "Failed to initialize simulation." return sim.addStimulus("rectangular_current", {"amplitude": 10.0}, group_1, 1.0, 0.0, 1.0) voltage_report = sim.addReport("group_1", "neuron", "neuron_voltage", 1.0, 0.0, 0.5) #voltage_report.toAsciiFile("/tmp/voltages.txt") voltage_report.toStdOut() sim.run(duration=0.500) return
def run(argv): voltage_channel = { "type": "voltage_gated_ion", "m_initial": 0.0, "reversal_potential": -80, "v_half": -44, "deactivation_slope": 40, "activation_slope": 20, "equilibrium_slope": 8.8, "r": 1.0 / 0.303, "conductance": 5 * 0.00015 } calcium_channel = { "type": "calcium_dependent", "m_initial": 0.0, "reversal_potential": -80, "m_power": 2, "conductance": 6.0 * 0.0009, "forward_scale": 0.000125, "forward_exponent": 2, "backwards_rate": 2.5, "tau_scale": 0.01, } ncs_cell = { "threshold": -50.0, "resting_potential": -60.0, "calcium": 5.0, "calcium_spike_increment": 100.0, "tau_calcium": 0.07, "leak_reversal_potential": 0.0, "leak_conductance":0.0 , "tau_membrane": 0.02, "r_membrane": 200.0, "spike_shape": [ -38, 30, -43, -60, -60 ], "capacitance": 1.0, "channels": [ voltage_channel, calcium_channel, ] } sim = ncs.Simulation() neuron_parameters = sim.addNeuron("ncs_neuron", "ncs", ncs_cell ) group_1 = sim.addNeuronGroup("group_1", 100, "ncs_neuron", None) # last param is geometry all_cells = sim.addNeuronAlias("all_cells", [group_1]) sim.addNeuronAlias("all", all_cells) sim.addNeuronAlias("all_2", "all_cells") if not sim.init(argv): print "Failed to initialize simulation." return sim.addStimulus("rectangular_current", { "amplitude": 0.1 }, group_1, 1.0, 0.0, 1.0) #voltage_report = sim.addReport("group_1", "neuron", "neuron_voltage", 1.0) #voltage_report.toAsciiFile("/tmp/voltages.txt") #voltage_report.toStdOut() sim.run(duration = 1.0) del sim return