42 #ifndef _CARLSIM_DATASTRUCTURES_H_ 43 #define _CARLSIM_DATASTRUCTURES_H_ 92 "USER",
"DEVELOPER",
"SHOWTIME",
"SILENT",
"CUSTOM",
"Unknown mode" 114 "CPU mode",
"GPU mode",
"Unknown mode" 133 "Forward-Euler",
"4-th order Runge-Kutta",
"Unknown integration method" 151 "Dopamine-modulated STDP",
169 "timing-based curve",
188 "SpikeCount Mode",
"SpikeTime Mode" 209 "Dopamine",
"Serotonin",
"Acetylcholine",
"Noradrenaline",
"Unknown neuromodulator" 226 "10 ms interval",
"100 ms interval",
"1000 ms interval" 248 "Configuration state",
"Setup state",
"Run state" 273 return strm <<
"delay=[" << d.
min <<
"," << d.
max <<
"]";
315 return strm <<
"wt=[" << w.
min <<
"," << w.
init <<
"," << w.
max <<
"]";
347 RadiusRF(
double rad) : radX(rad), radY(rad), radZ(rad) {}
348 RadiusRF(
double rad_x,
double rad_y,
double rad_z) : radX(rad_x), radY(rad_y), radZ(rad_z) {}
351 return strm <<
"RadiusRF=[" << r.
radX <<
"," << r.
radY <<
"," << r.
radZ <<
"]";
445 Grid3D(
int w) : x(w), y(1), z(1), width(w), height(1), depth(1), columns(1), channels(1), N(w) {
448 Grid3D(
int w,
int h) : x(w), y(h), z(1), width(w), height(h), depth(1), columns(1), channels(1), N(w*h) {
452 Grid3D(
int w,
int h,
int d) : x(w), y(h), z(d), width(w), height(h), depth(d), columns(d), channels(d), N(w*h*d) {
459 return strm <<
"Grid3D=[" << g.
x <<
"," << g.
y <<
"," << g.
z <<
"]";
486 ExpCurve(
float _alphaPlus,
float _tauPlus,
float _alphaMinus,
float _tauMinus) : alphaPlus(_alphaPlus), tauPlus(_tauPlus), alphaMinus(_alphaMinus), tauMinus(_tauMinus) {
529 TimingBasedCurve(
float _alphaPlus,
float _tauPlus,
float _alphaMinus,
float _tauMinus,
float _gamma) : alphaPlus(_alphaPlus), tauPlus(_tauPlus), alphaMinus(_alphaMinus), tauMinus(_tauMinus) , gamma(_gamma) {
565 PulseCurve(
float _betaLTP,
float _betaLTD,
float _lambda,
float _delta) : betaLTP(_betaLTP), betaLTD(_betaLTD), lambda(_lambda), delta(_delta) {
A struct for retrieving neuromodulator information of a group.
bool WithSTDP
enable STDP flag
float TAU_PLUS_INV_INB
the inverse of tau plus, if the exponential I-STDP curve is used
PulseCurve(float _betaLTP, float _betaLTD, float _lambda, float _delta)
model is run on a single CPU core
the update interval will be 1000 ms, which is 1Hz update frequency
float baseNE
baseline concentration of Noradrenaline
parameter cannot have smaller vaule than some vaule
float alphaPlus
the amplitude of the exponential curve at pre-post side
stdpType_t WithESTDPtype
the type of E-STDP (STANDARD or DA_MOD)
dopamine-modulated STDP, nearest-neighbor
the update interval will be 100 ms, which is 10Hz update frequency
static const char * integrationMethod_string[]
static const char * neuromodulator_string[]
standard STDP of Bi & Poo (2001), nearest-neighbor
float alphaMinus
the amplitude of the exponential curve at post-pre side
spikeMonMode_t
SpikeMonitor mode.
Showtime mode, will only output warnings and errors.
static const char * updateInterval_string[]
A struct to assign a timing-based E-STDP curve.
friend std::ostream & operator<<(std::ostream &strm, const RangeDelay &d)
TimingBasedCurve(float _alphaPlus, float _tauPlus, float _alphaMinus, float _tauMinus, float _gamma)
float TAU_MINUS_INV_INB
the inverse of tau minus, if the exponential I-STDP curve is used
float TAU_MINUS_INV_EXC
the inverse of time constant minus, if the exponential or timing-based E-STDP curve is used ...
float GAMMA
the turn over point if the timing-based E-STDP curve is used
float ALPHA_MINUS_EXC
the amplitude of alpha minus, if the exponential or timing-based E-STDP curve is used ...
static const char * simMode_string[]
parameter cannot have larger vaule than some vaule
bool WithISTDP
enable I-STDP flag
stdpCurve_t stdpCurve
the type of STDP curve
float decayDP
decay rate for Dopaamine
float decayACh
decay rate for Acetylcholine
RadiusRF(double rad_x, double rad_y, double rad_z)
float base5HT
baseline concentration of Serotonin
float ALPHA_MINUS_INB
the amplitude of alpha minus, if the exponential I-STDP curve is used
float alphaMinus
the amplitude of the exponential curve at post-pre side
setup state, where the neural network is prepared for execution and monitors are set ...
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)...
model is run on a single GPU card
Grid3D(int w, int h, int d)
float betaLTD
the amplitude of inhibitory LTD
struct to assign a pulse I-STDP curve
float lambda
the range of inhibitory LTP
Developer mode, for developing and debugging code.
float betaLTP
the amplitude of inhibitory LTP
RangeDelay(int _min, int _max)
float delta
the range of inhibitory LTD
static const char * carlsimState_string[]
standard exponential curve
static const char * stdpType_string[]
RangeWeight(double _min, double _max)
parameter must be smaller than
bool WithESTDP
enable E-STDP flag
friend std::ostream & operator<<(std::ostream &strm, const RangeWeight &w)
float tauPlus
the time constant of the exponential curve at pre-post side
integrationMethod_t
Integration methods.
float BETA_LTD
the amplitude of inhibitory LTD if the pulse I-STDP curve is used
a range struct for synaptic delays
friend std::ostream & operator<<(std::ostream &strm, const Grid3D &g)
stdpType_t WithISTDPtype
the type of I-STDP (STANDARD or DA_MOD)
float gamma
the turn-over point
Custom mode, the user can set the location of all the file pointers.
configuration state, where the neural network is configured
float BETA_LTP
the amplitude of inhibitory LTP if the pulse I-STDP curve is used
stdpCurve_t stdpCurve
the type of STDP curve
float TAU_PLUS_INV_EXC
the inverse of time constant plus, if the exponential or timing-based E-STDP curve is used ...
A struct to assign exponential STDP curves.
mode in which spike information is collected in AER format
run state, where the model is stepped
neuromodulator_t
GroupMonitor flag.
struct GroupNeuromodulatorInfo GroupNeuromodulatorInfo_t
A struct for retrieving neuromodulator information of a group.
a range struct for synaptic weight magnitudes
updateInterval_t
Update frequency for weights.
float tauMinus
the time constant of the exponential curve at post-pre side
struct GroupSTDPInfo GroupSTDPInfo_t
A struct for retrieving STDP related information of a group.
float decayNE
decay rate for Noradrenaline
A struct for retrieving STDP related information of a group.
stdpCurve_t stdpCurve
the type of STDP curve
float baseACh
baseline concentration of Acetylcholine
friend std::ostream & operator<<(std::ostream &strm, const RadiusRF &r)
the update interval will be 10 ms, which is 100Hz update frequency
float decay5HT
decay rate for Serotonin
Silent mode, no output is generated.
static const char * spikeMonMode_string[]
parameter must have negative value
static const char * loggerMode_string[]
ExpCurve(float _alphaPlus, float _tauPlus, float _alphaMinus, float _tauMinus)
parameter must have positive value
stdpCurve_t WithESTDPcurve
the E-STDP curve
User mode, for experiment-oriented simulations.
static void assertTrue(bool statement, errorType errorIfAssertionFails, const std::string &errorFunc, const std::string &errorMsgPrefix="", const std::string &errorMsgSuffix="")
Checks whether assertion statement is true, else throws error.
carlsimState_t
CARLsim states.
float ALPHA_PLUS_EXC
the amplitude of alpha plus, if the exponential or timing-based E-STDP curve is used ...
float baseDP
baseline concentration of Dopamine
float tauMinus
the time constant of the exponential curve at post-pre side
mode in which only spike count information is collected
float alphaPlus
the amplitude of the exponential curve at pre-post side
float ALPHA_PLUS_INB
the amplitude of alpha plus, if the exponential I-STDP curve is used
float DELTA
the range of inhibitory LTD if the pulse I-STDP curve is used
loggerMode_t
Logger modes.
stdpCurve_t WithISTDPcurve
the I-STDP curve
static const char * stdpCurve_string[]
A struct to specify the receptive field (RF) radius in 3 dimensions.
float LAMBDA
the range of inhibitory LTP if the pulse I-STDP curve is used