51 #ifndef _CARLSIM_DATASTRUCTURES_H_ 52 #define _CARLSIM_DATASTRUCTURES_H_ 101 "USER",
"DEVELOPER",
"SHOWTIME",
"SILENT",
"CUSTOM",
"Unknown mode" 121 "CPU mode",
"GPU mode",
"Hybrid mode" 140 "Forward-Euler",
"4-th order Runge-Kutta",
"Unknown integration method" 155 "CPU (x86/x64 Multi Core Processor)",
156 "GPU (NVIDIA Many CUDA Core Processor)",
174 #ifdef LN_I_CALC_TYPES 200 #ifdef LN_I_CALC_TYPES 221 "Dopamine-modulated STDP",
222 "Serotonin-modulated STDP",
223 "Acetylcholine-modulated STDP",
224 "Norepinphrine-modulated STDP",
225 #ifdef LN_I_CALC_TYPES 226 "Acetylcholine-influenced-Dopamine-modulated STDP",
227 "Acetylcholine-Norephinephrine encoded uncertainty STDP",
228 "Serotonin-Dopamin encoded cost/reward STDP",
229 "Multivariate-modulated STDP",
230 "PKA/PLC-modulated STDP",
244 #ifdef LN_I_CALC_TYPES 279 "DA/5HT/ACh-mod.(CK09)",
280 "ACh/NE-mod.(ANCK12)",
307 "timing-based curve",
326 "SpikeCount Mode",
"SpikeTime Mode" 351 "Unknown neuromodulator" 368 "10 ms interval",
"100 ms interval",
"1000 ms interval" 390 "Configuration state",
"Setup state",
"Run state" 415 return strm <<
"delay=[" << d.
min <<
"," << d.
max <<
"]";
457 return strm <<
"wt=[" << w.
min <<
"," << w.
init <<
"," << w.
max <<
"]";
490 RadiusRF(
double rad) : radX(rad), radY(rad), radZ(rad) {}
491 RadiusRF(
double rad_x,
double rad_y,
double rad_z) : radX(rad_x), radY(rad_y), radZ(rad_z) {}
494 return strm <<
"RadiusRF=[" << r.
radX <<
"," << r.
radY <<
"," << r.
radZ <<
"]";
521 return strm <<
"RangeRmem=[" << rMem.
minRmem <<
"," << rMem.
maxRmem <<
"]";
635 Grid3D() : numX(-1), numY(-1), numZ(-1), N(-1),
636 distX(-1.0f), distY(-1.0f), distZ(-1.0f),
637 offsetX(-1.0f), offsetY(-1.0f), offsetZ(-1.0f) {
640 Grid3D(
int _x) : numX(_x), numY(1), numZ(1), N(_x),
641 distX(1.0f), distY(1.0f), distZ(1.0f),
642 offsetX(1.0f), offsetY(1.0f), offsetZ(1.0f) {
646 Grid3D(
int _x,
float _distX,
float _offsetX) : numX(_x), numY(1), numZ(1), N(_x),
647 distX(_distX), distY(1.0f), distZ(1.0f),
648 offsetX(_offsetX), offsetY(1.0f), offsetZ(1.0f) {
653 Grid3D(
int _x,
int _y) : numX(_x), numY(_y), numZ(1), N(_x * _y),
654 distX(1.0f), distY(1.0f), distZ(1.0f),
655 offsetX(1.0f), offsetY(1.0f), offsetZ(1.0f) {
660 Grid3D(
int _x,
float _distX,
float _offsetX,
int _y,
float _distY,
float _offsetY)
661 : numX(_x), numY(_y), numZ(1), N(_x * _y),
662 distX(_distX), distY(_distY), distZ(1.0f),
663 offsetX(_offsetX), offsetY(_offsetY), offsetZ(1.0f) {
669 Grid3D(
int _x,
int _y,
int _z) : numX(_x), numY(_y), numZ(_z), N(_x * _y * _z),
670 distX(1.0f), distY(1.0f), distZ(1.0f),
671 offsetX(1.0f), offsetY(1.0f), offsetZ(1.0f) {
676 Grid3D(
int _x,
float _distX,
float _offsetX,
int _y,
float _distY,
float _offsetY,
int _z,
float _distZ,
float _offsetZ)
677 : numX(_x), numY(_y), numZ(_z), N(_x * _y * _z),
678 distX(_distX), distY(_distY), distZ(_distZ),
679 offsetX(_offsetX), offsetY(_offsetY), offsetZ(_offsetZ) {
689 return strm <<
"Grid3D=[" << g.
numX <<
"," << g.
numY <<
"," << g.
numZ <<
"]";
716 ExpCurve(
float _alphaPlus,
float _tauPlus,
float _alphaMinus,
float _tauMinus) : alphaPlus(_alphaPlus), tauPlus(_tauPlus), alphaMinus(_alphaMinus), tauMinus(_tauMinus) {
759 TimingBasedCurve(
float _alphaPlus,
float _tauPlus,
float _alphaMinus,
float _tauMinus,
float _gamma) : alphaPlus(_alphaPlus), tauPlus(_tauPlus), alphaMinus(_alphaMinus), tauMinus(_tauMinus) , gamma(_gamma) {
795 PulseCurve(
float _betaLTP,
float _betaLTD,
float _lambda,
float _delta) : betaLTP(_betaLTP), betaLTD(_betaLTD), lambda(_lambda), delta(_delta) {
813 #ifdef LN_I_CALC_TYPES 845 float w_pka() {
return w_nm[i_pka]; }
846 float w_plc() {
return w_nm[i_plc]; }
STDPCurve stdpCurve
the type of STDP curve
PulseCurve(float _betaLTP, float _betaLTD, float _lambda, float _delta)
STDPCurve stdpCurve
the type of STDP curve
x86/x64 Multi Core Processor (LN20201016)
parameter cannot have smaller vaule than some vaule
float alphaPlus
the amplitude of the exponential curve at pre-post side
float TAU_MINUS_INV_EXC
the inverse of time constant minus, if the exponential or timing-based E-STDP curve is used ...
Developer mode, for developing and debugging code.
STDPType WithISTDPtype
the type of I-STDP (STANDARD or DA_MOD)
4 NM weighted (and normalized,boosted,damped), Niedermeier (2021)
SpikeMonMode
SpikeMonitor mode.
float base5HT
baseline concentration of Serotonin
A struct for retrieving STDP related information of a connection.
G protein-coupled receptors for 2 modulators and conductance, Nadim, Bucher (2014) ...
float releaseDP
release per spike for Dopaamine
float GAMMA
the turn over point if the timing-based E-STDP curve is used
Grid3D(int _x, float _distX, float _offsetX)
static const char * integrationMethod_string[]
serotonin-modulated STDP, nearest-neighbor
static const char * neuromodulator_string[]
static const char * stdpType_desc[]
parameters cannot be identical
float alphaMinus
the amplitude of the exponential curve at post-pre side
struct GroupNeuromodulatorInfo_s GroupNeuromodulatorInfo
A struct for retrieving neuromodulator information of a group.
static const char * updateInterval_string[]
struct ConnSTDPInfo_s ConnSTDPInfo
A struct for retrieving STDP related information of a connection.
model is run on GPU card(s)
Grid3D(int _x, int _y, int _z)
A struct to assign a timing-based E-STDP curve.
PkaPlcModulation(int nm_pka, float w_pka, int nm_plc, float w_plc)
friend std::ostream & operator<<(std::ostream &strm, const RangeDelay &d)
TimingBasedCurve(float _alphaPlus, float _tauPlus, float _alphaMinus, float _tauMinus, float _gamma)
static const char * ComputingBackend_string[]
LN20201016.
mode in which only spike count information is collected
UpdateInterval
Update frequency for weights.
float ALPHA_MINUS_INB
the amplitude of alpha minus, if the exponential I-STDP curve is used
NE alpha2 receptor (connection), Avery, Dutt, Krichmar (2013)
run state, where the model is stepped
bool WithISTDP
enable I-STDP flag
float DELTA
the range of inhibitory LTD if the pulse I-STDP curve is used
acetylcholin, norepinephrine modulated Krichmar (2013)
RangeRmem(double _minRmem, double _maxRmem)
static const char * simMode_string[]
friend std::ostream & operator<<(std::ostream &strm, const RangeRmem &rMem)
static const char * IcalcType_string[]
parameter cannot have larger vaule than some vaule
setup state, where the neural network is prepared for execution and monitors are set ...
acetylcholine-norephinephrine encoded uncertainty, Avery & Krichmar (2017)
RadiusRF(double rad_x, double rad_y, double rad_z)
float decayNE
decay rate for Noradrenaline
acetylcholine-modulated STDP, nearest-neighbor
const char * lingat_plc()
Grid3D(int _x, float _distX, float _offsetX, int _y, float _distY, float _offsetY)
float BETA_LTP
the amplitude of inhibitory LTP if the pulse I-STDP curve is used
float decayDP
decay rate for Dopaamine
bool active5HT
flag for Serotonin
standard STDP of Bi & Poo (2001), nearest-neighbor
bool WithESTDP
enable E-STDP flag
acetylcholin, norepinephrine modulated Avery, Nitz, Chiba, Krichmar (2012)
float alphaMinus
the amplitude of the exponential curve at post-pre side
RangeWeight(double _min, double _init, double _max)
float tauPlus
the time constant of the exponential curve at pre-post side
A struct to arrange neurons on a 3D grid (a primitive cubic Bravais lattice with cubic side length 1)...
float betaLTD
the amplitude of inhibitory LTD
float release5HT
release per spike for Serotonin
struct to assign a pulse I-STDP curve
protein kinase/phospholiphase controlled LTP/LPD adopted from Nadim & Bucher (2014) ...
float lambda
the range of inhibitory LTP
mode in which spike information is collected in AER format
float decay5HT
decay rate for Serotonin
static void assertTrue(bool statement, errorType errorIfAssertionFails, std::string errorFunc, std::string errorMsgPrefix="", std::string errorMsgSuffix="")
simple wrapper for assert statement
bool activeDP
flag for Dopaamine
dopamine-modulated STDP, nearest-neighbor
Neuromodulator
GroupMonitor flag.
Struct defines the minimum and maximum membrane resisatnces of the LIF neuron group.
configuration state, where the neural network is configured
float betaLTP
the amplitude of inhibitory LTP
float decayACh
decay rate for Acetylcholine
User mode, for experiment-oriented simulations.
RangeDelay(int _min, int _max)
float delta
the range of inhibitory LTD
static const char * carlsimState_string[]
DA D2 receptor (connection), Avery, Krichmar (2015)
acetylcholin influence to dopamine, Belkaid, Krichmar (2019)
static const char * stdpType_string[]
IcalcType
input current calculation
RangeWeight(double _min, double _max)
parameter must be smaller than
friend std::ostream & operator<<(std::ostream &strm, const RangeWeight &w)
STDPCurve WithISTDPcurve
the I-STDP curve
float tauPlus
the time constant of the exponential curve at pre-post side
integrationMethod_t
Integration methods.
Showtime mode, will only output warnings and errors.
a range struct for synaptic delays
float BETA_LTD
the amplitude of inhibitory LTD if the pulse I-STDP curve is used
const char * lingat_pka()
friend std::ostream & operator<<(std::ostream &strm, const Grid3D &g)
float baseACh
baseline concentration of Acetylcholine
STDPType WithESTDPtype
the type of E-STDP (STANDARD or DA_MOD)
float gamma
the turn-over point
float releaseNE
release per spike for Noradrenaline
float ALPHA_PLUS_INB
the amplitude of alpha plus, if the exponential I-STDP curve is used
A struct for retrieving neuromodulator information of a group.
A struct to assign exponential STDP curves.
multivariate modulatated STDP, (experimental)
acetylcholine-influenced dopamine-modulated STDP, Belkaid & Krichmar (2019)
NE alpha1 receptor with DA antagonist, Avery, Dutt, Krichmar (2013)
a range struct for synaptic weight magnitudes
ComputingBackend
computing backend
float tauMinus
the time constant of the exponential curve at post-pre side
float LAMBDA
the range of inhibitory LTP if the pulse I-STDP curve is used
Grid3D(int _x, float _distX, float _offsetX, int _y, float _distY, float _offsetY, int _z, float _distZ, float _offsetZ)
STDPCurve stdpCurve
the type of STDP curve
Custom mode, the user can set the location of all the file pointers.
used to initialize by default constructor
norepinephrine-modulated STDP, nearest-neighbor
friend std::ostream & operator<<(std::ostream &strm, const RadiusRF &r)
dopamine,serotonin,acetylcholine modulated Cox, Krichmar (2009)
the update interval will be 10 ms, which is 100Hz update frequency
float TAU_PLUS_INV_INB
the inverse of tau plus, if the exponential I-STDP curve is used
serotonin-dopamin cost/reward assessment, Asher, Craig, Zaldivar, Brewer, Krichmar (2013) ...
static const char * spikeMonMode_string[]
parameter must have negative value
acetylcholin, norepinephrine modulated Krichmar (2012)
D1,D2 dopamine receptors Avery, Krichmar (2012)
standard exponential curve
NVIDIA Many CUDA Core Processor (LN20201016)
CARLsimState
CARLsim states.
static const char * loggerMode_string[]
ExpCurve(float _alphaPlus, float _tauPlus, float _alphaMinus, float _tauMinus)
model is run on CPU Core(s), GPU card(s) or both
bool WithSTDP
enable STDP flag
float baseDP
baseline concentration of Dopamine
parameter must have positive value
float baseNE
baseline concentration of Noradrenaline
bool activeNE
flag for Noradrenaline
the update interval will be 1000 ms, which is 1Hz update frequency
DA D1 receptor (connection), Avery, Dutt, Krichmar (2013)
float releaseACh
release per spike for Acetylcholine
float TAU_PLUS_INV_EXC
the inverse of time constant plus, if the exponential or timing-based E-STDP curve is used ...
parameter cannot have negative value (opposite to "must be", but includes zero)
Silent mode, no output is generated.
STDPCurve WithESTDPcurve
the E-STDP curve
float tauMinus
the time constant of the exponential curve at post-pre side
bool activeACh
flag for Acetylcholine
float alphaPlus
the amplitude of the exponential curve at pre-post side
float ALPHA_MINUS_EXC
the amplitude of alpha minus, if the exponential or timing-based E-STDP curve is used ...
model is run on CPU core(s)
float TAU_MINUS_INV_INB
the inverse of tau minus, if the exponential I-STDP curve is used
the update interval will be 100 ms, which is 10Hz update frequency
static const char * stdpCurve_string[]
A struct to specify the receptive field (RF) radius in 3 dimensions.
float ALPHA_PLUS_EXC
the amplitude of alpha plus, if the exponential or timing-based E-STDP curve is used ...