36#include <gsl/gsl_errno.h>
37#include <gsl/gsl_matrix.h>
38#include <gsl/gsl_odeiv.h>
60extern "C" int ht_neuron_dynamics(
double,
const double*,
double*,
void* );
180void register_ht_neuron(
const std::string& name );
182class ht_neuron :
public ArchivingNode
186 ht_neuron(
const ht_neuron& );
187 ~ht_neuron()
override;
195 using Node::handles_test_event;
197 size_t send_test_event( Node&,
size_t, synindex,
bool )
override;
199 void handle( SpikeEvent& e )
override;
200 void handle( CurrentEvent& e )
override;
201 void handle( DataLoggingRequest& )
override;
203 size_t handles_test_event( SpikeEvent&,
size_t )
override;
204 size_t handles_test_event( CurrentEvent&,
size_t )
override;
205 size_t handles_test_event( DataLoggingRequest&,
size_t )
override;
207 void get_status(
Dictionary& )
const override;
208 void set_status(
const Dictionary& )
override;
218 INF_SPIKE_RECEPTOR = 0,
226 void init_buffers_()
override;
227 void pre_run_hook()
override;
229 void update( Time
const&,
const long,
const long )
override;
231 double get_synapse_constant(
double,
double,
double );
238 friend int ht_neuron_dynamics(
double,
const double*,
double*,
void* );
345 double y_[ STATE_VEC_SIZE ];
357 State_(
const ht_neuron&,
const Parameters_& p );
358 State_(
const State_& s );
360 State_& operator=(
const State_& s );
365 void set(
const Dictionary&,
const ht_neuron&, Node* node );
370 friend class RecordablesMap< ht_neuron >;
371 friend class UniversalDataLogger< ht_neuron >;
381 Buffers_( ht_neuron& );
382 Buffers_(
const Buffers_&, ht_neuron& );
384 UniversalDataLogger< ht_neuron > logger_;
387 std::vector< RingBuffer > spike_inputs_;
388 RingBuffer currents_;
392 gsl_odeiv_control* c_;
393 gsl_odeiv_evolve* e_;
394 gsl_odeiv_system sys_;
400 double integration_step_;
420 std::vector< double > cond_steps_;
423 int PotassiumRefractoryCounts_;
431 template < State_::StateVecElems_ elem >
435 return S_.y_[ elem ];
458 double get_g_NMDA_()
const;
465 double m_NMDA_(
double V,
double m_eq,
double m_fast,
double m_slow )
const;
473 double m_eq_h_(
double V )
const;
481 double m_eq_T_(
double V )
const;
489 double h_eq_T_(
double V )
const;
497 double m_eq_NMDA_(
double V )
const;
502 double D_eq_KNa_(
double V )
const;
504 static RecordablesMap< ht_neuron > recordablesMap_;
514ht_neuron::send_test_event( Node& target,
size_t receptor_type,
synindex,
bool )
517 e.set_sender( *
this );
519 return target.handles_test_event( e, receptor_type );
524ht_neuron::handles_test_event( SpikeEvent&,
size_t receptor_type )
526 assert( B_.spike_inputs_.size() == 4 );
528 if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) )
530 throw UnknownReceptorType( receptor_type, get_name() );
540ht_neuron::handles_test_event( CurrentEvent&,
size_t receptor_type )
542 if ( receptor_type != 0 )
544 throw UnknownReceptorType( receptor_type, get_name() );
550ht_neuron::handles_test_event( DataLoggingRequest& dlr,
size_t receptor_type )
552 if ( receptor_type != 0 )
554 throw UnknownReceptorType( receptor_type, get_name() );
556 return B_.logger_.connect_logging_device( dlr, recordablesMap_ );
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
const std::string E_rev_GABA_B("E_rev_GABA_B")
const std::string AMPA("AMPA")
const std::string t_ref("t_ref")
const std::string tau_m("tau_m")
const std::string g_peak_NMDA("g_peak_NMDA")
const std::string E_rev_AMPA("E_rev_AMPA")
const std::string E_rev_GABA_A("E_rev_GABA_A")
const std::string E_rev_T("E_rev_T")
const std::string E_K("E_K")
const std::string g_NaL("g_NaL")
const std::string NMDA("NMDA")
const std::string tau_rise_GABA_A("tau_rise_GABA_A")
const std::string g_peak_KNa("g_peak_KNa")
const std::string g_peak_AMPA("g_peak_AMPA")
const std::string tau_rise_NMDA("tau_rise_NMDA")
const std::string E_rev_h("E_rev_h")
const std::string E_Na("E_Na")
const std::string tau_decay_GABA_B("tau_decay_GABA_B")
const std::string tau_theta("tau_theta")
const std::string tau_Mg_fast_NMDA("tau_Mg_fast_NMDA")
const std::string S_act_NMDA("S_act_NMDA")
const std::string E_rev_KNa("E_rev_KNa")
const std::string receptor_type("receptor_type")
const std::string E_rev_NaP("E_rev_NaP")
const std::string tau_decay_NMDA("tau_decay_NMDA")
const std::string E_rev_NMDA("E_rev_NMDA")
const std::string tau_rise_AMPA("tau_rise_AMPA")
const std::string instant_unblock_NMDA("instant_unblock_NMDA")
const std::string N_NaP("N_NaP")
const std::string target("target")
const std::string g_peak_h("g_peak_h")
const std::string g_peak_GABA_A("g_peak_GABA_A")
const std::string g_peak_GABA_B("g_peak_GABA_B")
const std::string tau_decay_AMPA("tau_decay_AMPA")
const std::string tau_Mg_slow_NMDA("tau_Mg_slow_NMDA")
const std::string tau_decay_GABA_A("tau_decay_GABA_A")
const std::string g_peak_T("g_peak_T")
const std::string GABA_B("GABA_B")
const std::string GABA_A("GABA_A")
const std::string voltage_clamp("voltage_clamp")
const std::string tau_rise_GABA_B("tau_rise_GABA_B")
const std::string g_peak_NaP("g_peak_NaP")
const std::string V_act_NMDA("V_act_NMDA")
const std::string theta_eq("theta_eq")
const std::string g_KL("g_KL")
const std::string N_T("N_T")
const std::string tau_spike("tau_spike")
const std::string tau_D_KNa("tau_D_KNa")
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
size_t synindex
For enumerations of synapse types.
Definition nest_types.h:115
const double e
Definition numerics.cpp:32