Population Vector

A monkey moves a handle from the centre of a table to a light. Each cell in its motor cortex fires most for one direction of movement and less for others. No single cell says where the hand is going, but if every cell votes for its preferred direction, in proportion to how much its firing has changed, the sum of the votes points where the hand will go, before the hand moves.

Based on the experiments of Georgopoulos and colleagues (1982–1989). Cells, firing rates, and timing are simulated with values of the right order for monkey motor cortex.

Motor cortex

Workspace seen from above

Population vector

HOLD

Statistics

How the algorithm works

Every simulated millisecond, the program does four things:

  1. Drive. The task supplies a directional signal: a direction θ and a strength g between 0 and 1. Before the target appears g = 0; it rises during the reaction time, peaks just after the hand starts to move, and fades as the movement ends. In the delay task a weaker signal appears soon after the cue. On rotation trials the direction changes during the reaction time.
  2. Fire. Each cell fires at its average rate b₀ plus k · g · cos(θ − PD), where PD is its preferred direction. Spikes are random (Poisson): the rate sets only the probability of a spike in each millisecond.
  3. Smooth. The readout estimates each cell's current rate from its recent spikes, with an exponential window of time constant τ. With Average of 8 the estimate pools eight independent repetitions, as the original analyses pooled repeated trials.
  4. Vote and add. Each cell votes along its preferred direction with a weight equal to its change in rate, estimated rate − b₀. A cell firing below its average votes against its preferred direction. The votes are added, and the sum is the population vector.

The readout knows each cell's preferred direction, average rate, and depth of tuning, as the experimenters did after fitting each cell's tuning curve. It knows nothing else: not the target, not the hand, not the task.

The code that is running. The listings below are read from the live program, so they are exactly what the simulation executes.


      

      

      

    
Advanced parameters

Changes take effect from the next trial, except population size, which restarts the experiment.