NeuronC News
## RECENT NEWS

### Many improvements have been made since the NeuronC simulator was
first described in J. Neuroscience Methods in 1992.

###
Highlights

The **retsim** retinal simulator script generates a model
of a ganglion cell and its presynaptic circuit. Both interpreted and
compiled versions are provided.

Completely **compiled version of NeuronC** is now available.
Construction mode runs ~2-3 fold faster, and all the power of C++,
and widely used math and matrix libraries is available.

**Save** and **restore** a simulation's state. This allows you to
equilibrate a model, then save it for a later restore operation.
This saves time when running repetitive models.

**Calcium** T- and L-type channels, Ca diffusion, dynamic
buffering, membrane transporters, and realistic Ca currents from
GHK equations.

**GHK current equation** can be used utilized for any channel type.

The simulator runs several **channel types** including Markov
sequential-state versions of Hodgkin-Huxley Na, Nav1.1, Nav1.6, K, KA,
Kca and Ih channels. AMPA, NMDA, cGMP, and GABA ligand-gated Markov
channels. Channel types contain individual **data structures** for
unitary conductance, rate functions, temperature dependence of
conductance and rates, relative permeabilities to major ions,
and sensitivities to receptor ligands.

Synaptic and voltage-gated channel functions can implement
**Markov** channel descriptions. Noise kinetics derived from Markov
description. Synaptic, channel, and photoreceptor noise can originate in
**independent noise generators** to maintain the same noise
waveshape when you change the neural circuit. Synapses can be
controlled **calcium concentration**, allowing a presynaptic terminal's
release to be defined by any calcium channel type.

Photoreceptors have **adaptation** through feedback from
calcium. The photoreceptor **spectral sensitivity functions** have
second-order interpolation from sensitivity tables and turtle
cone functions (default=primate). Photoreceptor kinetics can be
varied, and their state can be stored and recalled to save on
equilibration time. Stimuli and optical blur can be generated at
any scale (default=1 um) to allow very fine resolution.

The **stimulus generator** can create spot, bar, grating, gabor,
or concentric stimuli. Transparency and masking allow
combinations of stationary objects and motion. Stimuli can be in
any wavelength and with any blur or scatter function.
Point-spread functions for the human eye at 2 and 5.8 mm pupils
are included.

The simulator generates **realistic images** of neural
circuits using the "povray" ray tracer, and **movies** of the spread of
voltage or calcium in neural circuits, and can display them
at a variable rate for careful study.

####
Dec, 2016 additions:

Several new random number sequence generators have been added,
a) Mersenne Twister, b) Tiny MT, c) Taus113. Each of the random
sequence generators has its advantage. They can all be started at
different points in their sequences with a seed, which can be set
constant or can change automatically with each job. The original Taus
sequence (from GSL) is the fastest, with a sequence length of
2^88 (10^26), Taus113 is almost as fast with a sequence length of
2^113 (10^34), the Mersenne Twister has a very long sequence
(2^19937) and is almost as fast as Taus113, and TinyMT is a
little slower, but can generate many different sequences.

A model of CICR has been added, which is important for some
synapses because it can produce extra gain. Several new channel
types have been added (NMDA, GABA, CYCG). A new method for
fitting models to data has been added. Called "modelfit", it
allows multi-stage Levenberg-Marquardt fitting (Stincic et al.,
2016).

####
Jan, 2014 additions:

Previously only Ca channels used the GHK current equation. Now any channel
type, both voltage-gated and ligand-gated, can utilize the nonlinear GHK
equation, based on ionic gradients set from the overall defaults, or gradients
specifically defined for the channel type, or gradients defined for the
specific channel.

####
Mar, 2013 additions:

Cooperative calcium control of synaptic release added,
allowing Ca flux to control release through a power function.

####
June, 2009 additions:

2D Levenberg-Marquardt least-squares fitting further
developed, allowing compiled version to quickly fit a
user-defined function to a set of data points. Constraints on the
values of the points can be set. An example
difference-of-Gaussians fitting procedure is included.

####
Feb, 2008 additions:

Levenberg-Marquardt least-squares fitting added, allowing
either interpreted or compiled version to quickly fit a
user-defined function to a set of data points. Constraints
on the values of the points can be set.

####
July, 2007 additions:

Retsim extended by M. Schachter with C++ classes to provide
flexible interface for defining channel properties.

####
Oct, 2006 additions:

Completely compiled version of NeuronC, runs exactly the
same as interpreted version, with slightly different syntax.
Construction mode runs ~2-3 fold faster, and all the power of C++,
and widely used math and matrix libraries is available.
"Retsim" retinal simulator generates a model of ganglion cell and its
presynaptic circuit. Both interpreted and compiled versions are
provided.

####
Feb, 2006 additions:

simulator state save, restore

####
August, 2005 additions:

synaptic release can be controlled by calcium
input and output streams defined for C++ standard
library, allowing simulator to be run without command line.
Precursor to multi-platform graphics.

####
April, 2005 additions:

Nav1.8, Markov channel type added.

Vid can create movies with variable interval.

####
Jan, 2005 additions:

Line editor added to allow interactive editing.

####
Oct, 2004 additions:

Nav1.1, Nav1.5 and Nav1.6 Markov channel types added.

####
May, 2003 additions:

Sine-wave, gabor, concentric sine-wave stimuli added.
Masking and transparency added to stimuli.

####

####
Nov, 2002 additions:

Arrays can be passed (by reference) into procedures and returned
from functions. Many operators work with arrays of numbers and
strings. Arrays can be initialized in several ways.
Pre-processing of scripts with CPP to allow macros to modify the
basic simulator script language.
Scatter and blur functions for stimuli improved. Several
point-spread functions added for the cat and human eye, including
human for 2 mm and best-refracted 5.8 mm pupil.

####
Jan, 2001 additions:

Synaptic transfer function can include dynamic
auto-regulation by the "readily releasible pool".
Multiple traces can be assigned to each separate plot. Each
plot can have its size assigned. Plots can be labeled.
Multiple presynaptic and postsynaptic mechanisms can be assigned to each
synapse.
Any function may be directly plotted.
Stochastic search simulated annealing curve fitter to find
the best-fitting model to a template function.

####
June, 2000 additions:

All channels are defined at 22 deg C to allow standard
application of temperature coefficients.
Function that returns the minimum distance between two neural elements.
Tapered cables.

####
December, 1998 additions:

Dynamic calcium buffering.
Default unitary conductance for each channel type.
Temperature dependence of unitary conductance, Ca pump, Ca
exchanger, Ca buffering.
Markov channel types for postsynaptic mechanism.
Multiple neurotransmitter types, affinity for postsynaptic
receptors.
Permeabilities of channels to major ions.
Use of GHK current equation to define Ca currents.
Use of GHK voltage equation to define reversal potential for
Na, K, and Ca channels.
Membrane voltage offset generated optionally by external
Ca concentration (surface charge effects).
Johnson noise with independent random noise generator for
each compartment.

####
October, 1998 additions:

Membrane channel definition code improved to simplify adding
new channel types.
Na type 2 channel from Vandenberg and Bezanilla, 1991.
AMPA, NMDA, cGMP, and GABA Markov channels.
Integrate-and-fire Markov channel.
Number of shells in Ca diffusion model can be varied.
Weighted neurotransmitter action for multiple ligands.

####
July, 1998 additions:

Set Q10 for Na channels = 2 (instead of 3 for K chans).
Corrected ion current in Ca-Na exchanger.
Modified KA kinetics to be more like Fohlmeister & Miller (1997)
Tapered cables.
Function to return 3D distance between 2 neural elements.

####
April, 1998 additions:

Sequential-state versions of Hodgkin-Huxley Na and K channels,
KA, Kca, Ih channels.
Sequential-state channels can produce Markov state noise
with noise kinetics set by rate functions.
Synaptic vesicle fluctuation noise is set by Poisson function with optional refractory period.
Synaptic vesicle noise can be set by Gamma function for more regularity.
Synaptic and Hodgkin-Huxley channels can produce 2-state
Markov noise with Lorenzian rolloff frequency.
Synaptic temporal filters can be low-pass or high-pass with arbitrary
order and time constants.
Postsynaptic binding of neurotransmitter can be cooperative
(Hill coeff can be > 1)
Postsynaptic second-messenger cascade can include sign inversion and threshold nonlinearity.
Photoreceptor sensitivity functions include turtle cone spectral sensitivities.
Photoreceptor spectral sensitivity functions include second-order interpolation.
Simulation language contains array operators +, -, *, /, print

####
July, 1997 additions:

Voltage-gated gap junctions with optional rectification.
Photoreceptor impulse response duration can be set faster or slower.
State of photoreceptors can be saved and restored for fast equilibration.
Drag'n drop NeuronC files and commands with 'xfm' and 'tkdesk'
Stim file can be compressed with gzip.
Simulation language includes local dynamically allocated arrays.
Simulator includes DOS version.
Simulator can be run as subroutine from standard C program
with access to simulator variables and arrays.

####
Jan, 1995 additions:

Calcium channels, compartments, and diffusion.
Ca-sensitive K channels.
Independent noise generators for individual photoreceptors and synapses.
Stimuli and optical blur can be set to any scale for finer resolution.
3D surfaces rendered by ray-tracing with "povray".
Windowed trimming of neural elements.