22#ifndef CM_COMPARTMENTCURRENTS_H
23#define CM_COMPARTMENTCURRENTS_H
63 explicit Na(
double v_comp,
const Dictionary& channel_params );
69 void append_recordables( std::map< std::string, double* >* recordables,
const long compartment_idx );
76 std::pair< double, double >
f_numstep(
const double v_comp );
105 explicit K(
double v_comp,
const Dictionary& channel_params );
111 void append_recordables( std::map< std::string, double* >* recordables,
const long compartment_idx );
117 std::pair< double, double >
f_numstep(
const double v_comp );
147 explicit AMPA(
const long syn_index );
180 std::pair< double, double >
f_numstep(
const double v_comp,
const long lag );
210 explicit GABA(
const long syn_index );
243 std::pair< double, double >
f_numstep(
const double v_comp,
const long lag );
273 explicit NMDA(
const long syn_index );
306 std::pair< double, double >
f_numstep(
const double v_comp,
const long lag );
309 inline std::pair< double, double >
312 double exp__v_comp = std::exp( -.1 * v_comp );
313 double denom = 1. + 0.3 * exp__v_comp;
315 return std::make_pair( 1. / denom, 0.03 * exp__v_comp / std::pow( denom, 2 ) );
355 explicit AMPA_NMDA(
const long syn_index );
389 std::pair< double, double >
f_numstep(
const double v_comp,
const long lag );
392 inline std::pair< double, double >
395 double exp__v_comp = std::exp( -.1 * v_comp );
396 double denom = 1. + 0.3 * exp__v_comp;
398 return std::make_pair( 1. / denom, 0.03 * exp__v_comp / std::pow( denom, 2 ) );
430 syn_it->pre_run_hook();
435 syn_it->pre_run_hook();
440 syn_it->pre_run_hook();
445 syn_it->pre_run_hook();
452 if ( type ==
"AMPA" )
457 else if ( type ==
"GABA" )
462 else if ( type ==
"NMDA" )
467 else if ( type ==
"AMPA_NMDA" )
482 if ( type ==
"AMPA" )
484 AMPA syn( syn_idx, receptor_params );
487 else if ( type ==
"GABA" )
489 GABA syn( syn_idx, receptor_params );
492 else if ( type ==
"NMDA" )
494 NMDA syn( syn_idx, receptor_params );
497 else if ( type ==
"AMPA_NMDA" )
499 AMPA_NMDA syn( syn_idx, receptor_params );
520 info.push_back( dd );
529 info.push_back( dd );
538 info.push_back( dd );
547 info.push_back( dd );
557 syn_it->set_buffer_ptr( syn_buffers );
562 syn_it->set_buffer_ptr( syn_buffers );
567 syn_it->set_buffer_ptr( syn_buffers );
572 syn_it->set_buffer_ptr( syn_buffers );
576 std::map< std::string, double* >
580 std::map< std::string, double* > recordables;
590 syn_it->append_recordables( &recordables );
595 syn_it->append_recordables( &recordables );
600 syn_it->append_recordables( &recordables );
605 syn_it->append_recordables( &recordables );
611 std::pair< double, double >
614 std::pair< double, double > gi( 0., 0. );
633 gi = syn_it->f_numstep( v_comp, lag );
641 gi = syn_it->f_numstep( v_comp, lag );
649 gi = syn_it->f_numstep( v_comp, lag );
657 gi = syn_it->f_numstep( v_comp, lag );
663 return std::make_pair( g_val, i_val );
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
void all_entries_accessed(const std::string &where, const std::string &what, const bool thread_local_dict=false) const
Confirm that all entries in dictionary have been accessed.
Definition dictionary.h:701
void init_access_flags(const bool thread_local_dict=false) const
Initialize access flags to prepare for later error checking with all_entries_accessed.
Definition dictionary.h:695
Definition cm_compartmentcurrents.h:321
double g_norm_AMPA_
assigned variables
Definition cm_compartmentcurrents.h:341
double tau_d_AMPA_
Definition cm_compartmentcurrents.h:335
double tau_r_NMDA_
Definition cm_compartmentcurrents.h:336
double g_norm_NMDA_
Definition cm_compartmentcurrents.h:342
double g_d_AN_AMPA_
Definition cm_compartmentcurrents.h:328
void pre_run_hook()
initialization of the state variables
Definition cm_compartmentcurrents.h:367
void set_buffer_ptr(std::vector< RingBuffer > &syn_buffers)
associate the receptor with a spike buffer
Definition cm_compartmentcurrents.h:383
std::pair< double, double > NMDA_sigmoid__and__d_NMDAsigmoid_dv(double v_comp)
synapse specific function (NMDA nonlinearity)
Definition cm_compartmentcurrents.h:393
double prop_d_NMDA_
Definition cm_compartmentcurrents.h:348
double g_r_AN_NMDA_
Definition cm_compartmentcurrents.h:329
long syn_idx
global synapse index
Definition cm_compartmentcurrents.h:324
double g_r_AN_AMPA_
state variables
Definition cm_compartmentcurrents.h:327
RingBuffer * b_spikes_
spike buffer
Definition cm_compartmentcurrents.h:351
double tau_r_AMPA_
Definition cm_compartmentcurrents.h:334
~AMPA_NMDA()
Definition cm_compartmentcurrents.h:357
double g_d_AN_NMDA_
Definition cm_compartmentcurrents.h:330
long get_syn_idx()
Definition cm_compartmentcurrents.h:360
double prop_r_NMDA_
Definition cm_compartmentcurrents.h:347
void append_recordables(std::map< std::string, double * > *recordables)
make the state variables of this receptor accessible
Definition cm_compartmentcurrents.cpp:657
double prop_d_AMPA_
Definition cm_compartmentcurrents.h:346
double prop_r_AMPA_
propagators
Definition cm_compartmentcurrents.h:345
double tau_d_NMDA_
Definition cm_compartmentcurrents.h:337
double e_rev_
user defined parameters
Definition cm_compartmentcurrents.h:333
std::pair< double, double > f_numstep(const double v_comp, const long lag)
advance receptor by one numerical integration step
Definition cm_compartmentcurrents.cpp:666
double NMDA_ratio_
Definition cm_compartmentcurrents.h:338
Definition cm_compartmentcurrents.h:122
long get_syn_idx()
Definition cm_compartmentcurrents.h:152
void pre_run_hook()
initialization of the state variables
Definition cm_compartmentcurrents.h:159
~AMPA()
Definition cm_compartmentcurrents.h:149
void append_recordables(std::map< std::string, double * > *recordables)
make the state variables of this receptor accessible
Definition cm_compartmentcurrents.cpp:357
void set_buffer_ptr(std::vector< RingBuffer > &syn_buffers)
associate the receptor with a spike buffer
Definition cm_compartmentcurrents.h:174
double tau_r_
Definition cm_compartmentcurrents.h:133
double e_rev_
user defined parameters
Definition cm_compartmentcurrents.h:132
double prop_r_
propagators
Definition cm_compartmentcurrents.h:140
double tau_d_
Definition cm_compartmentcurrents.h:134
double prop_d_
Definition cm_compartmentcurrents.h:141
RingBuffer * b_spikes_
spike buffer
Definition cm_compartmentcurrents.h:144
double g_r_AMPA_
state variables
Definition cm_compartmentcurrents.h:128
std::pair< double, double > f_numstep(const double v_comp, const long lag)
advance receptor by one numerical integration step
Definition cm_compartmentcurrents.cpp:364
long syn_idx
global synapse index
Definition cm_compartmentcurrents.h:125
double g_norm_
assigned variables
Definition cm_compartmentcurrents.h:137
double g_d_AMPA_
Definition cm_compartmentcurrents.h:129
Definition cm_compartmentcurrents.h:404
std::vector< AMPA_NMDA > AMPA_NMDA_syns_
Definition cm_compartmentcurrents.h:413
std::vector< NMDA > NMDA_syns_
Definition cm_compartmentcurrents.h:412
K K_chan_
Definition cm_compartmentcurrents.h:408
void pre_run_hook()
Definition cm_compartmentcurrents.h:421
void set_syn_buffers(std::vector< RingBuffer > &syn_buffers)
Definition cm_compartmentcurrents.h:552
void add_synapse(const std::string &type, const long syn_idx)
Definition cm_compartmentcurrents.h:450
void add_synapse(const std::string &type, const long syn_idx, const Dictionary &receptor_params)
Definition cm_compartmentcurrents.h:478
~CompartmentCurrents()
Definition cm_compartmentcurrents.h:418
Na Na_chan_
Definition cm_compartmentcurrents.h:407
std::vector< AMPA > AMPA_syns_
Definition cm_compartmentcurrents.h:410
std::pair< double, double > f_numstep(const double v_comp, const long lag)
Definition cm_compartmentcurrents.h:612
void add_receptor_info(std::vector< Dictionary > &info, const long compartment_index)
Definition cm_compartmentcurrents.h:511
std::vector< GABA > GABA_syns_
Definition cm_compartmentcurrents.h:411
std::map< std::string, double * > get_recordables(const long compartment_idx)
Definition cm_compartmentcurrents.h:577
Definition cm_compartmentcurrents.h:185
RingBuffer * b_spikes_
spike buffer
Definition cm_compartmentcurrents.h:207
void set_buffer_ptr(std::vector< RingBuffer > &syn_buffers)
associate the receptor with a spike buffer
Definition cm_compartmentcurrents.h:237
double prop_r_
propagators
Definition cm_compartmentcurrents.h:203
long syn_idx
global synapse index
Definition cm_compartmentcurrents.h:188
double g_d_GABA_
Definition cm_compartmentcurrents.h:192
void pre_run_hook()
initialization of the state variables
Definition cm_compartmentcurrents.h:222
double tau_d_
Definition cm_compartmentcurrents.h:197
double e_rev_
user defined parameters
Definition cm_compartmentcurrents.h:195
void append_recordables(std::map< std::string, double * > *recordables)
make the state variables of this receptor accessible
Definition cm_compartmentcurrents.cpp:444
~GABA()
Definition cm_compartmentcurrents.h:212
std::pair< double, double > f_numstep(const double v_comp, const long lag)
advance receptor by one numerical integration step
Definition cm_compartmentcurrents.cpp:451
double tau_r_
Definition cm_compartmentcurrents.h:196
double g_norm_
assigned variables
Definition cm_compartmentcurrents.h:200
double g_r_GABA_
state variables
Definition cm_compartmentcurrents.h:191
double prop_d_
Definition cm_compartmentcurrents.h:204
long get_syn_idx()
Definition cm_compartmentcurrents.h:215
Channel taken from the following .mod file: https://senselab.med.yale.edu/ModelDB/ShowModel?...
Definition cm_compartmentcurrents.h:91
double gbar_K_
user-defined parameters potassium channel (maximal conductance, reversal potential)
Definition cm_compartmentcurrents.h:97
void append_recordables(std::map< std::string, double * > *recordables, const long compartment_idx)
make the state variables of this channel accessible
Definition cm_compartmentcurrents.cpp:233
double q10_
temperature factor for reaction rates
Definition cm_compartmentcurrents.h:101
double e_K_
Definition cm_compartmentcurrents.h:98
~K()
Definition cm_compartmentcurrents.h:106
std::pair< double, double > f_numstep(const double v_comp)
advance channel by one numerical integration step
Definition cm_compartmentcurrents.cpp:275
std::pair< double, double > compute_statevar_n(double v_comp)
compute state variable time scale and asymptotic values
Definition cm_compartmentcurrents.cpp:239
void pre_run_hook()
Definition cm_compartmentcurrents.h:109
double n_K_
state variables potassium channel
Definition cm_compartmentcurrents.h:94
void init_statevars(double v_init)
Definition cm_compartmentcurrents.cpp:225
Definition cm_compartmentcurrents.h:248
double tau_d_
Definition cm_compartmentcurrents.h:260
double g_d_NMDA_
Definition cm_compartmentcurrents.h:255
double g_r_NMDA_
state variables
Definition cm_compartmentcurrents.h:254
void pre_run_hook()
initialization of the state variables
Definition cm_compartmentcurrents.h:285
double tau_r_
Definition cm_compartmentcurrents.h:259
double g_norm_
assigned variables
Definition cm_compartmentcurrents.h:263
std::pair< double, double > NMDA_sigmoid__and__d_NMDAsigmoid_dv(double v_comp)
synapse specific function (NMDA nonlinearity)
Definition cm_compartmentcurrents.h:310
RingBuffer * b_spikes_
spike buffer
Definition cm_compartmentcurrents.h:270
double e_rev_
user defined parameters
Definition cm_compartmentcurrents.h:258
~NMDA()
Definition cm_compartmentcurrents.h:275
long syn_idx
global synapse index
Definition cm_compartmentcurrents.h:251
void set_buffer_ptr(std::vector< RingBuffer > &syn_buffers)
associate the receptor with a spike buffer
Definition cm_compartmentcurrents.h:300
std::pair< double, double > f_numstep(const double v_comp, const long lag)
advance receptor by one numerical integration step
Definition cm_compartmentcurrents.cpp:538
double prop_r_
propagators
Definition cm_compartmentcurrents.h:266
void append_recordables(std::map< std::string, double * > *recordables)
make the state variables of this receptor accessible
Definition cm_compartmentcurrents.cpp:531
long get_syn_idx()
Definition cm_compartmentcurrents.h:278
double prop_d_
Definition cm_compartmentcurrents.h:267
Channel taken from the following .mod file: https://senselab.med.yale.edu/ModelDB/ShowModel?...
Definition cm_compartmentcurrents.h:48
double gbar_Na_
user-defined parameters sodium channel (maximal conductance, reversal potential)
Definition cm_compartmentcurrents.h:55
double e_Na_
Definition cm_compartmentcurrents.h:56
std::pair< double, double > f_numstep(const double v_comp)
advance channel by one numerical integration step
Definition cm_compartmentcurrents.cpp:152
double q10_
temperature factor for reaction rates
Definition cm_compartmentcurrents.h:59
std::pair< double, double > compute_statevar_m(double v_comp)
compute state variable time scale and asymptotic values
Definition cm_compartmentcurrents.cpp:80
void init_statevars(double v_init)
Definition cm_compartmentcurrents.cpp:62
void append_recordables(std::map< std::string, double * > *recordables, const long compartment_idx)
make the state variables of this channel accessible
Definition cm_compartmentcurrents.cpp:73
~Na()
Definition cm_compartmentcurrents.h:64
std::pair< double, double > compute_statevar_h(double v_comp)
Definition cm_compartmentcurrents.cpp:115
void pre_run_hook()
Definition cm_compartmentcurrents.h:67
double m_Na_
state variables sodium channel
Definition cm_compartmentcurrents.h:51
double h_Na_
Definition cm_compartmentcurrents.h:52
Buffer Layout.
Definition ring_buffer.h:83
void clear()
Initialize the buffer with noughts.
Definition ring_buffer.cpp:44
static Time get_resolution()
Definition nest_time.h:325
double get_ms() const
Definition nest_time.h:490
const std::string receptor_type("receptor_type")
const std::string comp_idx("comp_idx")
const std::string receptor_idx("receptor_idx")
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33