Starting out with pyNEST

pyNEST is a python extension and interface for the NEST Neural Simulation Tool. I will be using it to create my models for the NEST simulator. My first task is to get familiar with pyNEST and its features.

So far with pyNest, I have been trying out the basics; creating a single neuron (as opposed to a population of neurons), a Poisson Generator (a stochastic function) to interact with the neuron and a voltmeter to record the voltage of the neuron.

It would appear that the Poisson Generators can have several different rates which have corresponding convergence values. To begin with, I created a Poisson Generator which had just one rate. I set the initial rate to 40000.0 and a convergence value of 1.0. I then ran the simulator for one second (1000 ms) with a heuristic output. This lead to a neuron which never fired, with its membrane potential hovering around the -60mV point. Neurons need to reach aprox -55mV to fire and discharge to the rest potential rate of -70mV.

I next modified the convergence value to 2.0. This had much more satisfactory results. The neuron fired and discharged with a frequency of 45/second (45Hz). The peaks had a very uniformed structure. Increasing the convergence rate further causes the neuron to fire more frequently. Increasing it to 3.0 causes a spike frequency of 93Hz, more than double then before. A rate of 4.0 gives a frequency of 128Hz which suggests that the difference in growth is logarithmic.

I also tried altering the initial rate for the Poisson Generator. I decreased the rate from 40000 to 30000 in steps of 1000. At each step the result was less spikes within the same timeframe until 31000 where the neuron ceased to spike, between 37000 and 31000 the curves became increasingly less uniformed.

Increasing the Poisson rate increases the number of spikes. Interestingly the ratio is exactly the same as when I altered the convergence rate. Multiplying the convergence by 5 (2.0*5 = 10.0) produces 252 spikes. Doing the same to the Poisson rate (40,000 * 5 = 200,000) gives the same result.

At this point I decided to add an additional rate to the Poisson Generator. On doing so, the effects were immediately clear; a secondary rate can be used to amplify or to counteract the first by assigning positive or negative values for its convergence. I used two identical rates, with identical convergence values, the firing frequency was greatly increased. Setting the second convergence rate as the negative of the first (2.0, -2.0) causes the neuron to not fire at all. Setting the convergence rate at a lower negative value reduced the firing rate, providing the second Poisson rate is set significantly lower than the first. While I can see these effects, I can not establish exactly why we would do this.

  1. What are the values being put into SetStatus() for the voltmeter and why are they required?
  2. What is the final argument given in ConvergentConnect()? Only positive numbers, seems to offset the initial state of the neuron
  3. Why would we use multiple rates in the Poisson Generator?
  4. Is there any documentation for pyNEST?