A demonstration of the responses of different standard neuron models to current injection¶
"""A demonstration of the responses of different standard neuron models to current injection.Usage: python cell_type_demonstration.py [-h] [--plot-figure] [--debug] simulatorpositional arguments: simulator neuron, nest, brian or another backend simulatoroptional arguments: -h, --help show this help message and exit --plot-figure Plot the simulation results to a file. --debug Print debugging information"""frompyNN.utilityimportget_simulator,init_logging,normalized_filename# === Configure the simulator ================================================sim,options=get_simulator(("--plot-figure","Plot the simulation results to a file.",{"action":"store_true"}),("--debug","Print debugging information"))ifoptions.debug:init_logging(None,debug=True)sim.setup(timestep=0.01,min_delay=1.0)# === Build and instrument the network =======================================cuba_exp=sim.Population(1,sim.IF_curr_exp(i_offset=1.0),label="IF_curr_exp")hh=sim.Population(1,sim.HH_cond_exp(i_offset=0.2),label="HH_cond_exp")adexp=sim.Population(1,sim.EIF_cond_exp_isfa_ista(i_offset=1.0),label="EIF_cond_exp_isfa_ista")adapt=sim.Population(1,sim.IF_cond_exp_gsfa_grr(i_offset=2.0),label="IF_cond_exp_gsfa_grr")izh=sim.Population(1,sim.Izhikevich(i_offset=0.01),label="Izhikevich")all_neurons=cuba_exp+hh+adexp+adapt+izhall_neurons.record('v')adexp.record('w')izh.record('u')# === Run the simulation =====================================================sim.run(100.0)# === Save the results, optionally plot a figure =============================filename=normalized_filename("Results","cell_type_demonstration","pkl",options.simulator)all_neurons.write_data(filename,annotations={'script_name':__file__})ifoptions.plot_figure:frompyNN.utility.plottingimportFigure,Panelfigure_filename=filename.replace("pkl","png")Figure(Panel(cuba_exp.get_data().segments[0].filter(name='v')[0],ylabel="Membrane potential (mV)",data_labels=[cuba_exp.label],yticks=True,ylim=(-66,-48)),Panel(hh.get_data().segments[0].filter(name='v')[0],ylabel="Membrane potential (mV)",data_labels=[hh.label],yticks=True,ylim=(-100,60)),Panel(adexp.get_data().segments[0].filter(name='v')[0],ylabel="Membrane potential (mV)",data_labels=[adexp.label],yticks=True,ylim=(-75,-40)),Panel(adexp.get_data().segments[0].filter(name='w')[0],ylabel="w (nA)",data_labels=[adexp.label],yticks=True,ylim=(0,0.4)),Panel(adapt.get_data().segments[0].filter(name='v')[0],ylabel="Membrane potential (mV)",data_labels=[adapt.label],yticks=True,ylim=(-75,-45)),Panel(izh.get_data().segments[0].filter(name='v')[0],ylabel="Membrane potential (mV)",data_labels=[izh.label],yticks=True,ylim=(-80,40)),Panel(izh.get_data().segments[0].filter(name='u')[0],xticks=True,xlabel="Time (ms)",ylabel="u (mV/ms)",data_labels=[izh.label],yticks=True,ylim=(-14,0)),title="Responses of standard neuron models to current injection",annotations="Simulated with %s"%options.simulator.upper()).save(figure_filename)print(figure_filename)# === Clean up and quit ========================================================sim.end()