Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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
Exemplo n.º 12
0
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
Exemplo n.º 13
0
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
Exemplo n.º 14
0
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