Skip to content

StdpC 2016 Release Candidate 1

Pre-release
Pre-release
Compare
Choose a tag to compare
@kernfel kernfel released this 08 Sep 16:11
· 361 commits to development since this release

Overview of changes from StdpC 2012

  • m/h/tau HH received two new tau formulations:
    • "exp2/(1+exp1)": taum := taum0 + taumAmpl * exp((V-Vtaum)/staum) * minf
    • "Linear": taum = taum0 + taumAmpl * V, where the units of taumAmpl are interpreted as ms/mV in the interface, and s/mV in script/protocol values.
  • AEC-compensated voltage can now be directed to an analog output channel for analysis and monitoring. This setting is available from the electrode setup dialog.
  • It is now possible to define an arbitrary number of HH currents and synapses.
  • Currents and synapses can now be assigned to more than one set of channels. Each assignment draws on the common parameter set, but is functionally independent from other assignments. As a consequence of this update, the channel assignments in protocols and scripts written for/by older StdpC versions may be wrongly converted. Please check for correctness and/or update your scripts and protocols. See section "Channel assignments" below for details on changes in the script/protocol variables available to you.
  • There is now an option to simulate entire (single-compartment Hodgkin-Huxley) neurons, see below.
  • Currents, synapses, assignments, neuron models and model instances can now all be turned on or off by script using their active parameter.

Simulated neurons

Setup

Simulations are set up in the Config menu under the "Simulated neurons" heading. You can define model prototypes in the main dialog, specifying capacitance and leak current properties. Prototypes must be accompanied by instances, which are set up by clicking the corresponding "Instances..." button. Each instance is assigned a voltage channel, which reflects the virtual neuron's membrane potential, and a current channel, which reflects the total current flowing across the simulated cell membrane.
To make simulated neurons useful, you will want to define a number of Hodgkin-Huxley currents through the usual current interface, and assign these to your simulated neurons, see below.

Selecting simulated neurons as input/output channels

In most channel dropdowns, simulated neurons appear as both input and output channels. Selecting instances is straightforward, the appropriate channel (in or out) is automatically deduced.
When selecting prototypes (e.g. "HH 1:all"), the corresponding current/synapse applies to each active instance in turn. For example, if you define a prototype HH 1 with three active instances, and assign a synapse to HH 1:all for its presynaptic input and analog channels on postsynaptic input/output, three synapses will be simulated: one for each of the active simulated neurons.
Where two channel settings usually apply to the same cell (i.e. HH current V in and I out, or the pair of presynaptic or postsynaptic channels for synapses), selecting the prototype entry for both settings results in only one assignment per instance. In the above example, if you assign an analog channel to a synapse's presynaptic channel, and HH 1:all to both the postsynaptic voltage and the postsynaptic current channel, you will again end up with three simulated synapses.

Assigning HH currents to simulated neurons

As the above explanation hopefully makes clear, assigning HH currents to simulated neurons is simply a matter of selecting the neuron model as both the input (V in) and output (V out) channel. Currents are simulated separately, their output current summed and integrated to yield the simulated membrane potential.

Scripts and protocols

Simulated neuron parameters (formatted here like in a protocol file) are the following:

HHNeuronp[0].active 1
HHNeuronp[0].C 3.5e-009
HHNeuronp[0].gLeak 2e-008
HHNeuronp[0].ELeak -0.02
HHNeuronp[0].inst[0].active 1
HHNeuronp[0].inst[0].inChn.spkDetect 0
HHNeuronp[0].inst[0].inChn.spkDetectThresh 0.0
HHNeuronp[0].inst[0].inChn.bias 0
HHNeuronp[0].inst[0].inChn.chnlSaving 0
HHNeuronp[0].inst[0].outChn.bias 1.6e-009
HHNeuronp[0].inst[0].outChn.chnlSaving 0

These should all be self-explanatory. Units are unscaled SI as usual; Farad for HHNeuronp[#].C, Siemens for HHNeuron[#].gLeak, etc.

Channel assignments

Each current/synapse parameter set can now be used on several channels simultaneously. In the current/synapse dialogs, each row of the assignments table represents an independent assignment, which can be independently de/activated.
In scripts and protocols, assignments are represented as <someparam>[#].assign[#].<channel> (e.g. mhHHp[0].assign[2].VChannel) as opposed to the previous <someparam>[#].<channel>. The latter notation, being deprecated, is translated automatically to <someparam>[#].assign[0].<channel>. Activation/deactivation of assignments is stored under <someparam>[#].assign[#].active.

Channel indices in scripts and protocols

Channel indexing has changed slightly:

  • Analog channels are now indexed by their number on the DAQ, rather than as an ordinal. (The only exception is channels used in Graphp; here, input channels are offset by 10000, and output channels by 20000.)
  • Spike Generator is index 1000.
  • No channel is index -1.
  • Simulated HH neuron prototypes are indices 11###00000 (e.g. 1101200000 for model number 12).
  • Simulated HH neuron instances are indices 1###XXXXX (that's three # for digits for the model number, and 5 X for digits for the instance number. We're prepared for large numbers!). Note that model numbering starts at 1, while instance numbering starts at 0.
- NOTE: This form of indexing has been deprecated in favour of a more semantic hierarchical indexing in RC2.

Building from source

To build StdpC from source, you will need Qt 5. We recommend using the MinGW version of Qt and building from within QtCreator, but you may find it more convenient to run qmake.exe <path\to\stdpc>\StdpC.pro -r -spec win32-g++ and mingw32-make from a shell instead. Building with the msvc toolchain is not actively supported.
To build with National Instruments support, add "nidaqmx" to the CONFIG environment variable (e.g. qmake.exe [...] CONFIG+=nidaqmx).