Releases: CompEphys-team/stdpc
StdpC version 6.1
- The clamp thread's priority can now be set by the user to trade off between maximum performance
and the threat of potentially freezing one's system. - The clamp cycle can now be started after a settling period, or by way of a digital trigger input.
- A new data source was added, Voltage Stepper, which produces square steps.
- Several tools were added, including a pseudo-random synaptic background noise conductance, a
"wire" facility to pass data from input to output channels, a facility to interpret data on an input
channel as a conductance, and an experimental software-defined voltage clamp using PID control. - The chemical synapse model can now produce stochastically sized post-synaptic potentials.
- Data saving has become much more flexible, both in terms of output format and in terms of the naming
of the output file(s). - The GUI has received numerous upgrades and improvements to usability.
- We have added MSVC build capability. The MSVC build runs faster, but does not support the Digidata
driver. For Digidata 1200/A users, a mingw build is still provided. - A number of bugs have been fixed.
Three executables are provided, with support for Digidata 1200, for National Instruments (NI) interfaces, and for both. Unless you require Digidata 1200 support, we strongly recommend using the NI-only executable (StdpC_NI.exe). Protocols can, of course, be transferred between these versions, should the need arise.
StdpC 2017 Update 1
This update adds a performance monitor, which should be a rather useful diagnostic tool.
In addition, a number of bugs were solved:
- Channel assignments of analog devices (NIDAQ, DigiData, SimulDAQ) are now loaded properly from protocols
- Scripts using old-style channel parameters ("inChnp[#].~~") are now read correctly, but deprecated to the first active device present. Old scripts can therefore be used, but should be updated to the new style ("NIDAQp[#].inChn[#].~~") eventually to prevent confusion.
- Continued overstepping of channel input/output limits no longer causes the application to freeze. Only one limit warning is logged.
- Graphs now display the output current actually fed to the DAQ, i.e. after limits were applied.
StdpC 2017
Overview of changes from StdpC 2012
- m/h/tau HH currents 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.
- "exp2/(1+exp1)":
- AEC is now associated with a specific analog input channel and is accessed through the input channel setup dialog. Consequently, there is no longer any restriction on the number of AEC channels. In addition, AEC computed currents can now be directed to a separate channel for data output purposes in addition to its usual function.
- It is now possible to use several data sources (DAQs, files, spike generators, models) simultaneously.
- There is now an option to simulate entire (single-compartment) Hodgkin-Huxley neurons, see section 7.4.6 (Hodgkin-Huxley model neurons) in the manual.
- It is now possible to define an arbitrary number of HH conductances 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 changed protocol conventions, channel assignments in protocols written for/by older StdpC versions may be wrongly converted. Please check for correctness and/or update your protocols.
- Synapses (but not gap junctions) now support conduction delays.
- Currents, synapses, channel assignments, neuron models and model instances can now all be turned on or off by script while the clamp cycle is running using the
active
parameter, provided that they were active when the clamp cycle was started. - The graph system has been overhauled, providing much better performance and handling than previously.
- A performance indicator has been added to the main window showing the actual clamp cycle frequency.
- Large parts of the code have been cleaned up and refactored/rewritten into a more modular design.
- The manual has been updated to reflect the new features and changed interface.
StdpC 2016 Release Candidate 2a
Overview of changes from StdpC 2016 RC2
- Stability has been markedly enhanced with various bugfixes and improvements particularly with regards to the graph interface.
- The Spike Generator is now a "data source" like HH models and DAQ devices.
- This allows you to define multiple entirely different SpikeGens, and lets you create multiple instances of a SpikeGen with subtle changes (with regards to the burst trigger source and threshold, to the voltage offset, and to channel saving)
- The third SpikeGen mode ("Voltage from file") has been dropped, use a SimulDAQ instead if you've been relying on this feature.
- The first and second SpikeGen modes (manually defined / file-defined bursts) both collapse onto the new SpikeGen functionality. The UI supports the full range of flexibility that files used to provide, and files can be saved and loaded independently of protocols to allow carrying burst definitions across protocols.
- Burst detection threshold timing is now a function of time, rather than number of clamp cycles.
- Synapses (a/b, chemical, and Destexhe types) now support a per-assignment delay to mimic conduction latency.
- Many UI elements have received a bit of a facelift.
StdpC 2016 Release Candidate 2
Overview of changes from StdpC 2016-RC1
- StdpC's graphing system has been overhauled, so that you can (hopefully) see what their neuron models are doing without crashing. Graphs have moved from the main window to their own dialog, which you can access through the Config menu. Data is only plotted if the graph window is open when you press Start. There is some performance overhead, but it shouldn't be too large, so it may be feasible to display stuff during a live experiment.
- The graph window now has a display of the mean effective graph data sampling frequency. This means that, if you set the graph sampling interval to 0, you get a readout of the clamp cycle frequency. Obviously, you only get this readout while you're plotting something, not during a graph-free live session. It may be a useful benchmarking tool anyway, to gauge the clamp cycle frequency e.g. when lots of models are running.
- This version supports multiple data acquisition devices (DAQs). Rather than selecting a single DAQ, you can set up and use several devices simultaneously in the "Data sources" box. Input and output channels are now configured from within the DAQ settings, and are obviously distinct entities that belong to a given DAQ.
- Active electrode compensation is now an integral part of any analog input channel. You can access the calibration dialog through the channel setup.
- Models are now treated as data sources much like acquisition devices, and live in the same box. The interface for models has been somewhat streamlined. Also, models and model instances are now indexed starting from 0, consistent with analog channels, currents and synapses.
StdpC 2016 Release Candidate 1
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.
- "exp2/(1+exp1)":
- 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 5X
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
).
StdpC 2012 (Sourceforge build)
This is the longstanding 2012 version that was hosted on SourceForge.