From 6149e4e29138a2accfebcf0b233087e7e618304f Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 13 Sep 2023 10:59:13 +0200 Subject: [PATCH 001/184] add nest names --- nestkernel/nest_names.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index cc2aa1d516..f071f1d8f7 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -121,6 +121,7 @@ extern const Name clear; extern const Name comp_idx; extern const Name comparator; extern const Name compartments; +extern const Name conc_Mg2; extern const Name configbit_0; extern const Name configbit_1; extern const Name connection_count; @@ -202,11 +203,13 @@ extern const Name filenames; extern const Name frequency; extern const Name frozen; +extern const Name GABA; extern const Name GABA_A; extern const Name GABA_B; extern const Name g; extern const Name g_AMPA; extern const Name g_C; +extern const Name g_GABA; extern const Name g_GABA_A; extern const Name g_GABA_B; extern const Name g_K; @@ -324,6 +327,7 @@ extern const Name music_channel; extern const Name N; extern const Name NMDA; +extern const Name NMDA_sum; extern const Name N_channels; extern const Name N_NaP; extern const Name N_T; @@ -484,6 +488,8 @@ extern const Name targets; extern const Name tau; extern const Name tau_1; extern const Name tau_2; +extern const Name tau_AMPA; +extern const Name tau_GABA; extern const Name tau_Ca; extern const Name tau_D_KNa; extern const Name tau_Delta; From 297dcabd58aa8cb43904cc6bb7bd63f3bbc6477a Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 13 Sep 2023 13:57:01 +0200 Subject: [PATCH 002/184] Files from Stine, fixed 0->nullptr and port->size_t --- models/iaf_wang_2002.cpp | 541 +++++++++++++++++++++++++++++++++++++++ models/iaf_wang_2002.h | 534 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 1075 insertions(+) create mode 100644 models/iaf_wang_2002.cpp create mode 100644 models/iaf_wang_2002.h diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp new file mode 100644 index 0000000000..bbc17271df --- /dev/null +++ b/models/iaf_wang_2002.cpp @@ -0,0 +1,541 @@ +/* + * iaf_wang_2002.cpp + * + * This file is part of NEST. + * + * Copyright (C) 2004 The NEST Initiative + * + * NEST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * NEST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with NEST. If not, see . + * + */ + +#include "iaf_wang_2002.h" + +#ifdef HAVE_GSL + +// Includes from libnestutil: +#include "dictdatum.h" +#include "dict_util.h" +#include "numerics.h" + +// Includes from nestkernel: +#include "exceptions.h" +#include "kernel_manager.h" +#include "universal_data_logger_impl.h" + +// Includes from sli: +#include "dict.h" +#include "dictutils.h" +#include "doubledatum.h" +#include "integerdatum.h" +#include "lockptrdatum.h" + +/* --------------------------------------------------------------------------- + * Recordables map + * --------------------------------------------------------------------------- */ +nest::RecordablesMap< nest::iaf_wang_2002 > nest::iaf_wang_2002::recordablesMap_; + +namespace nest +{ +/* + * Override the create() method with one call to RecordablesMap::insert_() + * for each quantity to be recorded. + */ +template <> +void +RecordablesMap< iaf_wang_2002 >::create() +{ + // add state variables to recordables map + insert_( names::V_m, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::V_m > ); + insert_( names::g_AMPA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::G_AMPA > ); + insert_( names::g_GABA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::G_GABA > ); + insert_( names::NMDA_sum, &iaf_wang_2002::get_NMDA_sum_ ); +} +} +/* --------------------------------------------------------------------------- + * Default constructors defining default parameters and state + * --------------------------------------------------------------------------- */ + +nest::iaf_wang_2002::Parameters_::Parameters_() + : E_L( -70.0 ) // mV + , E_ex( 0.0 ) // mV + , E_in( -70.0 ) // mV + , V_th( -55.0 ) // mV + , V_reset( -60.0 ) // mV + , C_m( 500.0 ) // pF + , g_L( 25.0 ) // nS + , t_ref( 2.0 ) // ms + , tau_AMPA( 2.0 ) // ms + , tau_GABA( 5.0 ) // ms + , tau_rise_NMDA( 2.0 ) // ms + , tau_decay_NMDA( 100 ) // ms + , alpha( 0.5 ) // 1 / ms + , conc_Mg2( 1 ) // mM + , gsl_error_tol( 1e-3 ) +{ +} + +nest::iaf_wang_2002::State_::State_( const Parameters_& p ) + : r_( 0 ) + , sum_S_post_( 0 ) +{ + ode_state_[ V_m ] = p.E_L; // initialize to reversal potential + ode_state_[ G_AMPA ] = 0.0; + ode_state_[ G_GABA ] = 0.0; + ode_state_[ S_pre ] = 0.0; + ode_state_[ X_pre ] = 0.0; + + dy_[ V_m ] = 0.0; + dy_[ G_AMPA ] = 0.0; + dy_[ G_GABA ] = 0.0; + dy_[ S_pre ] = 0.0; + dy_[ X_pre ] = 0.0; +} + +nest::iaf_wang_2002::State_::State_( const State_& s ) + : r_( s.r_ ) + , sum_S_post_( s.sum_S_post_ ) +{ + ode_state_[ V_m ] = s.ode_state_[ V_m ]; + ode_state_[ G_AMPA ] = s.ode_state_[ G_AMPA ]; + ode_state_[ G_GABA ] = s.ode_state_[ G_GABA ]; + ode_state_[ S_pre ] = s.ode_state_[ S_pre ]; + ode_state_[ X_pre ] = s.ode_state_[ X_pre ]; + + dy_[ V_m ] = s.dy_[ V_m ]; + dy_[ G_AMPA ] = s.dy_[ G_AMPA ]; + dy_[ G_GABA ] = s.dy_[ G_GABA ]; + dy_[ S_pre ] = s.dy_[ S_pre ]; + dy_[ X_pre ] = s.dy_[ X_pre ]; +} + +nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) + : logger_( n ) + , spikes_() + , NMDA_cond_() + , s_( nullptr ) + , c_( nullptr ) + , e_( nullptr ) + , step_( Time::get_resolution().get_ms() ) + , integration_step_( step_ ) +{ + // Initialization of the remaining members is deferred to init_buffers_(). +} + +nest::iaf_wang_2002::Buffers_::Buffers_( const Buffers_&, iaf_wang_2002& n ) + : logger_( n ) + , spikes_() + , NMDA_cond_() + , s_( nullptr ) + , c_( nullptr ) + , e_( nullptr ) + , step_( Time::get_resolution().get_ms() ) + , integration_step_( step_ ) +{ + // Initialization of the remaining members is deferred to init_buffers_(). +} + +/* --------------------------------------------------------------------------- + * Parameter and state extractions and manipulation functions + * --------------------------------------------------------------------------- */ + +void +nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const +{ + def< double >( d, names::E_L, E_L ); + def< double >( d, names::E_ex, E_ex ); + def< double >( d, names::E_in, E_in ); + def< double >( d, names::V_th, V_th ); + def< double >( d, names::V_reset, V_reset ); + def< double >( d, names::C_m, C_m ); + def< double >( d, names::g_L, g_L ); + def< double >( d, names::t_ref, t_ref ); + def< double >( d, names::tau_AMPA, tau_AMPA ); + def< double >( d, names::tau_GABA, tau_GABA ); + def< double >( d, names::tau_rise_NMDA, tau_rise_NMDA ); + def< double >( d, names::tau_decay_NMDA, tau_decay_NMDA ); + def< double >( d, names::alpha, alpha ); + def< double >( d, names::conc_Mg2, conc_Mg2 ); + def< double >( d, names::gsl_error_tol, gsl_error_tol ); +} + +void +nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) +{ + // allow setting the membrane potential + updateValueParam< double >( d, names::V_th, V_th, node ); + updateValueParam< double >( d, names::V_reset, V_reset, node ); + updateValueParam< double >( d, names::t_ref, t_ref, node ); + updateValueParam< double >( d, names::E_L, E_L, node ); + + updateValueParam< double >( d, names::E_ex, E_ex, node ); + updateValueParam< double >( d, names::E_in, E_in, node ); + + updateValueParam< double >( d, names::C_m, C_m, node ); + updateValueParam< double >( d, names::g_L, g_L, node ); + + updateValueParam< double >( d, names::tau_AMPA, tau_AMPA, node ); + updateValueParam< double >( d, names::tau_GABA, tau_GABA, node ); + updateValueParam< double >( d, names::tau_rise_NMDA, tau_rise_NMDA, node ); + updateValueParam< double >( d, names::tau_decay_NMDA, tau_decay_NMDA, node ); + + updateValueParam< double >( d, names::alpha, alpha, node ); + updateValueParam< double >( d, names::conc_Mg2, conc_Mg2, node ); + + updateValueParam< double >( d, names::gsl_error_tol, gsl_error_tol, node ); + + if ( V_reset >= V_th ) + { + throw BadProperty( "Reset potential must be smaller than threshold." ); + } + if ( C_m <= 0 ) + { + throw BadProperty( "Capacitance must be strictly positive." ); + } + if ( t_ref < 0 ) + { + throw BadProperty( "Refractory time cannot be negative." ); + } + if ( tau_AMPA <= 0 or tau_GABA <= 0 or tau_rise_NMDA <= 0 or tau_decay_NMDA <= 0 ) + { + throw BadProperty( "All time constants must be strictly positive." ); + } + if ( alpha <= 0 ) + { + throw BadProperty( "alpha > 0 required." ); + } + if ( conc_Mg2 <= 0 ) + { + throw BadProperty( "Mg2 concentration must be strictly positive." ); + } + if ( gsl_error_tol <= 0.0 ) + { + throw BadProperty( "The gsl_error_tol must be strictly positive." ); + } +} + +void +nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const +{ + def< double >( d, names::V_m, ode_state_[ V_m ] ); // Membrane potential + def< double >( d, names::g_AMPA, ode_state_[ G_AMPA ] ); + def< double >( d, names::g_GABA, ode_state_[ G_GABA ] ); + + // total NMDA sum + double NMDA_sum = get_NMDA_sum(); + def< double >( d, names::NMDA_sum, NMDA_sum ); +} + +void +nest::iaf_wang_2002::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) +{ + updateValueParam< double >( d, names::V_m, ode_state_[ V_m ], node ); + updateValueParam< double >( d, names::g_AMPA, ode_state_[ G_AMPA ], node ); + updateValueParam< double >( d, names::g_GABA, ode_state_[ G_GABA ], node ); +} + +/* --------------------------------------------------------------------------- + * Default constructor for node + * --------------------------------------------------------------------------- */ + +nest::iaf_wang_2002::iaf_wang_2002() + : ArchivingNode() + , P_() + , S_( P_ ) + , B_( *this ) +{ + recordablesMap_.create(); + + calibrate(); +} + +/* --------------------------------------------------------------------------- + * Copy constructor for node + * --------------------------------------------------------------------------- */ + +nest::iaf_wang_2002::iaf_wang_2002( const iaf_wang_2002& n_ ) + : ArchivingNode( n_ ) + , P_( n_.P_ ) + , S_( n_.S_ ) + , B_( n_.B_, *this ) +{ +} + +/* --------------------------------------------------------------------------- + * Destructor for node + * --------------------------------------------------------------------------- */ + +nest::iaf_wang_2002::~iaf_wang_2002() +{ + // GSL structs may not have been allocated, so we need to protect destruction + + if ( B_.s_ ) + { + gsl_odeiv_step_free( B_.s_ ); + } + + if ( B_.c_ ) + { + gsl_odeiv_control_free( B_.c_ ); + } + + if ( B_.e_ ) + { + gsl_odeiv_evolve_free( B_.e_ ); + } +} + +/* --------------------------------------------------------------------------- + * Node initialization functions + * --------------------------------------------------------------------------- */ + +void +nest::iaf_wang_2002::init_state_() +{ +} + +void +nest::iaf_wang_2002::init_buffers_() +{ + B_.spikes_.resize( 2 ); + + for ( auto& sb : B_.spikes_ ) + { + sb.clear(); // includes resize + } + + B_.NMDA_cond_.clear(); + B_.currents_.clear(); // includes resize + + B_.logger_.reset(); // includes resize + ArchivingNode::clear_history(); + + if ( B_.s_ == nullptr ) + { + B_.s_ = gsl_odeiv_step_alloc( gsl_odeiv_step_rkf45, State_::STATE_VEC_SIZE ); + } + else + { + gsl_odeiv_step_reset( B_.s_ ); + } + + if ( B_.c_ == nullptr ) + { + B_.c_ = gsl_odeiv_control_y_new( P_.gsl_error_tol, 0.0 ); + } + else + { + gsl_odeiv_control_init( B_.c_, P_.gsl_error_tol, 0.0, 1.0, 0.0 ); + } + + if ( B_.e_ == nullptr ) + { + B_.e_ = gsl_odeiv_evolve_alloc( State_::STATE_VEC_SIZE ); + } + else + { + gsl_odeiv_evolve_reset( B_.e_ ); + } + + B_.sys_.function = iaf_wang_2002_dynamics; + B_.sys_.jacobian = nullptr; + B_.sys_.dimension = State_::STATE_VEC_SIZE; + B_.sys_.params = reinterpret_cast< void* >( this ); + B_.step_ = Time::get_resolution().get_ms(); + B_.integration_step_ = Time::get_resolution().get_ms(); + + B_.I_stim_ = 0.0; +} + +void +nest::iaf_wang_2002::calibrate() +{ + B_.logger_.init(); + + // internals V_ + V_.RefractoryCounts = Time( Time::ms( ( double ) ( P_.t_ref ) ) ).get_steps(); +} + +/* --------------------------------------------------------------------------- + * Update and spike handling functions + * --------------------------------------------------------------------------- */ + +extern "C" inline int +nest::iaf_wang_2002_dynamics( double, const double ode_state[], double f[], void* pnode ) +{ + // a shorthand + typedef nest::iaf_wang_2002::State_ State_; + + // get access to node so we can almost work as in a member function + assert( pnode ); + const nest::iaf_wang_2002& node = *( reinterpret_cast< nest::iaf_wang_2002* >( pnode ) ); + + // ode_state[] here is---and must be---the state vector supplied by the integrator, + // not the state vector in the node, node.S_.ode_state[]. + + const double I_AMPA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) * ode_state[ State_::G_AMPA ]; + + const double I_rec_GABA = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::G_GABA ]; + + const double I_rec_NMDA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) + / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ State_::V_m ] ) / 3.57 ) * node.S_.sum_S_post_; + + const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA - node.B_.I_stim_; + + f[ State_::V_m ] = ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; + + f[ State_::G_AMPA ] = -ode_state[ State_::G_AMPA ] / node.P_.tau_AMPA; + f[ State_::G_GABA ] = -ode_state[ State_::G_GABA ] / node.P_.tau_GABA; + + f[ State_::S_pre ] = + -ode_state[ State_::S_pre ] / node.P_.tau_decay_NMDA + node.P_.alpha * ode_state[ State_::X_pre ] * ( 1 - ode_state[ State_::S_pre ] ); + f[ State_::X_pre ] = -ode_state[ State_::X_pre ] / node.P_.tau_rise_NMDA; + + return GSL_SUCCESS; +} + +void +nest::iaf_wang_2002::update( Time const& origin, const long from, const long to ) +{ + std::vector< double > s_vals( kernel().connection_manager.get_min_delay(), 0.0 ); + + for ( long lag = from; lag < to; ++lag ) + { + /*double t = 0.0; + + // numerical integration with adaptive step size control: + // ------------------------------------------------------ + // gsl_odeiv_evolve_apply performs only a single numerical + // integration step, starting from t and bounded by step; + // the while-loop ensures integration over the whole simulation + // step (0, step] if more than one integration step is needed due + // to a small integration step size; + // note that (t+IntegrationStep > step) leads to integration over + // (t, step] and afterwards setting t to step, but it does not + // enforce setting IntegrationStep to step-t; this is of advantage + // for a consistent and efficient integration across subsequent + // simulation intervals + + while ( t < B_.step_ ) + { + const int status = gsl_odeiv_evolve_apply( B_.e_, + B_.c_, + B_.s_, + &B_.sys_, // system of ODE + &t, // from t + B_.step_, // to t <= step + &B_.integration_step_, // integration step size + S_.ode_state_ ); // neuronal state + + if ( status != GSL_SUCCESS ) + { + throw GSLSolverFailure( get_name(), status ); + } + }*/ + + iaf_wang_2002_dynamics( 0, S_.ode_state_, S_.dy_, reinterpret_cast< void* >( this ) ); + for ( auto i = 0; i < State_::STATE_VEC_SIZE; ++i ) + { + S_.ode_state_[ i ] += B_.step_ * S_.dy_[ i ]; + } + + // add incoming spikes + S_.ode_state_[ State_::G_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); + S_.ode_state_[ State_::G_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); + S_.sum_S_post_ = B_.NMDA_cond_.get_value( lag ); + B_.NMDA_cond_.set_value( lag, 0.0 ); + + // absolute refractory period + if ( S_.r_ ) + { + // neuron is absolute refractory + --S_.r_; + S_.ode_state_[ State_::V_m ] = P_.V_reset; // clamp potential + } + else if ( S_.ode_state_[ State_::V_m ] >= P_.V_th ) + { + // neuron is not absolute refractory + S_.r_ = V_.RefractoryCounts; + S_.ode_state_[ State_::V_m ] = P_.V_reset; + + S_.ode_state_[ State_::X_pre ] += 1; + + // log spike with ArchivingNode + set_spiketime( Time::step( origin.get_steps() + lag + 1 ) ); + + SpikeEvent se; + kernel().event_delivery_manager.send( *this, se, lag ); + } + + // send NMDA update + s_vals[ lag ] = S_.ode_state_[ State_::S_pre ]; + + // set new input current + B_.I_stim_ = B_.currents_.get_value( lag ); + + // voltage logging + B_.logger_.record_data( origin.get_steps() + lag ); + } + + DelayedRateConnectionEvent drce; + drce.set_coeffarray( s_vals ); + kernel().event_delivery_manager.send_secondary( *this, drce ); +} + +// Do not move this function as inline to h-file. It depends on +// universal_data_logger_impl.h being included here. +void +nest::iaf_wang_2002::handle( DataLoggingRequest& e ) +{ + B_.logger_.handle( e ); +} + +void +nest::iaf_wang_2002::handle( SpikeEvent& e ) +{ + assert( e.get_delay_steps() > 0 ); + assert( e.get_rport() < NMDA ); + + const double steps = e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ); + + const auto rport = e.get_rport(); + B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); +} + +void +nest::iaf_wang_2002::handle( DelayedRateConnectionEvent& e ) +{ + assert( e.get_delay_steps() > 0 ); + assert( e.get_rport() == NMDA ); + + const double weight = e.get_weight(); + long delay = e.get_delay_steps(); + + for ( auto it = e.begin(); it != e.end(); ++delay ) + { + B_.NMDA_cond_.add_value( delay, weight * e.get_coeffvalue( it ) ); + } + +} + +void +nest::iaf_wang_2002::handle( CurrentEvent& e ) +{ + assert( e.get_delay_steps() > 0 ); + + B_.currents_.add_value( + e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_current() ); +} + +#endif // HAVE_GSL diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h new file mode 100644 index 0000000000..1965eaad48 --- /dev/null +++ b/models/iaf_wang_2002.h @@ -0,0 +1,534 @@ +/* + * iaf_wang_2002.h + * + * This file is part of NEST. + * + * Copyright (C) 2004 The NEST Initiative + * + * NEST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * NEST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with NEST. If not, see . + * + */ + +#ifndef IAF_WANG_2002 +#define IAF_WANG_2002 + +// Generated includes: +#include "config.h" + +#ifdef HAVE_GSL + +// C includes: +#include +#include +#include + +// Includes from nestkernel: +#include "archiving_node.h" +#include "connection.h" +#include "event.h" +#include "nest_types.h" +#include "ring_buffer.h" +#include "universal_data_logger.h" + +namespace nest +{ +/** + * Function computing right-hand side of ODE for GSL solver. + * @note Must be declared here so we can befriend it in class. + * @note Must have C-linkage for passing to GSL. Internally, it is + * a first-class C++ function, but cannot be a member function + * because of the C-linkage. + * @note No point in declaring it inline, since it is called + * through a function pointer. + * @param void* Pointer to model neuron instance. + */ +extern "C" inline int iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode ); + + +/* BeginUserDocs: neuron, integrate-and-fire, conductance-based + +Short description ++++++++++++++++++ + +Leaky integrate-and-fire-neuron model with dynamic NMDA receptors. + +Description ++++++++++++ + +This model implements a version of the neuron model described in [1]_. + +It contains AMPA, GABA and NMDA synapses, where the number of NMDA ports are dependent +on the number of presynaptic connections. + +The AMPA and GABA synapses are given as alpha functions, while the NMDA synapse is modeled +with a non-linear function described by + +.. math:: + \frac{ dg_j^{NMDA}(t) }{ dt } = - \frac{ g_j^{NMDA}(t) }{ \tau_{NMDA,decay} } + \alpha x_j(t)(1 - s_j^{NMDA}(t)) \\ + \frac{ dx_j(t) }{ dt } =- \frac{ x_j(t) }{ \tau_{NMDA,rise} } + \sum_k \delta(t - t_j^k). + +The synaptic current of NMDA is given by + +.. math:: + I_{NMDA}(t) = \frac{ V(t) - E_{ex} }{ 1 + [Mg^{2+}]exp(-0.062V(t))/3.57 }\sum_{j=1}w_jg_j^{NMDA}, + +where `w_j` is the weight of connection with presynaptic neuron `j`. + + +Parameters +++++++++++ + +The following parameters can be set in the status dictionary. + + +=============== ======= =========================================================== + E_L mV Resting potential + E_ex mV Excitatory reversal potential + E_in mV Inhibitory reversal potential + V_th mV Threshold potential + V_reset mV Reset potential + C_m pF Membrane capacitance + g_L nS Leak conductance + t_ref ms Refractory period + tau_AMPA ms Synaptic time constant for AMPA synapse + tau_GABA ms Synaptic time constant for GABA synapse + tau_rise_NMDA ms Synaptic rise time constant for NMDA synapse + tau_decay_NMDA ms Synaptic decay time constant for NMDA synapse + alpha 1/ms Scaling factor for NMDA synapse + conc_Mg2 mM Extracellular magnesium concentration + gsl_error_tol - GSL error tolerance +=============== ======= =========================================================== + + +Recordables ++++++++++++ + +The following values can be recorded. + +=========== =========================================================== + V_m Membrane potential + g_AMPA AMPA gate + g_GABA GABA gate + NMDA_sum sum of NMDA over all presynaptic neurons j +=========== =========================================================== + +.. note:: + It is possible to set values for `V_m`, `g_AMPA` and `g_GABA` when creating the model, while the + different `g_NMDA_j` (`j` represents presynaptic neuron `j`) can not be set by the user. + +.. note:: + The variable `g_AMPA` and `g_GABA` in the NEST implementation does not correspond to `g_{recAMPA, extAMPA, GABA}` + in [1]_. `g_{recAMPA, extAMPA, GABA, NMBA}` from [1]_ is built into the weights in this NEST model, so setting the + variables is thus done by changing the weights. + +Sends ++++++ + +SpikeEvent + +Receives +++++++++ + +SpikeEvent, CurrentEvent, DataLoggingRequest + +References +++++++++++ + +.. [1] Wang, X. J. (2002). Probabilistic decision making by slow reverberation in + cortical circuits. Neuron, 36(5), 955-968. + DOI: https://doi.org/10.1016/S0896-6273(02)01092-9 + +See also +++++++++ + +iaf_cond_alpha, ht_neuron + +EndUserDocs */ + + +/** + * Leaky integrate-and-fire-neuron model with dynamic NMDA receptors. + */ +class iaf_wang_2002 : public ArchivingNode +{ +public: + /** + * The constructor is only used to create the model prototype in the model manager. + */ + iaf_wang_2002(); + + /** + * The copy constructor is used to create model copies and instances of the model. + * @note The copy constructor needs to initialize the parameters and part of the state. + * Initialization of rest of state, buffers and internal variables is deferred to + * @c init_state_(), @c init_buffers_() and @c calibrate(). + */ + iaf_wang_2002( const iaf_wang_2002& ); + + ~iaf_wang_2002() override; + + /** + * Import all overloaded virtual functions that we + * override in this class. For background information, + * see http://www.gotw.ca/gotw/005.htm. + */ + + using Node::handles_test_event; + using Node::sends_secondary_event; + using Node::handle; + + //! Used to validate that we can send SpikeEvent to desired target:port. + size_t send_test_event( Node& target, size_t receptor_type, synindex, bool ) override; + + void sends_secondary_event( DelayedRateConnectionEvent& ) override; + + /* ------------------------------------------------------------------------- + * Functions handling incoming events. + * We tell NEST that we can handle incoming events of various types by + * defining handle() for the given event. + * ------------------------------------------------------------------------- */ + + void handle( SpikeEvent& ) override; //!< accept spikes + void handle( DelayedRateConnectionEvent& ) override; //!< accept spikes + void handle( CurrentEvent& e ) override; //!< accept current + void handle( DataLoggingRequest& ) override; //!< allow recording with multimeter + + size_t handles_test_event( SpikeEvent&, size_t ) override; + size_t handles_test_event( DelayedRateConnectionEvent&,size_t ) override; + size_t handles_test_event( CurrentEvent&, size_t ) override; + size_t handles_test_event( DataLoggingRequest&, size_t ) override; + + /* ------------------------------------------------------------------------- + * Functions for getting/setting parameters and state values. + * ------------------------------------------------------------------------- */ + + void get_status( DictionaryDatum& ) const override; + void set_status( const DictionaryDatum& ) override; + +private: + /** + * Synapse types to connect to + */ + enum SynapseTypes + { + INF_SPIKE_RECEPTOR = 0, + AMPA, + GABA, + NMDA, + SUP_SPIKE_RECEPTOR + }; + + void init_state_() override; + void init_buffers_() override; + void calibrate(); + void update( Time const&, const long, const long ) override; + + // The next two classes need to be friends to access the State_ class/member + friend class RecordablesMap< iaf_wang_2002 >; + friend class UniversalDataLogger< iaf_wang_2002 >; + + // Parameters class -------------------------------------------------------------- + + /** + * Parameters of the neuron. + * + * These are the parameters that can be set by the user through @c `node.set()`. + * They are initialized from the model prototype when the node is created. + * Parameters do not change during calls to @c update(). + */ + struct Parameters_ + { + double E_L; //!< Resting Potential in mV + double E_ex; //!< Excitatory reversal Potential in mV + double E_in; //!< Inhibitory reversal Potential in mV + double V_th; //!< Threshold Potential in mV + double V_reset; //!< Reset Potential in mV + double C_m; //!< Membrane Capacitance in pF + double g_L; //!< Leak Conductance in nS + double t_ref; //!< Refractory period in ms + double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms + double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms + double tau_rise_NMDA; //!< Synaptic Rise Time Constant NMDA Synapse in ms + double tau_decay_NMDA; //!< Synaptic Decay Time Constant NMDA Synapse in ms + double alpha; //!< Scaling factor for NMDA synapse in 1/ms + double conc_Mg2; //!< Extracellular Magnesium Concentration in mM + + double gsl_error_tol; //!< GSL Error Tolerance + + //! Initialize parameters to their default values. + Parameters_(); + + void get( DictionaryDatum& ) const; //!< Store current values in dictionary + void set( const DictionaryDatum&, Node* node ); //!< Set values from dictionary + }; + + + // State variables class -------------------------------------------- + + /** + * State variables of the model. + * + * State variables consist of the state vector for the subthreshold + * dynamics and the refractory count. The state vector must be a + * C-style array to be compatible with GSL ODE solvers. + * + * @note Copy constructor is required because of the C-style array. + */ + struct State_ + { + //! Symbolic indices to the elements of the state vector y + enum StateVecElems + { + V_m = 0, + G_AMPA, + G_GABA, + S_pre, + X_pre, + STATE_VEC_SIZE + }; + + double ode_state_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver + double dy_[ STATE_VEC_SIZE ]; + int r_; //!< number of refractory steps remaining + double sum_S_post_; + + State_( const Parameters_& ); //!< Default initialization + State_( const State_& ); + + void get( DictionaryDatum& ) const; + void set( const DictionaryDatum&, const Parameters_&, Node* ); + + //! Get the sum of NMDA over all presynaptic neurons + double + get_NMDA_sum() const + { + /*double NMDA_sum = 0.0; + for ( size_t i = G_NMDA_base; i < state_vec_size; i += 2 ) + { + NMDA_sum += ode_state_[ i + 1 ]; + } + return NMDA_sum;*/ + return -1; + } + }; + + // Variables class ------------------------------------------------------- + + /** + * Internal variables of the model. + * Variables are re-initialized upon each call to Simulate. + */ + struct Variables_ + { + //! refractory time in steps + long RefractoryCounts; + }; + + // Buffers class -------------------------------------------------------- + + /** + * Buffers of the model. + * Buffers are on par with state variables in terms of persistence, + * i.e., initialized only upon first Simulate call after ResetKernel, + * but its implementation details hidden from the user. + */ + struct Buffers_ + { + Buffers_( iaf_wang_2002& ); + Buffers_( const Buffers_&, iaf_wang_2002& ); + + //! Logger for all analog data + UniversalDataLogger< iaf_wang_2002 > logger_; + + // ----------------------------------------------------------------------- + // Buffers and sums of incoming spikes and currents per timestep + // ----------------------------------------------------------------------- + std::vector< RingBuffer > spikes_; + RingBuffer NMDA_cond_; + RingBuffer currents_; + + // ----------------------------------------------------------------------- + // GSL ODE solver data structures + // ----------------------------------------------------------------------- + + gsl_odeiv_step* s_; //!< stepping function + gsl_odeiv_control* c_; //!< adaptive stepsize control function + gsl_odeiv_evolve* e_; //!< evolution function + gsl_odeiv_system sys_; //!< struct describing system + + /** + * integration_step_ should be reset with the neuron on ResetNetwork, + * but remain unchanged during calibration. Since it is initialized with + * step_, and the resolution cannot change after nodes have been created, + * it is safe to place both here. + */ + double step_; //!< step size in ms + double integration_step_; //!< current integration time step, updated by GSL + + /** + * Input current injected by CurrentEvent. + * This variable is used to transport the current applied into the + * _dynamics function computing the derivative of the state vector. + * It must be a part of Buffers_, since it is initialized once before + * the first simulation, but not modified before later Simulate calls. + */ + double I_stim_; + }; + + // Access functions for UniversalDataLogger ------------------------------- + + //! Read out state vector elements, used by UniversalDataLogger + template < State_::StateVecElems elem > + double + get_ode_state_elem_() const + { + return S_.ode_state_[ elem ]; + } + + //! Get the sum of NMDA from state, used by UniversalDataLogger + double + get_NMDA_sum_() const + { + return S_.get_NMDA_sum(); + } + + // Data members ----------------------------------------------------------- + + // keep the order of these lines, seems to give best performance + Parameters_ P_; //!< Free parameters. + State_ S_; //!< Dynamic state. + Variables_ V_; //!< Internal Variables + Buffers_ B_; //!< Buffers. + + //! Mapping of recordables names to access functions + static RecordablesMap< iaf_wang_2002 > recordablesMap_; + friend int iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode ); + +}; /* neuron iaf_wang_2002 */ + +inline size_t +iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bool ) +{ + if ( receptor_type != NMDA ) + { + SpikeEvent e; + e.set_sender( *this ); + return target.handles_test_event( e, receptor_type ); + } + else + { + DelayedRateConnectionEvent e; + e.set_sender( *this ); + return target.handles_test_event( e, receptor_type ); + } +} + +inline size_t +iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) +{ + if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) or receptor_type == NMDA ) + { + throw UnknownReceptorType( receptor_type, get_name() ); + return 0; + } + else + { + return receptor_type; + } +} + +inline size_t +iaf_wang_2002::handles_test_event( DelayedRateConnectionEvent&, size_t receptor_type ) +{ + if ( receptor_type != NMDA ) + { + throw UnknownReceptorType( receptor_type, get_name() ); + return 0; + } + else + { + return receptor_type; + } +} + +inline size_t +iaf_wang_2002::handles_test_event( CurrentEvent&, size_t receptor_type ) +{ + if ( receptor_type != 0 ) + { + throw UnknownReceptorType( receptor_type, get_name() ); + } + return 0; +} + +inline size_t +iaf_wang_2002::handles_test_event( DataLoggingRequest& dlr, size_t receptor_type ) +{ + /* + * You should usually not change the code in this function. + * It confirms to the connection management system that we are able + * to handle @c DataLoggingRequest on port 0. + * The function also tells the built-in UniversalDataLogger that this node + * is recorded from and that it thus needs to collect data during simulation. + */ + if ( receptor_type != 0 ) + { + throw UnknownReceptorType( receptor_type, get_name() ); + } + + return B_.logger_.connect_logging_device( dlr, recordablesMap_ ); +} + +inline void +iaf_wang_2002::get_status( DictionaryDatum& d ) const +{ + P_.get( d ); + S_.get( d ); + ArchivingNode::get_status( d ); + + DictionaryDatum receptor_type = new Dictionary(); + + ( *receptor_type )[ names::AMPA ] = AMPA; + ( *receptor_type )[ names::GABA ] = GABA; + ( *receptor_type )[ names::NMDA ] = NMDA; + + ( *d )[ names::receptor_types ] = receptor_type; + + ( *d )[ names::recordables ] = recordablesMap_.get_list(); +} + +inline void +iaf_wang_2002::set_status( const DictionaryDatum& d ) +{ + Parameters_ ptmp = P_; // temporary copy in case of errors + ptmp.set( d, this ); // throws if BadProperty + State_ stmp = S_; // temporary copy in case of errors + stmp.set( d, ptmp, this ); // throws if BadProperty + + /* + * We now know that (ptmp, stmp) are consistent. We do not + * write them back to (P_, S_) before we are also sure that + * the properties to be set in the parent class are internally + * consistent. + */ + ArchivingNode::set_status( d ); + + // if we get here, temporaries contain consistent set of properties + P_ = ptmp; + S_ = stmp; +}; +} // namespace + +#endif // HAVE_GSL +#endif // IAF_WANG_2002 From 4ccecdf7ccb4fe41b963b5f7acf6f68008701cae Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 14 Sep 2023 09:16:20 +0200 Subject: [PATCH 003/184] change variable name --- models/iaf_wang_2002.cpp | 22 +++++++++++----------- modelsets/full | 1 + 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index bbc17271df..b02232344b 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -375,7 +375,7 @@ extern "C" inline int nest::iaf_wang_2002_dynamics( double, const double ode_state[], double f[], void* pnode ) { // a shorthand - typedef nest::iaf_wang_2002::State_ State_; + typedef nest::iaf_wang_2002::State_ S; // get access to node so we can almost work as in a member function assert( pnode ); @@ -384,23 +384,23 @@ nest::iaf_wang_2002_dynamics( double, const double ode_state[], double f[], void // ode_state[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.ode_state[]. - const double I_AMPA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) * ode_state[ State_::G_AMPA ]; + const double I_AMPA = ( ode_state[ S::V_m ] - node.P_.E_ex ) * ode_state[ S::G_AMPA ]; - const double I_rec_GABA = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::G_GABA ]; + const double I_rec_GABA = ( ode_state[ S::V_m ] - node.P_.E_in ) * ode_state[ S::G_GABA ]; - const double I_rec_NMDA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) - / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ State_::V_m ] ) / 3.57 ) * node.S_.sum_S_post_; + const double I_rec_NMDA = ( ode_state[ S::V_m ] - node.P_.E_ex ) + / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ S::V_m ] ) / 3.57 ) * node.S_.sum_S_post_; const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA - node.B_.I_stim_; - f[ State_::V_m ] = ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; + f[ S::V_m ] = ( -node.P_.g_L * ( ode_state[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; - f[ State_::G_AMPA ] = -ode_state[ State_::G_AMPA ] / node.P_.tau_AMPA; - f[ State_::G_GABA ] = -ode_state[ State_::G_GABA ] / node.P_.tau_GABA; + f[ S::G_AMPA ] = -ode_state[ S::G_AMPA ] / node.P_.tau_AMPA; + f[ S::G_GABA ] = -ode_state[ S::G_GABA ] / node.P_.tau_GABA; - f[ State_::S_pre ] = - -ode_state[ State_::S_pre ] / node.P_.tau_decay_NMDA + node.P_.alpha * ode_state[ State_::X_pre ] * ( 1 - ode_state[ State_::S_pre ] ); - f[ State_::X_pre ] = -ode_state[ State_::X_pre ] / node.P_.tau_rise_NMDA; + f[ S::S_pre ] = + -ode_state[ S::S_pre ] / node.P_.tau_decay_NMDA + node.P_.alpha * ode_state[ S::X_pre ] * ( 1 - ode_state[ S::S_pre ] ); + f[ S::X_pre ] = -ode_state[ S::X_pre ] / node.P_.tau_rise_NMDA; return GSL_SUCCESS; } diff --git a/modelsets/full b/modelsets/full index 4f0e835f41..9c8b617b59 100644 --- a/modelsets/full +++ b/modelsets/full @@ -56,6 +56,7 @@ iaf_psc_exp_htum iaf_psc_exp_multisynapse iaf_psc_exp_ps iaf_psc_exp_ps_lossless +iaf_wang_2002 izhikevich jonke_synapse lin_rate From 8d3d96c610d77bc967867be469966899d303e91c Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 14 Sep 2023 09:31:09 +0200 Subject: [PATCH 004/184] add nest names --- nestkernel/nest_names.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 7559f5279b..e3fb1354a9 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -177,6 +177,7 @@ const Name filenames( "filenames" ); const Name frequency( "frequency" ); const Name frozen( "frozen" ); +const Name GABA( "GABA" ); const Name GABA_A( "GABA_A" ); const Name GABA_B( "GABA_B" ); const Name g( "g" ); @@ -459,9 +460,11 @@ const Name targets( "targets" ); const Name tau( "tau" ); const Name tau_1( "tau_1" ); const Name tau_2( "tau_2" ); +const Name tau_AMPA( "tau_AMPA" ); const Name tau_Ca( "tau_Ca" ); const Name tau_D_KNa( "tau_D_KNa" ); const Name tau_Delta( "tau_Delta" ); +const Name tau_GABA( "tau_GABA" ); const Name tau_Mg_fast_NMDA( "tau_Mg_fast_NMDA" ); const Name tau_Mg_slow_NMDA( "tau_Mg_slow_NMDA" ); const Name tau_P( "tau_P" ); From b17358cdc31c8ed481d2148ceaad06c38f4321b0 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 14 Sep 2023 11:10:47 +0200 Subject: [PATCH 005/184] compiles! --- models/iaf_wang_2002.cpp | 122 +++++++++++++++++++++----------------- models/iaf_wang_2002.h | 90 +++++++++++++++------------- nestkernel/nest_names.cpp | 3 + 3 files changed, 119 insertions(+), 96 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index b02232344b..b3711b8a74 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -63,6 +63,43 @@ RecordablesMap< iaf_wang_2002 >::create() insert_( names::NMDA_sum, &iaf_wang_2002::get_NMDA_sum_ ); } } + +extern "C" inline int +nest::iaf_wang_2002_dynamics( double, const double ode_state[], double f[], void* pnode ) +{ + // a shorthand + typedef nest::iaf_wang_2002::State_ S; + + // get access to node so we can almost work as in a member function + assert( pnode ); + const nest::iaf_wang_2002& node = *( reinterpret_cast< nest::iaf_wang_2002* >( pnode ) ); + + // ode_state[] here is---and must be---the state vector supplied by the integrator, + // not the state vector in the node, node.S_.ode_state[]. + + const double I_AMPA = ( ode_state[ S::V_m ] - node.P_.E_ex ) * ode_state[ S::G_AMPA ]; + + const double I_rec_GABA = ( ode_state[ S::V_m ] - node.P_.E_in ) * ode_state[ S::G_GABA ]; + + const double I_rec_NMDA = ( ode_state[ S::V_m ] - node.P_.E_ex ) + / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ S::V_m ] ) / 3.57 ) * node.S_.sum_S_post_; + + const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA - node.B_.I_stim_; + + f[ S::V_m ] = ( -node.P_.g_L * ( ode_state[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; + + f[ S::G_AMPA ] = -ode_state[ S::G_AMPA ] / node.P_.tau_AMPA; + f[ S::G_GABA ] = -ode_state[ S::G_GABA ] / node.P_.tau_GABA; + + f[ S::S_pre ] = + -ode_state[ S::S_pre ] / node.P_.tau_decay_NMDA + node.P_.alpha * ode_state[ S::X_pre ] * ( 1 - ode_state[ S::S_pre ] ); + f[ S::X_pre ] = -ode_state[ S::X_pre ] / node.P_.tau_rise_NMDA; + + return GSL_SUCCESS; +} + + + /* --------------------------------------------------------------------------- * Default constructors defining default parameters and state * --------------------------------------------------------------------------- */ @@ -358,53 +395,30 @@ nest::iaf_wang_2002::init_buffers_() B_.I_stim_ = 0.0; } +void +nest::iaf_wang_2002::pre_run_hook() +{ + // ensures initialization in case mm connected after Simulate + B_.logger_.init(); + + V_.RefractoryCounts_ = Time( Time::ms( P_.t_ref ) ).get_steps(); + // since t_ref_ >= 0, this can only fail in error + assert( V_.RefractoryCounts_ >= 0 ); +} + void nest::iaf_wang_2002::calibrate() { B_.logger_.init(); // internals V_ - V_.RefractoryCounts = Time( Time::ms( ( double ) ( P_.t_ref ) ) ).get_steps(); + V_.RefractoryCounts_ = Time( Time::ms( ( double ) ( P_.t_ref ) ) ).get_steps(); } /* --------------------------------------------------------------------------- * Update and spike handling functions * --------------------------------------------------------------------------- */ -extern "C" inline int -nest::iaf_wang_2002_dynamics( double, const double ode_state[], double f[], void* pnode ) -{ - // a shorthand - typedef nest::iaf_wang_2002::State_ S; - - // get access to node so we can almost work as in a member function - assert( pnode ); - const nest::iaf_wang_2002& node = *( reinterpret_cast< nest::iaf_wang_2002* >( pnode ) ); - - // ode_state[] here is---and must be---the state vector supplied by the integrator, - // not the state vector in the node, node.S_.ode_state[]. - - const double I_AMPA = ( ode_state[ S::V_m ] - node.P_.E_ex ) * ode_state[ S::G_AMPA ]; - - const double I_rec_GABA = ( ode_state[ S::V_m ] - node.P_.E_in ) * ode_state[ S::G_GABA ]; - - const double I_rec_NMDA = ( ode_state[ S::V_m ] - node.P_.E_ex ) - / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ S::V_m ] ) / 3.57 ) * node.S_.sum_S_post_; - - const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA - node.B_.I_stim_; - - f[ S::V_m ] = ( -node.P_.g_L * ( ode_state[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; - - f[ S::G_AMPA ] = -ode_state[ S::G_AMPA ] / node.P_.tau_AMPA; - f[ S::G_GABA ] = -ode_state[ S::G_GABA ] / node.P_.tau_GABA; - - f[ S::S_pre ] = - -ode_state[ S::S_pre ] / node.P_.tau_decay_NMDA + node.P_.alpha * ode_state[ S::X_pre ] * ( 1 - ode_state[ S::S_pre ] ); - f[ S::X_pre ] = -ode_state[ S::X_pre ] / node.P_.tau_rise_NMDA; - - return GSL_SUCCESS; -} - void nest::iaf_wang_2002::update( Time const& origin, const long from, const long to ) { @@ -466,7 +480,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to else if ( S_.ode_state_[ State_::V_m ] >= P_.V_th ) { // neuron is not absolute refractory - S_.r_ = V_.RefractoryCounts; + S_.r_ = V_.RefractoryCounts_; S_.ode_state_[ State_::V_m ] = P_.V_reset; S_.ode_state_[ State_::X_pre ] += 1; @@ -488,9 +502,9 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to B_.logger_.record_data( origin.get_steps() + lag ); } - DelayedRateConnectionEvent drce; - drce.set_coeffarray( s_vals ); - kernel().event_delivery_manager.send_secondary( *this, drce ); +// DelayedRateConnectionEvent drce; +// drce.set_coeffarray( s_vals ); +// kernel().event_delivery_manager.send_secondary( *this, drce ); } // Do not move this function as inline to h-file. It depends on @@ -513,21 +527,21 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); } -void -nest::iaf_wang_2002::handle( DelayedRateConnectionEvent& e ) -{ - assert( e.get_delay_steps() > 0 ); - assert( e.get_rport() == NMDA ); - - const double weight = e.get_weight(); - long delay = e.get_delay_steps(); - - for ( auto it = e.begin(); it != e.end(); ++delay ) - { - B_.NMDA_cond_.add_value( delay, weight * e.get_coeffvalue( it ) ); - } - -} +// void +// nest::iaf_wang_2002::handle( DelayedRateConnectionEvent& e ) +// { +// assert( e.get_delay_steps() > 0 ); +// assert( e.get_rport() == NMDA ); +// +// const double weight = e.get_weight(); +// long delay = e.get_delay_steps(); +// +// for ( auto it = e.begin(); it != e.end(); ++delay ) +// { +// B_.NMDA_cond_.add_value( delay, weight * e.get_coeffvalue( it ) ); +// } +// +// } void nest::iaf_wang_2002::handle( CurrentEvent& e ) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 1965eaad48..e57e5aefab 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -20,8 +20,8 @@ * */ -#ifndef IAF_WANG_2002 -#define IAF_WANG_2002 +#ifndef IAF_WANG_2002_H +#define IAF_WANG_2002_H // Generated includes: #include "config.h" @@ -53,7 +53,7 @@ namespace nest * through a function pointer. * @param void* Pointer to model neuron instance. */ -extern "C" inline int iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode ); +extern "C" inline int iaf_wang_2002_dynamics( double, const double*, double*, void* ); /* BeginUserDocs: neuron, integrate-and-fire, conductance-based @@ -191,7 +191,7 @@ class iaf_wang_2002 : public ArchivingNode //! Used to validate that we can send SpikeEvent to desired target:port. size_t send_test_event( Node& target, size_t receptor_type, synindex, bool ) override; - void sends_secondary_event( DelayedRateConnectionEvent& ) override; +// void sends_secondary_event( DelayedRateConnectionEvent& ) override; /* ------------------------------------------------------------------------- * Functions handling incoming events. @@ -200,12 +200,12 @@ class iaf_wang_2002 : public ArchivingNode * ------------------------------------------------------------------------- */ void handle( SpikeEvent& ) override; //!< accept spikes - void handle( DelayedRateConnectionEvent& ) override; //!< accept spikes +// void handle( DelayedRateConnectionEvent& ) override; //!< accept spikes void handle( CurrentEvent& e ) override; //!< accept current void handle( DataLoggingRequest& ) override; //!< allow recording with multimeter size_t handles_test_event( SpikeEvent&, size_t ) override; - size_t handles_test_event( DelayedRateConnectionEvent&,size_t ) override; +// size_t handles_test_event( DelayedRateConnectionEvent&,size_t ) override; size_t handles_test_event( CurrentEvent&, size_t ) override; size_t handles_test_event( DataLoggingRequest&, size_t ) override; @@ -230,6 +230,7 @@ class iaf_wang_2002 : public ArchivingNode }; void init_state_() override; + void pre_run_hook() override; void init_buffers_() override; void calibrate(); void update( Time const&, const long, const long ) override; @@ -274,6 +275,7 @@ class iaf_wang_2002 : public ArchivingNode }; +public: // State variables class -------------------------------------------- /** @@ -323,19 +325,9 @@ class iaf_wang_2002 : public ArchivingNode } }; - // Variables class ------------------------------------------------------- - - /** - * Internal variables of the model. - * Variables are re-initialized upon each call to Simulate. - */ - struct Variables_ - { - //! refractory time in steps - long RefractoryCounts; - }; - // Buffers class -------------------------------------------------------- +private: + // Buffers class -------------------------------------------------------- /** * Buffers of the model. @@ -386,6 +378,20 @@ class iaf_wang_2002 : public ArchivingNode double I_stim_; }; +// Variables class ------------------------------------------------------- + + /** + * Internal variables of the model. + * Variables are re-initialized upon each call to Simulate. + */ + struct Variables_ + { + //! refractory time in steps + long RefractoryCounts_; + }; + + + // Access functions for UniversalDataLogger ------------------------------- //! Read out state vector elements, used by UniversalDataLogger @@ -413,24 +419,24 @@ class iaf_wang_2002 : public ArchivingNode //! Mapping of recordables names to access functions static RecordablesMap< iaf_wang_2002 > recordablesMap_; - friend int iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode ); + friend int iaf_wang_2002_dynamics( double, const double*, double*, void* ); }; /* neuron iaf_wang_2002 */ inline size_t iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bool ) { - if ( receptor_type != NMDA ) +// if ( receptor_type != NMDA ) +// { + SpikeEvent e; + e.set_sender( *this ); + return target.handles_test_event( e, receptor_type ); +// } +// else { - SpikeEvent e; - e.set_sender( *this ); - return target.handles_test_event( e, receptor_type ); - } - else - { - DelayedRateConnectionEvent e; - e.set_sender( *this ); - return target.handles_test_event( e, receptor_type ); +// DelayedRateConnectionEvent e; +// e.set_sender( *this ); +// return target.handles_test_event( e, receptor_type ); } } @@ -448,19 +454,19 @@ iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) } } -inline size_t -iaf_wang_2002::handles_test_event( DelayedRateConnectionEvent&, size_t receptor_type ) -{ - if ( receptor_type != NMDA ) - { - throw UnknownReceptorType( receptor_type, get_name() ); - return 0; - } - else - { - return receptor_type; - } -} +// inline size_t +// iaf_wang_2002::handles_test_event( DelayedRateConnectionEvent&, size_t receptor_type ) +// { +// if ( receptor_type != NMDA ) +// { +// throw UnknownReceptorType( receptor_type, get_name() ); +// return 0; +// } +// else +// { +// return receptor_type; +// } +// } inline size_t iaf_wang_2002::handles_test_event( CurrentEvent&, size_t receptor_type ) diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index e3fb1354a9..18405a3f07 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -105,6 +105,7 @@ const Name count_covariance( "count_covariance" ); const Name count_histogram( "count_histogram" ); const Name covariance( "covariance" ); const Name compartments( "compartments" ); +const Name conc_Mg2( "conc_Mg2" ); const Name comp_idx( "comp_idx" ); const Name Delta_T( "Delta_T" ); @@ -182,6 +183,7 @@ const Name GABA_A( "GABA_A" ); const Name GABA_B( "GABA_B" ); const Name g( "g" ); const Name g_AMPA( "g_AMPA" ); +const Name g_GABA( "g_GABA" ); const Name g_GABA_A( "g_GABA_A" ); const Name g_GABA_B( "g_GABA_B" ); const Name g_K( "g_K" ); @@ -300,6 +302,7 @@ const Name music_channel( "music_channel" ); const Name N( "N" ); const Name NMDA( "NMDA" ); +const Name NMDA_sum( "NMDA_sum" ); const Name N_channels( "N_channels" ); const Name N_NaP( "N_NaP" ); const Name N_T( "N_T" ); From 41a81364bd5ff4c9bf6690253a594601c61baf50 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 23 Sep 2023 16:14:22 +0200 Subject: [PATCH 006/184] cleaning up code, wip --- models/iaf_wang_2002.cpp | 69 +++++++++++++---------------------- models/iaf_wang_2002.h | 79 +++++++++++++++++----------------------- 2 files changed, 60 insertions(+), 88 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index b3711b8a74..666d2e5782 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -127,34 +127,22 @@ nest::iaf_wang_2002::State_::State_( const Parameters_& p ) : r_( 0 ) , sum_S_post_( 0 ) { - ode_state_[ V_m ] = p.E_L; // initialize to reversal potential - ode_state_[ G_AMPA ] = 0.0; - ode_state_[ G_GABA ] = 0.0; - ode_state_[ S_pre ] = 0.0; - ode_state_[ X_pre ] = 0.0; - - dy_[ V_m ] = 0.0; - dy_[ G_AMPA ] = 0.0; - dy_[ G_GABA ] = 0.0; - dy_[ S_pre ] = 0.0; - dy_[ X_pre ] = 0.0; + y_[ V_m ] = p.E_L; // initialize to reversal potential + y_[ G_AMPA ] = 0.0; + y_[ G_GABA ] = 0.0; + y_[ S_pre ] = 0.0; + y_[ X_pre ] = 0.0; } nest::iaf_wang_2002::State_::State_( const State_& s ) : r_( s.r_ ) , sum_S_post_( s.sum_S_post_ ) { - ode_state_[ V_m ] = s.ode_state_[ V_m ]; - ode_state_[ G_AMPA ] = s.ode_state_[ G_AMPA ]; - ode_state_[ G_GABA ] = s.ode_state_[ G_GABA ]; - ode_state_[ S_pre ] = s.ode_state_[ S_pre ]; - ode_state_[ X_pre ] = s.ode_state_[ X_pre ]; - - dy_[ V_m ] = s.dy_[ V_m ]; - dy_[ G_AMPA ] = s.dy_[ G_AMPA ]; - dy_[ G_GABA ] = s.dy_[ G_GABA ]; - dy_[ S_pre ] = s.dy_[ S_pre ]; - dy_[ X_pre ] = s.dy_[ X_pre ]; + y_[ V_m ] = s.y_[ V_m ]; + y_[ G_AMPA ] = s.y_[ G_AMPA ]; + y_[ G_GABA ] = s.y_[ G_GABA ]; + y_[ S_pre ] = s.y_[ S_pre ]; + y_[ X_pre ] = s.y_[ X_pre ]; } nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) @@ -265,9 +253,9 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) void nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const { - def< double >( d, names::V_m, ode_state_[ V_m ] ); // Membrane potential - def< double >( d, names::g_AMPA, ode_state_[ G_AMPA ] ); - def< double >( d, names::g_GABA, ode_state_[ G_GABA ] ); + def< double >( d, names::V_m, y_[ V_m ] ); // Membrane potential + def< double >( d, names::g_AMPA, y_[ G_AMPA ] ); + def< double >( d, names::g_GABA, y_[ G_GABA ] ); // total NMDA sum double NMDA_sum = get_NMDA_sum(); @@ -277,9 +265,9 @@ nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const void nest::iaf_wang_2002::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) { - updateValueParam< double >( d, names::V_m, ode_state_[ V_m ], node ); - updateValueParam< double >( d, names::g_AMPA, ode_state_[ G_AMPA ], node ); - updateValueParam< double >( d, names::g_GABA, ode_state_[ G_GABA ], node ); + updateValueParam< double >( d, names::V_m, y_[ V_m ], node ); + updateValueParam< double >( d, names::g_AMPA, y_[ G_AMPA ], node ); + updateValueParam< double >( d, names::g_GABA, y_[ G_GABA ], node ); } /* --------------------------------------------------------------------------- @@ -426,7 +414,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to for ( long lag = from; lag < to; ++lag ) { - /*double t = 0.0; + double t = 0.0; // numerical integration with adaptive step size control: // ------------------------------------------------------ @@ -450,23 +438,18 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to &t, // from t B_.step_, // to t <= step &B_.integration_step_, // integration step size - S_.ode_state_ ); // neuronal state + S_.y_ ); // neuronal state if ( status != GSL_SUCCESS ) { throw GSLSolverFailure( get_name(), status ); } - }*/ - - iaf_wang_2002_dynamics( 0, S_.ode_state_, S_.dy_, reinterpret_cast< void* >( this ) ); - for ( auto i = 0; i < State_::STATE_VEC_SIZE; ++i ) - { - S_.ode_state_[ i ] += B_.step_ * S_.dy_[ i ]; } + // add incoming spikes - S_.ode_state_[ State_::G_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); - S_.ode_state_[ State_::G_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); + S_.y_[ State_::G_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); + S_.y_[ State_::G_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); S_.sum_S_post_ = B_.NMDA_cond_.get_value( lag ); B_.NMDA_cond_.set_value( lag, 0.0 ); @@ -475,15 +458,15 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to { // neuron is absolute refractory --S_.r_; - S_.ode_state_[ State_::V_m ] = P_.V_reset; // clamp potential + S_.y_[ State_::V_m ] = P_.V_reset; // clamp potential } - else if ( S_.ode_state_[ State_::V_m ] >= P_.V_th ) + else if ( S_.y_[ State_::V_m ] >= P_.V_th ) { // neuron is not absolute refractory S_.r_ = V_.RefractoryCounts_; - S_.ode_state_[ State_::V_m ] = P_.V_reset; + S_.y_[ State_::V_m ] = P_.V_reset; - S_.ode_state_[ State_::X_pre ] += 1; + S_.y_[ State_::X_pre ] += 1; // log spike with ArchivingNode set_spiketime( Time::step( origin.get_steps() + lag + 1 ) ); @@ -493,7 +476,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to } // send NMDA update - s_vals[ lag ] = S_.ode_state_[ State_::S_pre ]; + s_vals[ lag ] = S_.y_[ State_::S_pre ]; // set new input current B_.I_stim_ = B_.currents_.get_value( lag ); diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index e57e5aefab..5b341c8b68 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -110,7 +110,6 @@ The following parameters can be set in the status dictionary. gsl_error_tol - GSL error tolerance =============== ======= =========================================================== - Recordables +++++++++++ @@ -163,19 +162,8 @@ EndUserDocs */ class iaf_wang_2002 : public ArchivingNode { public: - /** - * The constructor is only used to create the model prototype in the model manager. - */ iaf_wang_2002(); - - /** - * The copy constructor is used to create model copies and instances of the model. - * @note The copy constructor needs to initialize the parameters and part of the state. - * Initialization of rest of state, buffers and internal variables is deferred to - * @c init_state_(), @c init_buffers_() and @c calibrate(). - */ iaf_wang_2002( const iaf_wang_2002& ); - ~iaf_wang_2002() override; /** @@ -185,23 +173,17 @@ class iaf_wang_2002 : public ArchivingNode */ using Node::handles_test_event; - using Node::sends_secondary_event; +// using Node::sends_secondary_event; using Node::handle; //! Used to validate that we can send SpikeEvent to desired target:port. - size_t send_test_event( Node& target, size_t receptor_type, synindex, bool ) override; + size_t send_test_event( Node&, size_t, synindex, bool ) override; // void sends_secondary_event( DelayedRateConnectionEvent& ) override; - /* ------------------------------------------------------------------------- - * Functions handling incoming events. - * We tell NEST that we can handle incoming events of various types by - * defining handle() for the given event. - * ------------------------------------------------------------------------- */ - void handle( SpikeEvent& ) override; //!< accept spikes // void handle( DelayedRateConnectionEvent& ) override; //!< accept spikes - void handle( CurrentEvent& e ) override; //!< accept current + void handle( CurrentEvent& ) override; //!< accept current void handle( DataLoggingRequest& ) override; //!< allow recording with multimeter size_t handles_test_event( SpikeEvent&, size_t ) override; @@ -223,6 +205,7 @@ class iaf_wang_2002 : public ArchivingNode enum SynapseTypes { INF_SPIKE_RECEPTOR = 0, + AMPA_EXT, AMPA, GABA, NMDA, @@ -235,19 +218,17 @@ class iaf_wang_2002 : public ArchivingNode void calibrate(); void update( Time const&, const long, const long ) override; + + // make dynamics function quasi-member + friend int iaf_wang_2002_dynamics( double, const double*, double*, void* ); + // The next two classes need to be friends to access the State_ class/member friend class RecordablesMap< iaf_wang_2002 >; friend class UniversalDataLogger< iaf_wang_2002 >; - // Parameters class -------------------------------------------------------------- - - /** - * Parameters of the neuron. - * - * These are the parameters that can be set by the user through @c `node.set()`. - * They are initialized from the model prototype when the node is created. - * Parameters do not change during calls to @c update(). - */ +private: + // + // Model parameters struct Parameters_ { double E_L; //!< Resting Potential in mV @@ -300,8 +281,7 @@ class iaf_wang_2002 : public ArchivingNode STATE_VEC_SIZE }; - double ode_state_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver - double dy_[ STATE_VEC_SIZE ]; + double y_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver int r_; //!< number of refractory steps remaining double sum_S_post_; @@ -399,7 +379,7 @@ class iaf_wang_2002 : public ArchivingNode double get_ode_state_elem_() const { - return S_.ode_state_[ elem ]; + return S_.y_[ elem ]; } //! Get the sum of NMDA from state, used by UniversalDataLogger @@ -419,32 +399,41 @@ class iaf_wang_2002 : public ArchivingNode //! Mapping of recordables names to access functions static RecordablesMap< iaf_wang_2002 > recordablesMap_; - friend int iaf_wang_2002_dynamics( double, const double*, double*, void* ); }; /* neuron iaf_wang_2002 */ inline size_t iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bool ) { -// if ( receptor_type != NMDA ) -// { - SpikeEvent e; - e.set_sender( *this ); - return target.handles_test_event( e, receptor_type ); -// } -// else + std::cout << "RECEPTOR TYPE " << receptor_type << std::endl; + if ( receptor_type != NMDA ) + { + SpikeEvent e; + e.set_sender( *this ); + return target.handles_test_event( e, receptor_type ); + } + else { -// DelayedRateConnectionEvent e; -// e.set_sender( *this ); -// return target.handles_test_event( e, receptor_type ); + DelayedRateConnectionEvent e; + e.set_sender( *this ); + return target.handles_test_event( e, receptor_type ); } } inline size_t iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) { - if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) or receptor_type == NMDA ) + std::cout << "====================" << std::endl; + std::cout << "RECEPTOR TYPE " << receptor_type << std::endl; + std::cout << "INF RECEPTOR " << INF_SPIKE_RECEPTOR << std::endl; + std::cout << "SUP RECEPTOR " << SUP_SPIKE_RECEPTOR << std::endl; + std::cout << "====================" << std::endl; + if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) ) //or receptor_type == NMDA ) { + std::cout << "====================" << std::endl; + std::cout << "THROWING ERROR" << receptor_type << std::endl; + std::cout << "====================" << std::endl; + throw UnknownReceptorType( receptor_type, get_name() ); return 0; } From f20c745ea0fd1acb31b3d50001f97b461c368f1f Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 3 Oct 2023 11:38:01 +0200 Subject: [PATCH 007/184] some changes, not sure what --- models/iaf_wang_2002.cpp | 60 +++++++++++++++++----------------------- models/iaf_wang_2002.h | 11 ++------ 2 files changed, 27 insertions(+), 44 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 666d2e5782..b024b31040 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -65,7 +65,7 @@ RecordablesMap< iaf_wang_2002 >::create() } extern "C" inline int -nest::iaf_wang_2002_dynamics( double, const double ode_state[], double f[], void* pnode ) +nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode ) { // a shorthand typedef nest::iaf_wang_2002::State_ S; @@ -74,26 +74,26 @@ nest::iaf_wang_2002_dynamics( double, const double ode_state[], double f[], void assert( pnode ); const nest::iaf_wang_2002& node = *( reinterpret_cast< nest::iaf_wang_2002* >( pnode ) ); - // ode_state[] here is---and must be---the state vector supplied by the integrator, - // not the state vector in the node, node.S_.ode_state[]. + // y[] here is---and must be---the state vector supplied by the integrator, + // not the state vector in the node, node.S_.y[]. - const double I_AMPA = ( ode_state[ S::V_m ] - node.P_.E_ex ) * ode_state[ S::G_AMPA ]; + const double I_AMPA = ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::G_AMPA ]; - const double I_rec_GABA = ( ode_state[ S::V_m ] - node.P_.E_in ) * ode_state[ S::G_GABA ]; + const double I_rec_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::G_GABA ]; - const double I_rec_NMDA = ( ode_state[ S::V_m ] - node.P_.E_ex ) - / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ S::V_m ] ) / 3.57 ) * node.S_.sum_S_post_; + const double I_rec_NMDA = ( y[ S::V_m ] - node.P_.E_ex ) + / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * node.S_.sum_S_post_; const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA - node.B_.I_stim_; - f[ S::V_m ] = ( -node.P_.g_L * ( ode_state[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; + f[ S::V_m ] = ( -node.P_.g_L * ( y[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; - f[ S::G_AMPA ] = -ode_state[ S::G_AMPA ] / node.P_.tau_AMPA; - f[ S::G_GABA ] = -ode_state[ S::G_GABA ] / node.P_.tau_GABA; + f[ S::G_AMPA ] = -y[ S::G_AMPA ] / node.P_.tau_AMPA; + f[ S::G_GABA ] = -y[ S::G_GABA ] / node.P_.tau_GABA; f[ S::S_pre ] = - -ode_state[ S::S_pre ] / node.P_.tau_decay_NMDA + node.P_.alpha * ode_state[ S::X_pre ] * ( 1 - ode_state[ S::S_pre ] ); - f[ S::X_pre ] = -ode_state[ S::X_pre ] / node.P_.tau_rise_NMDA; + -y[ S::S_pre ] / node.P_.tau_decay_NMDA + node.P_.alpha * y[ S::X_pre ] * ( 1 - y[ S::S_pre ] ); + f[ S::X_pre ] = -y[ S::X_pre ] / node.P_.tau_rise_NMDA; return GSL_SUCCESS; } @@ -333,7 +333,7 @@ nest::iaf_wang_2002::init_state_() void nest::iaf_wang_2002::init_buffers_() { - B_.spikes_.resize( 2 ); + B_.spikes_.resize( 3 ); for ( auto& sb : B_.spikes_ ) { @@ -446,14 +446,23 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to } } + - // add incoming spikes +// std::cout << "B_.spikes_[ AMPA - 1 ].get_value( lag ): " << B_.spikes_[ AMPA - 1 ].get_value( lag ) << std::endl; +// std::cout << "B_.spikes_[ GABA - 1 ].get_value( lag ): " << B_.spikes_[ GABA - 1 ].get_value( lag ) << std::endl; +// std::cout << "S_.y_[ State_::G_AMPA ]: " << S_.y_[ State_::G_AMPA ] << std::endl; +// std::cout << "S_.y_[ State_::G_GABA ]: " << S_.y_[ State_::G_GABA ] << std::endl; + + S_.y_[ State_::G_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); + S_.y_[ State_::G_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); + + // add incoming spikes S_.y_[ State_::G_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); S_.y_[ State_::G_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); S_.sum_S_post_ = B_.NMDA_cond_.get_value( lag ); B_.NMDA_cond_.set_value( lag, 0.0 ); - // absolute refractory period + // absolute refractory period if ( S_.r_ ) { // neuron is absolute refractory @@ -483,11 +492,8 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // voltage logging B_.logger_.record_data( origin.get_steps() + lag ); + std::cout << "Inside update" << std::endl; } - -// DelayedRateConnectionEvent drce; -// drce.set_coeffarray( s_vals ); -// kernel().event_delivery_manager.send_secondary( *this, drce ); } // Do not move this function as inline to h-file. It depends on @@ -510,22 +516,6 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); } -// void -// nest::iaf_wang_2002::handle( DelayedRateConnectionEvent& e ) -// { -// assert( e.get_delay_steps() > 0 ); -// assert( e.get_rport() == NMDA ); -// -// const double weight = e.get_weight(); -// long delay = e.get_delay_steps(); -// -// for ( auto it = e.begin(); it != e.end(); ++delay ) -// { -// B_.NMDA_cond_.add_value( delay, weight * e.get_coeffvalue( it ) ); -// } -// -// } - void nest::iaf_wang_2002::handle( CurrentEvent& e ) { diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 5b341c8b68..9f2239cb3e 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -239,6 +239,7 @@ class iaf_wang_2002 : public ArchivingNode double C_m; //!< Membrane Capacitance in pF double g_L; //!< Leak Conductance in nS double t_ref; //!< Refractory period in ms + double tau_AMPA_ext; //!< Synaptic Time Constant AMPA Synapse in ms double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms double tau_rise_NMDA; //!< Synaptic Rise Time Constant NMDA Synapse in ms @@ -274,6 +275,7 @@ class iaf_wang_2002 : public ArchivingNode enum StateVecElems { V_m = 0, + G_AMPA_ext, G_AMPA, G_GABA, S_pre, @@ -423,17 +425,8 @@ iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bo inline size_t iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) { - std::cout << "====================" << std::endl; - std::cout << "RECEPTOR TYPE " << receptor_type << std::endl; - std::cout << "INF RECEPTOR " << INF_SPIKE_RECEPTOR << std::endl; - std::cout << "SUP RECEPTOR " << SUP_SPIKE_RECEPTOR << std::endl; - std::cout << "====================" << std::endl; if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) ) //or receptor_type == NMDA ) { - std::cout << "====================" << std::endl; - std::cout << "THROWING ERROR" << receptor_type << std::endl; - std::cout << "====================" << std::endl; - throw UnknownReceptorType( receptor_type, get_name() ); return 0; } From 4731cde43bd4a6ccb9ace6a9c8cbf5d3399dfe75 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 6 Oct 2023 15:52:08 +0200 Subject: [PATCH 008/184] new dynamics in place, not tested yet --- models/iaf_wang_2002.cpp | 115 +++++++++++++++++--------------------- models/iaf_wang_2002.h | 79 ++++++++++---------------- nestkernel/nest_names.cpp | 3 + nestkernel/nest_names.h | 3 + 4 files changed, 85 insertions(+), 115 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index b024b31040..31d2896afe 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -58,9 +58,9 @@ RecordablesMap< iaf_wang_2002 >::create() { // add state variables to recordables map insert_( names::V_m, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::V_m > ); - insert_( names::g_AMPA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::G_AMPA > ); - insert_( names::g_GABA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::G_GABA > ); - insert_( names::NMDA_sum, &iaf_wang_2002::get_NMDA_sum_ ); + insert_( names::s_AMPA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_AMPA > ); + insert_( names::s_GABA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_GABA > ); + insert_( names::s_NMDA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_NMDA > ); } } @@ -77,23 +77,20 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode // y[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.y[]. - const double I_AMPA = ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::G_AMPA ]; + const double I_AMPA = ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ]; - const double I_rec_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::G_GABA ]; + const double I_rec_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; const double I_rec_NMDA = ( y[ S::V_m ] - node.P_.E_ex ) - / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * node.S_.sum_S_post_; + / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * y[ S::s_NMDA ]; const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA - node.B_.I_stim_; f[ S::V_m ] = ( -node.P_.g_L * ( y[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; - f[ S::G_AMPA ] = -y[ S::G_AMPA ] / node.P_.tau_AMPA; - f[ S::G_GABA ] = -y[ S::G_GABA ] / node.P_.tau_GABA; - - f[ S::S_pre ] = - -y[ S::S_pre ] / node.P_.tau_decay_NMDA + node.P_.alpha * y[ S::X_pre ] * ( 1 - y[ S::S_pre ] ); - f[ S::X_pre ] = -y[ S::X_pre ] / node.P_.tau_rise_NMDA; + f[ S::s_AMPA ] = -y[ S::s_AMPA ] / node.P_.tau_AMPA; + f[ S::s_NMDA ] = -y[ S::s_AMPA ] / node.P_.tau_decay_NMDA; + f[ S::s_GABA ] = -y[ S::s_GABA ] / node.P_.tau_GABA; return GSL_SUCCESS; } @@ -115,7 +112,6 @@ nest::iaf_wang_2002::Parameters_::Parameters_() , t_ref( 2.0 ) // ms , tau_AMPA( 2.0 ) // ms , tau_GABA( 5.0 ) // ms - , tau_rise_NMDA( 2.0 ) // ms , tau_decay_NMDA( 100 ) // ms , alpha( 0.5 ) // 1 / ms , conc_Mg2( 1 ) // mM @@ -125,30 +121,27 @@ nest::iaf_wang_2002::Parameters_::Parameters_() nest::iaf_wang_2002::State_::State_( const Parameters_& p ) : r_( 0 ) - , sum_S_post_( 0 ) { y_[ V_m ] = p.E_L; // initialize to reversal potential - y_[ G_AMPA ] = 0.0; - y_[ G_GABA ] = 0.0; - y_[ S_pre ] = 0.0; - y_[ X_pre ] = 0.0; + y_[ s_AMPA ] = 0.0; + y_[ s_GABA ] = 0.0; + y_[ s_NMDA ] = 0.0; } nest::iaf_wang_2002::State_::State_( const State_& s ) : r_( s.r_ ) - , sum_S_post_( s.sum_S_post_ ) { y_[ V_m ] = s.y_[ V_m ]; - y_[ G_AMPA ] = s.y_[ G_AMPA ]; - y_[ G_GABA ] = s.y_[ G_GABA ]; - y_[ S_pre ] = s.y_[ S_pre ]; - y_[ X_pre ] = s.y_[ X_pre ]; + y_[ s_AMPA ] = s.y_[ s_AMPA ]; + y_[ s_GABA ] = s.y_[ s_GABA ]; + y_[ s_NMDA ] = s.y_[ s_NMDA ]; } nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) : logger_( n ) - , spikes_() - , NMDA_cond_() + , spike_AMPA() + , spike_GABA() + , spike_NMDA() , s_( nullptr ) , c_( nullptr ) , e_( nullptr ) @@ -160,13 +153,9 @@ nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) nest::iaf_wang_2002::Buffers_::Buffers_( const Buffers_&, iaf_wang_2002& n ) : logger_( n ) - , spikes_() - , NMDA_cond_() , s_( nullptr ) , c_( nullptr ) , e_( nullptr ) - , step_( Time::get_resolution().get_ms() ) - , integration_step_( step_ ) { // Initialization of the remaining members is deferred to init_buffers_(). } @@ -254,8 +243,9 @@ void nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const { def< double >( d, names::V_m, y_[ V_m ] ); // Membrane potential - def< double >( d, names::g_AMPA, y_[ G_AMPA ] ); - def< double >( d, names::g_GABA, y_[ G_GABA ] ); + def< double >( d, names::s_AMPA, y_[ s_AMPA ] ); + def< double >( d, names::s_GABA, y_[ s_GABA ] ); + def< double >( d, names::s_NMDA, y_[ s_NMDA] ); // total NMDA sum double NMDA_sum = get_NMDA_sum(); @@ -266,8 +256,9 @@ void nest::iaf_wang_2002::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) { updateValueParam< double >( d, names::V_m, y_[ V_m ], node ); - updateValueParam< double >( d, names::g_AMPA, y_[ G_AMPA ], node ); - updateValueParam< double >( d, names::g_GABA, y_[ G_GABA ], node ); + updateValueParam< double >( d, names::s_AMPA, y_[ s_AMPA ], node ); + updateValueParam< double >( d, names::s_GABA, y_[ s_GABA ], node ); + updateValueParam< double >( d, names::s_NMDA, y_[ s_NMDA ], node ); } /* --------------------------------------------------------------------------- @@ -333,14 +324,9 @@ nest::iaf_wang_2002::init_state_() void nest::iaf_wang_2002::init_buffers_() { - B_.spikes_.resize( 3 ); - - for ( auto& sb : B_.spikes_ ) - { - sb.clear(); // includes resize - } - - B_.NMDA_cond_.clear(); + B_.spike_AMPA.clear(); + B_.spike_GABA.clear(); + B_.spike_NMDA.clear(); B_.currents_.clear(); // includes resize B_.logger_.reset(); // includes resize @@ -446,23 +432,12 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to } } - - -// std::cout << "B_.spikes_[ AMPA - 1 ].get_value( lag ): " << B_.spikes_[ AMPA - 1 ].get_value( lag ) << std::endl; -// std::cout << "B_.spikes_[ GABA - 1 ].get_value( lag ): " << B_.spikes_[ GABA - 1 ].get_value( lag ) << std::endl; -// std::cout << "S_.y_[ State_::G_AMPA ]: " << S_.y_[ State_::G_AMPA ] << std::endl; -// std::cout << "S_.y_[ State_::G_GABA ]: " << S_.y_[ State_::G_GABA ] << std::endl; - - S_.y_[ State_::G_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); - S_.y_[ State_::G_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); - // add incoming spikes - S_.y_[ State_::G_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); - S_.y_[ State_::G_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); - S_.sum_S_post_ = B_.NMDA_cond_.get_value( lag ); - B_.NMDA_cond_.set_value( lag, 0.0 ); + // add incoming spikes + S_.y_[ State_::s_AMPA ] += B_.spike_AMPA.get_value( lag ); + S_.y_[ State_::s_GABA ] += B_.spike_GABA.get_value( lag ); + S_.y_[ State_::s_NMDA ] += B_.spike_NMDA.get_value( lag ); - // absolute refractory period if ( S_.r_ ) { // neuron is absolute refractory @@ -475,18 +450,22 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to S_.r_ = V_.RefractoryCounts_; S_.y_[ State_::V_m ] = P_.V_reset; - S_.y_[ State_::X_pre ] += 1; + // get previous spike time + double t_lastspike = get_spiketime_ms(); + // log spike with ArchivingNode set_spiketime( Time::step( origin.get_steps() + lag + 1 ) ); + double t_spike = get_spiketime_ms(); + + // compute current value of s_NMDA and add NMDA update to spike offset + S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); SpikeEvent se; + se.set_offset( P_.alpha * ( 1 - S_.s_NMDA_pre )); kernel().event_delivery_manager.send( *this, se, lag ); } - // send NMDA update - s_vals[ lag ] = S_.y_[ State_::S_pre ]; - // set new input current B_.I_stim_ = B_.currents_.get_value( lag ); @@ -508,12 +487,20 @@ void nest::iaf_wang_2002::handle( SpikeEvent& e ) { assert( e.get_delay_steps() > 0 ); - assert( e.get_rport() < NMDA ); - const double steps = e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ); + if ( e.get_weight() > 0.0 ) + { + B_.spike_AMPA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + e.get_weight() * e.get_multiplicity() ); - const auto rport = e.get_rport(); - B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); + B_.spike_NMDA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + e.get_weight() * e.get_multiplicity() * e.get_offset() ); + } + else + { + B_.spike_GABA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + -e.get_weight() * e.get_multiplicity() ); + } } void diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 9f2239cb3e..5d3693515b 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -100,7 +100,13 @@ The following parameters can be set in the status dictionary. V_reset mV Reset potential C_m pF Membrane capacitance g_L nS Leak conductance + g_AMPA_ext nS Peak external AMPA conductance + g_AMPA nS Peak recurrent AMPA conductance + g_NMDA nS Peak recurrent NMDA conductance + g_GABA nS Peak recurrent GABA conductance + g_L nS Leak conductance t_ref ms Refractory period + tau_AMPA_ext ms Synaptic time constant for external AMPA synapse tau_AMPA ms Synaptic time constant for AMPA synapse tau_GABA ms Synaptic time constant for GABA synapse tau_rise_NMDA ms Synaptic rise time constant for NMDA synapse @@ -117,8 +123,9 @@ The following values can be recorded. =========== =========================================================== V_m Membrane potential - g_AMPA AMPA gate - g_GABA GABA gate + s_AMPA AMPA gate + s_AMPA_ext external AMPA gate + s_GABA GABA gate NMDA_sum sum of NMDA over all presynaptic neurons j =========== =========================================================== @@ -205,10 +212,8 @@ class iaf_wang_2002 : public ArchivingNode enum SynapseTypes { INF_SPIKE_RECEPTOR = 0, - AMPA_EXT, - AMPA, + AMPA_NMDA, GABA, - NMDA, SUP_SPIKE_RECEPTOR }; @@ -218,7 +223,6 @@ class iaf_wang_2002 : public ArchivingNode void calibrate(); void update( Time const&, const long, const long ) override; - // make dynamics function quasi-member friend int iaf_wang_2002_dynamics( double, const double*, double*, void* ); @@ -238,8 +242,12 @@ class iaf_wang_2002 : public ArchivingNode double V_reset; //!< Reset Potential in mV double C_m; //!< Membrane Capacitance in pF double g_L; //!< Leak Conductance in nS + double g_GABA; //!< Peak conductance GABA + double g_NMDA; //!< Peak conductance NMDA + double g_AMPA; //!< Peak conductance AMPA + double g_AMPA_ext; //!< Peak conductance external AMPA double t_ref; //!< Refractory period in ms - double tau_AMPA_ext; //!< Synaptic Time Constant AMPA Synapse in ms + double tau_AMPA_ext; //!< Synaptic Time Constant external AMPA Synapse in ms double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms double tau_rise_NMDA; //!< Synaptic Rise Time Constant NMDA Synapse in ms @@ -275,21 +283,20 @@ class iaf_wang_2002 : public ArchivingNode enum StateVecElems { V_m = 0, - G_AMPA_ext, - G_AMPA, - G_GABA, - S_pre, - X_pre, + s_AMPA, + s_NMDA, + s_GABA, STATE_VEC_SIZE }; double y_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver int r_; //!< number of refractory steps remaining - double sum_S_post_; State_( const Parameters_& ); //!< Default initialization State_( const State_& ); + double s_NMDA_pre; + void get( DictionaryDatum& ) const; void set( const DictionaryDatum&, const Parameters_&, Node* ); @@ -328,8 +335,9 @@ class iaf_wang_2002 : public ArchivingNode // ----------------------------------------------------------------------- // Buffers and sums of incoming spikes and currents per timestep // ----------------------------------------------------------------------- - std::vector< RingBuffer > spikes_; - RingBuffer NMDA_cond_; + RingBuffer spike_AMPA; + RingBuffer spike_GABA; + RingBuffer spike_NMDA; RingBuffer currents_; // ----------------------------------------------------------------------- @@ -408,48 +416,21 @@ inline size_t iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bool ) { std::cout << "RECEPTOR TYPE " << receptor_type << std::endl; - if ( receptor_type != NMDA ) - { - SpikeEvent e; - e.set_sender( *this ); - return target.handles_test_event( e, receptor_type ); - } - else - { - DelayedRateConnectionEvent e; - e.set_sender( *this ); - return target.handles_test_event( e, receptor_type ); - } + SpikeEvent e; + e.set_sender( *this ); + return target.handles_test_event( e, receptor_type ); } inline size_t iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) { - if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) ) //or receptor_type == NMDA ) + if ( receptor_type != 0 ) { throw UnknownReceptorType( receptor_type, get_name() ); - return 0; - } - else - { - return receptor_type; } + return 0; } -// inline size_t -// iaf_wang_2002::handles_test_event( DelayedRateConnectionEvent&, size_t receptor_type ) -// { -// if ( receptor_type != NMDA ) -// { -// throw UnknownReceptorType( receptor_type, get_name() ); -// return 0; -// } -// else -// { -// return receptor_type; -// } -// } - inline size_t iaf_wang_2002::handles_test_event( CurrentEvent&, size_t receptor_type ) { @@ -487,10 +468,6 @@ iaf_wang_2002::get_status( DictionaryDatum& d ) const DictionaryDatum receptor_type = new Dictionary(); - ( *receptor_type )[ names::AMPA ] = AMPA; - ( *receptor_type )[ names::GABA ] = GABA; - ( *receptor_type )[ names::NMDA ] = NMDA; - ( *d )[ names::receptor_types ] = receptor_type; ( *d )[ names::recordables ] = recordablesMap_.get_list(); diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 18405a3f07..c22de3f4ec 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -404,6 +404,9 @@ const Name receptor_idx( "receptor_idx" ); const Name S( "S" ); const Name S_act_NMDA( "S_act_NMDA" ); +const Name s_NMDA( "S_NMDA" ); +const Name s_AMPA( "S_AMPA" ); +const Name s_GABA( "S_GABA" ); const Name sdev( "sdev" ); const Name send_buffer_size_secondary_events( "send_buffer_size_secondary_events" ); const Name senders( "senders" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index f071f1d8f7..b210c14ac5 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -429,6 +429,9 @@ extern const Name rule; extern const Name S; extern const Name S_act_NMDA; +extern const Name s_GABA; +extern const Name s_AMPA; +extern const Name s_NMDA; extern const Name sdev; extern const Name senders; extern const Name send_buffer_size_secondary_events; From c5347b2d6213814c3a0ab323adca071cea75278d Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 18 Oct 2023 14:54:11 +0200 Subject: [PATCH 009/184] solution verified analytically --- pynest/examples/wang_neuron.py | 100 +++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 pynest/examples/wang_neuron.py diff --git a/pynest/examples/wang_neuron.py b/pynest/examples/wang_neuron.py new file mode 100644 index 0000000000..3de41e62cd --- /dev/null +++ b/pynest/examples/wang_neuron.py @@ -0,0 +1,100 @@ +import nest +import matplotlib.pyplot as plt +import numpy as np + +nest.rng_seed = 12345 + +w_ex = 40. +w_in = -15. +alpha = 0.5 +tau_AMPA = 2.0 +tau_GABA = 5.0 +tau_NMDA = 100.0 +nrn1 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, + "tau_GABA": tau_GABA, + "tau_rise_NMDA": tau_NMDA}) + +pg = nest.Create("poisson_generator", {"rate": 50.}) +sr = nest.Create("spike_recorder") +nrn2 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, + "tau_GABA": tau_GABA, + "tau_rise_NMDA": tau_NMDA, + "t_ref": 0.}) + +mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) +mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) + +ex_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ex} + +in_syn_spec = {"synapse_model": "static_synapse", + "weight": w_in} + +conn_spec = {"rule": "all_to_all"} + +def s_soln(w, t, tau): + isyn = np.zeros_like(t) + useinds = t >= 0. + isyn[useinds] = w * np.exp(-t[useinds] / tau) + return isyn + +def spiketrain_response(t, tau, spiketrain, w): + response = np.zeros_like(t) + for sp in spiketrain: + t_ = t - 1. - sp + zero_arg = t_ == 0. + response += s_soln(w, t_, tau) + return response + +def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): + response = np.zeros_like(t) + for sp in spiketrain: + t_ = t - 1. - sp + zero_arg = t_ == 0. + w_ = w * alpha * (1 - response[zero_arg]) + w_ = min(w_, 1 - response[zero_arg]) + response += s_soln(w_, t_, tau) + return response + +nest.Connect(pg, nrn1, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, sr) +nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) +nest.Connect(mm1, nrn1) + +nest.Connect(mm2, nrn2) + +nest.Simulate(1000.) + +# get spike times from membrane potential +# cannot use spike_recorder because we abuse exact spike timing +V_m = mm1.get("events", "V_m") +times = mm1.get("events", "times") +diff = np.ediff1d(V_m, to_begin=0.) +spikes = sr.get("events", "times") +spikes = times[diff < -3] + +# compute analytical solutions +times = mm1.get("events", "times") +ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) +nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) +gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) + +fig, ax = plt.subplots(4,2) +ax[0,0].plot(mm1.events["V_m"]) +ax[0,1].plot(mm2.events["V_m"]) + +ax[1,0].plot(mm1.events["s_AMPA"]) +ax[1,1].plot(mm2.events["s_AMPA"]) +ax[1,1].plot(ampa_soln, '--') + +ax[2,0].plot(mm1.events["s_GABA"]) +ax[2,1].plot(mm2.events["s_GABA"]) +ax[2,1].plot(gaba_soln, '--') + +ax[3,0].plot(mm1.events["s_NMDA"]) +ax[3,1].plot(mm2.events["s_NMDA"]) +ax[3,1].plot(nmda_soln, '--') + +plt.show() + From abc08d4eb67e1d89821f0c3d1f5be7a5222c73f4 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 25 Oct 2023 17:37:35 +0200 Subject: [PATCH 010/184] fix receptor port for external input, WIP reproduce wang2002 --- models/iaf_wang_2002.cpp | 21 ++++++--- models/iaf_wang_2002.h | 21 +++++++-- pynest/examples/wang_decision_making.py | 58 +++++++++++++++++++++++++ pynest/examples/wang_neuron.py | 7 +-- 4 files changed, 93 insertions(+), 14 deletions(-) create mode 100644 pynest/examples/wang_decision_making.py diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 31d2896afe..c9a6d90e7f 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -89,7 +89,7 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode f[ S::V_m ] = ( -node.P_.g_L * ( y[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; f[ S::s_AMPA ] = -y[ S::s_AMPA ] / node.P_.tau_AMPA; - f[ S::s_NMDA ] = -y[ S::s_AMPA ] / node.P_.tau_decay_NMDA; + f[ S::s_NMDA ] = -y[ S::s_NMDA ] / node.P_.tau_decay_NMDA; f[ S::s_GABA ] = -y[ S::s_GABA ] / node.P_.tau_GABA; return GSL_SUCCESS; @@ -437,7 +437,10 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to S_.y_[ State_::s_AMPA ] += B_.spike_AMPA.get_value( lag ); S_.y_[ State_::s_GABA ] += B_.spike_GABA.get_value( lag ); S_.y_[ State_::s_NMDA ] += B_.spike_NMDA.get_value( lag ); - + if ( S_.y_[ State_::s_NMDA ] > 1 ) + { + S_.y_[ State_::s_NMDA ] = 1; + } if ( S_.r_ ) { // neuron is absolute refractory @@ -453,7 +456,6 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // get previous spike time double t_lastspike = get_spiketime_ms(); - // log spike with ArchivingNode set_spiketime( Time::step( origin.get_steps() + lag + 1 ) ); @@ -461,8 +463,11 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // compute current value of s_NMDA and add NMDA update to spike offset S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); + double s_NMDA_delta = P_.alpha * (1 - S_.s_NMDA_pre); + S_.s_NMDA_pre += s_NMDA_delta; + SpikeEvent se; - se.set_offset( P_.alpha * ( 1 - S_.s_NMDA_pre )); + se.set_offset( s_NMDA_delta ); kernel().event_delivery_manager.send( *this, se, lag ); } @@ -471,7 +476,6 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // voltage logging B_.logger_.record_data( origin.get_steps() + lag ); - std::cout << "Inside update" << std::endl; } } @@ -487,14 +491,17 @@ void nest::iaf_wang_2002::handle( SpikeEvent& e ) { assert( e.get_delay_steps() > 0 ); + std::cout << "rport: " << e.get_rport() << std::endl; if ( e.get_weight() > 0.0 ) { B_.spike_AMPA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_multiplicity() ); - - B_.spike_NMDA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + + if ( e.get_rport() == 0 ) { + B_.spike_NMDA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_multiplicity() * e.get_offset() ); + } } else { diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 5d3693515b..cf092affaa 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -205,6 +205,12 @@ class iaf_wang_2002 : public ArchivingNode void get_status( DictionaryDatum& ) const override; void set_status( const DictionaryDatum& ) override; + bool + is_off_grid() const override + { + return true; + } + private: /** * Synapse types to connect to @@ -295,7 +301,7 @@ class iaf_wang_2002 : public ArchivingNode State_( const Parameters_& ); //!< Default initialization State_( const State_& ); - double s_NMDA_pre; + double s_NMDA_pre = 0; void get( DictionaryDatum& ) const; void set( const DictionaryDatum&, const Parameters_&, Node* ); @@ -424,11 +430,18 @@ iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bo inline size_t iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) { - if ( receptor_type != 0 ) + if ( receptor_type == 0 ) + { + return 0; + } + else if ( receptor_type == 1 ) + { + return 1; + } + else { throw UnknownReceptorType( receptor_type, get_name() ); } - return 0; } inline size_t @@ -468,7 +481,7 @@ iaf_wang_2002::get_status( DictionaryDatum& d ) const DictionaryDatum receptor_type = new Dictionary(); - ( *d )[ names::receptor_types ] = receptor_type; +// ( *d )[ names::receptor_types ] = receptor_type; ( *d )[ names::recordables ] = recordablesMap_.get_list(); } diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py new file mode 100644 index 0000000000..a57e84520d --- /dev/null +++ b/pynest/examples/wang_decision_making.py @@ -0,0 +1,58 @@ +import nest +import matplotlib.pyplot as plt +import numpy as np + +np.random.seed(123) +rng = np.random.default_rng() + +epop_params = {"g_AMPA_ext": 2.1, + "g_AMPA_rec": 0.05, + "g_NMDA": 0.165, + "g_GABA": 1.3, + "tau_GABA": 5.0, + "tau_AMPA": 2.0, + "tau_decay_NMDA": 100.0, + "alpha": 0.5, + "conc_Mg2": 1.0, + "g_L": 25. # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "C_m": 500.0, # membrane capacitance + "t_ref": 2.0 # refreactory period + } + + +ipop_params = {"g_AMPA_ext": 1.62, + "g_AMPA_rec": 0.04, + "g_NMDA": 0.13, + "g_GABA": 1.0, + "tau_GABA": 5.0, + "tau_AMPA": 2.0, + "tau_decay_NMDA": 100.0, + "alpha": 0.5, + "conc_Mg2": 1.0, + "g_L": 20. # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "C_m": 200.0, # membrane capacitance + "t_ref": 1.0 # refreactory period + } + +NE = 1600 +NI = 400 + + + +epop1 = nest.Create("iaf_wang_2002", int(0.5 * NE)) +epop2 = nest.Create("iaf_wang_2002", int(0.5 * NE)) +ipop = nest.Create("iaf_wang_2002", NE) + + + + + + diff --git a/pynest/examples/wang_neuron.py b/pynest/examples/wang_neuron.py index 3de41e62cd..562a73642d 100644 --- a/pynest/examples/wang_neuron.py +++ b/pynest/examples/wang_neuron.py @@ -12,20 +12,21 @@ tau_NMDA = 100.0 nrn1 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, "tau_GABA": tau_GABA, - "tau_rise_NMDA": tau_NMDA}) + "tau_decay_NMDA": tau_NMDA}) pg = nest.Create("poisson_generator", {"rate": 50.}) sr = nest.Create("spike_recorder") nrn2 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, "tau_GABA": tau_GABA, - "tau_rise_NMDA": tau_NMDA, + "tau_decay_NMDA": tau_NMDA, "t_ref": 0.}) mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) ex_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex} + "weight": w_ex, + "receptor_type": 0} in_syn_spec = {"synapse_model": "static_synapse", "weight": w_in} From fc17cf5206c4197873a3578925a0656064f67873 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 25 Oct 2023 17:38:33 +0200 Subject: [PATCH 011/184] lower case s for gating variable --- nestkernel/nest_names.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index c22de3f4ec..83d98fb6d5 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -404,9 +404,9 @@ const Name receptor_idx( "receptor_idx" ); const Name S( "S" ); const Name S_act_NMDA( "S_act_NMDA" ); -const Name s_NMDA( "S_NMDA" ); -const Name s_AMPA( "S_AMPA" ); -const Name s_GABA( "S_GABA" ); +const Name s_NMDA( "s_NMDA" ); +const Name s_AMPA( "s_AMPA" ); +const Name s_GABA( "s_GABA" ); const Name sdev( "sdev" ); const Name send_buffer_size_secondary_events( "send_buffer_size_secondary_events" ); const Name senders( "senders" ); From 9ac001261bf4faa66b0b24f478abebe841e5b70a Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 30 Oct 2023 11:45:30 +0100 Subject: [PATCH 012/184] test works --- testsuite/pytests/test_iaf_wang_2002.py | 125 ++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 testsuite/pytests/test_iaf_wang_2002.py diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py new file mode 100644 index 0000000000..dd413a226f --- /dev/null +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -0,0 +1,125 @@ +# -*- coding: utf-8 -*- +# +# test_iaf_wang_2002.py +# +# This file is part of NEST. +# +# Copyright (C) 2004 The NEST Initiative +# +# NEST is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# NEST is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with NEST. If not, see . + +""" +Tests synaptic dynamics of iaf_wang_2002. Since the neuron is conductance based, +it is impossible to analytically confirm the membrane potential, but all the +synaptic currents can be computed analytically (for the simplified implementation +we use). The integration of the membrane potential is not tested here. +""" + + + +import nest +import numpy as np +import numpy.testing as nptest +import pytest + +def s_soln(w, t, tau): + """ + Solution for GABA/AMPA receptors + """ + isyn = np.zeros_like(t) + useinds = t >= 0. + isyn[useinds] = w * np.exp(-t[useinds] / tau) + return isyn + +def spiketrain_response(t, tau, spiketrain, w): + response = np.zeros_like(t) + for sp in spiketrain: + t_ = t - 1. - sp + zero_arg = t_ == 0. + response += s_soln(w, t_, tau) + return response + +def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): + """ + Solution for NMDA receptors + """ + response = np.zeros_like(t) + for sp in spiketrain: + t_ = t - 1. - sp + zero_arg = t_ == 0. + w_ = w * alpha * (1 - response[zero_arg]) + w_ = min(w_, 1 - response[zero_arg]) + response += s_soln(w_, t_, tau) + return response + +def test_wang(): + w_ex = 40. + w_in = -15. + alpha = 0.5 + tau_AMPA = 2.0 + tau_GABA = 5.0 + tau_NMDA = 100.0 + + # Create 2 neurons, so that the Wang dynamics are present + nrn1 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, + "tau_GABA": tau_GABA, + "tau_decay_NMDA": tau_NMDA}) + + pg = nest.Create("poisson_generator", {"rate": 50.}) + sr = nest.Create("spike_recorder") + nrn2 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, + "tau_GABA": tau_GABA, + "tau_decay_NMDA": tau_NMDA, + "t_ref": 0.}) + + mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) + mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) + + ex_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ex, + "receptor_type": 0} + + in_syn_spec = {"synapse_model": "static_synapse", + "weight": w_in} + + conn_spec = {"rule": "all_to_all"} + + + nest.Connect(pg, nrn1, syn_spec=ex_syn_spec, conn_spec=conn_spec) + nest.Connect(nrn1, sr) + nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) + nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) + nest.Connect(mm1, nrn1) + + nest.Connect(mm2, nrn2) + + nest.Simulate(1000.) + + # get spike times from membrane potential + # cannot use spike_recorder because we abuse exact spike timing + V_m = mm1.get("events", "V_m") + times = mm1.get("events", "times") + diff = np.ediff1d(V_m, to_begin=0.) + spikes = sr.get("events", "times") + spikes = times[diff < -3] + + # compute analytical solutions + times = mm1.get("events", "times") + ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) + nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) + gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) + + nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) + nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) + nptest.assert_array_almost_equal(nmda_soln, mm2.events["s_NMDA"]) From ca4a7ec419b53519a4d9f20656ac20e785c4738a Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 6 Nov 2023 11:38:53 +0100 Subject: [PATCH 013/184] remove unneccessary lines --- models/iaf_wang_2002.cpp | 1 - models/iaf_wang_2002.h | 24 ++---------------------- testsuite/pytests/test_iaf_wang_2002.py | 2 -- 3 files changed, 2 insertions(+), 25 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index c9a6d90e7f..ffde39d7c6 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -491,7 +491,6 @@ void nest::iaf_wang_2002::handle( SpikeEvent& e ) { assert( e.get_delay_steps() > 0 ); - std::cout << "rport: " << e.get_rport() << std::endl; if ( e.get_weight() > 0.0 ) { diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index cf092affaa..4bbbe53ef5 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -55,9 +55,10 @@ namespace nest */ extern "C" inline int iaf_wang_2002_dynamics( double, const double*, double*, void* ); - /* BeginUserDocs: neuron, integrate-and-fire, conductance-based +DOCUMENTATION WILL BE UPDATED + Short description +++++++++++++++++ @@ -91,7 +92,6 @@ Parameters The following parameters can be set in the status dictionary. - =============== ======= =========================================================== E_L mV Resting potential E_ex mV Excitatory reversal potential @@ -306,18 +306,6 @@ class iaf_wang_2002 : public ArchivingNode void get( DictionaryDatum& ) const; void set( const DictionaryDatum&, const Parameters_&, Node* ); - //! Get the sum of NMDA over all presynaptic neurons - double - get_NMDA_sum() const - { - /*double NMDA_sum = 0.0; - for ( size_t i = G_NMDA_base; i < state_vec_size; i += 2 ) - { - NMDA_sum += ode_state_[ i + 1 ]; - } - return NMDA_sum;*/ - return -1; - } }; @@ -398,13 +386,6 @@ class iaf_wang_2002 : public ArchivingNode return S_.y_[ elem ]; } - //! Get the sum of NMDA from state, used by UniversalDataLogger - double - get_NMDA_sum_() const - { - return S_.get_NMDA_sum(); - } - // Data members ----------------------------------------------------------- // keep the order of these lines, seems to give best performance @@ -421,7 +402,6 @@ class iaf_wang_2002 : public ArchivingNode inline size_t iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bool ) { - std::cout << "RECEPTOR TYPE " << receptor_type << std::endl; SpikeEvent e; e.set_sender( *this ); return target.handles_test_event( e, receptor_type ); diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index dd413a226f..4b8ff93cfd 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -27,7 +27,6 @@ """ - import nest import numpy as np import numpy.testing as nptest @@ -94,7 +93,6 @@ def test_wang(): "weight": w_in} conn_spec = {"rule": "all_to_all"} - nest.Connect(pg, nrn1, syn_spec=ex_syn_spec, conn_spec=conn_spec) nest.Connect(nrn1, sr) From d9653dafa2dc08d4e19fed9d6ad9fe6f7387003f Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 6 Nov 2023 16:28:09 +0100 Subject: [PATCH 014/184] compilation bug wip --- models/iaf_wang_2002.cpp | 36 ++++++++------ models/iaf_wang_2002.h | 8 +--- modelsets/full | 2 +- nestkernel/nest_names.cpp | 1 + nestkernel/nest_names.h | 1 + pynest/examples/wang_decision_making.py | 64 +++++++++++++++++++++++-- 6 files changed, 84 insertions(+), 28 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index ffde39d7c6..e8f82ae45e 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -48,6 +48,11 @@ nest::RecordablesMap< nest::iaf_wang_2002 > nest::iaf_wang_2002::recordablesMap_ namespace nest { +void +register_iaf_wang_2002( const std::string& name ) +{ + register_node_model< iaf_wang_2002 >( name ); +} /* * Override the create() method with one call to RecordablesMap::insert_() * for each quantity to be recorded. @@ -109,6 +114,10 @@ nest::iaf_wang_2002::Parameters_::Parameters_() , V_reset( -60.0 ) // mV , C_m( 500.0 ) // pF , g_L( 25.0 ) // nS + , g_GABA ( 1.3 ) // + , g_NMDA ( 0.165 ) // + , g_AMPA ( 0.05 ) // + , g_AMPA_ext ( 1.3 ) // , t_ref( 2.0 ) // ms , tau_AMPA( 2.0 ) // ms , tau_GABA( 5.0 ) // ms @@ -174,10 +183,13 @@ nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const def< double >( d, names::V_reset, V_reset ); def< double >( d, names::C_m, C_m ); def< double >( d, names::g_L, g_L ); + def< double >( d, names::g_GABA, g_GABA ); + def< double >( d, names::g_NMDA, g_NMDA ); + def< double >( d, names::g_AMPA, g_AMPA ); + def< double >( d, names::g_AMPA_ext, g_AMPA_ext ); def< double >( d, names::t_ref, t_ref ); def< double >( d, names::tau_AMPA, tau_AMPA ); def< double >( d, names::tau_GABA, tau_GABA ); - def< double >( d, names::tau_rise_NMDA, tau_rise_NMDA ); def< double >( d, names::tau_decay_NMDA, tau_decay_NMDA ); def< double >( d, names::alpha, alpha ); def< double >( d, names::conc_Mg2, conc_Mg2 ); @@ -188,25 +200,23 @@ void nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) { // allow setting the membrane potential - updateValueParam< double >( d, names::V_th, V_th, node ); - updateValueParam< double >( d, names::V_reset, V_reset, node ); - updateValueParam< double >( d, names::t_ref, t_ref, node ); updateValueParam< double >( d, names::E_L, E_L, node ); - updateValueParam< double >( d, names::E_ex, E_ex, node ); updateValueParam< double >( d, names::E_in, E_in, node ); - + updateValueParam< double >( d, names::V_th, V_th, node ); + updateValueParam< double >( d, names::V_reset, V_reset, node ); updateValueParam< double >( d, names::C_m, C_m, node ); updateValueParam< double >( d, names::g_L, g_L, node ); - + updateValueParam< double >( d, names::g_GABA, g_GABA, node ); + updateValueParam< double >( d, names::g_NMDA, g_NMDA, node ); + updateValueParam< double >( d, names::g_AMPA, g_AMPA, node ); + updateValueParam< double >( d, names::g_AMPA_ext, g_AMPA_ext, node ); + updateValueParam< double >( d, names::t_ref, t_ref, node ); updateValueParam< double >( d, names::tau_AMPA, tau_AMPA, node ); updateValueParam< double >( d, names::tau_GABA, tau_GABA, node ); - updateValueParam< double >( d, names::tau_rise_NMDA, tau_rise_NMDA, node ); updateValueParam< double >( d, names::tau_decay_NMDA, tau_decay_NMDA, node ); - updateValueParam< double >( d, names::alpha, alpha, node ); updateValueParam< double >( d, names::conc_Mg2, conc_Mg2, node ); - updateValueParam< double >( d, names::gsl_error_tol, gsl_error_tol, node ); if ( V_reset >= V_th ) @@ -221,7 +231,7 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) { throw BadProperty( "Refractory time cannot be negative." ); } - if ( tau_AMPA <= 0 or tau_GABA <= 0 or tau_rise_NMDA <= 0 or tau_decay_NMDA <= 0 ) + if ( tau_AMPA <= 0 or tau_GABA <= 0 or tau_decay_NMDA <= 0 ) { throw BadProperty( "All time constants must be strictly positive." ); } @@ -246,10 +256,6 @@ nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const def< double >( d, names::s_AMPA, y_[ s_AMPA ] ); def< double >( d, names::s_GABA, y_[ s_GABA ] ); def< double >( d, names::s_NMDA, y_[ s_NMDA] ); - - // total NMDA sum - double NMDA_sum = get_NMDA_sum(); - def< double >( d, names::NMDA_sum, NMDA_sum ); } void diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 4bbbe53ef5..970ec91493 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -106,10 +106,8 @@ The following parameters can be set in the status dictionary. g_GABA nS Peak recurrent GABA conductance g_L nS Leak conductance t_ref ms Refractory period - tau_AMPA_ext ms Synaptic time constant for external AMPA synapse tau_AMPA ms Synaptic time constant for AMPA synapse tau_GABA ms Synaptic time constant for GABA synapse - tau_rise_NMDA ms Synaptic rise time constant for NMDA synapse tau_decay_NMDA ms Synaptic decay time constant for NMDA synapse alpha 1/ms Scaling factor for NMDA synapse conc_Mg2 mM Extracellular magnesium concentration @@ -162,10 +160,8 @@ iaf_cond_alpha, ht_neuron EndUserDocs */ +void register_iaf_wang_2002( const std::string& name ); -/** - * Leaky integrate-and-fire-neuron model with dynamic NMDA receptors. - */ class iaf_wang_2002 : public ArchivingNode { public: @@ -253,10 +249,8 @@ class iaf_wang_2002 : public ArchivingNode double g_AMPA; //!< Peak conductance AMPA double g_AMPA_ext; //!< Peak conductance external AMPA double t_ref; //!< Refractory period in ms - double tau_AMPA_ext; //!< Synaptic Time Constant external AMPA Synapse in ms double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms - double tau_rise_NMDA; //!< Synaptic Rise Time Constant NMDA Synapse in ms double tau_decay_NMDA; //!< Synaptic Decay Time Constant NMDA Synapse in ms double alpha; //!< Scaling factor for NMDA synapse in 1/ms double conc_Mg2; //!< Extracellular Magnesium Concentration in mM diff --git a/modelsets/full b/modelsets/full index 4cc4e407cc..569ac35de2 100644 --- a/modelsets/full +++ b/modelsets/full @@ -59,8 +59,8 @@ iaf_psc_exp_htum iaf_psc_exp_multisynapse iaf_psc_exp_ps iaf_psc_exp_ps_lossless -iaf_wang_2002 iaf_tum_2000 +iaf_wang_2002 izhikevich jonke_synapse lin_rate diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 4d09bc4d88..adfb514a96 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -184,6 +184,7 @@ const Name GABA_A( "GABA_A" ); const Name GABA_B( "GABA_B" ); const Name g( "g" ); const Name g_AMPA( "g_AMPA" ); +const Name g_AMPA_ext( "g_AMPA_ext" ); const Name g_GABA( "g_GABA" ); const Name g_ahp( "g_ahp" ); const Name g_C( "g_C" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index 765b21c509..3389a48db9 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -210,6 +210,7 @@ extern const Name GABA_A; extern const Name GABA_B; extern const Name g; extern const Name g_AMPA; +extern const Name g_AMPA_ext; extern const Name g_ahp; extern const Name g_C; extern const Name g_GABA; diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index a57e84520d..4c0a4db2ff 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -5,6 +5,7 @@ np.random.seed(123) rng = np.random.default_rng() +# Parameters from paper epop_params = {"g_AMPA_ext": 2.1, "g_AMPA_rec": 0.05, "g_NMDA": 0.165, @@ -14,7 +15,7 @@ "tau_decay_NMDA": 100.0, "alpha": 0.5, "conc_Mg2": 1.0, - "g_L": 25. # leak conductance + "g_L": 25., # leak conductance "E_L": -70.0, # leak reversal potential "E_ex": 0.0, # excitatory reversal potential "E_in": -70.0, # inhibitory reversal potential @@ -33,7 +34,7 @@ "tau_decay_NMDA": 100.0, "alpha": 0.5, "conc_Mg2": 1.0, - "g_L": 20. # leak conductance + "g_L": 20., # leak conductance "E_L": -70.0, # leak reversal potential "E_ex": 0.0, # excitatory reversal potential "E_in": -70.0, # inhibitory reversal potential @@ -42,14 +43,67 @@ "t_ref": 1.0 # refreactory period } +simtime = 4000. +signal_start = 1000. +signal_duration = 2000. +signal_update_interval = 50. +f = 0.15 # proportion of neurons receiving signal inputs +w_plus = 1.7 +w_minus = 1 - f * (w_plus - 1) / (1 - f) + + NE = 1600 NI = 400 +selective_pop1 = nest.Create("iaf_wang_2002", int(0.15 * NE), params=epop_params) +selective_pop2 = nest.Create("iaf_wang_2002", int(0.15 * NE), params=epop_params) +nonselective_pop = nest.Create("iaf_wang_2002", int(0.7 * NE), params=epop_params) +inhibitory_pop = nest.Create("iaf_wang_2002", NI, params=ipop_params) + +mu_0 = 40. +rho_a = mu_0 / 100 +rho_b = rho_a +c = 20. +sigma = 4. +mu_a = mu_0 + rho_a * c +mu_b = mu_0 - rho_b * c + +num_updates = int(signal_duration / signal_update_interval) +update_times = np.arange(0, signal_duration, signal_update_interval) +update_times[0] = 0.1 +rates_a = np.random.normal(mu_a, sigma, size=num_updates) +rates_b = np.random.normal(mu_a, sigma, size=num_updates) + +poisson_a = nest.Create("inhomogeneous_poisson_generator", + params={"origin": signal_start-0.1, + "start": 0., + "stop": signal_duration, + "rate_times": update_times, + "rate_values": rates_a}) + +poisson_b = nest.Create("inhomogeneous_poisson_generator", + params={"origin": signal_start-0.1, + "start": 0., + "stop": signal_duration, + "rate_times": update_times, + "rate_values": rates_b}) + + +poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.}) + + +syn_spec_selective = {"model": "static_synapse", "weight":w_plus, "delay":0.1, 'receptor_type': 0} +syn_spec_nonselective = {"model": "static_synapse", "weight":w_minus, "delay":0.1, 'receptor_type': 0} +syn_spec_inhibitory = {"model": "static_synapse", "weight":-1., "delay":0.1, 'receptor_type': 0} +syn_spec_bg = {"model": "static_synapse", "weight":1., "delay":0.1, 'receptor_type': 1} + +nest.Connect(nonselective_pop, + selective_pop1 + selective_pop2 + nonselective_pop, + conn_spec="all_to_all", + syn_spec=syn_spec_nonselective) + -epop1 = nest.Create("iaf_wang_2002", int(0.5 * NE)) -epop2 = nest.Create("iaf_wang_2002", int(0.5 * NE)) -ipop = nest.Create("iaf_wang_2002", NE) From 5293f736b36385918958c2b85e426a564048975a Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 10 Nov 2023 17:06:45 +0100 Subject: [PATCH 015/184] fix register_model, wip reproduce paper --- models/iaf_wang_2002.cpp | 1 + pynest/examples/wang_decision_making.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index e8f82ae45e..049bdd486b 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -32,6 +32,7 @@ // Includes from nestkernel: #include "exceptions.h" #include "kernel_manager.h" +#include "nest_impl.h" #include "universal_data_logger_impl.h" // Includes from sli: diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 4c0a4db2ff..554e577e12 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -102,6 +102,22 @@ conn_spec="all_to_all", syn_spec=syn_spec_nonselective) +nest.Connect(selective_pop1, + selective_pop2, + conn_spec="all_to_all", + syn_spec=syn_spec_selective) + +nest.Connect(selective_pop2, + selective_pop1, + conn_spec="all_to_all", + syn_spec=syn_spec_selective) + +nest.Connect(inhibitory_pop, + selective_pop1 + selective_pop2 + nonselective_pop, + conn_spec="all_to_all", + syn_spec=syn_spec_inhibitory) + +nest.Simulate(4000.) From 7cea3b2d9afeafd4d4dae33b9f0535e6d2fa964e Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 14 Nov 2023 21:26:49 +0100 Subject: [PATCH 016/184] add separate synaptic channel for external AMPA --- models/iaf_wang_2002.cpp | 33 +++++++++++++++++++++++---------- models/iaf_wang_2002.h | 2 ++ nestkernel/nest_names.cpp | 1 + nestkernel/nest_names.h | 1 + 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 049bdd486b..603d5c3838 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -65,6 +65,7 @@ RecordablesMap< iaf_wang_2002 >::create() // add state variables to recordables map insert_( names::V_m, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::V_m > ); insert_( names::s_AMPA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_AMPA > ); + insert_( names::s_AMPA_ext, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_AMPA_ext > ); insert_( names::s_GABA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_GABA > ); insert_( names::s_NMDA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_NMDA > ); } @@ -83,18 +84,20 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode // y[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.y[]. - const double I_AMPA = ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ]; + const double I_AMPA = node.P_.g_AMPA * ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ] + + node.P_.g_AMPA_ext * ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA_ext ]; - const double I_rec_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; + const double I_rec_GABA = node.P_.g_GABA * ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; - const double I_rec_NMDA = ( y[ S::V_m ] - node.P_.E_ex ) + const double I_rec_NMDA = node.P_.g_NMDA * ( y[ S::V_m ] - node.P_.E_ex ) / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * y[ S::s_NMDA ]; - const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA - node.B_.I_stim_; + const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA + node.B_.I_stim_; f[ S::V_m ] = ( -node.P_.g_L * ( y[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; f[ S::s_AMPA ] = -y[ S::s_AMPA ] / node.P_.tau_AMPA; + f[ S::s_AMPA_ext ] = -y[ S::s_AMPA_ext ] / node.P_.tau_AMPA; f[ S::s_NMDA ] = -y[ S::s_NMDA ] / node.P_.tau_decay_NMDA; f[ S::s_GABA ] = -y[ S::s_GABA ] / node.P_.tau_GABA; @@ -134,6 +137,7 @@ nest::iaf_wang_2002::State_::State_( const Parameters_& p ) { y_[ V_m ] = p.E_L; // initialize to reversal potential y_[ s_AMPA ] = 0.0; + y_[ s_AMPA_ext ] = 0.0; y_[ s_GABA ] = 0.0; y_[ s_NMDA ] = 0.0; } @@ -143,6 +147,7 @@ nest::iaf_wang_2002::State_::State_( const State_& s ) { y_[ V_m ] = s.y_[ V_m ]; y_[ s_AMPA ] = s.y_[ s_AMPA ]; + y_[ s_AMPA_ext ] = s.y_[ s_AMPA_ext ]; y_[ s_GABA ] = s.y_[ s_GABA ]; y_[ s_NMDA ] = s.y_[ s_NMDA ]; } @@ -150,6 +155,7 @@ nest::iaf_wang_2002::State_::State_( const State_& s ) nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) : logger_( n ) , spike_AMPA() + , spike_AMPA_ext() , spike_GABA() , spike_NMDA() , s_( nullptr ) @@ -255,6 +261,7 @@ nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const { def< double >( d, names::V_m, y_[ V_m ] ); // Membrane potential def< double >( d, names::s_AMPA, y_[ s_AMPA ] ); + def< double >( d, names::s_AMPA_ext, y_[ s_AMPA_ext ] ); def< double >( d, names::s_GABA, y_[ s_GABA ] ); def< double >( d, names::s_NMDA, y_[ s_NMDA] ); } @@ -264,6 +271,7 @@ nest::iaf_wang_2002::State_::set( const DictionaryDatum& d, const Parameters_&, { updateValueParam< double >( d, names::V_m, y_[ V_m ], node ); updateValueParam< double >( d, names::s_AMPA, y_[ s_AMPA ], node ); + updateValueParam< double >( d, names::s_AMPA_ext, y_[ s_AMPA_ext ], node ); updateValueParam< double >( d, names::s_GABA, y_[ s_GABA ], node ); updateValueParam< double >( d, names::s_NMDA, y_[ s_NMDA ], node ); } @@ -332,6 +340,7 @@ void nest::iaf_wang_2002::init_buffers_() { B_.spike_AMPA.clear(); + B_.spike_AMPA_ext.clear(); B_.spike_GABA.clear(); B_.spike_NMDA.clear(); B_.currents_.clear(); // includes resize @@ -442,6 +451,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // add incoming spikes S_.y_[ State_::s_AMPA ] += B_.spike_AMPA.get_value( lag ); + S_.y_[ State_::s_AMPA_ext ] += B_.spike_AMPA_ext.get_value( lag ); S_.y_[ State_::s_GABA ] += B_.spike_GABA.get_value( lag ); S_.y_[ State_::s_NMDA ] += B_.spike_NMDA.get_value( lag ); if ( S_.y_[ State_::s_NMDA ] > 1 ) @@ -501,12 +511,15 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) if ( e.get_weight() > 0.0 ) { - B_.spike_AMPA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), - e.get_weight() * e.get_multiplicity() ); - - if ( e.get_rport() == 0 ) { - B_.spike_NMDA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), - e.get_weight() * e.get_multiplicity() * e.get_offset() ); + if ( e.get_rport() == 0 ) { // recurrent spike + B_.spike_AMPA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + e.get_weight() * e.get_multiplicity() ); + B_.spike_NMDA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + e.get_weight() * e.get_multiplicity() * e.get_offset() ); + } + else if ( e.get_rport() == 1 ) { // external spike + B_.spike_AMPA_ext.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + e.get_weight() * e.get_multiplicity() ); } } else diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 970ec91493..e24d6f26ec 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -284,6 +284,7 @@ class iaf_wang_2002 : public ArchivingNode { V_m = 0, s_AMPA, + s_AMPA_ext, s_NMDA, s_GABA, STATE_VEC_SIZE @@ -324,6 +325,7 @@ class iaf_wang_2002 : public ArchivingNode // Buffers and sums of incoming spikes and currents per timestep // ----------------------------------------------------------------------- RingBuffer spike_AMPA; + RingBuffer spike_AMPA_ext; RingBuffer spike_GABA; RingBuffer spike_NMDA; RingBuffer currents_; diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index adfb514a96..9abbe825ca 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -420,6 +420,7 @@ const Name S( "S" ); const Name S_act_NMDA( "S_act_NMDA" ); const Name s_NMDA( "s_NMDA" ); const Name s_AMPA( "s_AMPA" ); +const Name s_AMPA_ext( "s_AMPA_ext" ); const Name s_GABA( "s_GABA" ); const Name SIC_scale( "SIC_scale" ); const Name SIC_th( "SIC_th" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index 3389a48db9..4c89dae4f1 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -448,6 +448,7 @@ extern const Name S; extern const Name S_act_NMDA; extern const Name s_GABA; extern const Name s_AMPA; +extern const Name s_AMPA_ext; extern const Name s_NMDA; extern const Name SIC_scale; extern const Name SIC_th; From d9a467045c753bba82dc9e3fd41c07d709ce8a79 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 14 Nov 2023 21:27:17 +0100 Subject: [PATCH 017/184] adjust rate --- pynest/examples/wang_neuron.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pynest/examples/wang_neuron.py b/pynest/examples/wang_neuron.py index 562a73642d..661bb155a1 100644 --- a/pynest/examples/wang_neuron.py +++ b/pynest/examples/wang_neuron.py @@ -4,7 +4,7 @@ nest.rng_seed = 12345 -w_ex = 40. +w_ex = 400. w_in = -15. alpha = 0.5 tau_AMPA = 2.0 @@ -21,8 +21,8 @@ "tau_decay_NMDA": tau_NMDA, "t_ref": 0.}) -mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) -mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) +mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_AMPA_ext", "s_NMDA", "s_GABA"], "interval": 0.1}) +mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_AMPA_ext", "s_NMDA", "s_GABA"], "interval": 0.1}) ex_syn_spec = {"synapse_model": "static_synapse", "weight": w_ex, From 691a5e7efc91dee71d1a26e4284f216fbbd961fc Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 14 Nov 2023 21:27:32 +0100 Subject: [PATCH 018/184] work on replication of (Wang, 2002), still not working --- pynest/examples/wang_decision_making.py | 56 +++++++++++++++++++++---- 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 554e577e12..b9d910a2a5 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -7,7 +7,7 @@ # Parameters from paper epop_params = {"g_AMPA_ext": 2.1, - "g_AMPA_rec": 0.05, + "g_AMPA": 0.05, "g_NMDA": 0.165, "g_GABA": 1.3, "tau_GABA": 5.0, @@ -20,13 +20,14 @@ "E_ex": 0.0, # excitatory reversal potential "E_in": -70.0, # inhibitory reversal potential "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold "C_m": 500.0, # membrane capacitance "t_ref": 2.0 # refreactory period } ipop_params = {"g_AMPA_ext": 1.62, - "g_AMPA_rec": 0.04, + "g_AMPA": 0.04, "g_NMDA": 0.13, "g_GABA": 1.0, "tau_GABA": 5.0, @@ -39,6 +40,7 @@ "E_ex": 0.0, # excitatory reversal potential "E_in": -70.0, # inhibitory reversal potential "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold "C_m": 200.0, # membrane capacitance "t_ref": 1.0 # refreactory period } @@ -91,11 +93,25 @@ poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.}) +syn_spec_selective = {"synapse_model": "static_synapse", "weight":w_plus, "delay":0.1, 'receptor_type': 0} +syn_spec_nonselective = {"synapse_model": "static_synapse", "weight":w_minus, "delay":0.1, 'receptor_type': 0} +syn_spec_inhibitory = {"synapse_model": "static_synapse", "weight":-1., "delay":0.1, 'receptor_type': 0} +syn_spec_ext = {"synapse_model": "static_synapse", "weight":1., "delay":0.1, 'receptor_type': 1} -syn_spec_selective = {"model": "static_synapse", "weight":w_plus, "delay":0.1, 'receptor_type': 0} -syn_spec_nonselective = {"model": "static_synapse", "weight":w_minus, "delay":0.1, 'receptor_type': 0} -syn_spec_inhibitory = {"model": "static_synapse", "weight":-1., "delay":0.1, 'receptor_type': 0} -syn_spec_bg = {"model": "static_synapse", "weight":1., "delay":0.1, 'receptor_type': 1} +sr_nonselective = nest.Create("spike_recorder") +sr_selective1 = nest.Create("spike_recorder") +sr_selective2 = nest.Create("spike_recorder") +sr_inhibitory = nest.Create("spike_recorder") + +mm_selective1 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_AMPA_ext", "s_GABA"]}) +mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) + + + +nest.Connect(poisson_0, + nonselective_pop + selective_pop1 + selective_pop2 + inhibitory_pop, + conn_spec="all_to_all", + syn_spec=syn_spec_ext) nest.Connect(nonselective_pop, selective_pop1 + selective_pop2 + nonselective_pop, @@ -117,12 +133,38 @@ conn_spec="all_to_all", syn_spec=syn_spec_inhibitory) -nest.Simulate(4000.) +nest.Connect(poisson_a, + selective_pop1, + conn_spec="all_to_all", + syn_spec=syn_spec_ext) +nest.Connect(poisson_b, + selective_pop2, + conn_spec="all_to_all", + syn_spec=syn_spec_ext) +nest.Connect(nonselective_pop, sr_nonselective) +nest.Connect(selective_pop1, sr_selective1) +nest.Connect(selective_pop2, sr_selective2) +nest.Connect(inhibitory_pop, sr_inhibitory) +nest.Connect(mm_selective1, selective_pop1) +nest.Connect(mm_inhibitory, inhibitory_pop) +nest.Simulate(4000.) +spikes_nonselective = sr_nonselective.get("events", "times") +spikes_selective1 = sr_selective1.get("events", "times") +spikes_selective2 = sr_selective2.get("events", "times") +spikes_inhibitory = sr_inhibitory.get("events", "times") + +senders = mm_selective1.get("events", "senders") +inds = senders == 1 +vm = mm_selective1.get("events", "V_m")[inds] +s_AMPA = mm_selective1.get("events", "s_AMPA")[inds] +s_AMPA_ext = mm_selective1.get("events", "s_AMPA_ext")[inds] +s_GABA = mm_selective1.get("events", "s_GABA")[inds] +s_NMDA = mm_selective1.get("events", "s_NMDA")[inds] From 8614377ea1acc5839772a964ba889948691ebcd1 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 15 Nov 2023 13:04:30 +0100 Subject: [PATCH 019/184] script works, but something wrong with dynamics --- pynest/examples/wang_decision_making.py | 39 ++++++++++++++++--------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index b9d910a2a5..b1b1d69969 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -53,7 +53,6 @@ w_plus = 1.7 w_minus = 1 - f * (w_plus - 1) / (1 - f) - NE = 1600 NI = 400 @@ -65,7 +64,7 @@ mu_0 = 40. rho_a = mu_0 / 100 rho_b = rho_a -c = 20. +c = 80. sigma = 4. mu_a = mu_0 + rho_a * c mu_b = mu_0 - rho_b * c @@ -74,7 +73,7 @@ update_times = np.arange(0, signal_duration, signal_update_interval) update_times[0] = 0.1 rates_a = np.random.normal(mu_a, sigma, size=num_updates) -rates_b = np.random.normal(mu_a, sigma, size=num_updates) +rates_b = np.random.normal(mu_b, sigma, size=num_updates) poisson_a = nest.Create("inhomogeneous_poisson_generator", params={"origin": signal_start-0.1, @@ -90,12 +89,12 @@ "rate_times": update_times, "rate_values": rates_b}) - poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.}) -syn_spec_selective = {"synapse_model": "static_synapse", "weight":w_plus, "delay":0.1, 'receptor_type': 0} -syn_spec_nonselective = {"synapse_model": "static_synapse", "weight":w_minus, "delay":0.1, 'receptor_type': 0} -syn_spec_inhibitory = {"synapse_model": "static_synapse", "weight":-1., "delay":0.1, 'receptor_type': 0} +syn_spec_pot = {"synapse_model": "static_synapse", "weight":w_plus, "delay":0.1, 'receptor_type': 0} +syn_spec_default = {"synapse_model": "static_synapse", "weight":1.0, "delay":0.1, 'receptor_type': 0} +syn_spec_dep = {"synapse_model": "static_synapse", "weight":w_minus, "delay":0.1, 'receptor_type': 0} +syn_spec_inhibitory = {"synapse_model": "static_synapse", "weight":-1.0, "delay":0.1, 'receptor_type': 0} syn_spec_ext = {"synapse_model": "static_synapse", "weight":1., "delay":0.1, 'receptor_type': 1} sr_nonselective = nest.Create("spike_recorder") @@ -107,29 +106,38 @@ mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) - nest.Connect(poisson_0, nonselective_pop + selective_pop1 + selective_pop2 + inhibitory_pop, conn_spec="all_to_all", syn_spec=syn_spec_ext) nest.Connect(nonselective_pop, - selective_pop1 + selective_pop2 + nonselective_pop, + selective_pop1 + selective_pop2, conn_spec="all_to_all", - syn_spec=syn_spec_nonselective) + syn_spec=syn_spec_dep) + +nest.Connect(nonselective_pop, + nonselective_pop + inhibitory_pop, + conn_spec="all_to_all", + syn_spec=syn_spec_default) nest.Connect(selective_pop1, selective_pop2, conn_spec="all_to_all", - syn_spec=syn_spec_selective) + syn_spec=syn_spec_dep) nest.Connect(selective_pop2, selective_pop1, conn_spec="all_to_all", - syn_spec=syn_spec_selective) + syn_spec=syn_spec_dep) + +nest.Connect(selective_pop1 + selective_pop2, + nonselective_pop + inhibitory_pop, + conn_spec="all_to_all", + syn_spec=syn_spec_default) nest.Connect(inhibitory_pop, - selective_pop1 + selective_pop2 + nonselective_pop, + selective_pop1 + selective_pop2 + nonselective_pop + inhibitory_pop, conn_spec="all_to_all", syn_spec=syn_spec_inhibitory) @@ -143,7 +151,6 @@ conn_spec="all_to_all", syn_spec=syn_spec_ext) - nest.Connect(nonselective_pop, sr_nonselective) nest.Connect(selective_pop1, sr_selective1) nest.Connect(selective_pop2, sr_selective2) @@ -160,6 +167,10 @@ spikes_selective2 = sr_selective2.get("events", "times") spikes_inhibitory = sr_inhibitory.get("events", "times") + + + + senders = mm_selective1.get("events", "senders") inds = senders == 1 vm = mm_selective1.get("events", "V_m")[inds] From 2138a99584282381660cdb37c0fe5c47d53de6fb Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 17 Nov 2023 15:56:54 +0100 Subject: [PATCH 020/184] bughunting, s_NMDA explodes --- models/iaf_wang_2002.cpp | 54 ++++++++++++++++++++-------------------- models/iaf_wang_2002.h | 48 ++++++++--------------------------- 2 files changed, 38 insertions(+), 64 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 603d5c3838..a99ff4d33d 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -42,6 +42,9 @@ #include "integerdatum.h" #include "lockptrdatum.h" +// Includes from standard library +#include + /* --------------------------------------------------------------------------- * Recordables map * --------------------------------------------------------------------------- */ @@ -65,7 +68,6 @@ RecordablesMap< iaf_wang_2002 >::create() // add state variables to recordables map insert_( names::V_m, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::V_m > ); insert_( names::s_AMPA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_AMPA > ); - insert_( names::s_AMPA_ext, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_AMPA_ext > ); insert_( names::s_GABA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_GABA > ); insert_( names::s_NMDA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_NMDA > ); } @@ -84,8 +86,7 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode // y[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.y[]. - const double I_AMPA = node.P_.g_AMPA * ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ] - + node.P_.g_AMPA_ext * ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA_ext ]; + const double I_AMPA = node.P_.g_AMPA * ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ]; const double I_rec_GABA = node.P_.g_GABA * ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; @@ -97,7 +98,6 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode f[ S::V_m ] = ( -node.P_.g_L * ( y[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; f[ S::s_AMPA ] = -y[ S::s_AMPA ] / node.P_.tau_AMPA; - f[ S::s_AMPA_ext ] = -y[ S::s_AMPA_ext ] / node.P_.tau_AMPA; f[ S::s_NMDA ] = -y[ S::s_NMDA ] / node.P_.tau_decay_NMDA; f[ S::s_GABA ] = -y[ S::s_GABA ] / node.P_.tau_GABA; @@ -105,7 +105,6 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode } - /* --------------------------------------------------------------------------- * Default constructors defining default parameters and state * --------------------------------------------------------------------------- */ @@ -121,7 +120,6 @@ nest::iaf_wang_2002::Parameters_::Parameters_() , g_GABA ( 1.3 ) // , g_NMDA ( 0.165 ) // , g_AMPA ( 0.05 ) // - , g_AMPA_ext ( 1.3 ) // , t_ref( 2.0 ) // ms , tau_AMPA( 2.0 ) // ms , tau_GABA( 5.0 ) // ms @@ -137,7 +135,6 @@ nest::iaf_wang_2002::State_::State_( const Parameters_& p ) { y_[ V_m ] = p.E_L; // initialize to reversal potential y_[ s_AMPA ] = 0.0; - y_[ s_AMPA_ext ] = 0.0; y_[ s_GABA ] = 0.0; y_[ s_NMDA ] = 0.0; } @@ -147,7 +144,6 @@ nest::iaf_wang_2002::State_::State_( const State_& s ) { y_[ V_m ] = s.y_[ V_m ]; y_[ s_AMPA ] = s.y_[ s_AMPA ]; - y_[ s_AMPA_ext ] = s.y_[ s_AMPA_ext ]; y_[ s_GABA ] = s.y_[ s_GABA ]; y_[ s_NMDA ] = s.y_[ s_NMDA ]; } @@ -155,7 +151,6 @@ nest::iaf_wang_2002::State_::State_( const State_& s ) nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) : logger_( n ) , spike_AMPA() - , spike_AMPA_ext() , spike_GABA() , spike_NMDA() , s_( nullptr ) @@ -193,7 +188,6 @@ nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const def< double >( d, names::g_GABA, g_GABA ); def< double >( d, names::g_NMDA, g_NMDA ); def< double >( d, names::g_AMPA, g_AMPA ); - def< double >( d, names::g_AMPA_ext, g_AMPA_ext ); def< double >( d, names::t_ref, t_ref ); def< double >( d, names::tau_AMPA, tau_AMPA ); def< double >( d, names::tau_GABA, tau_GABA ); @@ -217,7 +211,6 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) updateValueParam< double >( d, names::g_GABA, g_GABA, node ); updateValueParam< double >( d, names::g_NMDA, g_NMDA, node ); updateValueParam< double >( d, names::g_AMPA, g_AMPA, node ); - updateValueParam< double >( d, names::g_AMPA_ext, g_AMPA_ext, node ); updateValueParam< double >( d, names::t_ref, t_ref, node ); updateValueParam< double >( d, names::tau_AMPA, tau_AMPA, node ); updateValueParam< double >( d, names::tau_GABA, tau_GABA, node ); @@ -261,7 +254,6 @@ nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const { def< double >( d, names::V_m, y_[ V_m ] ); // Membrane potential def< double >( d, names::s_AMPA, y_[ s_AMPA ] ); - def< double >( d, names::s_AMPA_ext, y_[ s_AMPA_ext ] ); def< double >( d, names::s_GABA, y_[ s_GABA ] ); def< double >( d, names::s_NMDA, y_[ s_NMDA] ); } @@ -271,7 +263,6 @@ nest::iaf_wang_2002::State_::set( const DictionaryDatum& d, const Parameters_&, { updateValueParam< double >( d, names::V_m, y_[ V_m ], node ); updateValueParam< double >( d, names::s_AMPA, y_[ s_AMPA ], node ); - updateValueParam< double >( d, names::s_AMPA_ext, y_[ s_AMPA_ext ], node ); updateValueParam< double >( d, names::s_GABA, y_[ s_GABA ], node ); updateValueParam< double >( d, names::s_NMDA, y_[ s_NMDA ], node ); } @@ -340,7 +331,6 @@ void nest::iaf_wang_2002::init_buffers_() { B_.spike_AMPA.clear(); - B_.spike_AMPA_ext.clear(); B_.spike_GABA.clear(); B_.spike_NMDA.clear(); B_.currents_.clear(); // includes resize @@ -414,10 +404,12 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to { std::vector< double > s_vals( kernel().connection_manager.get_min_delay(), 0.0 ); + std::cout << "INSIDE UPDATE" << std::endl; for ( long lag = from; lag < to; ++lag ) { double t = 0.0; - + + std::cout << "INSIDE INNER UPDATE" << std::endl; // numerical integration with adaptive step size control: // ------------------------------------------------------ // gsl_odeiv_evolve_apply performs only a single numerical @@ -433,6 +425,11 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to while ( t < B_.step_ ) { + std::cout << "INSIDE GSL LOOP" << std::endl; + std::cout << "V_m: " << S_.y_[ 0 ] << std::endl; + std::cout << "s_AMPA: " << S_.y_[ State_::s_AMPA ] << std::endl; + std::cout << "s_NMDA: " << S_.y_[ State_::s_NMDA ] << std::endl; + std::cout << "s_GABA: " << S_.y_[ State_::s_GABA ] << std::endl; const int status = gsl_odeiv_evolve_apply( B_.e_, B_.c_, B_.s_, @@ -448,24 +445,22 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to } } - + std::cout << "GSL STEP RUN" << std::endl; // add incoming spikes S_.y_[ State_::s_AMPA ] += B_.spike_AMPA.get_value( lag ); - S_.y_[ State_::s_AMPA_ext ] += B_.spike_AMPA_ext.get_value( lag ); S_.y_[ State_::s_GABA ] += B_.spike_GABA.get_value( lag ); S_.y_[ State_::s_NMDA ] += B_.spike_NMDA.get_value( lag ); - if ( S_.y_[ State_::s_NMDA ] > 1 ) - { - S_.y_[ State_::s_NMDA ] = 1; - } + S_.y_[ State_::s_NMDA ] = std::min( S_.y_[ State_::s_NMDA ], 1.0 ); if ( S_.r_ ) { + std::cout << "REFRACTORY" << std::endl; // neuron is absolute refractory --S_.r_; S_.y_[ State_::V_m ] = P_.V_reset; // clamp potential } else if ( S_.y_[ State_::V_m ] >= P_.V_th ) { + std::cout << "SPIKING" << std::endl; // neuron is not absolute refractory S_.r_ = V_.RefractoryCounts_; S_.y_[ State_::V_m ] = P_.V_reset; @@ -482,17 +477,23 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); double s_NMDA_delta = P_.alpha * (1 - S_.s_NMDA_pre); S_.s_NMDA_pre += s_NMDA_delta; - + + std::cout << "CREATING SPIKEEVENT" << std::endl; SpikeEvent se; se.set_offset( s_NMDA_delta ); kernel().event_delivery_manager.send( *this, se, lag ); + std::cout << "FINISHED SPIKEEVENT" << std::endl; } + // set new input current B_.I_stim_ = B_.currents_.get_value( lag ); + std::cout << "LOGGING DATA" << std::endl; // voltage logging B_.logger_.record_data( origin.get_steps() + lag ); + std::cout << "FINISHED UPDATE" << std::endl; + std::cout << "" << std::endl; } } @@ -508,25 +509,24 @@ void nest::iaf_wang_2002::handle( SpikeEvent& e ) { assert( e.get_delay_steps() > 0 ); + std::cout << "INSIDE HANDLE SPIKEEVENT" << std::endl; if ( e.get_weight() > 0.0 ) { - if ( e.get_rport() == 0 ) { // recurrent spike B_.spike_AMPA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_multiplicity() ); + + if ( e.get_offset() != 0.0 ) { B_.spike_NMDA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_multiplicity() * e.get_offset() ); } - else if ( e.get_rport() == 1 ) { // external spike - B_.spike_AMPA_ext.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), - e.get_weight() * e.get_multiplicity() ); - } } else { B_.spike_GABA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), -e.get_weight() * e.get_multiplicity() ); } + std::cout << "EXITING HANDLE SPIKEEVENT" << std::endl; } void diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index e24d6f26ec..a02626c9c1 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -67,16 +67,18 @@ Leaky integrate-and-fire-neuron model with dynamic NMDA receptors. Description +++++++++++ -This model implements a version of the neuron model described in [1]_. +This model implements a simplified version of the neuron model described in [1]_. -It contains AMPA, GABA and NMDA synapses, where the number of NMDA ports are dependent -on the number of presynaptic connections. +It contains AMPA, GABA and NMDA synapses -The AMPA and GABA synapses are given as alpha functions, while the NMDA synapse is modeled -with a non-linear function described by +The equations for the synaptic currents from AMPA and GABA receptors are given by +the following equations .. math:: - \frac{ dg_j^{NMDA}(t) }{ dt } = - \frac{ g_j^{NMDA}(t) }{ \tau_{NMDA,decay} } + \alpha x_j(t)(1 - s_j^{NMDA}(t)) \\ + I_{\mathrm{AMPA}} = g_{\mathrm{AMPA}}(V(t) - E_{\mathrm{ex}} \sum_{j=1}^{C_E} w_j s_j^{\mathrm{AMPA}} + +.. math:: + \frac{ ds_j^{NMDA}(t) }{ dt } = - \frac{ s_j^{NMDA}(t) }{ \tau_{NMDA,decay} } + \alpha x_j(t)(1 - s_j^{NMDA}(t)) \\ \frac{ dx_j(t) }{ dt } =- \frac{ x_j(t) }{ \tau_{NMDA,rise} } + \sum_k \delta(t - t_j^k). The synaptic current of NMDA is given by @@ -100,7 +102,6 @@ The following parameters can be set in the status dictionary. V_reset mV Reset potential C_m pF Membrane capacitance g_L nS Leak conductance - g_AMPA_ext nS Peak external AMPA conductance g_AMPA nS Peak recurrent AMPA conductance g_NMDA nS Peak recurrent NMDA conductance g_GABA nS Peak recurrent GABA conductance @@ -122,7 +123,6 @@ The following values can be recorded. =========== =========================================================== V_m Membrane potential s_AMPA AMPA gate - s_AMPA_ext external AMPA gate s_GABA GABA gate NMDA_sum sum of NMDA over all presynaptic neurons j =========== =========================================================== @@ -185,7 +185,6 @@ class iaf_wang_2002 : public ArchivingNode // void sends_secondary_event( DelayedRateConnectionEvent& ) override; void handle( SpikeEvent& ) override; //!< accept spikes -// void handle( DelayedRateConnectionEvent& ) override; //!< accept spikes void handle( CurrentEvent& ) override; //!< accept current void handle( DataLoggingRequest& ) override; //!< allow recording with multimeter @@ -208,17 +207,6 @@ class iaf_wang_2002 : public ArchivingNode } private: - /** - * Synapse types to connect to - */ - enum SynapseTypes - { - INF_SPIKE_RECEPTOR = 0, - AMPA_NMDA, - GABA, - SUP_SPIKE_RECEPTOR - }; - void init_state_() override; void pre_run_hook() override; void init_buffers_() override; @@ -247,7 +235,6 @@ class iaf_wang_2002 : public ArchivingNode double g_GABA; //!< Peak conductance GABA double g_NMDA; //!< Peak conductance NMDA double g_AMPA; //!< Peak conductance AMPA - double g_AMPA_ext; //!< Peak conductance external AMPA double t_ref; //!< Refractory period in ms double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms @@ -284,19 +271,18 @@ class iaf_wang_2002 : public ArchivingNode { V_m = 0, s_AMPA, - s_AMPA_ext, s_NMDA, s_GABA, STATE_VEC_SIZE }; double y_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver + double s_NMDA_pre; // ADD INITIALIZATION int r_; //!< number of refractory steps remaining State_( const Parameters_& ); //!< Default initialization State_( const State_& ); - double s_NMDA_pre = 0; void get( DictionaryDatum& ) const; void set( const DictionaryDatum&, const Parameters_&, Node* ); @@ -325,7 +311,6 @@ class iaf_wang_2002 : public ArchivingNode // Buffers and sums of incoming spikes and currents per timestep // ----------------------------------------------------------------------- RingBuffer spike_AMPA; - RingBuffer spike_AMPA_ext; RingBuffer spike_GABA; RingBuffer spike_NMDA; RingBuffer currents_; @@ -406,18 +391,11 @@ iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bo inline size_t iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) { - if ( receptor_type == 0 ) - { - return 0; - } - else if ( receptor_type == 1 ) - { - return 1; - } - else + if ( receptor_type != 0 ) { throw UnknownReceptorType( receptor_type, get_name() ); } + return 0; } inline size_t @@ -455,10 +433,6 @@ iaf_wang_2002::get_status( DictionaryDatum& d ) const S_.get( d ); ArchivingNode::get_status( d ); - DictionaryDatum receptor_type = new Dictionary(); - -// ( *d )[ names::receptor_types ] = receptor_type; - ( *d )[ names::recordables ] = recordablesMap_.get_list(); } From ffb55c471212c2c8bfc5cc0e53526939a4a20846 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 17 Nov 2023 17:24:23 +0100 Subject: [PATCH 021/184] fixed bug, uninitialized variable --- models/iaf_wang_2002.cpp | 21 +++------------------ models/iaf_wang_2002.h | 4 +++- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index a99ff4d33d..59e14bc15f 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -137,6 +137,7 @@ nest::iaf_wang_2002::State_::State_( const Parameters_& p ) y_[ s_AMPA ] = 0.0; y_[ s_GABA ] = 0.0; y_[ s_NMDA ] = 0.0; + s_NMDA_pre = 0.0; } nest::iaf_wang_2002::State_::State_( const State_& s ) @@ -146,6 +147,7 @@ nest::iaf_wang_2002::State_::State_( const State_& s ) y_[ s_AMPA ] = s.y_[ s_AMPA ]; y_[ s_GABA ] = s.y_[ s_GABA ]; y_[ s_NMDA ] = s.y_[ s_NMDA ]; + s_NMDA_pre = s.s_NMDA_pre; } nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) @@ -404,12 +406,10 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to { std::vector< double > s_vals( kernel().connection_manager.get_min_delay(), 0.0 ); - std::cout << "INSIDE UPDATE" << std::endl; for ( long lag = from; lag < to; ++lag ) { double t = 0.0; - std::cout << "INSIDE INNER UPDATE" << std::endl; // numerical integration with adaptive step size control: // ------------------------------------------------------ // gsl_odeiv_evolve_apply performs only a single numerical @@ -425,11 +425,6 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to while ( t < B_.step_ ) { - std::cout << "INSIDE GSL LOOP" << std::endl; - std::cout << "V_m: " << S_.y_[ 0 ] << std::endl; - std::cout << "s_AMPA: " << S_.y_[ State_::s_AMPA ] << std::endl; - std::cout << "s_NMDA: " << S_.y_[ State_::s_NMDA ] << std::endl; - std::cout << "s_GABA: " << S_.y_[ State_::s_GABA ] << std::endl; const int status = gsl_odeiv_evolve_apply( B_.e_, B_.c_, B_.s_, @@ -445,7 +440,6 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to } } - std::cout << "GSL STEP RUN" << std::endl; // add incoming spikes S_.y_[ State_::s_AMPA ] += B_.spike_AMPA.get_value( lag ); S_.y_[ State_::s_GABA ] += B_.spike_GABA.get_value( lag ); @@ -453,14 +447,12 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to S_.y_[ State_::s_NMDA ] = std::min( S_.y_[ State_::s_NMDA ], 1.0 ); if ( S_.r_ ) { - std::cout << "REFRACTORY" << std::endl; // neuron is absolute refractory --S_.r_; S_.y_[ State_::V_m ] = P_.V_reset; // clamp potential } else if ( S_.y_[ State_::V_m ] >= P_.V_th ) { - std::cout << "SPIKING" << std::endl; // neuron is not absolute refractory S_.r_ = V_.RefractoryCounts_; S_.y_[ State_::V_m ] = P_.V_reset; @@ -476,24 +468,19 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // compute current value of s_NMDA and add NMDA update to spike offset S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); double s_NMDA_delta = P_.alpha * (1 - S_.s_NMDA_pre); - S_.s_NMDA_pre += s_NMDA_delta; + S_.s_NMDA_pre += s_NMDA_delta; // guaranteed to be <= 1. - std::cout << "CREATING SPIKEEVENT" << std::endl; SpikeEvent se; se.set_offset( s_NMDA_delta ); kernel().event_delivery_manager.send( *this, se, lag ); - std::cout << "FINISHED SPIKEEVENT" << std::endl; } // set new input current B_.I_stim_ = B_.currents_.get_value( lag ); - std::cout << "LOGGING DATA" << std::endl; // voltage logging B_.logger_.record_data( origin.get_steps() + lag ); - std::cout << "FINISHED UPDATE" << std::endl; - std::cout << "" << std::endl; } } @@ -509,7 +496,6 @@ void nest::iaf_wang_2002::handle( SpikeEvent& e ) { assert( e.get_delay_steps() > 0 ); - std::cout << "INSIDE HANDLE SPIKEEVENT" << std::endl; if ( e.get_weight() > 0.0 ) { @@ -526,7 +512,6 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) B_.spike_GABA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), -e.get_weight() * e.get_multiplicity() ); } - std::cout << "EXITING HANDLE SPIKEEVENT" << std::endl; } void diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index a02626c9c1..bcca315b15 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -76,6 +76,7 @@ the following equations .. math:: I_{\mathrm{AMPA}} = g_{\mathrm{AMPA}}(V(t) - E_{\mathrm{ex}} \sum_{j=1}^{C_E} w_j s_j^{\mathrm{AMPA}} + \frac{d}{dt}s^{\mathrm{AMPA}}_j = -\frac{s_j}{\tau_{\mathrm{AMPA}}} .. math:: \frac{ ds_j^{NMDA}(t) }{ dt } = - \frac{ s_j^{NMDA}(t) }{ \tau_{NMDA,decay} } + \alpha x_j(t)(1 - s_j^{NMDA}(t)) \\ @@ -277,7 +278,8 @@ class iaf_wang_2002 : public ArchivingNode }; double y_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver - double s_NMDA_pre; // ADD INITIALIZATION + double s_NMDA_pre; // for determining (unweighted) alpha * (1 - s_NMDA) term on + // pre-synaptic side int r_; //!< number of refractory steps remaining State_( const Parameters_& ); //!< Default initialization From 422c1c979257577f425b228f1e3278a70c8cb13a Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 17 Nov 2023 18:10:48 +0100 Subject: [PATCH 022/184] reintroduce receptor type --- models/iaf_wang_2002.cpp | 14 +++++++++++++- models/iaf_wang_2002.h | 12 ++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 59e14bc15f..1438ceb06b 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -120,6 +120,7 @@ nest::iaf_wang_2002::Parameters_::Parameters_() , g_GABA ( 1.3 ) // , g_NMDA ( 0.165 ) // , g_AMPA ( 0.05 ) // + , g_AMPA_ext ( 0.05 ) // , t_ref( 2.0 ) // ms , tau_AMPA( 2.0 ) // ms , tau_GABA( 5.0 ) // ms @@ -190,6 +191,7 @@ nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const def< double >( d, names::g_GABA, g_GABA ); def< double >( d, names::g_NMDA, g_NMDA ); def< double >( d, names::g_AMPA, g_AMPA ); + def< double >( d, names::g_AMPA_ext, g_AMPA_ext ); def< double >( d, names::t_ref, t_ref ); def< double >( d, names::tau_AMPA, tau_AMPA ); def< double >( d, names::tau_GABA, tau_GABA ); @@ -213,6 +215,7 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) updateValueParam< double >( d, names::g_GABA, g_GABA, node ); updateValueParam< double >( d, names::g_NMDA, g_NMDA, node ); updateValueParam< double >( d, names::g_AMPA, g_AMPA, node ); + updateValueParam< double >( d, names::g_AMPA_ext, g_AMPA_ext, node ); updateValueParam< double >( d, names::t_ref, t_ref, node ); updateValueParam< double >( d, names::tau_AMPA, tau_AMPA, node ); updateValueParam< double >( d, names::tau_GABA, tau_GABA, node ); @@ -499,9 +502,18 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) if ( e.get_weight() > 0.0 ) { + if ( e.get_rport() == 0 ) { B_.spike_AMPA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_multiplicity() ); - + } + // if from external population, ignore weight + // when computing the actual synaptic current, this contribution will be multiplied by + // g_AMPA. therefore we multiply by g_AMPA_ext / g_AMPA here, and the g_AMPA denominator + // will be cancelled + else if ( e.get_rport() == 1 ) { + B_.spike_AMPA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + P_.g_AMPA_ext / P_.g_AMPA * e.get_multiplicity() ); + } if ( e.get_offset() != 0.0 ) { B_.spike_NMDA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_multiplicity() * e.get_offset() ); diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index bcca315b15..ec61029256 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -236,6 +236,7 @@ class iaf_wang_2002 : public ArchivingNode double g_GABA; //!< Peak conductance GABA double g_NMDA; //!< Peak conductance NMDA double g_AMPA; //!< Peak conductance AMPA + double g_AMPA_ext; //!< Peak conductance AMPA double t_ref; //!< Refractory period in ms double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms @@ -393,11 +394,18 @@ iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bo inline size_t iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) { - if ( receptor_type != 0 ) + if ( receptor_type == 0 ) + { + return 0; + } + else if ( receptor_type == 1 ) + { + return 1; + } + else { throw UnknownReceptorType( receptor_type, get_name() ); } - return 0; } inline size_t From 7e6ec793bb6836211ac5927c6e752247b5732657 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 17 Nov 2023 18:18:48 +0100 Subject: [PATCH 023/184] various fixes from review --- models/iaf_wang_2002.cpp | 28 ++++++++++++++-------------- models/iaf_wang_2002.h | 7 +++---- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 1438ceb06b..e79ffd9285 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -153,9 +153,9 @@ nest::iaf_wang_2002::State_::State_( const State_& s ) nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) : logger_( n ) - , spike_AMPA() - , spike_GABA() - , spike_NMDA() + , spike_AMPA_() + , spike_GABA_() + , spike_NMDA_() , s_( nullptr ) , c_( nullptr ) , e_( nullptr ) @@ -335,9 +335,9 @@ nest::iaf_wang_2002::init_state_() void nest::iaf_wang_2002::init_buffers_() { - B_.spike_AMPA.clear(); - B_.spike_GABA.clear(); - B_.spike_NMDA.clear(); + B_.spike_AMPA_.clear(); + B_.spike_GABA_.clear(); + B_.spike_NMDA_.clear(); B_.currents_.clear(); // includes resize B_.logger_.reset(); // includes resize @@ -444,9 +444,9 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to } // add incoming spikes - S_.y_[ State_::s_AMPA ] += B_.spike_AMPA.get_value( lag ); - S_.y_[ State_::s_GABA ] += B_.spike_GABA.get_value( lag ); - S_.y_[ State_::s_NMDA ] += B_.spike_NMDA.get_value( lag ); + S_.y_[ State_::s_AMPA ] += B_.spike_AMPA_.get_value( lag ); + S_.y_[ State_::s_GABA ] += B_.spike_GABA_.get_value( lag ); + S_.y_[ State_::s_NMDA ] += B_.spike_NMDA_.get_value( lag ); S_.y_[ State_::s_NMDA ] = std::min( S_.y_[ State_::s_NMDA ], 1.0 ); if ( S_.r_ ) { @@ -470,7 +470,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // compute current value of s_NMDA and add NMDA update to spike offset S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); - double s_NMDA_delta = P_.alpha * (1 - S_.s_NMDA_pre); + const double s_NMDA_delta = P_.alpha * (1 - S_.s_NMDA_pre); S_.s_NMDA_pre += s_NMDA_delta; // guaranteed to be <= 1. SpikeEvent se; @@ -503,7 +503,7 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) if ( e.get_weight() > 0.0 ) { if ( e.get_rport() == 0 ) { - B_.spike_AMPA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + B_.spike_AMPA_.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_multiplicity() ); } // if from external population, ignore weight @@ -511,17 +511,17 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) // g_AMPA. therefore we multiply by g_AMPA_ext / g_AMPA here, and the g_AMPA denominator // will be cancelled else if ( e.get_rport() == 1 ) { - B_.spike_AMPA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + B_.spike_AMPA_.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), P_.g_AMPA_ext / P_.g_AMPA * e.get_multiplicity() ); } if ( e.get_offset() != 0.0 ) { - B_.spike_NMDA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + B_.spike_NMDA_.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_multiplicity() * e.get_offset() ); } } else { - B_.spike_GABA.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), + B_.spike_GABA_.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), -e.get_weight() * e.get_multiplicity() ); } } diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index ec61029256..388c408992 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -177,7 +177,6 @@ class iaf_wang_2002 : public ArchivingNode */ using Node::handles_test_event; -// using Node::sends_secondary_event; using Node::handle; //! Used to validate that we can send SpikeEvent to desired target:port. @@ -313,9 +312,9 @@ class iaf_wang_2002 : public ArchivingNode // ----------------------------------------------------------------------- // Buffers and sums of incoming spikes and currents per timestep // ----------------------------------------------------------------------- - RingBuffer spike_AMPA; - RingBuffer spike_GABA; - RingBuffer spike_NMDA; + RingBuffer spike_AMPA_; + RingBuffer spike_GABA_; + RingBuffer spike_NMDA_; RingBuffer currents_; // ----------------------------------------------------------------------- From 917187383efdd3a9b1a5bc97dd21ad53247a66fb Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 17 Nov 2023 18:20:17 +0100 Subject: [PATCH 024/184] update examples so that they run with receptor types again --- pynest/examples/wang_decision_making.py | 65 ++++++++++++++++--------- pynest/examples/wang_neuron.py | 8 +-- 2 files changed, 47 insertions(+), 26 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index b1b1d69969..790f5c99ef 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -1,13 +1,18 @@ import nest import matplotlib.pyplot as plt +from matplotlib.gridspec import GridSpec import numpy as np np.random.seed(123) rng = np.random.default_rng() +dt = 0.1 +nest.set(resolution=dt, print_time=True) + + # Parameters from paper -epop_params = {"g_AMPA_ext": 2.1, - "g_AMPA": 0.05, +epop_params = {"g_AMPA": 0.05, + "g_AMPA_ext": 2.1, "g_NMDA": 0.165, "g_GABA": 1.3, "tau_GABA": 5.0, @@ -26,8 +31,8 @@ } -ipop_params = {"g_AMPA_ext": 1.62, - "g_AMPA": 0.04, +ipop_params = {"g_AMPA": 0.04, + "g_AMPA_ext": 1.62, "g_NMDA": 0.13, "g_GABA": 1.0, "tau_GABA": 5.0, @@ -52,6 +57,8 @@ f = 0.15 # proportion of neurons receiving signal inputs w_plus = 1.7 w_minus = 1 - f * (w_plus - 1) / (1 - f) +delay = 0.1 + NE = 1600 NI = 400 @@ -64,7 +71,7 @@ mu_0 = 40. rho_a = mu_0 / 100 rho_b = rho_a -c = 80. +c = 0. sigma = 4. mu_a = mu_0 + rho_a * c mu_b = mu_0 - rho_b * c @@ -91,21 +98,22 @@ poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.}) -syn_spec_pot = {"synapse_model": "static_synapse", "weight":w_plus, "delay":0.1, 'receptor_type': 0} -syn_spec_default = {"synapse_model": "static_synapse", "weight":1.0, "delay":0.1, 'receptor_type': 0} -syn_spec_dep = {"synapse_model": "static_synapse", "weight":w_minus, "delay":0.1, 'receptor_type': 0} -syn_spec_inhibitory = {"synapse_model": "static_synapse", "weight":-1.0, "delay":0.1, 'receptor_type': 0} -syn_spec_ext = {"synapse_model": "static_synapse", "weight":1., "delay":0.1, 'receptor_type': 1} +syn_spec_pot = {"synapse_model": "static_synapse", "weight":w_plus, "delay":delay, "receptor_type": 0} +syn_spec_default = {"synapse_model": "static_synapse", "weight":1.0, "delay":delay, "receptor_type": 0} +syn_spec_dep = {"synapse_model": "static_synapse", "weight":w_minus, "delay":delay, "receptor_type": 0} +syn_spec_inhibitory = {"synapse_model": "static_synapse", "weight":-1.0, "delay":delay, "receptor_type": 0} +syn_spec_ext = {"synapse_model": "static_synapse", "weight":1., "delay":0.1, "receptor_type": 1} sr_nonselective = nest.Create("spike_recorder") sr_selective1 = nest.Create("spike_recorder") sr_selective2 = nest.Create("spike_recorder") sr_inhibitory = nest.Create("spike_recorder") -mm_selective1 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_AMPA_ext", "s_GABA"]}) +mm_selective1 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) +mm_selective2 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) +mm_nonselective = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) - nest.Connect(poisson_0, nonselective_pop + selective_pop1 + selective_pop2 + inhibitory_pop, conn_spec="all_to_all", @@ -156,9 +164,10 @@ nest.Connect(selective_pop2, sr_selective2) nest.Connect(inhibitory_pop, sr_inhibitory) - -nest.Connect(mm_selective1, selective_pop1) -nest.Connect(mm_inhibitory, inhibitory_pop) +nest.Connect(mm_selective1, selective_pop1[0]) +nest.Connect(mm_selective2, selective_pop2[0]) +nest.Connect(mm_nonselective, nonselective_pop[0]) +nest.Connect(mm_inhibitory, inhibitory_pop[0]) nest.Simulate(4000.) @@ -167,15 +176,27 @@ spikes_selective2 = sr_selective2.get("events", "times") spikes_inhibitory = sr_inhibitory.get("events", "times") +vm_selective1 = mm_selective1.get("events", "V_m") +s_AMPA_selective1 = mm_selective1.get("events", "s_AMPA") +s_GABA_selective1 = mm_selective1.get("events", "s_GABA") +s_NMDA_selective1 = mm_selective1.get("events", "s_NMDA") + +vm_selective2 = mm_selective2.get("events", "V_m") +s_AMPA_selective2 = mm_selective2.get("events", "s_AMPA") +s_GABA_selective2 = mm_selective2.get("events", "s_GABA") +s_NMDA_selective2 = mm_selective2.get("events", "s_NMDA") + +vm_inhibitory = mm_inhibitory.get("events", "V_m") +s_AMPA_inhibitory = mm_inhibitory.get("events", "s_AMPA") +s_GABA_inhibitory = mm_inhibitory.get("events", "s_GABA") +s_NMDA_inhibitory = mm_inhibitory.get("events", "s_NMDA") +gs = GridSpec(5,5) +bins = np.arange(0, 4001, 5) - 0.001 +plt.hist(spikes_selective1, bins=bins, histtype="step") +plt.hist(spikes_selective2, bins=bins, histtype="step") +plt.show() -senders = mm_selective1.get("events", "senders") -inds = senders == 1 -vm = mm_selective1.get("events", "V_m")[inds] -s_AMPA = mm_selective1.get("events", "s_AMPA")[inds] -s_AMPA_ext = mm_selective1.get("events", "s_AMPA_ext")[inds] -s_GABA = mm_selective1.get("events", "s_GABA")[inds] -s_NMDA = mm_selective1.get("events", "s_NMDA")[inds] diff --git a/pynest/examples/wang_neuron.py b/pynest/examples/wang_neuron.py index 661bb155a1..ec4e3332fc 100644 --- a/pynest/examples/wang_neuron.py +++ b/pynest/examples/wang_neuron.py @@ -21,12 +21,12 @@ "tau_decay_NMDA": tau_NMDA, "t_ref": 0.}) -mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_AMPA_ext", "s_NMDA", "s_GABA"], "interval": 0.1}) -mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_AMPA_ext", "s_NMDA", "s_GABA"], "interval": 0.1}) +mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) +mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) ex_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex, - "receptor_type": 0} + "weight": w_ex} + in_syn_spec = {"synapse_model": "static_synapse", "weight": w_in} From 6a04fb1a95c2cdff4fbde48160b49cc260986431 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 22 Nov 2023 13:15:42 +0100 Subject: [PATCH 025/184] fix spike recorders --- testsuite/pytests/test_iaf_wang_2002.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 4b8ff93cfd..18b355b9d0 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -76,7 +76,7 @@ def test_wang(): "tau_decay_NMDA": tau_NMDA}) pg = nest.Create("poisson_generator", {"rate": 50.}) - sr = nest.Create("spike_recorder") + sr = nest.Create("spike_recorder", {"time_in_steps": True}) nrn2 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, "tau_GABA": tau_GABA, "tau_decay_NMDA": tau_NMDA, From 945975794b1d807c08e5d3817e9267282dc287c1 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sun, 26 Nov 2023 19:22:43 +0100 Subject: [PATCH 026/184] exact model from Stine, wip --- models/iaf_wang_2002_exact.cpp | 583 +++++++++++++++++++++++++++++++++ models/iaf_wang_2002_exact.h | 521 +++++++++++++++++++++++++++++ modelsets/full | 1 + nestkernel/nest_names.cpp | 1 + 4 files changed, 1106 insertions(+) create mode 100644 models/iaf_wang_2002_exact.cpp create mode 100644 models/iaf_wang_2002_exact.h diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp new file mode 100644 index 0000000000..16fe341519 --- /dev/null +++ b/models/iaf_wang_2002_exact.cpp @@ -0,0 +1,583 @@ +/* + * iaf_wang_2002_exact.cpp + * + * This file is part of NEST. + * + * Copyright (C) 2004 The NEST Initiative + * + * NEST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * NEST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with NEST. If not, see . + * + */ + +#include "iaf_wang_2002_exact.h" + +#ifdef HAVE_GSL + +// Includes from libnestutil: +#include "dictdatum.h" +#include "dict_util.h" +#include "numerics.h" + +// Includes from nestkernel: +#include "exceptions.h" +#include "kernel_manager.h" +#include "nest_impl.h" +#include "universal_data_logger_impl.h" + +// Includes from sli: +#include "dict.h" +#include "dictutils.h" +#include "doubledatum.h" +#include "integerdatum.h" +#include "lockptrdatum.h" + +/* --------------------------------------------------------------------------- + * Recordables map + * --------------------------------------------------------------------------- */ +nest::RecordablesMap< nest::iaf_wang_2002_exact > nest::iaf_wang_2002_exact::recordablesMap_; + +namespace nest +{ +void +register_iaf_wang_2002_exact( const std::string& name ) +{ + register_node_model< iaf_wang_2002_exact >( name ); +} +/* + * Override the create() method with one call to RecordablesMap::insert_() + * for each quantity to be recorded. + */ +template <> +void +RecordablesMap< iaf_wang_2002_exact >::create() +{ + // add state variables to recordables map + insert_( names::V_m, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::V_m > ); + insert_( names::g_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::G_AMPA > ); + insert_( names::g_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::G_GABA > ); + insert_( names::NMDA_sum, &iaf_wang_2002_exact::get_NMDA_sum_ ); +} +} +/* --------------------------------------------------------------------------- + * Default constructors defining default parameters and state + * --------------------------------------------------------------------------- */ + +nest::iaf_wang_2002_exact::Parameters_::Parameters_() + : E_L( -70.0 ) // mV + , E_ex( 0.0 ) // mV + , E_in( -70.0 ) // mV + , V_th( -55.0 ) // mV + , V_reset( -60.0 ) // mV + , C_m( 500.0 ) // pF + , g_L( 25.0 ) // nS + , t_ref( 2.0 ) // ms + , tau_AMPA( 2.0 ) // ms + , tau_GABA( 5.0 ) // ms + , tau_rise_NMDA( 2.0 ) // ms + , tau_decay_NMDA( 100 ) // ms + , alpha( 0.5 ) // 1 / ms + , conc_Mg2( 1 ) // mM + , gsl_error_tol( 1e-3 ) +{ +} + +nest::iaf_wang_2002_exact::State_::State_( const Parameters_& p ) + : state_vec_size( 0 ) + , ode_state_( nullptr ) + , num_ports_( 2 ) + , r_( 0 ) +{ + ode_state_ = new double[ G_NMDA_base ]; + assert( ode_state_ ); + + ode_state_[ V_m ] = p.E_L; // initialize to reversal potential + ode_state_[ G_AMPA ] = 0.0; + ode_state_[ G_GABA ] = 0.0; + + state_vec_size = G_NMDA_base; +} + +nest::iaf_wang_2002_exact::State_::State_( const State_& s ) + : state_vec_size( s.state_vec_size ) + , ode_state_( nullptr ) + , num_ports_( s.num_ports_ ) + , r_( s.r_ ) +{ + assert( s.num_ports_ == 2 ); + assert( state_vec_size == G_NMDA_base ); + + ode_state_ = new double[ G_NMDA_base ]; + assert( ode_state_ ); + + ode_state_[ V_m ] = s.ode_state_[ V_m ]; + ode_state_[ G_AMPA ] = s.ode_state_[ G_AMPA ]; + ode_state_[ G_GABA ] = s.ode_state_[ G_GABA ]; +} + +nest::iaf_wang_2002_exact::Buffers_::Buffers_( iaf_wang_2002_exact& n ) + : logger_( n ) + , spikes_() + , weights_() + , s_( nullptr ) + , c_( nullptr ) + , e_( nullptr ) + , step_( Time::get_resolution().get_ms() ) + , integration_step_( step_ ) +{ + // Initialization of the remaining members is deferred to init_buffers_(). +} + +nest::iaf_wang_2002_exact::Buffers_::Buffers_( const Buffers_&, iaf_wang_2002_exact& n ) + : logger_( n ) + , spikes_() + , weights_() + , s_( nullptr ) + , c_( nullptr ) + , e_( nullptr ) + , step_( Time::get_resolution().get_ms() ) + , integration_step_( step_ ) +{ + // Initialization of the remaining members is deferred to init_buffers_(). +} + +/* --------------------------------------------------------------------------- + * Parameter and state extractions and manipulation functions + * --------------------------------------------------------------------------- */ + +void +nest::iaf_wang_2002_exact::Parameters_::get( DictionaryDatum& d ) const +{ + def< double >( d, names::E_L, E_L ); + def< double >( d, names::E_ex, E_ex ); + def< double >( d, names::E_in, E_in ); + def< double >( d, names::V_th, V_th ); + def< double >( d, names::V_reset, V_reset ); + def< double >( d, names::C_m, C_m ); + def< double >( d, names::g_L, g_L ); + def< double >( d, names::t_ref, t_ref ); + def< double >( d, names::tau_AMPA, tau_AMPA ); + def< double >( d, names::tau_GABA, tau_GABA ); + def< double >( d, names::tau_rise_NMDA, tau_rise_NMDA ); + def< double >( d, names::tau_decay_NMDA, tau_decay_NMDA ); + def< double >( d, names::alpha, alpha ); + def< double >( d, names::conc_Mg2, conc_Mg2 ); + def< double >( d, names::gsl_error_tol, gsl_error_tol ); +} + +void +nest::iaf_wang_2002_exact::Parameters_::set( const DictionaryDatum& d, Node* node ) +{ + // allow setting the membrane potential + updateValueParam< double >( d, names::V_th, V_th, node ); + updateValueParam< double >( d, names::V_reset, V_reset, node ); + updateValueParam< double >( d, names::t_ref, t_ref, node ); + updateValueParam< double >( d, names::E_L, E_L, node ); + + updateValueParam< double >( d, names::E_ex, E_ex, node ); + updateValueParam< double >( d, names::E_in, E_in, node ); + + updateValueParam< double >( d, names::C_m, C_m, node ); + updateValueParam< double >( d, names::g_L, g_L, node ); + + updateValueParam< double >( d, names::tau_AMPA, tau_AMPA, node ); + updateValueParam< double >( d, names::tau_GABA, tau_GABA, node ); + updateValueParam< double >( d, names::tau_rise_NMDA, tau_rise_NMDA, node ); + updateValueParam< double >( d, names::tau_decay_NMDA, tau_decay_NMDA, node ); + + updateValueParam< double >( d, names::alpha, alpha, node ); + updateValueParam< double >( d, names::conc_Mg2, conc_Mg2, node ); + + updateValueParam< double >( d, names::gsl_error_tol, gsl_error_tol, node ); + + if ( V_reset >= V_th ) + { + throw BadProperty( "Reset potential must be smaller than threshold." ); + } + if ( C_m <= 0 ) + { + throw BadProperty( "Capacitance must be strictly positive." ); + } + if ( t_ref < 0 ) + { + throw BadProperty( "Refractory time cannot be negative." ); + } + if ( tau_AMPA <= 0 or tau_GABA <= 0 or tau_rise_NMDA <= 0 or tau_decay_NMDA <= 0 ) + { + throw BadProperty( "All time constants must be strictly positive." ); + } + if ( alpha <= 0 ) + { + throw BadProperty( "alpha > 0 required." ); + } + if ( conc_Mg2 <= 0 ) + { + throw BadProperty( "Mg2 concentration must be strictly positive." ); + } + if ( gsl_error_tol <= 0.0 ) + { + throw BadProperty( "The gsl_error_tol must be strictly positive." ); + } +} + +void +nest::iaf_wang_2002_exact::State_::get( DictionaryDatum& d ) const +{ + def< double >( d, names::V_m, ode_state_[ V_m ] ); // Membrane potential + def< double >( d, names::g_AMPA, ode_state_[ G_AMPA ] ); + def< double >( d, names::g_GABA, ode_state_[ G_GABA ] ); + + // total NMDA sum + double NMDA_sum = get_NMDA_sum(); + def< double >( d, names::NMDA_sum, NMDA_sum ); +} + +void +nest::iaf_wang_2002_exact::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) +{ + updateValueParam< double >( d, names::V_m, ode_state_[ V_m ], node ); + updateValueParam< double >( d, names::g_AMPA, ode_state_[ G_AMPA ], node ); + updateValueParam< double >( d, names::g_GABA, ode_state_[ G_GABA ], node ); +} + +/* --------------------------------------------------------------------------- + * Default constructor for node + * --------------------------------------------------------------------------- */ + +nest::iaf_wang_2002_exact::iaf_wang_2002_exact() + : ArchivingNode() + , P_() + , S_( P_ ) + , B_( *this ) +{ + recordablesMap_.create(); + + calibrate(); +} + +/* --------------------------------------------------------------------------- + * Copy constructor for node + * --------------------------------------------------------------------------- */ + +nest::iaf_wang_2002_exact::iaf_wang_2002_exact( const iaf_wang_2002_exact& n_ ) + : ArchivingNode( n_ ) + , P_( n_.P_ ) + , S_( n_.S_ ) + , B_( n_.B_, *this ) +{ +} + +/* --------------------------------------------------------------------------- + * Destructor for node + * --------------------------------------------------------------------------- */ + +nest::iaf_wang_2002_exact::~iaf_wang_2002_exact() +{ + // GSL structs may not have been allocated, so we need to protect destruction + + if ( B_.s_ ) + { + gsl_odeiv_step_free( B_.s_ ); + } + + if ( B_.c_ ) + { + gsl_odeiv_control_free( B_.c_ ); + } + + if ( B_.e_ ) + { + gsl_odeiv_evolve_free( B_.e_ ); + } + + if ( S_.ode_state_ ) + { + delete[] S_.ode_state_; + } +} + +/* --------------------------------------------------------------------------- + * Node initialization functions + * --------------------------------------------------------------------------- */ + +void +nest::iaf_wang_2002_exact::init_state_() +{ + assert( S_.state_vec_size == State_::G_NMDA_base ); + + double* old_state = S_.ode_state_; + S_.state_vec_size = State_::G_NMDA_base + 2 * ( S_.num_ports_ - 2 ); + S_.ode_state_ = new double[ S_.state_vec_size ]; + + assert( S_.ode_state_ ); + + S_.ode_state_[ State_::V_m ] = old_state[ State_::V_m ]; + S_.ode_state_[ State_::G_AMPA ] = old_state[ State_::G_AMPA ]; + S_.ode_state_[ State_::G_GABA ] = old_state[ State_::G_GABA ]; + + for ( size_t i = State_::G_NMDA_base; i < S_.state_vec_size; ++i ) + { + S_.ode_state_[ i ] = 0.0; + } + + delete[] old_state; +} + +void +nest::iaf_wang_2002_exact::init_buffers_() +{ + B_.spikes_.resize( S_.num_ports_ ); + + for ( auto& sb : B_.spikes_ ) + { + sb.clear(); // includes resize + } + + B_.currents_.clear(); // includes resize + + B_.weights_.resize( S_.num_ports_ - NMDA + 1, 0.0 ); + + B_.logger_.reset(); // includes resize + ArchivingNode::clear_history(); + + if ( B_.s_ == nullptr ) + { + B_.s_ = gsl_odeiv_step_alloc( gsl_odeiv_step_rkf45, S_.state_vec_size ); + } + else + { + gsl_odeiv_step_reset( B_.s_ ); + } + + if ( B_.c_ == nullptr ) + { + B_.c_ = gsl_odeiv_control_y_new( P_.gsl_error_tol, 0.0 ); + } + else + { + gsl_odeiv_control_init( B_.c_, P_.gsl_error_tol, 0.0, 1.0, 0.0 ); + } + + if ( B_.e_ == nullptr ) + { + B_.e_ = gsl_odeiv_evolve_alloc( S_.state_vec_size ); + } + else + { + gsl_odeiv_evolve_reset( B_.e_ ); + } + + B_.sys_.function = iaf_wang_2002_exact_dynamics; + B_.sys_.jacobian = nullptr; + B_.sys_.dimension = S_.state_vec_size; + B_.sys_.params = reinterpret_cast< void* >( this ); + B_.step_ = Time::get_resolution().get_ms(); + B_.integration_step_ = Time::get_resolution().get_ms(); + + B_.I_stim_ = 0.0; +} + + +void +nest::iaf_wang_2002_exact::pre_run_hook() +{ + // ensures initialization in case mm connected after Simulate + B_.logger_.init(); + + V_.RefractoryCounts = Time( Time::ms( P_.t_ref ) ).get_steps(); + // since t_ref_ >= 0, this can only fail in error + assert( V_.RefractoryCounts >= 0 ); +} + +void +nest::iaf_wang_2002_exact::calibrate() +{ + B_.logger_.init(); + + // internals V_ + V_.RefractoryCounts = Time( Time::ms( ( double ) ( P_.t_ref ) ) ).get_steps(); +} + +/* --------------------------------------------------------------------------- + * Update and spike handling functions + * --------------------------------------------------------------------------- */ + +extern "C" inline int +nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[], void* pnode ) +{ + // a shorthand + typedef nest::iaf_wang_2002_exact::State_ State_; + + // get access to node so we can almost work as in a member function + assert( pnode ); + const nest::iaf_wang_2002_exact& node = *( reinterpret_cast< nest::iaf_wang_2002_exact* >( pnode ) ); + + // ode_state[] here is---and must be---the state vector supplied by the integrator, + // not the state vector in the node, node.S_.ode_state[]. + + const double I_AMPA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) * ode_state[ State_::G_AMPA ]; + + const double I_rec_GABA = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::G_GABA ]; + + // The sum of NMDA_G + double total_NMDA = 0; + for ( size_t i = State_::G_NMDA_base + 1, w_idx = 0; i < node.S_.state_vec_size; i += 2, ++w_idx ) + { + total_NMDA += ode_state[ i ] * node.B_.weights_.at( w_idx ); + } + + const double I_rec_NMDA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) + / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ State_::V_m ] ) / 3.57 ) * total_NMDA; + + const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA - node.B_.I_stim_; + + f[ State_::V_m ] = ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; + + f[ State_::G_AMPA ] = -ode_state[ State_::G_AMPA ] / node.P_.tau_AMPA; + f[ State_::G_GABA ] = -ode_state[ State_::G_GABA ] / node.P_.tau_GABA; + + for ( size_t i = State_::G_NMDA_base; i < node.S_.state_vec_size; i += 2 ) + { + f[ i + 1 ] = + -ode_state[ i + 1 ] / node.P_.tau_decay_NMDA + node.P_.alpha * ode_state[ i ] * ( 1 - ode_state[ i + 1 ] ); + f[ i ] = -ode_state[ i ] / node.P_.tau_rise_NMDA; + } + + return GSL_SUCCESS; +} + +void +nest::iaf_wang_2002_exact::update( Time const& origin, const long from, const long to ) +{ + for ( long lag = from; lag < to; ++lag ) + { + double t = 0.0; + + // numerical integration with adaptive step size control: + // ------------------------------------------------------ + // gsl_odeiv_evolve_apply performs only a single numerical + // integration step, starting from t and bounded by step; + // the while-loop ensures integration over the whole simulation + // step (0, step] if more than one integration step is needed due + // to a small integration step size; + // note that (t+IntegrationStep > step) leads to integration over + // (t, step] and afterwards setting t to step, but it does not + // enforce setting IntegrationStep to step-t; this is of advantage + // for a consistent and efficient integration across subsequent + // simulation intervals + while ( t < B_.step_ ) + { + const int status = gsl_odeiv_evolve_apply( B_.e_, + B_.c_, + B_.s_, + &B_.sys_, // system of ODE + &t, // from t + B_.step_, // to t <= step + &B_.integration_step_, // integration step size + S_.ode_state_ ); // neuronal state + + if ( status != GSL_SUCCESS ) + { + throw GSLSolverFailure( get_name(), status ); + } + } + + // add incoming spikes + S_.ode_state_[ State_::G_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); + S_.ode_state_[ State_::G_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); + + for ( size_t i = NMDA - 1; i < B_.spikes_.size(); ++i ) + { + const size_t si = i - ( NMDA - 1 ); + + assert( si >= 0 ); + assert( State_::G_NMDA_base + si * 2 < S_.state_vec_size ); + + S_.ode_state_[ State_::G_NMDA_base + si * 2 ] += B_.spikes_.at( i ).get_value( lag ); + } + + // absolute refractory period + if ( S_.r_ ) + { + // neuron is absolute refractory + --S_.r_; + S_.ode_state_[ State_::V_m ] = P_.V_reset; // clamp potential + } + else if ( S_.ode_state_[ State_::V_m ] >= P_.V_th ) + { + // neuron is not absolute refractory + S_.r_ = V_.RefractoryCounts; + S_.ode_state_[ State_::V_m ] = P_.V_reset; + + // log spike with ArchivingNode + set_spiketime( Time::step( origin.get_steps() + lag + 1 ) ); + + SpikeEvent se; + kernel().event_delivery_manager.send( *this, se, lag ); + } + + // set new input current + B_.I_stim_ = B_.currents_.get_value( lag ); + + // voltage logging + B_.logger_.record_data( origin.get_steps() + lag ); + } +} + +// Do not move this function as inline to h-file. It depends on +// universal_data_logger_impl.h being included here. +void +nest::iaf_wang_2002_exact::handle( DataLoggingRequest& e ) +{ + B_.logger_.handle( e ); +} + +void +nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) +{ + assert( e.get_delay_steps() > 0 ); + assert( e.get_rport() <= static_cast< int >( B_.spikes_.size() ) ); + + const double steps = e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ); + + const auto rport = e.get_rport(); + if ( rport < NMDA ) + { + B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); + } + else + { + B_.spikes_[ rport - 1 ].add_value( steps, e.get_multiplicity() ); + + const size_t w_idx = rport - NMDA; + if ( B_.weights_[ w_idx ] == 0.0 ) + { + B_.weights_[ w_idx ] = e.get_weight(); + } + else if ( B_.weights_[ w_idx ] != e.get_weight() ) + { + throw KernelException( "iaf_wang_2002_exact requires constant weights." ); + } + } +} + +void +nest::iaf_wang_2002_exact::handle( CurrentEvent& e ) +{ + assert( e.get_delay_steps() > 0 ); + + B_.currents_.add_value( + e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), e.get_weight() * e.get_current() ); +} + +#endif // HAVE_GSL diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h new file mode 100644 index 0000000000..ef0fb3e414 --- /dev/null +++ b/models/iaf_wang_2002_exact.h @@ -0,0 +1,521 @@ +/* + * iaf_wang_2002_exact.h + * + * This file is part of NEST. + * + * Copyright (C) 2004 The NEST Initiative + * + * NEST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * NEST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with NEST. If not, see . + * + */ + +#ifndef IAF_WANG_2002_EXACT +#define IAF_WANG_2002_EXACT + +// Generated includes: +#include "config.h" + +#ifdef HAVE_GSL + +// C includes: +#include +#include +#include + +// Includes from nestkernel: +#include "archiving_node.h" +#include "connection.h" +#include "event.h" +#include "nest_types.h" +#include "ring_buffer.h" +#include "universal_data_logger.h" + +namespace nest +{ +/** + * Function computing right-hand side of ODE for GSL solver. + * @note Must be declared here so we can befriend it in class. + * @note Must have C-linkage for passing to GSL. Internally, it is + * a first-class C++ function, but cannot be a member function + * because of the C-linkage. + * @note No point in declaring it inline, since it is called + * through a function pointer. + * @param void* Pointer to model neuron instance. +**/ +extern "C" inline int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); + + +/* BeginUserDocs: neuron, integrate-and-fire, conductance-based + +Short description ++++++++++++++++++ + +Leaky integrate-and-fire-neuron model with dynamic NMDA receptors. + +Description ++++++++++++ + +This model implements a version of the neuron model described in [1]_. + +It contains AMPA, GABA and NMDA synapses, where the number of NMDA ports are dependent +on the number of presynaptic connections. + +The AMPA and GABA synapses are given as alpha functions, while the NMDA synapse is modeled +with a non-linear function described by + +.. math:: + \frac{ dg_j^{NMDA}(t) }{ dt } = - \frac{ g_j^{NMDA}(t) }{ \tau_{NMDA,decay} } + \alpha x_j(t)(1 - s_j^{NMDA}(t)) \\ + \frac{ dx_j(t) }{ dt } =- \frac{ x_j(t) }{ \tau_{NMDA,rise} } + \sum_k \delta(t - t_j^k). + +The synaptic current of NMDA is given by + +.. math:: + I_{NMDA}(t) = \frac{ V(t) - E_{ex} }{ 1 + [Mg^{2+}]exp(-0.062V(t))/3.57 }\sum_{j=1}w_jg_j^{NMDA}, + +where `w_j` is the weight of connection with presynaptic neuron `j`. + + +Parameters +++++++++++ + +The following parameters can be set in the status dictionary. + + +=============== ======= =========================================================== + E_L mV Resting potential + E_ex mV Excitatory reversal potential + E_in mV Inhibitory reversal potential + V_th mV Threshold potential + V_reset mV Reset potential + C_m pF Membrane capacitance + g_L nS Leak conductance + t_ref ms Refractory period + tau_AMPA ms Synaptic time constant for AMPA synapse + tau_GABA ms Synaptic time constant for GABA synapse + tau_rise_NMDA ms Synaptic rise time constant for NMDA synapse + tau_decay_NMDA ms Synaptic decay time constant for NMDA synapse + alpha 1/ms Scaling factor for NMDA synapse + conc_Mg2 mM Extracellular magnesium concentration + gsl_error_tol - GSL error tolerance +=============== ======= =========================================================== + + +Recordables ++++++++++++ + +The following values can be recorded. + +=========== =========================================================== + V_m Membrane potential + g_AMPA AMPA gate + g_GABA GABA gate + NMDA_sum sum of NMDA over all presynaptic neurons j +=========== =========================================================== + +.. note:: + It is possible to set values for `V_m`, `g_AMPA` and `g_GABA` when creating the model, while the + different `g_NMDA_j` (`j` represents presynaptic neuron `j`) can not be set by the user. + +.. note:: + The variable `g_AMPA` and `g_GABA` in the NEST implementation does not correspond to `g_{recAMPA, extAMPA, GABA}` + in [1]_. `g_{recAMPA, extAMPA, GABA, NMBA}` from [1]_ is built into the weights in this NEST model, so setting the + variables is thus done by changing the weights. + +Sends ++++++ + +SpikeEvent + +Receives +++++++++ + +SpikeEvent, CurrentEvent, DataLoggingRequest + +References +++++++++++ + +.. [1] Wang, X. J. (2002). Probabilistic decision making by slow reverberation in + cortical circuits. Neuron, 36(5), 955-968. + DOI: https://doi.org/10.1016/S0896-6273(02)01092-9 + +See also +++++++++ + +iaf_cond_alpha, ht_neuron + +EndUserDocs */ + +void register_iaf_wang_2002_exact( const std::string& name ); + +class iaf_wang_2002_exact : public ArchivingNode +{ +public: + /** + * The constructor is only used to create the model prototype in the model manager. + **/ + iaf_wang_2002_exact(); + + /** + * The copy constructor is used to create model copies and instances of the model. + * @note The copy constructor needs to initialize the parameters and part of the state. + * Initialization of rest of state, buffers and internal variables is deferred to + * @c init_state_(), @c init_buffers_() and @c calibrate(). + **/ + iaf_wang_2002_exact( const iaf_wang_2002_exact& ); + + /** + * Destructor. + **/ + ~iaf_wang_2002_exact() override; + + /* + * Import all overloaded virtual functions that we + * override in this class. For background information, + * see http://www.gotw.ca/gotw/005.htm. + */ + + using Node::handles_test_event; + using Node::handle; + + /** + * Used to validate that we can send SpikeEvent to desired target:port. + **/ + size_t send_test_event( Node& target, size_t receptor_type, synindex, bool ) override; + + /* ------------------------------------------------------------------------- + * Functions handling incoming events. + * We tell NEST that we can handle incoming events of various types by + * defining handle() for the given event. + * ------------------------------------------------------------------------- */ + + void handle( SpikeEvent& ) override; //!< accept spikes + void handle( CurrentEvent& e ) override; //!< accept current + void handle( DataLoggingRequest& ) override; //!< allow recording with multimeter + + size_t handles_test_event( SpikeEvent&, size_t ) override; + size_t handles_test_event( CurrentEvent&, size_t ) override; + size_t handles_test_event( DataLoggingRequest&, size_t ) override; + + /* ------------------------------------------------------------------------- + * Functions for getting/setting parameters and state values. + * ------------------------------------------------------------------------- */ + + void get_status( DictionaryDatum& ) const override; + void set_status( const DictionaryDatum& ) override; + +private: + /** + * Synapse types to connect to + **/ + enum SynapseTypes + { + INF_SPIKE_RECEPTOR = 0, + AMPA, + GABA, + NMDA, + SUP_SPIKE_RECEPTOR + }; + + void init_state_() override; + void pre_run_hook() override; + void init_buffers_() override; + void calibrate(); + void update( Time const&, const long, const long ) override; + + // The next two classes need to be friends to access the State_ class/member + friend class RecordablesMap< iaf_wang_2002_exact >; + friend class UniversalDataLogger< iaf_wang_2002_exact >; + + // Parameters class -------------------------------------------------------------- + + /** + * Parameters of the neuron. + * + * These are the parameters that can be set by the user through @c `node.set()`. + * They are initialized from the model prototype when the node is created. + * Parameters do not change during calls to @c update(). + **/ + struct Parameters_ + { + double E_L; //!< Resting Potential in mV + double E_ex; //!< Excitatory reversal Potential in mV + double E_in; //!< Inhibitory reversal Potential in mV + double V_th; //!< Threshold Potential in mV + double V_reset; //!< Reset Potential in mV + double C_m; //!< Membrane Capacitance in pF + double g_L; //!< Leak Conductance in nS + double t_ref; //!< Refractory period in ms + double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms + double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms + double tau_rise_NMDA; //!< Synaptic Rise Time Constant NMDA Synapse in ms + double tau_decay_NMDA; //!< Synaptic Decay Time Constant NMDA Synapse in ms + double alpha; //!< Scaling factor for NMDA synapse in 1/ms + double conc_Mg2; //!< Extracellular Magnesium Concentration in mM + + double gsl_error_tol; //!< GSL Error Tolerance + + /** + * Initialize parameters to their default values. + **/ + Parameters_(); + + void get( DictionaryDatum& ) const; //!< Store current values in dictionary + void set( const DictionaryDatum&, Node* node ); //!< Set values from dictionary + }; + + + // State variables class -------------------------------------------- + + /** + * State variables of the model. + * + * State variables consist of the state vector for the subthreshold + * dynamics and the refractory count. The state vector must be a + * C-style array to be compatible with GSL ODE solvers. + * + * @note Copy constructor is required because of the C-style array. + */ + struct State_ + { + //! Symbolic indices to the elements of the state vector y + enum StateVecElems + { + V_m = 0, + G_AMPA, + G_GABA, + G_NMDA_base, // (x_NMDA_1, G_NMDA_1), (x_NMDA_2, G_NMDA_2), (x_NMDA_3, G_NMDA_3), ..., (x_NMDA_j, G_NMDA_j) + }; + + size_t state_vec_size; + + double* ode_state_; //!< state vector, must be C-array for GSL solver + long num_ports_; //!< Number of ports + int r_; //!< number of refractory steps remaining + + State_( const Parameters_& ); //!< Default initialization + State_( const State_& ); + + void get( DictionaryDatum& ) const; + void set( const DictionaryDatum&, const Parameters_&, Node* ); + + //! Get the sum of NMDA over all presynaptic neurons + double + get_NMDA_sum() const + { + double NMDA_sum = 0.0; + for ( size_t i = G_NMDA_base; i < state_vec_size; i += 2 ) + { + NMDA_sum += ode_state_[ i + 1 ]; + } + return NMDA_sum; + } + }; + + // Variables class ------------------------------------------------------- + + /** + * Internal variables of the model. + * Variables are re-initialized upon each call to Simulate. + */ + struct Variables_ + { + //! refractory time in steps + long RefractoryCounts; + }; + + // Buffers class -------------------------------------------------------- + + /** + * Buffers of the model. + * Buffers are on par with state variables in terms of persistence, + * i.e., initialized only upon first Simulate call after ResetKernel, + * but its implementation details hidden from the user. + */ + struct Buffers_ + { + Buffers_( iaf_wang_2002_exact& ); + Buffers_( const Buffers_&, iaf_wang_2002_exact& ); + + /** + * Logger for all analog data + **/ + UniversalDataLogger< iaf_wang_2002_exact > logger_; + + // ----------------------------------------------------------------------- + // Buffers and sums of incoming spikes and currents per timestep + // ----------------------------------------------------------------------- + std::vector< RingBuffer > spikes_; + RingBuffer currents_; + + + /** + * Vector for weights + */ + std::vector< double > weights_; + + // ----------------------------------------------------------------------- + // GSL ODE solver data structures + // ----------------------------------------------------------------------- + + gsl_odeiv_step* s_; //!< stepping function + gsl_odeiv_control* c_; //!< adaptive stepsize control function + gsl_odeiv_evolve* e_; //!< evolution function + gsl_odeiv_system sys_; //!< struct describing system + + /* + * integration_step_ should be reset with the neuron on ResetNetwork, + * but remain unchanged during calibration. Since it is initialized with + * step_, and the resolution cannot change after nodes have been created, + * it is safe to place both here. + */ + double step_; //!< step size in ms + double integration_step_; //!< current integration time step, updated by GSL + + /** + * Input current injected by CurrentEvent. + * This variable is used to transport the current applied into the + * _dynamics function computing the derivative of the state vector. + * It must be a part of Buffers_, since it is initialized once before + * the first simulation, but not modified before later Simulate calls. + */ + double I_stim_; + }; + + // Access functions for UniversalDataLogger ------------------------------- + + //! Read out state vector elements, used by UniversalDataLogger + template < State_::StateVecElems elem > + double + get_ode_state_elem_() const + { + return S_.ode_state_[ elem ]; + } + + //! Get the sum of NMDA from state, used by UniversalDataLogger + double + get_NMDA_sum_() const + { + return S_.get_NMDA_sum(); + } + + // Data members ----------------------------------------------------------- + + // keep the order of these lines, seems to give best performance + Parameters_ P_; //!< Free parameters. + State_ S_; //!< Dynamic state. + Variables_ V_; //!< Internal Variables + Buffers_ B_; //!< Buffers. + + //! Mapping of recordables names to access functions + static RecordablesMap< iaf_wang_2002_exact > recordablesMap_; + friend int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); + +}; /* neuron iaf_wang_2002_exact */ + +inline size_t +iaf_wang_2002_exact::send_test_event( Node& target, size_t receptor_type, synindex, bool ) +{ + SpikeEvent e; + e.set_sender( *this ); + return target.handles_test_event( e, receptor_type ); +} + +inline size_t +iaf_wang_2002_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) +{ + if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) ) + { + throw UnknownReceptorType( receptor_type, get_name() ); + return 0; + } + else + { + if ( receptor_type == NMDA ) + { + ++S_.num_ports_; + } + return receptor_type; + } +} + +inline size_t +iaf_wang_2002_exact::handles_test_event( CurrentEvent&, size_t receptor_type ) +{ + if ( receptor_type != 0 ) + { + throw UnknownReceptorType( receptor_type, get_name() ); + } + return 0; +} + +inline size_t +iaf_wang_2002_exact::handles_test_event( DataLoggingRequest& dlr, size_t receptor_type ) +{ + /* + * You should usually not change the code in this function. + * It confirms to the connection management system that we are able + * to handle @c DataLoggingRequest on port 0. + * The function also tells the built-in UniversalDataLogger that this node + * is recorded from and that it thus needs to collect data during simulation. + */ + if ( receptor_type != 0 ) + { + throw UnknownReceptorType( receptor_type, get_name() ); + } + + return B_.logger_.connect_logging_device( dlr, recordablesMap_ ); +} + +inline void +iaf_wang_2002_exact::get_status( DictionaryDatum& d ) const +{ + P_.get( d ); + S_.get( d ); + ArchivingNode::get_status( d ); + + DictionaryDatum receptor_type = new Dictionary(); + + ( *receptor_type )[ names::AMPA ] = AMPA; + ( *receptor_type )[ names::GABA ] = GABA; + ( *receptor_type )[ names::NMDA ] = NMDA; + + ( *d )[ names::receptor_types ] = receptor_type; + + ( *d )[ names::recordables ] = recordablesMap_.get_list(); +} + +inline void +iaf_wang_2002_exact::set_status( const DictionaryDatum& d ) +{ + Parameters_ ptmp = P_; // temporary copy in case of errors + ptmp.set( d, this ); // throws if BadProperty + State_ stmp = S_; // temporary copy in case of errors + stmp.set( d, ptmp, this ); // throws if BadProperty + + /* + * We now know that (ptmp, stmp) are consistent. We do not + * write them back to (P_, S_) before we are also sure that + * the properties to be set in the parent class are internally + * consistent. + */ + ArchivingNode::set_status( d ); + + // if we get here, temporaries contain consistent set of properties + P_ = ptmp; + S_ = stmp; +}; +} // namespace + +#endif // HAVE_GSL +#endif // IAF_WANG_2002 diff --git a/modelsets/full b/modelsets/full index 569ac35de2..f3abb17749 100644 --- a/modelsets/full +++ b/modelsets/full @@ -61,6 +61,7 @@ iaf_psc_exp_ps iaf_psc_exp_ps_lossless iaf_tum_2000 iaf_wang_2002 +iaf_wang_2002_exact izhikevich jonke_synapse lin_rate diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 2b03528f9e..479ee3d798 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -313,6 +313,7 @@ const Name music_channel( "music_channel" ); const Name N( "N" ); const Name NMDA( "NMDA" ); +const Name NMDA_sum( "NMDA_sum" ); const Name N_channels( "N_channels" ); const Name N_NaP( "N_NaP" ); const Name N_T( "N_T" ); From 37d1133e893668586467364337584f03d87616ea Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 27 Nov 2023 13:47:19 +0100 Subject: [PATCH 027/184] add test for exact wang --- testsuite/pytests/test_iaf_wang_2002_exact.py | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 testsuite/pytests/test_iaf_wang_2002_exact.py diff --git a/testsuite/pytests/test_iaf_wang_2002_exact.py b/testsuite/pytests/test_iaf_wang_2002_exact.py new file mode 100644 index 0000000000..5632218cd0 --- /dev/null +++ b/testsuite/pytests/test_iaf_wang_2002_exact.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +# +# test_iaf_wang_2002.py +# +# This file is part of NEST. +# +# Copyright (C) 2004 The NEST Initiative +# +# NEST is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# NEST is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with NEST. If not, see . + +import unittest +import nest +import numpy as np + + +class IafWang2002TestCase(unittest.TestCase): + """Tests for iaf_wang_2002""" + + def setup(self): + nest.ResetKernel() + + def test_multiple_NMDA_ports(self): + """ + Check that setting multiple NMDA receptors works + """ + # Create the new model, noise and detectors + neuron = nest.Create('iaf_wang_2002') + poiss = nest.Create('poisson_generator') + poiss.rate = 6400. + + voltmeter = nest.Create('voltmeter') + voltmeter.set(record_from=['V_m', 'g_AMPA', 'g_GABA', 'NMDA_sum']) + + # Connect to NMDA receptor several times to check that we create new ports every time. + receptors = neuron.get('receptor_types') + + nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['AMPA']}) + nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['GABA']}) + nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['NMDA']}) + nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['NMDA']}) + nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['NMDA']}) + nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['NMDA']}) + + nest.Connect(voltmeter, neuron) + + # Check if NMDA sum is 0 before simulating + self.assertEqual(neuron.NMDA_sum, 0.) + + # Simulate + nest.Simulate(1000.) + + # Check sum NMDA after simulating + self.assertTrue(neuron.NMDA_sum > 0.) + + # Check g_AMPA after simulating + self.assertTrue(voltmeter.get('events', 'g_AMPA').any() > 0.) + +def suite(): + suite = unittest.makeSuite(IafWang2002TestCase, 'test') + return suite + +def run(): + runner = unittest.TextTestRunner(verbosity=2) + runner.run(suite()) + + +if __name__ == "__main__": + run() From 5b1715b2651c8cc402bff0b461b19aa601da9328 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 30 Nov 2023 16:28:56 +0100 Subject: [PATCH 028/184] exact version, rports work, WIP --- models/iaf_wang_2002_exact.cpp | 2 + models/iaf_wang_2002_exact.h | 78 +++++++++++++--------------------- 2 files changed, 32 insertions(+), 48 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 16fe341519..d53e101ae3 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -550,6 +550,8 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) const double steps = e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ); + std::cout << "B_.spikes_.size() = " << B_.spikes_.size() << std::endl; + std::cout << "rport: " << e.get_rport() << std::endl; const auto rport = e.get_rport(); if ( rport < NMDA ) { diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index ef0fb3e414..b9361a6ad8 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -161,22 +161,8 @@ void register_iaf_wang_2002_exact( const std::string& name ); class iaf_wang_2002_exact : public ArchivingNode { public: - /** - * The constructor is only used to create the model prototype in the model manager. - **/ iaf_wang_2002_exact(); - - /** - * The copy constructor is used to create model copies and instances of the model. - * @note The copy constructor needs to initialize the parameters and part of the state. - * Initialization of rest of state, buffers and internal variables is deferred to - * @c init_state_(), @c init_buffers_() and @c calibrate(). - **/ iaf_wang_2002_exact( const iaf_wang_2002_exact& ); - - /** - * Destructor. - **/ ~iaf_wang_2002_exact() override; /* @@ -193,12 +179,6 @@ class iaf_wang_2002_exact : public ArchivingNode **/ size_t send_test_event( Node& target, size_t receptor_type, synindex, bool ) override; - /* ------------------------------------------------------------------------- - * Functions handling incoming events. - * We tell NEST that we can handle incoming events of various types by - * defining handle() for the given event. - * ------------------------------------------------------------------------- */ - void handle( SpikeEvent& ) override; //!< accept spikes void handle( CurrentEvent& e ) override; //!< accept current void handle( DataLoggingRequest& ) override; //!< allow recording with multimeter @@ -215,6 +195,12 @@ class iaf_wang_2002_exact : public ArchivingNode void set_status( const DictionaryDatum& ) override; private: + void init_state_() override; + void pre_run_hook() override; + void init_buffers_() override; + void calibrate(); + void update( Time const&, const long, const long ) override; + /** * Synapse types to connect to **/ @@ -227,25 +213,15 @@ class iaf_wang_2002_exact : public ArchivingNode SUP_SPIKE_RECEPTOR }; - void init_state_() override; - void pre_run_hook() override; - void init_buffers_() override; - void calibrate(); - void update( Time const&, const long, const long ) override; + + + // make dynamics function quasi-member + friend int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); // The next two classes need to be friends to access the State_ class/member friend class RecordablesMap< iaf_wang_2002_exact >; friend class UniversalDataLogger< iaf_wang_2002_exact >; - // Parameters class -------------------------------------------------------------- - - /** - * Parameters of the neuron. - * - * These are the parameters that can be set by the user through @c `node.set()`. - * They are initialized from the model prototype when the node is created. - * Parameters do not change during calls to @c update(). - **/ struct Parameters_ { double E_L; //!< Resting Potential in mV @@ -274,7 +250,7 @@ class iaf_wang_2002_exact : public ArchivingNode void set( const DictionaryDatum&, Node* node ); //!< Set values from dictionary }; - +public: // State variables class -------------------------------------------- /** @@ -322,18 +298,7 @@ class iaf_wang_2002_exact : public ArchivingNode } }; - // Variables class ------------------------------------------------------- - - /** - * Internal variables of the model. - * Variables are re-initialized upon each call to Simulate. - */ - struct Variables_ - { - //! refractory time in steps - long RefractoryCounts; - }; - +private: // Buffers class -------------------------------------------------------- /** @@ -392,6 +357,19 @@ class iaf_wang_2002_exact : public ArchivingNode double I_stim_; }; + + // Variables class ------------------------------------------------------- + + /** + * Internal variables of the model. + * Variables are re-initialized upon each call to Simulate. + */ + struct Variables_ + { + //! refractory time in steps + long RefractoryCounts; + }; + // Access functions for UniversalDataLogger ------------------------------- //! Read out state vector elements, used by UniversalDataLogger @@ -419,7 +397,6 @@ class iaf_wang_2002_exact : public ArchivingNode //! Mapping of recordables names to access functions static RecordablesMap< iaf_wang_2002_exact > recordablesMap_; - friend int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); }; /* neuron iaf_wang_2002_exact */ @@ -443,9 +420,14 @@ iaf_wang_2002_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) { if ( receptor_type == NMDA ) { + // give each NMDA synapse a unique rport, starting from 2 (num_ports_ is initialized to 2) ++S_.num_ports_; + return S_.num_ports_ - 1; } + else + { return receptor_type; + } } } From 8c651ff810a50059edc76928a90a443525f45c71 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 30 Nov 2023 16:29:50 +0100 Subject: [PATCH 029/184] formatting --- models/iaf_wang_2002.h | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 388c408992..dd8f8c9019 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -182,14 +182,11 @@ class iaf_wang_2002 : public ArchivingNode //! Used to validate that we can send SpikeEvent to desired target:port. size_t send_test_event( Node&, size_t, synindex, bool ) override; -// void sends_secondary_event( DelayedRateConnectionEvent& ) override; - void handle( SpikeEvent& ) override; //!< accept spikes void handle( CurrentEvent& ) override; //!< accept current void handle( DataLoggingRequest& ) override; //!< allow recording with multimeter size_t handles_test_event( SpikeEvent&, size_t ) override; -// size_t handles_test_event( DelayedRateConnectionEvent&,size_t ) override; size_t handles_test_event( CurrentEvent&, size_t ) override; size_t handles_test_event( DataLoggingRequest&, size_t ) override; @@ -220,9 +217,6 @@ class iaf_wang_2002 : public ArchivingNode friend class RecordablesMap< iaf_wang_2002 >; friend class UniversalDataLogger< iaf_wang_2002 >; -private: - // - // Model parameters struct Parameters_ { double E_L; //!< Resting Potential in mV @@ -285,15 +279,13 @@ class iaf_wang_2002 : public ArchivingNode State_( const Parameters_& ); //!< Default initialization State_( const State_& ); - void get( DictionaryDatum& ) const; void set( const DictionaryDatum&, const Parameters_&, Node* ); - }; private: - // Buffers class -------------------------------------------------------- + // Buffers class -------------------------------------------------------- /** * Buffers of the model. @@ -357,8 +349,6 @@ class iaf_wang_2002 : public ArchivingNode long RefractoryCounts_; }; - - // Access functions for UniversalDataLogger ------------------------------- //! Read out state vector elements, used by UniversalDataLogger From 8e76c45465508f9c727b00ddeec9b34875259aa1 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 12 Dec 2023 11:28:18 +0100 Subject: [PATCH 030/184] exact model seems to work --- models/iaf_wang_2002_exact.cpp | 19 +++-- models/iaf_wang_2002_exact.h | 12 +-- pynest/examples/wang_neuron_exact.py | 107 +++++++++++++++++++++++++++ 3 files changed, 124 insertions(+), 14 deletions(-) create mode 100644 pynest/examples/wang_neuron_exact.py diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index d53e101ae3..1151fcf418 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -64,8 +64,8 @@ RecordablesMap< iaf_wang_2002_exact >::create() { // add state variables to recordables map insert_( names::V_m, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::V_m > ); - insert_( names::g_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::G_AMPA > ); - insert_( names::g_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::G_GABA > ); + insert_( names::s_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::G_AMPA > ); + insert_( names::s_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::G_GABA > ); insert_( names::NMDA_sum, &iaf_wang_2002_exact::get_NMDA_sum_ ); } } @@ -234,8 +234,8 @@ void nest::iaf_wang_2002_exact::State_::get( DictionaryDatum& d ) const { def< double >( d, names::V_m, ode_state_[ V_m ] ); // Membrane potential - def< double >( d, names::g_AMPA, ode_state_[ G_AMPA ] ); - def< double >( d, names::g_GABA, ode_state_[ G_GABA ] ); + def< double >( d, names::s_AMPA, ode_state_[ G_AMPA ] ); + def< double >( d, names::s_GABA, ode_state_[ G_GABA ] ); // total NMDA sum double NMDA_sum = get_NMDA_sum(); @@ -246,8 +246,8 @@ void nest::iaf_wang_2002_exact::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) { updateValueParam< double >( d, names::V_m, ode_state_[ V_m ], node ); - updateValueParam< double >( d, names::g_AMPA, ode_state_[ G_AMPA ], node ); - updateValueParam< double >( d, names::g_GABA, ode_state_[ G_GABA ], node ); + updateValueParam< double >( d, names::s_AMPA, ode_state_[ G_AMPA ], node ); + updateValueParam< double >( d, names::s_GABA, ode_state_[ G_GABA ], node ); } /* --------------------------------------------------------------------------- @@ -550,15 +550,17 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) const double steps = e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ); - std::cout << "B_.spikes_.size() = " << B_.spikes_.size() << std::endl; - std::cout << "rport: " << e.get_rport() << std::endl; const auto rport = e.get_rport(); if ( rport < NMDA ) { +// std::cout << "Received non-NMDA spike: " << std::endl; +// std::cout << "rport: " << e.get_rport() << std::endl; B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); } else { + std::cout << "Received NMDA spike: " << std::endl; + std::cout << "rport: " << e.get_rport() << std::endl; B_.spikes_[ rport - 1 ].add_value( steps, e.get_multiplicity() ); const size_t w_idx = rport - NMDA; @@ -568,6 +570,7 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) } else if ( B_.weights_[ w_idx ] != e.get_weight() ) { + // Why?? throw KernelException( "iaf_wang_2002_exact requires constant weights." ); } } diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index b9361a6ad8..1a16a54168 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -118,17 +118,17 @@ The following values can be recorded. =========== =========================================================== V_m Membrane potential - g_AMPA AMPA gate - g_GABA GABA gate + s_AMPA AMPA gate + s_GABA GABA gate NMDA_sum sum of NMDA over all presynaptic neurons j =========== =========================================================== .. note:: - It is possible to set values for `V_m`, `g_AMPA` and `g_GABA` when creating the model, while the - different `g_NMDA_j` (`j` represents presynaptic neuron `j`) can not be set by the user. + It is possible to set values for `V_m`, `s_AMPA` and `s_GABA` when creating the model, while the + different `s_NMDA_j` (`j` represents presynaptic neuron `j`) can not be set by the user. .. note:: - The variable `g_AMPA` and `g_GABA` in the NEST implementation does not correspond to `g_{recAMPA, extAMPA, GABA}` + The variable `s_AMPA` and `s_GABA` in the NEST implementation does not correspond to `g_{recAMPA, extAMPA, GABA}` in [1]_. `g_{recAMPA, extAMPA, GABA, NMBA}` from [1]_ is built into the weights in this NEST model, so setting the variables is thus done by changing the weights. @@ -422,7 +422,7 @@ iaf_wang_2002_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) { // give each NMDA synapse a unique rport, starting from 2 (num_ports_ is initialized to 2) ++S_.num_ports_; - return S_.num_ports_ - 1; + return S_.num_ports_; } else { diff --git a/pynest/examples/wang_neuron_exact.py b/pynest/examples/wang_neuron_exact.py new file mode 100644 index 0000000000..41382bcf1a --- /dev/null +++ b/pynest/examples/wang_neuron_exact.py @@ -0,0 +1,107 @@ +import nest +import matplotlib.pyplot as plt +import numpy as np + +nest.rng_seed = 12345 + +nest.ResetKernel() +w_ex = 40. +w_in = -15. +alpha = 0.5 +tau_AMPA = 2.0 +tau_GABA = 5.0 +tau_NMDA = 100.0 +nrn1 = nest.Create("iaf_wang_2002_exact", {"tau_AMPA": tau_AMPA, + "tau_GABA": tau_GABA, + "tau_decay_NMDA": tau_NMDA}) + +pg = nest.Create("poisson_generator", {"rate": 50.}) +sr = nest.Create("spike_recorder") +nrn2 = nest.Create("iaf_wang_2002_exact", {"tau_AMPA": tau_AMPA, + "tau_GABA": tau_GABA, + "tau_decay_NMDA": tau_NMDA, + "t_ref": 0.}) + +mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) +mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) + +ex_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ex, + "receptor_type": 1} + +nmda_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ex, + "receptor_type": 3} + +in_syn_spec = {"synapse_model": "static_synapse", + "weight": w_in, + "receptor_type": 2} + +conn_spec = {"rule": "all_to_all"} + +def s_soln(w, t, tau): + isyn = np.zeros_like(t) + useinds = t >= 0. + isyn[useinds] = w * np.exp(-t[useinds] / tau) + return isyn + +def spiketrain_response(t, tau, spiketrain, w): + response = np.zeros_like(t) + for sp in spiketrain: + t_ = t - 1. - sp + zero_arg = t_ == 0. + response += s_soln(w, t_, tau) + return response + +def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): + response = np.zeros_like(t) + for sp in spiketrain: + t_ = t - 1. - sp + zero_arg = t_ == 0. + w_ = w * alpha * (1 - response[zero_arg]) + w_ = min(w_, 1 - response[zero_arg]) + response += s_soln(w_, t_, tau) + return response + +nest.Connect(pg, nrn1, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, sr) +nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) +nest.Connect(mm1, nrn1) + +nest.Connect(mm2, nrn2) + +nest.Simulate(1000.) + +# get spike times from membrane potential +# cannot use spike_recorder because we abuse exact spike timing +V_m = mm1.get("events", "V_m") +times = mm1.get("events", "times") +diff = np.ediff1d(V_m, to_begin=0.) +spikes = sr.get("events", "times") +spikes = times[diff < -3] + +# compute analytical solutimes = mm1.get("events", "times") +ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) +nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) +gaba_soln = spiketrain_response(times, tau_GABA, spikes, w_in) + +fig, ax = plt.subplots(4,2) +ax[0,0].plot(mm1.events["V_m"]) +ax[0,1].plot(mm2.events["V_m"]) + +ax[1,0].plot(mm1.events["s_AMPA"]) +ax[1,1].plot(mm2.events["s_AMPA"]) +ax[1,1].plot(ampa_soln, '--') + +ax[2,0].plot(mm1.events["s_GABA"]) +ax[2,1].plot(mm2.events["s_GABA"]) +ax[2,1].plot(gaba_soln, '--') + +ax[3,0].plot(mm1.events["NMDA_sum"]) +ax[3,1].plot(mm2.events["NMDA_sum"]) +ax[3,1].plot(nmda_soln, '--') + +plt.show() + From 4b3f7a3721d69eee42e757fa3364eef9fc011f74 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 19 Dec 2023 18:07:11 +0100 Subject: [PATCH 031/184] compare to brian, off by constant factor --- pynest/examples/wang_compare_brian.py | 221 ++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 pynest/examples/wang_compare_brian.py diff --git a/pynest/examples/wang_compare_brian.py b/pynest/examples/wang_compare_brian.py new file mode 100644 index 0000000000..b238b232ca --- /dev/null +++ b/pynest/examples/wang_compare_brian.py @@ -0,0 +1,221 @@ +import brian2 as b2 +import nest +import numpy as np +import time +import statistics +import matplotlib.pyplot as plt + + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Parameters +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +V_th = -55 * b2.mV +V_reset = -70 * b2.mV +t_ref = 2 * b2.ms + +# parameters for the equation of the neuron +# (Inhibitory and excitatory neurons have different parameters) +g_L = 25. * b2.nS +C_m = 0.5 * b2.nF + +g_AMPA_rec = 1.0 * b2.nS +g_AMPA_ext = 100.0 *b2.nS +g_GABA = 1.0 * b2.nS +g_NMDA = 1.0 * b2.nS + +# reversal potentials +E_L = V_reset +E_ex= 0. * b2.mV +E_in = -70. * b2.mV + +# time constant of the receptors +tau_AMPA= 2 * b2.ms +tau_GABA= 5 * b2.ms +tau_NMDA_rise = 2. * b2.ms +tau_NMDA_decay = 100. * b2.ms +#parameters we need for nmda receptors +alpha = 0.5 / b2.ms +Mg2 = 1. + + + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Brian +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +## Equations +eqsE=""" + + dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) + I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA: amp + + I_AMPA_ext= g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp + ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 + #Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. + + + I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp + s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here + #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). + #I then sum all the solutions s of the differential equations and I obtain s_AMPA_tot_post. + + I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp + s_GABA_tot :1 + + + I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp + s_NMDA_tot : 1 + + """ + +eqs_ampa=""" + s_AMPA_tot_post= w_AMPA * s_AMPA : 1 (summed) + ds_AMPA / dt = - s_AMPA / tau_AMPA : 1 (clock-driven) + w_AMPA: 1 + """ + +eqs_gaba=""" + s_GABA_tot_post= w_GABA* s_GABA : 1 (summed) + ds_GABA/ dt = - s_GABA/ tau_GABA : 1 (clock-driven) + w_GABA: 1 + """ + +eqs_nmda="""s_NMDA_tot_post = w_NMDA * s_NMDA : 1 (summed) + ds_NMDA / dt = - s_NMDA / tau_NMDA_decay + alpha * x * (1 - s_NMDA) : 1 (clock-driven) + dx / dt = - x / tau_NMDA_rise : 1 (clock-driven) + w_NMDA : 1 + """ + +nrn1 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="euler") +nrn2 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="euler") + +nrn1[0].v[0]=V_reset +nrn2[0].v[0]=V_reset + +times = np.array([10, 20, 40, 80, 90]) * b2.ms +indices = np.arange(len(times)) +spikeGen = b2.SpikeGeneratorGroup(len(times), indices, times) + +ext_conn1 = b2.Synapses(spikeGen, nrn1, on_pre="s_AMPA_ext += 1") +ext_conn1.connect() + +conn2 = b2.Synapses(nrn1, nrn2, model=eqs_ampa, on_pre="s_AMPA+=1", method="euler") +conn2.connect() +conn2.w_AMPA = 2.0 + +conn3= b2.Synapses(nrn1,nrn2,model=eqs_nmda,on_pre="x+=1", method="euler") +conn3.connect() +conn3.w_NMDA = 1.0 + +conn4 = b2.Synapses(nrn1, nrn2, model=eqs_gaba, on_pre="s_GABA+=1", method="euler") +conn4.connect() +conn4.w_GABA = 2.0 + + +vMonitor1 = b2.StateMonitor(nrn1, "v",record=True) +ampaMonitor1 = b2.StateMonitor(nrn1, "I_AMPA_rec",record=True) +gabaMonitor1 = b2.StateMonitor(nrn1, "I_GABA",record=True) +nmdaMonitor1 = b2.StateMonitor(nrn2, "s_NMDA_tot", record=True) + +vMonitor2 = b2.StateMonitor(nrn2, "v", record=True) +ampaMonitor2 = b2.StateMonitor(nrn2, "I_AMPA_rec", record=True) +gabaMonitor2 = b2.StateMonitor(nrn2, "I_GABA", record=True) +nmdaMonitor2 = b2.StateMonitor(nrn2, "I_NMDA", record=True) + +t_sim = 300 +b2.run(t_sim * b2.ms) + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# NEST +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +nest.rng_seed = 12345 + +nest.ResetKernel() + +neuron_params = {"tau_AMPA": np.asarray(tau_AMPA) * 1e3, # units ms + "tau_GABA": np.asarray(tau_GABA) * 1e3, # units ms + "tau_rise_NMDA": np.asarray(tau_NMDA_rise) * 1e3, # units ms + "tau_decay_NMDA": np.asarray(tau_NMDA_decay) * 1e3, # units ms + "conc_Mg2": np.asarray(Mg2), # dimensionless + "E_ex": np.asarray(E_ex) * 1e3, # units mV + "E_in": np.asarray(E_in) * 1e3, # units mV + "E_L": np.asarray(E_L) * 1e3, # units mV + "V_th": np.asarray(V_th) * 1e3, # units mV + "C_m": np.asarray(C_m) * 1e12, # units pF + "g_L": np.asarray(g_L) * 1e9, # units nS + "V_reset": np.asarray(V_reset) * 1e3, # units nS + "t_ref": np.asarray(t_ref) * 1e3} # units ms + + +nrn1 = nest.Create("iaf_wang_2002_exact", neuron_params) +nrn2 = nest.Create("iaf_wang_2002_exact", neuron_params) + +times = np.array([10.0, 20.0, 40.0, 80.0, 90.0]) +sg = nest.Create("spike_generator", {"spike_times": times}) +sr = nest.Create("spike_recorder") + +mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) +mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) + +ex_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_AMPA_rec) * 1e9, # units nS + "receptor_type": 1} + +ex_syn_spec_ext = {"synapse_model": "static_synapse", + "weight": np.asarray(g_AMPA_ext) * 1e9, # units nS + "receptor_type": 1} + +nmda_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_NMDA) * 1e9, # units nS + "receptor_type": 3} + +in_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_GABA) * 1e9, # units nS + "receptor_type": 2} + +conn_spec = {"rule": "all_to_all"} + +nest.Connect(sg, nrn1, syn_spec=ex_syn_spec_ext, conn_spec=conn_spec) +nest.Connect(nrn1, sr) +nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) +nest.Connect(mm1, nrn1) +nest.Connect(mm2, nrn2) + +nest.Simulate(300.) + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Plotting +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +fig, ax = plt.subplots(4, 2) +fig.set_size_inches([12,10]) +ax[0,0].plot(vMonitor1.t / b2.ms, vMonitor1.v[0] / b2.mV, label="brian2") +ax[0,0].plot(mm1.get("events", "times"), mm1.get("events", "V_m"), label="nest") +ax[0,0].set_xlabel("time (ms)") +ax[0,0].set_ylabel("membrane potential V (mV)") +ax[0,0].legend() + +ax[1,0].plot(ampaMonitor1.t / b2.ms, ampaMonitor1.I_AMPA_rec[0]/) +ax[2,0].plot(gabaMonitor1.t / b2.ms, gabaMonitor1.I_GABA[0]) +ax[3,0].plot(nmdaMonitor1.t / b2.ms, nmdaMonitor1.s_NMDA_tot[0]) + +ax[0,1].plot(vMonitor2.t / b2.ms, vMonitor2.v[0] / b2.mV) +ax[0,1].plot(mm2.get("events", "times"), mm2.get("events", "V_m")) +ax[0,1].set_xlabel("time (ms)") +ax[0,1].set_ylabel("membrane potential V (mV)") +ax[0,1].legend() + +ax[1,1].plot(ampaMonitor2.t/b2.ms, ampaMonitor2.I_AMPA_rec[0]) +ax[2,1].plot(gabaMonitor2.t/b2.ms, gabaMonitor2.I_GABA[0]) +ax[3,1].plot(nmdaMonitor2.t/b2.ms, nmdaMonitor2.I_NMDA[0]) + +plt.show() + From 3253ff9247fed3877a07089671cce0704996cdd7 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 21 Dec 2023 13:04:44 +0100 Subject: [PATCH 032/184] Getting exactly same results as Brian --- models/iaf_wang_2002_exact.cpp | 62 +++++++++---------- models/iaf_wang_2002_exact.h | 8 +-- pynest/examples/wang_compare_brian.py | 89 +++++++++++++++++---------- 3 files changed, 91 insertions(+), 68 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 1151fcf418..6a8e0f676c 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -64,8 +64,8 @@ RecordablesMap< iaf_wang_2002_exact >::create() { // add state variables to recordables map insert_( names::V_m, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::V_m > ); - insert_( names::s_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::G_AMPA > ); - insert_( names::s_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::G_GABA > ); + insert_( names::s_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_AMPA > ); + insert_( names::s_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_GABA > ); insert_( names::NMDA_sum, &iaf_wang_2002_exact::get_NMDA_sum_ ); } } @@ -98,14 +98,14 @@ nest::iaf_wang_2002_exact::State_::State_( const Parameters_& p ) , num_ports_( 2 ) , r_( 0 ) { - ode_state_ = new double[ G_NMDA_base ]; + ode_state_ = new double[ s_NMDA_base ]; assert( ode_state_ ); ode_state_[ V_m ] = p.E_L; // initialize to reversal potential - ode_state_[ G_AMPA ] = 0.0; - ode_state_[ G_GABA ] = 0.0; + ode_state_[ s_AMPA ] = 0.0; + ode_state_[ s_GABA ] = 0.0; - state_vec_size = G_NMDA_base; + state_vec_size = s_NMDA_base; } nest::iaf_wang_2002_exact::State_::State_( const State_& s ) @@ -115,14 +115,14 @@ nest::iaf_wang_2002_exact::State_::State_( const State_& s ) , r_( s.r_ ) { assert( s.num_ports_ == 2 ); - assert( state_vec_size == G_NMDA_base ); + assert( state_vec_size == s_NMDA_base ); - ode_state_ = new double[ G_NMDA_base ]; + ode_state_ = new double[ s_NMDA_base ]; assert( ode_state_ ); ode_state_[ V_m ] = s.ode_state_[ V_m ]; - ode_state_[ G_AMPA ] = s.ode_state_[ G_AMPA ]; - ode_state_[ G_GABA ] = s.ode_state_[ G_GABA ]; + ode_state_[ s_AMPA ] = s.ode_state_[ s_AMPA ]; + ode_state_[ s_GABA ] = s.ode_state_[ s_GABA ]; } nest::iaf_wang_2002_exact::Buffers_::Buffers_( iaf_wang_2002_exact& n ) @@ -234,8 +234,8 @@ void nest::iaf_wang_2002_exact::State_::get( DictionaryDatum& d ) const { def< double >( d, names::V_m, ode_state_[ V_m ] ); // Membrane potential - def< double >( d, names::s_AMPA, ode_state_[ G_AMPA ] ); - def< double >( d, names::s_GABA, ode_state_[ G_GABA ] ); + def< double >( d, names::s_AMPA, ode_state_[ s_AMPA ] ); + def< double >( d, names::s_GABA, ode_state_[ s_GABA ] ); // total NMDA sum double NMDA_sum = get_NMDA_sum(); @@ -246,8 +246,8 @@ void nest::iaf_wang_2002_exact::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) { updateValueParam< double >( d, names::V_m, ode_state_[ V_m ], node ); - updateValueParam< double >( d, names::s_AMPA, ode_state_[ G_AMPA ], node ); - updateValueParam< double >( d, names::s_GABA, ode_state_[ G_GABA ], node ); + updateValueParam< double >( d, names::s_AMPA, ode_state_[ s_AMPA ], node ); + updateValueParam< double >( d, names::s_GABA, ode_state_[ s_GABA ], node ); } /* --------------------------------------------------------------------------- @@ -313,19 +313,19 @@ nest::iaf_wang_2002_exact::~iaf_wang_2002_exact() void nest::iaf_wang_2002_exact::init_state_() { - assert( S_.state_vec_size == State_::G_NMDA_base ); + assert( S_.state_vec_size == State_::s_NMDA_base ); double* old_state = S_.ode_state_; - S_.state_vec_size = State_::G_NMDA_base + 2 * ( S_.num_ports_ - 2 ); + S_.state_vec_size = State_::s_NMDA_base + 2 * ( S_.num_ports_ - 2 ); S_.ode_state_ = new double[ S_.state_vec_size ]; assert( S_.ode_state_ ); S_.ode_state_[ State_::V_m ] = old_state[ State_::V_m ]; - S_.ode_state_[ State_::G_AMPA ] = old_state[ State_::G_AMPA ]; - S_.ode_state_[ State_::G_GABA ] = old_state[ State_::G_GABA ]; + S_.ode_state_[ State_::s_AMPA ] = old_state[ State_::s_AMPA ]; + S_.ode_state_[ State_::s_GABA ] = old_state[ State_::s_GABA ]; - for ( size_t i = State_::G_NMDA_base; i < S_.state_vec_size; ++i ) + for ( size_t i = State_::s_NMDA_base; i < S_.state_vec_size; ++i ) { S_.ode_state_[ i ] = 0.0; } @@ -425,13 +425,13 @@ nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[] // ode_state[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.ode_state[]. - const double I_AMPA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) * ode_state[ State_::G_AMPA ]; + const double I_AMPA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) * ode_state[ State_::s_AMPA ]; - const double I_rec_GABA = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::G_GABA ]; + const double I_rec_GABA = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::s_GABA ]; - // The sum of NMDA_G + // The sum of s_NMDA double total_NMDA = 0; - for ( size_t i = State_::G_NMDA_base + 1, w_idx = 0; i < node.S_.state_vec_size; i += 2, ++w_idx ) + for ( size_t i = State_::s_NMDA_base + 1, w_idx = 0; i < node.S_.state_vec_size; i += 2, ++w_idx ) { total_NMDA += ode_state[ i ] * node.B_.weights_.at( w_idx ); } @@ -443,10 +443,10 @@ nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[] f[ State_::V_m ] = ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; - f[ State_::G_AMPA ] = -ode_state[ State_::G_AMPA ] / node.P_.tau_AMPA; - f[ State_::G_GABA ] = -ode_state[ State_::G_GABA ] / node.P_.tau_GABA; + f[ State_::s_AMPA ] = -ode_state[ State_::s_AMPA ] / node.P_.tau_AMPA; + f[ State_::s_GABA ] = -ode_state[ State_::s_GABA ] / node.P_.tau_GABA; - for ( size_t i = State_::G_NMDA_base; i < node.S_.state_vec_size; i += 2 ) + for ( size_t i = State_::s_NMDA_base; i < node.S_.state_vec_size; i += 2 ) { f[ i + 1 ] = -ode_state[ i + 1 ] / node.P_.tau_decay_NMDA + node.P_.alpha * ode_state[ i ] * ( 1 - ode_state[ i + 1 ] ); @@ -493,17 +493,17 @@ nest::iaf_wang_2002_exact::update( Time const& origin, const long from, const lo } // add incoming spikes - S_.ode_state_[ State_::G_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); - S_.ode_state_[ State_::G_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); + S_.ode_state_[ State_::s_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); + S_.ode_state_[ State_::s_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); for ( size_t i = NMDA - 1; i < B_.spikes_.size(); ++i ) { const size_t si = i - ( NMDA - 1 ); assert( si >= 0 ); - assert( State_::G_NMDA_base + si * 2 < S_.state_vec_size ); + assert( State_::s_NMDA_base + si * 2 < S_.state_vec_size ); - S_.ode_state_[ State_::G_NMDA_base + si * 2 ] += B_.spikes_.at( i ).get_value( lag ); + S_.ode_state_[ State_::s_NMDA_base + si * 2 ] += B_.spikes_.at( i ).get_value( lag ); } // absolute refractory period @@ -559,8 +559,6 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) } else { - std::cout << "Received NMDA spike: " << std::endl; - std::cout << "rport: " << e.get_rport() << std::endl; B_.spikes_[ rport - 1 ].add_value( steps, e.get_multiplicity() ); const size_t w_idx = rport - NMDA; diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 1a16a54168..74dee84432 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -268,9 +268,9 @@ class iaf_wang_2002_exact : public ArchivingNode enum StateVecElems { V_m = 0, - G_AMPA, - G_GABA, - G_NMDA_base, // (x_NMDA_1, G_NMDA_1), (x_NMDA_2, G_NMDA_2), (x_NMDA_3, G_NMDA_3), ..., (x_NMDA_j, G_NMDA_j) + s_AMPA, + s_GABA, + s_NMDA_base, // (x_NMDA_1, G_NMDA_1), (x_NMDA_2, G_NMDA_2), (x_NMDA_3, G_NMDA_3), ..., (x_NMDA_j, G_NMDA_j) }; size_t state_vec_size; @@ -290,7 +290,7 @@ class iaf_wang_2002_exact : public ArchivingNode get_NMDA_sum() const { double NMDA_sum = 0.0; - for ( size_t i = G_NMDA_base; i < state_vec_size; i += 2 ) + for ( size_t i = s_NMDA_base; i < state_vec_size; i += 2 ) { NMDA_sum += ode_state_[ i + 1 ]; } diff --git a/pynest/examples/wang_compare_brian.py b/pynest/examples/wang_compare_brian.py index b238b232ca..67c77d9dd2 100644 --- a/pynest/examples/wang_compare_brian.py +++ b/pynest/examples/wang_compare_brian.py @@ -1,3 +1,12 @@ +""" +Check that NEST implementation gives same results as a reference implementation from Brian. +Note that in the NEST model, the constant "g" parameter is baked into the synaptic weight, instead of being +a separate parameter. This is the only difference in parameterization between the two models. +Also, in the NEST model, the weight for the NMDA receptor is applied AFTER computing the s_NMDA values, +so the in the recorded value of NMDA_sum, the weights are not yet applied. The end result (V_m) is still the same. +""" + + import brian2 as b2 import nest import numpy as np @@ -35,15 +44,20 @@ tau_GABA= 5 * b2.ms tau_NMDA_rise = 2. * b2.ms tau_NMDA_decay = 100. * b2.ms -#parameters we need for nmda receptors + +# additional NMDA parameters alpha = 0.5 / b2.ms Mg2 = 1. +# synaptic weights +weight_AMPA = 1. +weight_GABA = 3. +weight_NMDA = 2. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Brian +# Brian simulation # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## Equations @@ -51,12 +65,12 @@ dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA: amp - + I_AMPA_ext= g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 #Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. - - + + I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). @@ -64,11 +78,11 @@ I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp s_GABA_tot :1 - - + + I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp s_NMDA_tot : 1 - + """ eqs_ampa=""" @@ -104,33 +118,31 @@ conn2 = b2.Synapses(nrn1, nrn2, model=eqs_ampa, on_pre="s_AMPA+=1", method="euler") conn2.connect() -conn2.w_AMPA = 2.0 +conn2.w_AMPA = weight_AMPA conn3= b2.Synapses(nrn1,nrn2,model=eqs_nmda,on_pre="x+=1", method="euler") conn3.connect() -conn3.w_NMDA = 1.0 +conn3.w_NMDA = weight_NMDA conn4 = b2.Synapses(nrn1, nrn2, model=eqs_gaba, on_pre="s_GABA+=1", method="euler") conn4.connect() -conn4.w_GABA = 2.0 - +conn4.w_GABA = weight_GABA vMonitor1 = b2.StateMonitor(nrn1, "v",record=True) -ampaMonitor1 = b2.StateMonitor(nrn1, "I_AMPA_rec",record=True) -gabaMonitor1 = b2.StateMonitor(nrn1, "I_GABA",record=True) +ampaMonitor1 = b2.StateMonitor(nrn1, "s_AMPA_ext",record=True) +gabaMonitor1 = b2.StateMonitor(nrn1, "s_GABA_tot",record=True) nmdaMonitor1 = b2.StateMonitor(nrn2, "s_NMDA_tot", record=True) vMonitor2 = b2.StateMonitor(nrn2, "v", record=True) -ampaMonitor2 = b2.StateMonitor(nrn2, "I_AMPA_rec", record=True) -gabaMonitor2 = b2.StateMonitor(nrn2, "I_GABA", record=True) -nmdaMonitor2 = b2.StateMonitor(nrn2, "I_NMDA", record=True) +ampaMonitor2 = b2.StateMonitor(nrn2, "s_AMPA_tot", record=True) +gabaMonitor2 = b2.StateMonitor(nrn2, "s_GABA_tot", record=True) +nmdaMonitor2 = b2.StateMonitor(nrn2, "s_NMDA_tot", record=True) t_sim = 300 b2.run(t_sim * b2.ms) - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# NEST +# NEST simulation # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # nest.rng_seed = 12345 @@ -149,6 +161,7 @@ "C_m": np.asarray(C_m) * 1e12, # units pF "g_L": np.asarray(g_L) * 1e9, # units nS "V_reset": np.asarray(V_reset) * 1e3, # units nS + "alpha": np.asarray(alpha * b2.ms), # units nS "t_ref": np.asarray(t_ref) * 1e3} # units ms @@ -163,7 +176,7 @@ mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) ex_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_rec) * 1e9, # units nS + "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS "receptor_type": 1} ex_syn_spec_ext = {"synapse_model": "static_synapse", @@ -171,11 +184,11 @@ "receptor_type": 1} nmda_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_NMDA) * 1e9, # units nS + "weight": np.asarray(g_NMDA) * 1e9 * weight_NMDA, # units nS "receptor_type": 3} in_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_GABA) * 1e9, # units nS + "weight": np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS "receptor_type": 2} conn_spec = {"rule": "all_to_all"} @@ -190,32 +203,44 @@ nest.Simulate(300.) - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Plotting # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # fig, ax = plt.subplots(4, 2) fig.set_size_inches([12,10]) +fig.subplots_adjust(hspace=0.5) ax[0,0].plot(vMonitor1.t / b2.ms, vMonitor1.v[0] / b2.mV, label="brian2") ax[0,0].plot(mm1.get("events", "times"), mm1.get("events", "V_m"), label="nest") ax[0,0].set_xlabel("time (ms)") ax[0,0].set_ylabel("membrane potential V (mV)") ax[0,0].legend() - -ax[1,0].plot(ampaMonitor1.t / b2.ms, ampaMonitor1.I_AMPA_rec[0]/) -ax[2,0].plot(gabaMonitor1.t / b2.ms, gabaMonitor1.I_GABA[0]) -ax[3,0].plot(nmdaMonitor1.t / b2.ms, nmdaMonitor1.s_NMDA_tot[0]) +ax[0,0].set_title("Presynaptic neuron") ax[0,1].plot(vMonitor2.t / b2.ms, vMonitor2.v[0] / b2.mV) ax[0,1].plot(mm2.get("events", "times"), mm2.get("events", "V_m")) ax[0,1].set_xlabel("time (ms)") ax[0,1].set_ylabel("membrane potential V (mV)") -ax[0,1].legend() - -ax[1,1].plot(ampaMonitor2.t/b2.ms, ampaMonitor2.I_AMPA_rec[0]) -ax[2,1].plot(gabaMonitor2.t/b2.ms, gabaMonitor2.I_GABA[0]) -ax[3,1].plot(nmdaMonitor2.t/b2.ms, nmdaMonitor2.I_NMDA[0]) +ax[0,1].set_title("Postsynaptic neuron") + +ax[1,1].plot(ampaMonitor2.t/b2.ms, ampaMonitor2.s_AMPA_tot[0]) +ax[1,1].plot(mm2.get("events", "times"), mm2.get("events", "s_AMPA")) +ax[1,1].set_xlabel("time (ms)") +ax[1,1].set_ylabel("s_AMPA") + +ax[2,1].plot(gabaMonitor2.t/b2.ms, gabaMonitor2.s_GABA_tot[0]) +ax[2,1].plot(mm2.get("events", "times"), mm2.get("events", "s_GABA")) +ax[2,1].set_xlabel("time (ms)") +ax[2,1].set_ylabel("s_GABA") + +ax[3,1].plot(nmdaMonitor2.t/b2.ms, nmdaMonitor2.s_NMDA_tot[0]) +ax[3,1].plot(mm2.get("events", "times"), mm2.get("events", "NMDA_sum")) +ax[3,1].set_xlabel("time (ms)") +ax[3,1].set_ylabel("s_NMDA") + +ax[1,0].axis("off") +ax[2,0].axis("off") +ax[3,0].axis("off") plt.show() From 12ac8dfad86ade11b38a6d3948211c4b64fa5cc3 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 3 Jan 2024 17:55:01 +0100 Subject: [PATCH 033/184] reproduces brian exactly --- models/iaf_wang_2002.cpp | 83 +++++++++----------- models/iaf_wang_2002.h | 39 ++++++---- pynest/examples/wang_compare_brian.py | 73 ++++++++++------- pynest/examples/wang_neuron.py | 108 +++++++++++++++++++------- pynest/examples/wang_neuron_exact.py | 72 ++++++++++++----- 5 files changed, 243 insertions(+), 132 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index e79ffd9285..c098b1931f 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -86,11 +86,11 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode // y[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.y[]. - const double I_AMPA = node.P_.g_AMPA * ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ]; + const double I_AMPA = ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ]; - const double I_rec_GABA = node.P_.g_GABA * ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; + const double I_rec_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; - const double I_rec_NMDA = node.P_.g_NMDA * ( y[ S::V_m ] - node.P_.E_ex ) + const double I_rec_NMDA = ( y[ S::V_m ] - node.P_.E_ex ) / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * y[ S::s_NMDA ]; const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA + node.B_.I_stim_; @@ -117,10 +117,10 @@ nest::iaf_wang_2002::Parameters_::Parameters_() , V_reset( -60.0 ) // mV , C_m( 500.0 ) // pF , g_L( 25.0 ) // nS - , g_GABA ( 1.3 ) // - , g_NMDA ( 0.165 ) // - , g_AMPA ( 0.05 ) // - , g_AMPA_ext ( 0.05 ) // +// , g_GABA ( 1.3 ) // +// , g_NMDA ( 0.165 ) // +// , g_AMPA ( 0.05 ) // +// , g_AMPA_ext ( 0.05 ) // , t_ref( 2.0 ) // ms , tau_AMPA( 2.0 ) // ms , tau_GABA( 5.0 ) // ms @@ -153,9 +153,7 @@ nest::iaf_wang_2002::State_::State_( const State_& s ) nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) : logger_( n ) - , spike_AMPA_() - , spike_GABA_() - , spike_NMDA_() + , spikes_() , s_( nullptr ) , c_( nullptr ) , e_( nullptr ) @@ -188,10 +186,10 @@ nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const def< double >( d, names::V_reset, V_reset ); def< double >( d, names::C_m, C_m ); def< double >( d, names::g_L, g_L ); - def< double >( d, names::g_GABA, g_GABA ); - def< double >( d, names::g_NMDA, g_NMDA ); - def< double >( d, names::g_AMPA, g_AMPA ); - def< double >( d, names::g_AMPA_ext, g_AMPA_ext ); +// def< double >( d, names::g_GABA, g_GABA ); +// def< double >( d, names::g_NMDA, g_NMDA ); +// def< double >( d, names::g_AMPA, g_AMPA ); +// def< double >( d, names::g_AMPA_ext, g_AMPA_ext ); def< double >( d, names::t_ref, t_ref ); def< double >( d, names::tau_AMPA, tau_AMPA ); def< double >( d, names::tau_GABA, tau_GABA ); @@ -212,10 +210,10 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) updateValueParam< double >( d, names::V_reset, V_reset, node ); updateValueParam< double >( d, names::C_m, C_m, node ); updateValueParam< double >( d, names::g_L, g_L, node ); - updateValueParam< double >( d, names::g_GABA, g_GABA, node ); - updateValueParam< double >( d, names::g_NMDA, g_NMDA, node ); - updateValueParam< double >( d, names::g_AMPA, g_AMPA, node ); - updateValueParam< double >( d, names::g_AMPA_ext, g_AMPA_ext, node ); +// updateValueParam< double >( d, names::g_GABA, g_GABA, node ); +// updateValueParam< double >( d, names::g_NMDA, g_NMDA, node ); +// updateValueParam< double >( d, names::g_AMPA, g_AMPA, node ); +// updateValueParam< double >( d, names::g_AMPA_ext, g_AMPA_ext, node ); updateValueParam< double >( d, names::t_ref, t_ref, node ); updateValueParam< double >( d, names::tau_AMPA, tau_AMPA, node ); updateValueParam< double >( d, names::tau_GABA, tau_GABA, node ); @@ -335,9 +333,13 @@ nest::iaf_wang_2002::init_state_() void nest::iaf_wang_2002::init_buffers_() { - B_.spike_AMPA_.clear(); - B_.spike_GABA_.clear(); - B_.spike_NMDA_.clear(); +// std::cout << "Inside init buffers" << std::endl; + B_.spikes_.resize( 3 ); + for ( auto& sb : B_.spikes_ ) + { + sb.clear(); // includes resize + } + B_.currents_.clear(); // includes resize B_.logger_.reset(); // includes resize @@ -408,7 +410,7 @@ void nest::iaf_wang_2002::update( Time const& origin, const long from, const long to ) { std::vector< double > s_vals( kernel().connection_manager.get_min_delay(), 0.0 ); - +// std::cout << "Inside update" << std::endl; for ( long lag = from; lag < to; ++lag ) { double t = 0.0; @@ -425,7 +427,6 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // enforce setting IntegrationStep to step-t; this is of advantage // for a consistent and efficient integration across subsequent // simulation intervals - while ( t < B_.step_ ) { const int status = gsl_odeiv_evolve_apply( B_.e_, @@ -443,11 +444,14 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to } } + // add incoming spikes - S_.y_[ State_::s_AMPA ] += B_.spike_AMPA_.get_value( lag ); - S_.y_[ State_::s_GABA ] += B_.spike_GABA_.get_value( lag ); - S_.y_[ State_::s_NMDA ] += B_.spike_NMDA_.get_value( lag ); + S_.y_[ State_::s_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); + S_.y_[ State_::s_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); + + S_.y_[ State_::s_NMDA ] += B_.spikes_[ NMDA - 1 ].get_value( lag ); S_.y_[ State_::s_NMDA ] = std::min( S_.y_[ State_::s_NMDA ], 1.0 ); + if ( S_.r_ ) { // neuron is absolute refractory @@ -478,7 +482,6 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to kernel().event_delivery_manager.send( *this, se, lag ); } - // set new input current B_.I_stim_ = B_.currents_.get_value( lag ); @@ -500,29 +503,17 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) { assert( e.get_delay_steps() > 0 ); - if ( e.get_weight() > 0.0 ) + const double steps = e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ); + + const auto rport = e.get_rport(); + + if ( rport < NMDA ) { - if ( e.get_rport() == 0 ) { - B_.spike_AMPA_.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), - e.get_weight() * e.get_multiplicity() ); - } - // if from external population, ignore weight - // when computing the actual synaptic current, this contribution will be multiplied by - // g_AMPA. therefore we multiply by g_AMPA_ext / g_AMPA here, and the g_AMPA denominator - // will be cancelled - else if ( e.get_rport() == 1 ) { - B_.spike_AMPA_.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), - P_.g_AMPA_ext / P_.g_AMPA * e.get_multiplicity() ); - } - if ( e.get_offset() != 0.0 ) { - B_.spike_NMDA_.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), - e.get_weight() * e.get_multiplicity() * e.get_offset() ); - } + B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); } else { - B_.spike_GABA_.add_value( e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ), - -e.get_weight() * e.get_multiplicity() ); + B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() * e.get_offset() ); } } diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index dd8f8c9019..b6ca27c6e0 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -210,6 +210,19 @@ class iaf_wang_2002 : public ArchivingNode void calibrate(); void update( Time const&, const long, const long ) override; + /** + * Synapse types to connect to + **/ + enum SynapseTypes + { + INF_SPIKE_RECEPTOR = 0, + AMPA, + GABA, + NMDA, + SUP_SPIKE_RECEPTOR + }; + + // make dynamics function quasi-member friend int iaf_wang_2002_dynamics( double, const double*, double*, void* ); @@ -226,10 +239,10 @@ class iaf_wang_2002 : public ArchivingNode double V_reset; //!< Reset Potential in mV double C_m; //!< Membrane Capacitance in pF double g_L; //!< Leak Conductance in nS - double g_GABA; //!< Peak conductance GABA - double g_NMDA; //!< Peak conductance NMDA - double g_AMPA; //!< Peak conductance AMPA - double g_AMPA_ext; //!< Peak conductance AMPA +// double g_GABA; //!< Peak conductance GABA +// double g_NMDA; //!< Peak conductance NMDA +// double g_AMPA; //!< Peak conductance AMPA +// double g_AMPA_ext; //!< Peak conductance AMPA double t_ref; //!< Refractory period in ms double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms @@ -266,8 +279,8 @@ class iaf_wang_2002 : public ArchivingNode { V_m = 0, s_AMPA, - s_NMDA, s_GABA, + s_NMDA, STATE_VEC_SIZE }; @@ -304,9 +317,10 @@ class iaf_wang_2002 : public ArchivingNode // ----------------------------------------------------------------------- // Buffers and sums of incoming spikes and currents per timestep // ----------------------------------------------------------------------- - RingBuffer spike_AMPA_; - RingBuffer spike_GABA_; - RingBuffer spike_NMDA_; + std::vector< RingBuffer > spikes_; +// RingBuffer spike_AMPA_; +// RingBuffer spike_GABA_; +// RingBuffer spike_NMDA_; RingBuffer currents_; // ----------------------------------------------------------------------- @@ -383,17 +397,14 @@ iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bo inline size_t iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) { - if ( receptor_type == 0 ) + if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) ) { + throw UnknownReceptorType( receptor_type, get_name() ); return 0; } - else if ( receptor_type == 1 ) - { - return 1; - } else { - throw UnknownReceptorType( receptor_type, get_name() ); + return receptor_type; } } diff --git a/pynest/examples/wang_compare_brian.py b/pynest/examples/wang_compare_brian.py index 67c77d9dd2..63676ad67c 100644 --- a/pynest/examples/wang_compare_brian.py +++ b/pynest/examples/wang_compare_brian.py @@ -55,7 +55,6 @@ weight_NMDA = 2. - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Brian simulation # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -66,11 +65,10 @@ dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA: amp - I_AMPA_ext= g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp + I_AMPA_ext = g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 #Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. - I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). @@ -79,14 +77,13 @@ I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp s_GABA_tot :1 - I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp s_NMDA_tot : 1 """ eqs_ampa=""" - s_AMPA_tot_post= w_AMPA * s_AMPA : 1 (summed) + s_AMPA_tot_post = w_AMPA * s_AMPA : 1 (summed) ds_AMPA / dt = - s_AMPA / tau_AMPA : 1 (clock-driven) w_AMPA: 1 """ @@ -103,11 +100,13 @@ w_NMDA : 1 """ -nrn1 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="euler") -nrn2 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="euler") +b2.defaultclock.dt = 0.001 * b2.ms -nrn1[0].v[0]=V_reset -nrn2[0].v[0]=V_reset +nrn1 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") +nrn2 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") + +nrn1[0].v[0] = V_reset +nrn2[0].v[0] = V_reset times = np.array([10, 20, 40, 80, 90]) * b2.ms indices = np.arange(len(times)) @@ -115,18 +114,22 @@ ext_conn1 = b2.Synapses(spikeGen, nrn1, on_pre="s_AMPA_ext += 1") ext_conn1.connect() +ext_conn1.delay = 1.0 * b2.ms -conn2 = b2.Synapses(nrn1, nrn2, model=eqs_ampa, on_pre="s_AMPA+=1", method="euler") +conn2 = b2.Synapses(nrn1, nrn2, model=eqs_ampa, on_pre="s_AMPA+=1", method="rk4") conn2.connect() conn2.w_AMPA = weight_AMPA +conn2.delay = 1.0 * b2.ms -conn3= b2.Synapses(nrn1,nrn2,model=eqs_nmda,on_pre="x+=1", method="euler") +conn3= b2.Synapses(nrn1,nrn2,model=eqs_nmda,on_pre="x+=1", method="rk4") conn3.connect() conn3.w_NMDA = weight_NMDA +conn3.delay = 1.0 * b2.ms -conn4 = b2.Synapses(nrn1, nrn2, model=eqs_gaba, on_pre="s_GABA+=1", method="euler") +conn4 = b2.Synapses(nrn1, nrn2, model=eqs_gaba, on_pre="s_GABA+=1", method="rk4") conn4.connect() conn4.w_GABA = weight_GABA +conn4.delay = 1.0 * b2.ms vMonitor1 = b2.StateMonitor(nrn1, "v",record=True) ampaMonitor1 = b2.StateMonitor(nrn1, "s_AMPA_ext",record=True) @@ -148,6 +151,7 @@ nest.rng_seed = 12345 nest.ResetKernel() +nest.resolution = b2.defaultclock.dt / b2.ms neuron_params = {"tau_AMPA": np.asarray(tau_AMPA) * 1e3, # units ms "tau_GABA": np.asarray(tau_GABA) * 1e3, # units ms @@ -162,7 +166,8 @@ "g_L": np.asarray(g_L) * 1e9, # units nS "V_reset": np.asarray(V_reset) * 1e3, # units nS "alpha": np.asarray(alpha * b2.ms), # units nS - "t_ref": np.asarray(t_ref) * 1e3} # units ms + # DIFFERENCE: subtract 0.1 ms from t_ref + "t_ref": np.asarray(t_ref) * 1e3 - b2.defaultclock.dt / b2.ms} # units ms nrn1 = nest.Create("iaf_wang_2002_exact", neuron_params) @@ -172,24 +177,35 @@ sg = nest.Create("spike_generator", {"spike_times": times}) sr = nest.Create("spike_recorder") -mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) -mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) +mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], + "interval": b2.defaultclock.dt / b2.ms} +) + +mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], + "interval": b2.defaultclock.dt / b2.ms} +) +# DIFFERENCE: add 0.1ms to delay +nest_delay = 1. + b2.defaultclock.dt / b2.ms ex_syn_spec = {"synapse_model": "static_synapse", "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS - "receptor_type": 1} + "receptor_type": 1, + "delay": nest_delay} ex_syn_spec_ext = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_ext) * 1e9, # units nS - "receptor_type": 1} + "weight": np.asarray(g_AMPA_ext) * 1e9, # units nS + "receptor_type": 1, + "delay": nest_delay} nmda_syn_spec = {"synapse_model": "static_synapse", "weight": np.asarray(g_NMDA) * 1e9 * weight_NMDA, # units nS - "receptor_type": 3} + "receptor_type": 3, + "delay": nest_delay} in_syn_spec = {"synapse_model": "static_synapse", "weight": np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS - "receptor_type": 2} + "receptor_type": 2, + "delay": nest_delay} conn_spec = {"rule": "all_to_all"} @@ -211,34 +227,39 @@ fig.set_size_inches([12,10]) fig.subplots_adjust(hspace=0.5) ax[0,0].plot(vMonitor1.t / b2.ms, vMonitor1.v[0] / b2.mV, label="brian2") -ax[0,0].plot(mm1.get("events", "times"), mm1.get("events", "V_m"), label="nest") +ax[0,0].plot(mm1.get("events", "times"), mm1.get("events", "V_m"), "--", label="nest") ax[0,0].set_xlabel("time (ms)") ax[0,0].set_ylabel("membrane potential V (mV)") ax[0,0].legend() ax[0,0].set_title("Presynaptic neuron") ax[0,1].plot(vMonitor2.t / b2.ms, vMonitor2.v[0] / b2.mV) -ax[0,1].plot(mm2.get("events", "times"), mm2.get("events", "V_m")) +ax[0,1].plot(mm2.get("events", "times"), mm2.get("events", "V_m"), "--") ax[0,1].set_xlabel("time (ms)") ax[0,1].set_ylabel("membrane potential V (mV)") ax[0,1].set_title("Postsynaptic neuron") +# multiply by g_AMPA_ext since it is baked into s_AMPA in NEST +ax[1,0].plot(ampaMonitor1.t/b2.ms, ampaMonitor1.s_AMPA_ext[0] * g_AMPA_ext / b2.nS) +ax[1,0].plot(mm1.get("events", "times"), mm1.get("events", "s_AMPA"), "--") +ax[1,0].set_xlabel("time (ms)") +ax[1,0].set_ylabel("s_AMPA") + ax[1,1].plot(ampaMonitor2.t/b2.ms, ampaMonitor2.s_AMPA_tot[0]) -ax[1,1].plot(mm2.get("events", "times"), mm2.get("events", "s_AMPA")) +ax[1,1].plot(mm2.get("events", "times"), mm2.get("events", "s_AMPA"), "--") ax[1,1].set_xlabel("time (ms)") ax[1,1].set_ylabel("s_AMPA") ax[2,1].plot(gabaMonitor2.t/b2.ms, gabaMonitor2.s_GABA_tot[0]) -ax[2,1].plot(mm2.get("events", "times"), mm2.get("events", "s_GABA")) +ax[2,1].plot(mm2.get("events", "times"), mm2.get("events", "s_GABA"), "--") ax[2,1].set_xlabel("time (ms)") ax[2,1].set_ylabel("s_GABA") ax[3,1].plot(nmdaMonitor2.t/b2.ms, nmdaMonitor2.s_NMDA_tot[0]) -ax[3,1].plot(mm2.get("events", "times"), mm2.get("events", "NMDA_sum")) +ax[3,1].plot(mm2.get("events", "times"), mm2.get("events", "NMDA_sum"), "--") ax[3,1].set_xlabel("time (ms)") ax[3,1].set_ylabel("s_NMDA") -ax[1,0].axis("off") ax[2,0].axis("off") ax[3,0].axis("off") diff --git a/pynest/examples/wang_neuron.py b/pynest/examples/wang_neuron.py index ec4e3332fc..f2968cb907 100644 --- a/pynest/examples/wang_neuron.py +++ b/pynest/examples/wang_neuron.py @@ -2,34 +2,57 @@ import matplotlib.pyplot as plt import numpy as np +nest.ResetKernel() nest.rng_seed = 12345 -w_ex = 400. +w_ext = 40. +w_ex = 5. w_in = -15. -alpha = 0.5 -tau_AMPA = 2.0 -tau_GABA = 5.0 -tau_NMDA = 100.0 -nrn1 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, - "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_NMDA}) +params_exact = {"tau_AMPA": 2.0, + "tau_GABA": 5.0, + "tau_rise_NMDA": 2.0, + "tau_decay_NMDA": 100.0, + "conc_Mg2": 1.0, + "E_ex": 0.0, + "E_in": -70.0, + "E_L": -70.0, + "V_th": -55.0, + "C_m": 500.0, + "g_L": 25.0, + "V_reset": -70.0, + "alpha": 0.5, + "t_ref": 2.0} + +params_approx = params_exact.copy() +del params_approx["tau_rise_NMDA"] + +nrn1 = nest.Create("iaf_wang_2002", params_approx) pg = nest.Create("poisson_generator", {"rate": 50.}) sr = nest.Create("spike_recorder") -nrn2 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, - "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_NMDA, - "t_ref": 0.}) +nrn2 = nest.Create("iaf_wang_2002", params_approx) + +nrn3 = nest.Create("iaf_wang_2002_exact", params_exact) mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) +mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) + +ampa_ext_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ext, + "receptor_type": 1} -ex_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex} +ampa_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ex, + "receptor_type": 1} +nmda_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ex, + "receptor_type": 3} -in_syn_spec = {"synapse_model": "static_synapse", - "weight": w_in} +gaba_syn_spec = {"synapse_model": "static_synapse", + "weight": w_in, + "receptor_type": 2} conn_spec = {"rule": "all_to_all"} @@ -57,13 +80,18 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): response += s_soln(w_, t_, tau) return response -nest.Connect(pg, nrn1, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(pg, nrn1, syn_spec=ampa_ext_syn_spec, conn_spec=conn_spec) nest.Connect(nrn1, sr) -nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec, conn_spec=conn_spec) nest.Connect(mm1, nrn1) nest.Connect(mm2, nrn2) +nest.Connect(mm3, nrn3) nest.Simulate(1000.) @@ -77,25 +105,49 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): # compute analytical solutions times = mm1.get("events", "times") -ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) -nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) -gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) +# ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) +# nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) +# gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) fig, ax = plt.subplots(4,2) +fig.set_size_inches([12,10]) +fig.subplots_adjust(hspace=0.5) + ax[0,0].plot(mm1.events["V_m"]) +ax[0,0].set_xlabel("time (ms)") +ax[0,0].set_ylabel("membrane potential V (mV)") +ax[0,0].legend() +ax[0,0].set_title("Presynaptic neuron") + + ax[0,1].plot(mm2.events["V_m"]) +ax[0,1].plot(mm3.events["V_m"]) +ax[0,1].set_xlabel("time (ms)") +ax[0,1].set_ylabel("membrane potential V (mV)") +ax[0,1].set_title("Postsynaptic neuron") + -ax[1,0].plot(mm1.events["s_AMPA"]) ax[1,1].plot(mm2.events["s_AMPA"]) -ax[1,1].plot(ampa_soln, '--') +ax[1,1].plot(mm3.events["s_AMPA"], "--") +ax[1,1].set_xlabel("time (ms)") +ax[1,1].set_ylabel("s_AMPA") + -ax[2,0].plot(mm1.events["s_GABA"]) ax[2,1].plot(mm2.events["s_GABA"]) -ax[2,1].plot(gaba_soln, '--') +ax[2,1].plot(mm3.events["s_GABA"], "--") +ax[2,1].set_xlabel("time (ms)") +ax[2,1].set_ylabel("s_GABA") + -ax[3,0].plot(mm1.events["s_NMDA"]) ax[3,1].plot(mm2.events["s_NMDA"]) -ax[3,1].plot(nmda_soln, '--') +ax[3,1].plot(mm3.events["NMDA_sum"], "--") +ax[3,1].set_xlabel("time (ms)") +ax[3,1].set_ylabel("s_NMDA") + +ax[1,0].axis("off") +ax[2,0].axis("off") +ax[3,0].axis("off") + plt.show() diff --git a/pynest/examples/wang_neuron_exact.py b/pynest/examples/wang_neuron_exact.py index 41382bcf1a..307506618f 100644 --- a/pynest/examples/wang_neuron_exact.py +++ b/pynest/examples/wang_neuron_exact.py @@ -5,36 +5,72 @@ nest.rng_seed = 12345 nest.ResetKernel() -w_ex = 40. -w_in = -15. + alpha = 0.5 tau_AMPA = 2.0 tau_GABA = 5.0 +tau_rise_NMDA = 2.0 tau_NMDA = 100.0 -nrn1 = nest.Create("iaf_wang_2002_exact", {"tau_AMPA": tau_AMPA, - "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_NMDA}) -pg = nest.Create("poisson_generator", {"rate": 50.}) +Mg2 = 1.0 + +t_ref = 2.0 + +# reversal potentials +E_ex = 0. +E_in = -70.0 +E_L = -70.0 + +V_th = -55.0 +V_reset = -70. +C_m = 500.0 +g_L = 25.0 + + +# set through synaptic weights +g_AMPA_rec = 1.0 +g_AMPA_ext = 100.0 +g_GABA = 1.0 +g_NMDA = 1.0 + +neuron_params = {"tau_AMPA": tau_AMPA, + "tau_GABA": tau_GABA, + "tau_rise_NMDA": tau_rise_NMDA, + "tau_decay_NMDA": tau_NMDA, + "conc_Mg2": Mg2, + "E_ex": E_ex, + "E_in": E_in, + "E_L": E_L, + "V_th": V_th, + "C_m": C_m, + "g_L": g_L, + "t_ref": t_ref} + + +nrn1 = nest.Create("iaf_wang_2002_exact", neuron_params) +nrn2 = nest.Create("iaf_wang_2002_exact", neuron_params) + +times = np.array([10.0, 20.0, 40.0, 80.0, 90.0]) +sg = nest.Create("spike_generator", {"spike_times": times}) sr = nest.Create("spike_recorder") -nrn2 = nest.Create("iaf_wang_2002_exact", {"tau_AMPA": tau_AMPA, - "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_NMDA, - "t_ref": 0.}) mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) ex_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex, + "weight": g_AMPA_rec, + "receptor_type": 1} + +ex_syn_spec_ext = {"synapse_model": "static_synapse", + "weight": g_AMPA_ext, "receptor_type": 1} nmda_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex, + "weight": g_NMDA, "receptor_type": 3} in_syn_spec = {"synapse_model": "static_synapse", - "weight": w_in, + "weight": g_GABA, "receptor_type": 2} conn_spec = {"rule": "all_to_all"} @@ -63,7 +99,7 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): response += s_soln(w_, t_, tau) return response -nest.Connect(pg, nrn1, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(sg, nrn1, syn_spec=ex_syn_spec_ext, conn_spec=conn_spec) nest.Connect(nrn1, sr) nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) @@ -72,7 +108,7 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): nest.Connect(mm2, nrn2) -nest.Simulate(1000.) +nest.Simulate(300.) # get spike times from membrane potential # cannot use spike_recorder because we abuse exact spike timing @@ -83,9 +119,9 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): spikes = times[diff < -3] # compute analytical solutimes = mm1.get("events", "times") -ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) -nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) -gaba_soln = spiketrain_response(times, tau_GABA, spikes, w_in) +ampa_soln = spiketrain_response(times, tau_AMPA, spikes, g_AMPA_rec) +nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, g_NMDA, alpha) +gaba_soln = spiketrain_response(times, tau_GABA, spikes, g_GABA) fig, ax = plt.subplots(4,2) ax[0,0].plot(mm1.events["V_m"]) From 0f6356c378d820b392a9e9efa35311a35d23eb59 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 12 Jan 2024 18:33:03 +0100 Subject: [PATCH 034/184] Check NMDA approximation numerically --- .../examples/wong_wang_nmda_approximation.py | 165 ++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 pynest/examples/wong_wang_nmda_approximation.py diff --git a/pynest/examples/wong_wang_nmda_approximation.py b/pynest/examples/wong_wang_nmda_approximation.py new file mode 100644 index 0000000000..5ec7366322 --- /dev/null +++ b/pynest/examples/wong_wang_nmda_approximation.py @@ -0,0 +1,165 @@ +import nest +import matplotlib.pyplot as plt +import numpy as np + +nest.ResetKernel() +nest.rng_seed = 12345 + +w_ext = 40. +w_ex = 1. +w_in = -15. + +params_exact = {"tau_AMPA": 2.0, + "tau_GABA": 5.0, + "tau_rise_NMDA": 2.0, + "tau_decay_NMDA": 100.0, + "conc_Mg2": 1.0, + "E_ex": 0.0, + "E_in": -70.0, + "E_L": -70.0, + "V_th": -55.0, + "C_m": 500.0, + "g_L": 25.0, + "V_reset": -70.0, + "alpha": 0.5, + "t_ref": 2.0} + +params_approx = params_exact.copy() + +nrn1 = nest.Create("iaf_wang_2002", params_approx) +pg = nest.Create("inhomogeneous_poisson_generator", {"rate_values": [400., 0.], + "rate_times": [0.1, 10.]}) +sr = nest.Create("spike_recorder") +nrn2 = nest.Create("iaf_wang_2002", params_approx) + +nrn3 = nest.Create("iaf_wang_2002_exact", params_exact) + +mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) +mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) +mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) + +ampa_ext_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ext, + "receptor_type": 1} + +ampa_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ex, + "receptor_type": 1} + +nmda_syn_spec = {"synapse_model": "static_synapse", + "weight": w_ex, + "receptor_type": 3} + +gaba_syn_spec = {"synapse_model": "static_synapse", + "weight": w_in, + "receptor_type": 2} + +conn_spec = {"rule": "all_to_all"} + +def s_soln(w, t, tau): + isyn = np.zeros_like(t) + useinds = t >= 0. + isyn[useinds] = w * np.exp(-t[useinds] / tau) + return isyn + +def spiketrain_response(t, tau, spiketrain, w): + response = np.zeros_like(t) + for sp in spiketrain: + t_ = t - 1. - sp + zero_arg = t_ == 0. + response += s_soln(w, t_, tau) + return response + +def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): + response = np.zeros_like(t) + for sp in spiketrain: + t_ = t - 1. - sp + zero_arg = t_ == 0. + w_ = w * alpha * (1 - response[zero_arg]) + w_ = min(w_, 1 - response[zero_arg]) + response += s_soln(w_, t_, tau) + return response + +nest.Connect(pg, nrn1, syn_spec=ampa_ext_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, sr) +nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec, conn_spec=conn_spec) +nest.Connect(mm1, nrn1) + +nest.Connect(mm2, nrn2) +nest.Connect(mm3, nrn3) + +nest.Simulate(1000.) + +# get spike times from membrane potential +# cannot use spike_recorder because we abuse exact spike timing +V_m = mm1.get("events", "V_m") +times = mm1.get("events", "times") +diff = np.ediff1d(V_m, to_begin=0.) +spikes = sr.get("events", "times") +spikes = times[diff < -3] + +# compute analytical solutions +times = mm1.get("events", "times") +# ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) +# nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) +# gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) + +from scipy.integrate import cumtrapz +def nmda_integrand(t, x0, tau_decay, tau_rise, alpha): + a = (1 / tau_decay - 1 / tau_rise) + + # argument of exp + arg = t * a + alpha * x0 * tau_rise * (1 - np.exp(- t / tau_rise)) + return np.exp(arg) + +def nmda_fn(t, s0, x0, tau_decay, tau_rise, alpha): + f1 = np.exp(- t / tau_decay - alpha * x0 * tau_rise * (1 - np.exp(-t / tau_rise))) + + tvec = np.linspace(0, t, 1001) + integrand = nmda_integrand(tvec, x0, tau_decay, tau_rise, alpha) +# f2 = alpha * x0 * np.trapz(integrand, x = tvec) + s0 + f2 = np.trapz(integrand, x = tvec) + return f1, f2 # f1 * f2 + +def nmda_fn_approx(t, x0, tau_decay, tau_rise, alpha): + f1 = np.exp(-t / tau_decay - alpha * x0 * tau_rise * (1 - np.exp(-t / tau_rise))) + f2 = (np.exp((1 - np.exp(-t / tau_rise)) * alpha * tau_rise) - 1) / alpha + + return f1, f2 + + +t = np.arange(0.1, 1000, 0.1) +s0 = 0.1 +f1s, f2s = [], [] +for t_ in t: + f1, f2 = nmda_fn(t_, 0., 1., 100., 2., 0.5) + f1s.append(f1) + f2s.append(f2) + +s_nmda = np.array([f1s[i] * (f2s[i] * 0.5 + s0) for i, _ in enumerate(f1s)]) + +f1_approx, f2_approx = nmda_fn_approx(t, 1, 100, 2, 0.5) +s_nmda_approx = f1_approx * (f2_approx * 0.5 + s0) + +def nmda_approx_exp(t, tau_rise, alpha, tau_decay): + f1 = np.exp(-alpha * tau_rise * (1 - np.exp(-t / tau_rise))) + f2 = -(1 - np.exp(alpha * tau_rise * (1 - np.exp(-t / tau_rise)))) + return f1, f2 + +f1_exp, f2_exp = nmda_approx_exp(t, 2.0, 0.5, 100) + +i = 50 +s_nmda_exp = (f1_exp[i] * f2_exp[i] + f1_exp[i] * s0) * np.exp(-t / 100) + +plt.plot(t, s_nmda, color="C0") +plt.plot(t, s_nmda_approx, color="C1") +plt.plot(t, s_nmda_exp, "--", color="C2") +#plt.plot(t, f1_exp * f2_exp, "--", color="C2") + +plt.show() + From a721ef09202bdcde422d07ea1fd75b73fa931c6a Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 19 Jan 2024 13:18:16 +0100 Subject: [PATCH 035/184] clean up --- models/iaf_wang_2002.cpp | 21 +++++---------------- models/iaf_wang_2002.h | 9 ++------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index c098b1931f..c0a3240c5f 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -117,14 +117,11 @@ nest::iaf_wang_2002::Parameters_::Parameters_() , V_reset( -60.0 ) // mV , C_m( 500.0 ) // pF , g_L( 25.0 ) // nS -// , g_GABA ( 1.3 ) // -// , g_NMDA ( 0.165 ) // -// , g_AMPA ( 0.05 ) // -// , g_AMPA_ext ( 0.05 ) // , t_ref( 2.0 ) // ms , tau_AMPA( 2.0 ) // ms , tau_GABA( 5.0 ) // ms , tau_decay_NMDA( 100 ) // ms + , tau_rise_NMDA( 2 ) // ms , alpha( 0.5 ) // 1 / ms , conc_Mg2( 1 ) // mM , gsl_error_tol( 1e-3 ) @@ -186,14 +183,11 @@ nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const def< double >( d, names::V_reset, V_reset ); def< double >( d, names::C_m, C_m ); def< double >( d, names::g_L, g_L ); -// def< double >( d, names::g_GABA, g_GABA ); -// def< double >( d, names::g_NMDA, g_NMDA ); -// def< double >( d, names::g_AMPA, g_AMPA ); -// def< double >( d, names::g_AMPA_ext, g_AMPA_ext ); def< double >( d, names::t_ref, t_ref ); def< double >( d, names::tau_AMPA, tau_AMPA ); def< double >( d, names::tau_GABA, tau_GABA ); def< double >( d, names::tau_decay_NMDA, tau_decay_NMDA ); + def< double >( d, names::tau_rise_NMDA, tau_rise_NMDA ); def< double >( d, names::alpha, alpha ); def< double >( d, names::conc_Mg2, conc_Mg2 ); def< double >( d, names::gsl_error_tol, gsl_error_tol ); @@ -210,14 +204,11 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) updateValueParam< double >( d, names::V_reset, V_reset, node ); updateValueParam< double >( d, names::C_m, C_m, node ); updateValueParam< double >( d, names::g_L, g_L, node ); -// updateValueParam< double >( d, names::g_GABA, g_GABA, node ); -// updateValueParam< double >( d, names::g_NMDA, g_NMDA, node ); -// updateValueParam< double >( d, names::g_AMPA, g_AMPA, node ); -// updateValueParam< double >( d, names::g_AMPA_ext, g_AMPA_ext, node ); updateValueParam< double >( d, names::t_ref, t_ref, node ); updateValueParam< double >( d, names::tau_AMPA, tau_AMPA, node ); updateValueParam< double >( d, names::tau_GABA, tau_GABA, node ); updateValueParam< double >( d, names::tau_decay_NMDA, tau_decay_NMDA, node ); + updateValueParam< double >( d, names::tau_rise_NMDA, tau_rise_NMDA, node ); updateValueParam< double >( d, names::alpha, alpha, node ); updateValueParam< double >( d, names::conc_Mg2, conc_Mg2, node ); updateValueParam< double >( d, names::gsl_error_tol, gsl_error_tol, node ); @@ -333,7 +324,6 @@ nest::iaf_wang_2002::init_state_() void nest::iaf_wang_2002::init_buffers_() { -// std::cout << "Inside init buffers" << std::endl; B_.spikes_.resize( 3 ); for ( auto& sb : B_.spikes_ ) { @@ -410,7 +400,6 @@ void nest::iaf_wang_2002::update( Time const& origin, const long from, const long to ) { std::vector< double > s_vals( kernel().connection_manager.get_min_delay(), 0.0 ); -// std::cout << "Inside update" << std::endl; for ( long lag = from; lag < to; ++lag ) { double t = 0.0; @@ -474,9 +463,9 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // compute current value of s_NMDA and add NMDA update to spike offset S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); - const double s_NMDA_delta = P_.alpha * (1 - S_.s_NMDA_pre); + const double s_NMDA_delta = pow(P_.tau_rise_NMDA, 2) * P_.alpha * (1 - S_.s_NMDA_pre); S_.s_NMDA_pre += s_NMDA_delta; // guaranteed to be <= 1. - + SpikeEvent se; se.set_offset( s_NMDA_delta ); kernel().event_delivery_manager.send( *this, se, lag ); diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index b6ca27c6e0..9fbbf00fc4 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -111,6 +111,7 @@ The following parameters can be set in the status dictionary. tau_AMPA ms Synaptic time constant for AMPA synapse tau_GABA ms Synaptic time constant for GABA synapse tau_decay_NMDA ms Synaptic decay time constant for NMDA synapse + tau_rise_NMDA ms Synaptic rise time constant for NMDA synapse alpha 1/ms Scaling factor for NMDA synapse conc_Mg2 mM Extracellular magnesium concentration gsl_error_tol - GSL error tolerance @@ -239,14 +240,11 @@ class iaf_wang_2002 : public ArchivingNode double V_reset; //!< Reset Potential in mV double C_m; //!< Membrane Capacitance in pF double g_L; //!< Leak Conductance in nS -// double g_GABA; //!< Peak conductance GABA -// double g_NMDA; //!< Peak conductance NMDA -// double g_AMPA; //!< Peak conductance AMPA -// double g_AMPA_ext; //!< Peak conductance AMPA double t_ref; //!< Refractory period in ms double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms double tau_decay_NMDA; //!< Synaptic Decay Time Constant NMDA Synapse in ms + double tau_rise_NMDA; //!< Synaptic Decay Time Constant NMDA Synapse in ms double alpha; //!< Scaling factor for NMDA synapse in 1/ms double conc_Mg2; //!< Extracellular Magnesium Concentration in mM @@ -318,9 +316,6 @@ class iaf_wang_2002 : public ArchivingNode // Buffers and sums of incoming spikes and currents per timestep // ----------------------------------------------------------------------- std::vector< RingBuffer > spikes_; -// RingBuffer spike_AMPA_; -// RingBuffer spike_GABA_; -// RingBuffer spike_NMDA_; RingBuffer currents_; // ----------------------------------------------------------------------- From c4d03cf834d6879f29b4b3d5bd55ae9b6a465714 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 19 Jan 2024 14:49:50 +0100 Subject: [PATCH 036/184] implement new S_NMDA jump --- models/iaf_wang_2002.cpp | 17 ++++++++++++++++- models/iaf_wang_2002.h | 6 +++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index c0a3240c5f..ba541fe205 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -124,6 +124,7 @@ nest::iaf_wang_2002::Parameters_::Parameters_() , tau_rise_NMDA( 2 ) // ms , alpha( 0.5 ) // 1 / ms , conc_Mg2( 1 ) // mM + , approx_t_exact ( 4) , gsl_error_tol( 1e-3 ) { } @@ -190,6 +191,7 @@ nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const def< double >( d, names::tau_rise_NMDA, tau_rise_NMDA ); def< double >( d, names::alpha, alpha ); def< double >( d, names::conc_Mg2, conc_Mg2 ); + def< double >( d, names::approx_t_exact, approx_t_exact ); def< double >( d, names::gsl_error_tol, gsl_error_tol ); } @@ -211,6 +213,7 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) updateValueParam< double >( d, names::tau_rise_NMDA, tau_rise_NMDA, node ); updateValueParam< double >( d, names::alpha, alpha, node ); updateValueParam< double >( d, names::conc_Mg2, conc_Mg2, node ); + updateValueParam< double >( d, names::approx_t_exact, approx_t_exact, node ); updateValueParam< double >( d, names::gsl_error_tol, gsl_error_tol, node ); if ( V_reset >= V_th ) @@ -237,6 +240,10 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) { throw BadProperty( "Mg2 concentration must be strictly positive." ); } + if ( approx_t_exact <= 0.0 ) + { + throw BadProperty( "approx_t_exact must be strictly positive." ); + } if ( gsl_error_tol <= 0.0 ) { throw BadProperty( "The gsl_error_tol must be strictly positive." ); @@ -381,6 +388,14 @@ nest::iaf_wang_2002::pre_run_hook() V_.RefractoryCounts_ = Time( Time::ms( P_.t_ref ) ).get_steps(); // since t_ref_ >= 0, this can only fail in error assert( V_.RefractoryCounts_ >= 0 ); + + // compute S_NMDA jump height variables + const double f1 = exp(-P_.alpha * P_.tau_rise_NMDA * (1 - exp(-P_.approx_t_exact / P_.tau_rise_NMDA))); + + const double f2 = -(1 - exp(P_.alpha * P_.tau_rise_NMDA * (1 - exp(-P_.approx_t_exact / P_.tau_rise_NMDA)))); + V_.S_jump_0 = f1 * f2; + V_.S_jump_1 = f1; + } void @@ -463,7 +478,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // compute current value of s_NMDA and add NMDA update to spike offset S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); - const double s_NMDA_delta = pow(P_.tau_rise_NMDA, 2) * P_.alpha * (1 - S_.s_NMDA_pre); + const double s_NMDA_delta = V_.S_jump_0 + V_.S_jump_1 * S_.s_NMDA_pre - S_.s_NMDA_pre; S_.s_NMDA_pre += s_NMDA_delta; // guaranteed to be <= 1. SpikeEvent se; diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 9fbbf00fc4..086789adaa 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -244,10 +244,12 @@ class iaf_wang_2002 : public ArchivingNode double tau_AMPA; //!< Synaptic Time Constant AMPA Synapse in ms double tau_GABA; //!< Synaptic Time Constant GABA Synapse in ms double tau_decay_NMDA; //!< Synaptic Decay Time Constant NMDA Synapse in ms - double tau_rise_NMDA; //!< Synaptic Decay Time Constant NMDA Synapse in ms + double tau_rise_NMDA; //!< Synaptic Decay Time Constant NMDA Synapse in ms double alpha; //!< Scaling factor for NMDA synapse in 1/ms double conc_Mg2; //!< Extracellular Magnesium Concentration in mM + // TODO: find better name for this variable + double approx_t_exact; // Time at which the S_NMDA approximation is exact double gsl_error_tol; //!< GSL Error Tolerance //! Initialize parameters to their default values. @@ -356,6 +358,8 @@ class iaf_wang_2002 : public ArchivingNode { //! refractory time in steps long RefractoryCounts_; + double S_jump_0; // zeroth order term of jump + double S_jump_1; // first order term of jump }; // Access functions for UniversalDataLogger ------------------------------- From f9ed575d657896231ee5f56860af2bd540247c03 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 19 Jan 2024 14:54:47 +0100 Subject: [PATCH 037/184] add comment --- models/iaf_wang_2002_exact.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 6a8e0f676c..c6ac882278 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -497,7 +497,10 @@ nest::iaf_wang_2002_exact::update( Time const& origin, const long from, const lo S_.ode_state_[ State_::s_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); for ( size_t i = NMDA - 1; i < B_.spikes_.size(); ++i ) + // i starts at 2, runs through all NMDA spikes { + + // index which starts at 0 const size_t si = i - ( NMDA - 1 ); assert( si >= 0 ); @@ -559,6 +562,8 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) } else { + // spikes_ has 2 + N elements, where N is number of NMDA synapses + // rport starts at 1, so subtract one to get correct index B_.spikes_[ rport - 1 ].add_value( steps, e.get_multiplicity() ); const size_t w_idx = rport - NMDA; From b9f2979bae319abda4589057d9d79b79b36971ab Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 19 Jan 2024 14:56:14 +0100 Subject: [PATCH 038/184] add approx t variable --- nestkernel/nest_names.cpp | 1 + nestkernel/nest_names.h | 1 + 2 files changed, 2 insertions(+) diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 479ee3d798..70cbd1dece 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -65,6 +65,7 @@ const Name amplitude( "amplitude" ); const Name amplitude_times( "amplitude_times" ); const Name amplitude_values( "amplitude_values" ); const Name anchor( "anchor" ); +const Name approx_t_exact( "approx_t_exact" ); const Name archiver_length( "archiver_length" ); const Name asc_amps( "asc_amps" ); const Name asc_decay( "asc_decay" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index 9d55639217..5464384361 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -91,6 +91,7 @@ extern const Name amplitude; extern const Name amplitude_times; extern const Name amplitude_values; extern const Name anchor; +extern const Name approx_t_exact; extern const Name archiver_length; extern const Name asc_amps; extern const Name asc_decay; From 72085ab125727a3872c63c159769cc28faac9885 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 19 Jan 2024 15:39:36 +0100 Subject: [PATCH 039/184] remove print --- models/iaf_wang_2002_exact.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index c6ac882278..3e82885e3f 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -556,8 +556,6 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) const auto rport = e.get_rport(); if ( rport < NMDA ) { -// std::cout << "Received non-NMDA spike: " << std::endl; -// std::cout << "rport: " << e.get_rport() << std::endl; B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); } else From 2465108f75bcd0d5293e84137dc34f53cc7734b5 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 19 Jan 2024 15:48:20 +0100 Subject: [PATCH 040/184] remove max(S_NMDA), no need with approx. model --- models/iaf_wang_2002.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index ba541fe205..9ba5da6bbd 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -454,7 +454,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to S_.y_[ State_::s_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); S_.y_[ State_::s_NMDA ] += B_.spikes_[ NMDA - 1 ].get_value( lag ); - S_.y_[ State_::s_NMDA ] = std::min( S_.y_[ State_::s_NMDA ], 1.0 ); +// S_.y_[ State_::s_NMDA ] = std::min( S_.y_[ State_::s_NMDA ], 1.0 ); if ( S_.r_ ) { From 906b4436470f6d910c5d74aa44a1437a24b7be58 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 19 Jan 2024 15:48:59 +0100 Subject: [PATCH 041/184] remove min(S_NMDA, 1), no need with approximation --- models/iaf_wang_2002.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 9ba5da6bbd..189e5333ea 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -454,7 +454,6 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to S_.y_[ State_::s_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); S_.y_[ State_::s_NMDA ] += B_.spikes_[ NMDA - 1 ].get_value( lag ); -// S_.y_[ State_::s_NMDA ] = std::min( S_.y_[ State_::s_NMDA ], 1.0 ); if ( S_.r_ ) { From 3bc2ffd7aedda0ab624bd71c4c922552f8aa2c29 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 19 Jan 2024 16:00:22 +0100 Subject: [PATCH 042/184] correct inhibitory weight sign --- models/iaf_wang_2002.cpp | 9 ++++++++- models/iaf_wang_2002_exact.cpp | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 189e5333ea..60b7a04c7b 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -512,7 +512,14 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) if ( rport < NMDA ) { - B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); + if ( e.get_weight() > 0 ) + { + B_.spikes_[ AMPA - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); + } + else + { + B_.spikes_[ GABA - 1 ].add_value( steps, -e.get_weight() * e.get_multiplicity() ); + } } else { diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 3e82885e3f..18fe3dacc8 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -556,7 +556,14 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) const auto rport = e.get_rport(); if ( rport < NMDA ) { - B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); + if ( e.get_weight() > 0 ) + { + B_.spikes_[ AMPA - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); + } + else + { + B_.spikes_[ GABA - 1 ].add_value( steps, -e.get_weight() * e.get_multiplicity() ); + } } else { From 04139d4e55283849392b22495961cfcd5cc49c52 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 19 Jan 2024 19:56:14 +0100 Subject: [PATCH 043/184] reproduces dynamics frfom wang 2002 paper --- pynest/examples/wang_decision_making.py | 220 ++++++++++++++++-------- 1 file changed, 152 insertions(+), 68 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 790f5c99ef..801b5d9c3a 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -3,21 +3,28 @@ from matplotlib.gridspec import GridSpec import numpy as np -np.random.seed(123) +np.random.seed(1234) rng = np.random.default_rng() dt = 0.1 nest.set(resolution=dt, print_time=True) +g_AMPA_ex = 0.05 +g_AMPA_ext_ex = 2.1 +g_NMDA_ex = 0.165 +g_GABA_ex = 1.3 + +g_AMPA_in = 0.04 +g_AMPA_ext_in = 1.62 +g_NMDA_in = 0.13 +g_GABA_in = 1.0 + # Parameters from paper -epop_params = {"g_AMPA": 0.05, - "g_AMPA_ext": 2.1, - "g_NMDA": 0.165, - "g_GABA": 1.3, - "tau_GABA": 5.0, +epop_params = {"tau_GABA": 5.0, "tau_AMPA": 2.0, "tau_decay_NMDA": 100.0, + "tau_rise_NMDA": 2.0, "alpha": 0.5, "conc_Mg2": 1.0, "g_L": 25., # leak conductance @@ -31,13 +38,10 @@ } -ipop_params = {"g_AMPA": 0.04, - "g_AMPA_ext": 1.62, - "g_NMDA": 0.13, - "g_GABA": 1.0, - "tau_GABA": 5.0, +ipop_params = {"tau_GABA": 5.0, "tau_AMPA": 2.0, "tau_decay_NMDA": 100.0, + "tau_rise_NMDA": 2.0, "alpha": 0.5, "conc_Mg2": 1.0, "g_L": 20., # leak conductance @@ -57,8 +61,7 @@ f = 0.15 # proportion of neurons receiving signal inputs w_plus = 1.7 w_minus = 1 - f * (w_plus - 1) / (1 - f) -delay = 0.1 - +delay = 0.5 NE = 1600 NI = 400 @@ -98,11 +101,22 @@ poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.}) -syn_spec_pot = {"synapse_model": "static_synapse", "weight":w_plus, "delay":delay, "receptor_type": 0} -syn_spec_default = {"synapse_model": "static_synapse", "weight":1.0, "delay":delay, "receptor_type": 0} -syn_spec_dep = {"synapse_model": "static_synapse", "weight":w_minus, "delay":delay, "receptor_type": 0} -syn_spec_inhibitory = {"synapse_model": "static_synapse", "weight":-1.0, "delay":delay, "receptor_type": 0} -syn_spec_ext = {"synapse_model": "static_synapse", "weight":1., "delay":0.1, "receptor_type": 1} +syn_spec_pot_AMPA = {"synapse_model": "static_synapse", "weight":w_plus * g_AMPA_ex, "delay":delay, "receptor_type": 1} +syn_spec_pot_NMDA = {"synapse_model": "static_synapse", "weight":w_plus * g_NMDA_ex, "delay":delay, "receptor_type": 3} + +syn_spec_dep_AMPA = {"synapse_model": "static_synapse", "weight":w_minus * g_AMPA_ex, "delay":delay, "receptor_type": 1} +syn_spec_dep_NMDA = {"synapse_model": "static_synapse", "weight":w_minus * g_NMDA_ex, "delay":delay, "receptor_type": 3} + +ie_syn_spec = {"synapse_model": "static_synapse", "weight": -1.0 * g_GABA_ex, "delay":delay, "receptor_type": 2} +ii_syn_spec = {"synapse_model": "static_synapse", "weight": -1.0 * g_GABA_in, "delay":delay, "receptor_type": 2} + +ei_syn_spec_AMPA = {"synapse_model": "static_synapse", "weight": 1.0 * g_AMPA_in, "delay":delay, "receptor_type": 1} +ei_syn_spec_NMDA = {"synapse_model": "static_synapse", "weight": 1.0 * g_NMDA_in, "delay":delay, "receptor_type": 3} +ee_syn_spec_AMPA = {"synapse_model": "static_synapse", "weight": 1.0 * g_AMPA_ex, "delay":delay, "receptor_type": 1} +ee_syn_spec_NMDA = {"synapse_model": "static_synapse", "weight": 1.0 * g_NMDA_ex, "delay":delay, "receptor_type": 3} + +exte_syn_spec = {"synapse_model": "static_synapse", "weight":g_AMPA_ext_ex, "delay":0.1, "receptor_type": 1} +exti_syn_spec = {"synapse_model": "static_synapse", "weight":g_AMPA_ext_in, "delay":0.1, "receptor_type": 1} sr_nonselective = nest.Create("spike_recorder") sr_selective1 = nest.Create("spike_recorder") @@ -114,68 +128,76 @@ mm_nonselective = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) -nest.Connect(poisson_0, - nonselective_pop + selective_pop1 + selective_pop2 + inhibitory_pop, - conn_spec="all_to_all", - syn_spec=syn_spec_ext) - -nest.Connect(nonselective_pop, - selective_pop1 + selective_pop2, - conn_spec="all_to_all", - syn_spec=syn_spec_dep) - -nest.Connect(nonselective_pop, - nonselective_pop + inhibitory_pop, - conn_spec="all_to_all", - syn_spec=syn_spec_default) - -nest.Connect(selective_pop1, - selective_pop2, - conn_spec="all_to_all", - syn_spec=syn_spec_dep) - -nest.Connect(selective_pop2, - selective_pop1, - conn_spec="all_to_all", - syn_spec=syn_spec_dep) - -nest.Connect(selective_pop1 + selective_pop2, - nonselective_pop + inhibitory_pop, - conn_spec="all_to_all", - syn_spec=syn_spec_default) - -nest.Connect(inhibitory_pop, - selective_pop1 + selective_pop2 + nonselective_pop + inhibitory_pop, - conn_spec="all_to_all", - syn_spec=syn_spec_inhibitory) - -nest.Connect(poisson_a, - selective_pop1, - conn_spec="all_to_all", - syn_spec=syn_spec_ext) - -nest.Connect(poisson_b, - selective_pop2, - conn_spec="all_to_all", - syn_spec=syn_spec_ext) + + +# # # Create connections + +# from external +nest.Connect(poisson_0, nonselective_pop + selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec) +nest.Connect(poisson_0, inhibitory_pop, conn_spec="all_to_all", syn_spec=exti_syn_spec) + +nest.Connect(poisson_a, selective_pop1, conn_spec="all_to_all", syn_spec=exte_syn_spec) +nest.Connect(poisson_b, selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec) + +# from nonselective pop +nest.Connect(nonselective_pop, selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_AMPA) +nest.Connect(nonselective_pop, selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_NMDA) + +nest.Connect(nonselective_pop, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_AMPA) +nest.Connect(nonselective_pop, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_NMDA) + +nest.Connect(nonselective_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_AMPA) +nest.Connect(nonselective_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_NMDA) nest.Connect(nonselective_pop, sr_nonselective) + +# from selective pops +nest.Connect(selective_pop1, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_pot_AMPA) +nest.Connect(selective_pop1, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_pot_NMDA) + +nest.Connect(selective_pop2, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_pot_AMPA) +nest.Connect(selective_pop2, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_pot_NMDA) + +nest.Connect(selective_pop1, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_AMPA) +nest.Connect(selective_pop1, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_NMDA) + +nest.Connect(selective_pop2, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_dep_AMPA) +nest.Connect(selective_pop2, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_dep_NMDA) + +nest.Connect(selective_pop1 + selective_pop2, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_AMPA) +nest.Connect(selective_pop1 + selective_pop2, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_NMDA) + +nest.Connect(selective_pop1 + selective_pop2, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_AMPA) +nest.Connect(selective_pop1 + selective_pop2, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_NMDA) + nest.Connect(selective_pop1, sr_selective1) nest.Connect(selective_pop2, sr_selective2) + +# from inhibitory pop +nest.Connect(inhibitory_pop, selective_pop1 + selective_pop2 + nonselective_pop, conn_spec="all_to_all", syn_spec=ie_syn_spec) +nest.Connect(inhibitory_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ii_syn_spec) + nest.Connect(inhibitory_pop, sr_inhibitory) + +# multimeters nest.Connect(mm_selective1, selective_pop1[0]) nest.Connect(mm_selective2, selective_pop2[0]) nest.Connect(mm_nonselective, nonselective_pop[0]) nest.Connect(mm_inhibitory, inhibitory_pop[0]) -nest.Simulate(4000.) +nest.Simulate(5000.) spikes_nonselective = sr_nonselective.get("events", "times") spikes_selective1 = sr_selective1.get("events", "times") spikes_selective2 = sr_selective2.get("events", "times") spikes_inhibitory = sr_inhibitory.get("events", "times") +vm_nonselective = mm_nonselective.get("events", "V_m") +s_AMPA_nonselective = mm_nonselective.get("events", "s_AMPA") +s_GABA_nonselective = mm_nonselective.get("events", "s_GABA") +s_NMDA_nonselective = mm_nonselective.get("events", "s_NMDA") + vm_selective1 = mm_selective1.get("events", "V_m") s_AMPA_selective1 = mm_selective1.get("events", "s_AMPA") s_GABA_selective1 = mm_selective1.get("events", "s_GABA") @@ -191,12 +213,74 @@ s_GABA_inhibitory = mm_inhibitory.get("events", "s_GABA") s_NMDA_inhibitory = mm_inhibitory.get("events", "s_NMDA") -gs = GridSpec(5,5) -bins = np.arange(0, 4001, 5) - 0.001 -plt.hist(spikes_selective1, bins=bins, histtype="step") -plt.hist(spikes_selective2, bins=bins, histtype="step") +res = 1.0 +bins = np.arange(0, 4001, res) - 0.001 + +fig, ax = plt.subplots(ncols=2, nrows=2, sharex=True, sharey=True) +fig.tight_layout() +d = NE * f * (res / 1000) +hist1, _ = np.histogram(spikes_selective1, bins=bins) +hist2, _ = np.histogram(spikes_selective2, bins=bins) + +ax[0,0].plot(hist1 / d) +ax[0,0].set_title("Selective pop A") +ax[0,1].plot(hist2 / d) +ax[0,1].set_title("Selective pop B") + +d = NE * (1 - 2*f) * res / 1000 +hist, _ = np.histogram(spikes_nonselective, bins=bins) +ax[1,0].plot(hist / d) +ax[1,0].set_title("Nonselective pop") + +d = NI * res / 1000 +hist, _ = np.histogram(spikes_inhibitory, bins=bins) +ax[1,1].plot(hist / d) +ax[1,1].set_title("Inhibitory pop") + + + +fig, ax = plt.subplots(ncols=4, nrows=4, sharex=True, sharey="row") +fig.tight_layout() -plt.show() +ax[0,0].plot(s_AMPA_selective1) +ax[0,1].plot(s_AMPA_selective2) +ax[0,2].plot(s_AMPA_nonselective) +ax[0,3].plot(s_AMPA_inhibitory) + +ax[1,0].plot(s_NMDA_selective1) +ax[1,1].plot(s_NMDA_selective2) +ax[1,2].plot(s_NMDA_nonselective) +ax[1,3].plot(s_NMDA_inhibitory) + +ax[2,0].plot(s_GABA_selective1) +ax[2,1].plot(s_GABA_selective2) +ax[2,2].plot(s_GABA_nonselective) +ax[2,3].plot(s_GABA_inhibitory) + +ax[3,0].plot(vm_selective1) +ax[3,1].plot(vm_selective2) +ax[3,2].plot(vm_nonselective) +ax[3,3].plot(vm_inhibitory) + + +ax[0,0].set_ylabel("S_AMPA") +ax[1,0].set_ylabel("S_NMDA") +ax[2,0].set_ylabel("S_GABA") +ax[3,0].set_ylabel("V_m") + +ax[0,0].set_title("Selective pop1") +ax[0,1].set_title("Selective pop2") +ax[0,2].set_title("Nonselective pop") +ax[0,3].set_title("Inhibitory pop") + +ax[0,0].set_title("Selective pop1") +ax[0,1].set_title("Selective pop2") +ax[0,2].set_title("Nonselective pop") +ax[0,3].set_title("Inhibitory pop") + + + +plt.show() From 479788762a30d1c0b8699484e464304e806e0dbb Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 22 Jan 2024 15:14:43 +0100 Subject: [PATCH 044/184] documentation iaf_wang_2002_exact --- models/iaf_wang_2002_exact.h | 50 ++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 74dee84432..4f206d65b4 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -61,29 +61,42 @@ extern "C" inline int iaf_wang_2002_exact_dynamics( double, const double y[], do Short description +++++++++++++++++ -Leaky integrate-and-fire-neuron model with dynamic NMDA receptors. +Leaky integrate-and-fire-neuron model with conductance based synapses, and additional NMDA receptors. Description +++++++++++ -This model implements a version of the neuron model described in [1]_. +``iaf_wang_2002_exact_dynamics`` is a leaky integrate-and-fire neuron model with -It contains AMPA, GABA and NMDA synapses, where the number of NMDA ports are dependent -on the number of presynaptic connections. +* an exact implementation of the neuron model described in [1]_. +* exponential conductance-based AMPA and GABA-synapses +* NMDA synapses with slow nonlinear dynamics +* a fixed refractory period +* no adaptation mechanisms -The AMPA and GABA synapses are given as alpha functions, while the NMDA synapse is modeled -with a non-linear function described by +Neuron and synaptic dynamics +.................................................. + +The membrane potential and synaptic variables evolve according to .. math:: - \frac{ dg_j^{NMDA}(t) }{ dt } = - \frac{ g_j^{NMDA}(t) }{ \tau_{NMDA,decay} } + \alpha x_j(t)(1 - s_j^{NMDA}(t)) \\ - \frac{ dx_j(t) }{ dt } =- \frac{ x_j(t) }{ \tau_{NMDA,rise} } + \sum_k \delta(t - t_j^k). -The synaptic current of NMDA is given by + C_\mathrm{m} \frac{dV(t)}{dt} &= -g_\mathrm{L} (V(t) - V_\mathrm{L}) - I_\mathrm{syn} (t) \\[3ex] + I_\mathrm{syn}(t) &= I_\mathrm{AMPA}(t) + I_\mathrm{NMDA}(t) + I_\mathrm{GABA}(t) (t) \\[3ex] + I_\mathrm{AMPA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{AMPA}}(t) \\[3ex] + I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] + I_\mathrm{GABA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] + \frac{dS_{j,\mathrm{AMPA}}}{dt} &= -\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}}+ \alpha x_j (1 - S_{j,\mathrm{NMDA}})\\[3ex] + \frac{dx_j}{dt} &= - \frac{x_j}{\tau_\mathrm{NMDA,rise}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) -.. math:: - I_{NMDA}(t) = \frac{ V(t) - E_{ex} }{ 1 + [Mg^{2+}]exp(-0.062V(t))/3.57 }\sum_{j=1}w_jg_j^{NMDA}, -where `w_j` is the weight of connection with presynaptic neuron `j`. +where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. + +Since :math:`S_{j,\mathrm{AMPA}}` and :math:`S_{j,\mathrm{GABA}}` are piecewise exponential functions, the sums are also a piecewise exponential function, and can be stored in a single synaptic variable each, :math:`S_{\mathrm{AMPA}}` and :math:`S_{\mathrm{GABA}}` respectively. The sum over :math:`S_{j,\mathrm{NMDA}}` does not have a simple expression, and cannot be simplified. Therefore, for each synapse, we need to integrate separate state variable, which makes the model slow. + +The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synaptic variable from the external population is not kept in a separate variable :math:`S_{\mathrm{rec,AMPA}}`, but is taken together with the local synapses in :math:`S_{\mathrm{AMPA}}`. Parameters @@ -118,18 +131,17 @@ The following values can be recorded. =========== =========================================================== V_m Membrane potential - s_AMPA AMPA gate - s_GABA GABA gate - NMDA_sum sum of NMDA over all presynaptic neurons j + s_AMPA sum of AMPA gating variables + s_GABA sum of GABA gating variables + s_NMDA sum of NMDA gating variables =========== =========================================================== .. note:: - It is possible to set values for `V_m`, `s_AMPA` and `s_GABA` when creating the model, while the - different `s_NMDA_j` (`j` represents presynaptic neuron `j`) can not be set by the user. + It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when creating the model, while the + different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be set by the user. .. note:: - The variable `s_AMPA` and `s_GABA` in the NEST implementation does not correspond to `g_{recAMPA, extAMPA, GABA}` - in [1]_. `g_{recAMPA, extAMPA, GABA, NMBA}` from [1]_ is built into the weights in this NEST model, so setting the + :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the variables is thus done by changing the weights. Sends From 4a97fe2a8d20f4cc7de9d3ac1478f79fc5fa34df Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 22 Jan 2024 19:41:01 +0100 Subject: [PATCH 045/184] commit all wong files, delete later --- models/iaf_wang_2002.cpp | 18 +++++- models/iaf_wang_2002_exact.cpp | 6 +- models/iaf_wang_2002_exact.h | 2 +- pynest/examples/wang_decision_making.py | 14 +++-- pynest/examples/wang_neuron.py | 33 +++++++---- pynest/examples/wang_neuron_exact.py | 5 ++ .../examples/wong_wang_nmda_approximation.py | 55 ++++++++++++++----- 7 files changed, 95 insertions(+), 38 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 60b7a04c7b..f6921565d5 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -44,6 +44,8 @@ // Includes from standard library #include +#include +#include /* --------------------------------------------------------------------------- * Recordables map @@ -390,10 +392,20 @@ nest::iaf_wang_2002::pre_run_hook() assert( V_.RefractoryCounts_ >= 0 ); // compute S_NMDA jump height variables - const double f1 = exp(-P_.alpha * P_.tau_rise_NMDA * (1 - exp(-P_.approx_t_exact / P_.tau_rise_NMDA))); + const double f1_old = exp(-P_.alpha * P_.tau_rise_NMDA * (1 - exp(-P_.approx_t_exact / P_.tau_rise_NMDA))); + const double f2_old = -(1 - exp(P_.alpha * P_.tau_rise_NMDA * (1 - exp(-P_.approx_t_exact / P_.tau_rise_NMDA)))); - const double f2 = -(1 - exp(P_.alpha * P_.tau_rise_NMDA * (1 - exp(-P_.approx_t_exact / P_.tau_rise_NMDA)))); - V_.S_jump_0 = f1 * f2; + // helper vars + const double at = P_.alpha * P_.tau_rise_NMDA; + const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; + const double exp_at = exp(-P_.alpha * P_.tau_rise_NMDA); + + const double f2 = -boost::math::expint(tau_rise_tau_dec, at) * at + + pow(at, tau_rise_tau_dec) * boost::math::tgamma(1 - tau_rise_tau_dec); + + const double f1 = exp_at; + + V_.S_jump_0 = f2; V_.S_jump_1 = f1; } diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 18fe3dacc8..b974f0d7b6 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -66,7 +66,7 @@ RecordablesMap< iaf_wang_2002_exact >::create() insert_( names::V_m, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::V_m > ); insert_( names::s_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_AMPA > ); insert_( names::s_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_GABA > ); - insert_( names::NMDA_sum, &iaf_wang_2002_exact::get_NMDA_sum_ ); + insert_( names::s_NMDA, &iaf_wang_2002_exact::get_s_NMDA_ ); } } /* --------------------------------------------------------------------------- @@ -238,8 +238,8 @@ nest::iaf_wang_2002_exact::State_::get( DictionaryDatum& d ) const def< double >( d, names::s_GABA, ode_state_[ s_GABA ] ); // total NMDA sum - double NMDA_sum = get_NMDA_sum(); - def< double >( d, names::NMDA_sum, NMDA_sum ); + double s_NMDA = get_NMDA_sum(); + def< double >( d, names::NMDA_sum, s_NMDA ); } void diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 4f206d65b4..70b0e8b789 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -394,7 +394,7 @@ class iaf_wang_2002_exact : public ArchivingNode //! Get the sum of NMDA from state, used by UniversalDataLogger double - get_NMDA_sum_() const + get_s_NMDA_() const { return S_.get_NMDA_sum(); } diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 801b5d9c3a..aed2c31798 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -1,3 +1,7 @@ +""" +docstring +""" + import nest import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpec @@ -6,6 +10,8 @@ np.random.seed(1234) rng = np.random.default_rng() +model = "iaf_wang_2002_exact" + dt = 0.1 nest.set(resolution=dt, print_time=True) @@ -66,10 +72,10 @@ NE = 1600 NI = 400 -selective_pop1 = nest.Create("iaf_wang_2002", int(0.15 * NE), params=epop_params) -selective_pop2 = nest.Create("iaf_wang_2002", int(0.15 * NE), params=epop_params) -nonselective_pop = nest.Create("iaf_wang_2002", int(0.7 * NE), params=epop_params) -inhibitory_pop = nest.Create("iaf_wang_2002", NI, params=ipop_params) +selective_pop1 = nest.Create(model, int(0.15 * NE), params=epop_params) +selective_pop2 = nest.Create(model, int(0.15 * NE), params=epop_params) +nonselective_pop = nest.Create(model, int(0.7 * NE), params=epop_params) +inhibitory_pop = nest.Create(model, NI, params=ipop_params) mu_0 = 40. rho_a = mu_0 / 100 diff --git a/pynest/examples/wang_neuron.py b/pynest/examples/wang_neuron.py index f2968cb907..39a7d221fe 100644 --- a/pynest/examples/wang_neuron.py +++ b/pynest/examples/wang_neuron.py @@ -1,3 +1,6 @@ +""" +docstring +""" import nest import matplotlib.pyplot as plt import numpy as np @@ -6,7 +9,7 @@ nest.rng_seed = 12345 w_ext = 40. -w_ex = 5. +w_ex = 1. w_in = -15. params_exact = {"tau_AMPA": 2.0, @@ -25,7 +28,7 @@ "t_ref": 2.0} params_approx = params_exact.copy() -del params_approx["tau_rise_NMDA"] +params_approx["approx_t_exact"] = 200 nrn1 = nest.Create("iaf_wang_2002", params_approx) pg = nest.Create("poisson_generator", {"rate": 50.}) @@ -36,7 +39,7 @@ mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) -mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) +mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) ampa_ext_syn_spec = {"synapse_model": "static_synapse", "weight": w_ext, @@ -103,11 +106,19 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): spikes = sr.get("events", "times") spikes = times[diff < -3] -# compute analytical solutions -times = mm1.get("events", "times") -# ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) -# nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) -# gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) +def nmda_integrand(t, x0, tau_decay, tau_rise, alpha): + a = (1 / tau_decay - 1 / tau_rise) + + # argument of exp + arg = t * a + alpha * x0 * tau_rise * (1 - np.exp(- t / tau_rise)) + return np.exp(arg) + +def nmda_fn(t, s0, x0, tau_decay, tau_rise, alpha): + f1 = np.exp(- t / tau_decay + alpha * x0 * tau_rise * (1 - np.exp(-t / tau_rise))) + + tvec = np.linspace(0, t, 1001) + f2 = alpha * x0 * np.trapz(nmda_integrand(tvec, x0, tau_decay, tau_rise, alpha), x = tvec) + s0 + return f1, f2 fig, ax = plt.subplots(4,2) fig.set_size_inches([12,10]) @@ -119,9 +130,8 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): ax[0,0].legend() ax[0,0].set_title("Presynaptic neuron") - ax[0,1].plot(mm2.events["V_m"]) -ax[0,1].plot(mm3.events["V_m"]) +ax[0,1].plot(mm3.events["V_m"], "--") ax[0,1].set_xlabel("time (ms)") ax[0,1].set_ylabel("membrane potential V (mV)") ax[0,1].set_title("Postsynaptic neuron") @@ -140,7 +150,7 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): ax[3,1].plot(mm2.events["s_NMDA"]) -ax[3,1].plot(mm3.events["NMDA_sum"], "--") +ax[3,1].plot(mm3.events["s_NMDA"], "--") ax[3,1].set_xlabel("time (ms)") ax[3,1].set_ylabel("s_NMDA") @@ -148,6 +158,5 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): ax[2,0].axis("off") ax[3,0].axis("off") - plt.show() diff --git a/pynest/examples/wang_neuron_exact.py b/pynest/examples/wang_neuron_exact.py index 307506618f..ff7514d9f9 100644 --- a/pynest/examples/wang_neuron_exact.py +++ b/pynest/examples/wang_neuron_exact.py @@ -1,3 +1,8 @@ +""" +docstring +""" + + import nest import matplotlib.pyplot as plt import numpy as np diff --git a/pynest/examples/wong_wang_nmda_approximation.py b/pynest/examples/wong_wang_nmda_approximation.py index 5ec7366322..0655c2bd2e 100644 --- a/pynest/examples/wong_wang_nmda_approximation.py +++ b/pynest/examples/wong_wang_nmda_approximation.py @@ -1,3 +1,7 @@ +""" +docstring +""" + import nest import matplotlib.pyplot as plt import numpy as np @@ -95,19 +99,14 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): nest.Simulate(1000.) -# get spike times from membrane potential -# cannot use spike_recorder because we abuse exact spike timing -V_m = mm1.get("events", "V_m") -times = mm1.get("events", "times") -diff = np.ediff1d(V_m, to_begin=0.) -spikes = sr.get("events", "times") -spikes = times[diff < -3] -# compute analytical solutions -times = mm1.get("events", "times") -# ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) -# nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) -# gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) +times = mm3.get("events", "times") +nest_nmda = mm3.get("events", "NMDA_sum") +nest_nmda_approx = mm2.get("events", "s_NMDA") +times -= times[(nest_nmda > 0).argmax()] - 0.1 + + + from scipy.integrate import cumtrapz def nmda_integrand(t, x0, tau_decay, tau_rise, alpha): @@ -134,7 +133,7 @@ def nmda_fn_approx(t, x0, tau_decay, tau_rise, alpha): t = np.arange(0.1, 1000, 0.1) -s0 = 0.1 +s0 = 0. f1s, f2s = [], [] for t_ in t: f1, f2 = nmda_fn(t_, 0., 1., 100., 2., 0.5) @@ -153,13 +152,39 @@ def nmda_approx_exp(t, tau_rise, alpha, tau_decay): f1_exp, f2_exp = nmda_approx_exp(t, 2.0, 0.5, 100) -i = 50 +i = 40 s_nmda_exp = (f1_exp[i] * f2_exp[i] + f1_exp[i] * s0) * np.exp(-t / 100) plt.plot(t, s_nmda, color="C0") plt.plot(t, s_nmda_approx, color="C1") plt.plot(t, s_nmda_exp, "--", color="C2") -#plt.plot(t, f1_exp * f2_exp, "--", color="C2") plt.show() + + + +from scipy.special import expn, gamma +def limfun(tau_rise, tau_decay, alpha): + f0 = np.exp(-alpha * tau_rise) + + at = alpha * tau_rise + tr_td = tau_rise / tau_decay + f1 = -at * expn(tr_td, at) + at ** tr_td * gamma(1 - tr_td) + + return f0, f1 + +f0, f1 = limfun(2, 100, 0.5) + + + + +plt.plot(t, s_nmda) +plt.plot(times, nest_nmda) +plt.plot(times, nest_nmda_approx) +plt.plot(t, f1 * np.exp(-t / 100)) + +plt.show() + + + From bf4c4b6a1ea4c42dc5e1cb5009e9ab533e708de1 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 24 Jan 2024 14:26:47 +0100 Subject: [PATCH 046/184] clean up --- models/iaf_wang_2002.cpp | 15 ++------------- models/iaf_wang_2002_exact.cpp | 3 ++- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index f6921565d5..b3627fd14b 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -391,23 +391,13 @@ nest::iaf_wang_2002::pre_run_hook() // since t_ref_ >= 0, this can only fail in error assert( V_.RefractoryCounts_ >= 0 ); - // compute S_NMDA jump height variables - const double f1_old = exp(-P_.alpha * P_.tau_rise_NMDA * (1 - exp(-P_.approx_t_exact / P_.tau_rise_NMDA))); - const double f2_old = -(1 - exp(P_.alpha * P_.tau_rise_NMDA * (1 - exp(-P_.approx_t_exact / P_.tau_rise_NMDA)))); - // helper vars const double at = P_.alpha * P_.tau_rise_NMDA; const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; - const double exp_at = exp(-P_.alpha * P_.tau_rise_NMDA); - const double f2 = -boost::math::expint(tau_rise_tau_dec, at) * at + V_.S_jump_1 = exp(-P_.alpha * P_.tau_rise_NMDA); + V_.S_jump_0 = -boost::math::expint(tau_rise_tau_dec, at) * at + pow(at, tau_rise_tau_dec) * boost::math::tgamma(1 - tau_rise_tau_dec); - - const double f1 = exp_at; - - V_.S_jump_0 = f2; - V_.S_jump_1 = f1; - } void @@ -464,7 +454,6 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // add incoming spikes S_.y_[ State_::s_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); S_.y_[ State_::s_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); - S_.y_[ State_::s_NMDA ] += B_.spikes_[ NMDA - 1 ].get_value( lag ); if ( S_.r_ ) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index b974f0d7b6..a2fddd99a6 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -571,6 +571,8 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) // rport starts at 1, so subtract one to get correct index B_.spikes_[ rport - 1 ].add_value( steps, e.get_multiplicity() ); + // we need to scale each individual S_j variable by its weight, + // so we keep track of the weight. const size_t w_idx = rport - NMDA; if ( B_.weights_[ w_idx ] == 0.0 ) { @@ -578,7 +580,6 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) } else if ( B_.weights_[ w_idx ] != e.get_weight() ) { - // Why?? throw KernelException( "iaf_wang_2002_exact requires constant weights." ); } } From 9e5d9326ffa214bbb16a7b0e625ea5d46fa8669a Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Fri, 26 Jan 2024 12:53:14 +0100 Subject: [PATCH 047/184] add benchmarking script --- pynest/examples/wang_benchmarks.py | 417 +++++++++++++++++++++++++++++ 1 file changed, 417 insertions(+) create mode 100644 pynest/examples/wang_benchmarks.py diff --git a/pynest/examples/wang_benchmarks.py b/pynest/examples/wang_benchmarks.py new file mode 100644 index 0000000000..33b07d0e8f --- /dev/null +++ b/pynest/examples/wang_benchmarks.py @@ -0,0 +1,417 @@ +""" +Check that NEST implementation gives same results as a reference implementation from Brian. +Note that in the NEST model, the constant "g" parameter is baked into the synaptic weight, instead of being +a separate parameter. This is the only difference in parameterization between the two models. +Also, in the NEST model, the weight for the NMDA receptor is applied AFTER computing the s_NMDA values, +so the in the recorded value of NMDA_sum, the weights are not yet applied. The end result (V_m) is still the same. +""" + + +import brian2 as b2 +import nest +import numpy as np +import time, os +import statistics +import matplotlib.pyplot as plt +from pathlib import Path + + +path = Path(__file__).parent +outfile = os.path.join(path, "wang_benchmark_log.csv") +if not os.path.isfile(outfile): + with open(outfile, "w") as f: + f.write("brian_time,nest_time_exact,nest_time_approx,NE,NI\n") + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Parameters +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +simtime = 1000 +resolution = 0.01 +NE = 200 +NI = 200 + +V_th = -55 * b2.mV +V_reset = -70 * b2.mV +t_ref = 2 * b2.ms + +# parameters for the equation of the neuron +# (Inhibitory and excitatory neurons have different parameters) +g_L = 25. * b2.nS +C_m = 0.5 * b2.nF + +g_AMPA_rec = 2.0 * b2.nS +g_AMPA_ext = 1.0 *b2.nS +g_GABA = 1. * b2.nS +g_NMDA = 1. * b2.nS + +# reversal potentials +E_L = V_reset +E_ex= 0. * b2.mV +E_in = -70. * b2.mV + +# time constant of the receptors +tau_AMPA= 2 * b2.ms +tau_GABA= 5 * b2.ms +tau_NMDA_rise = 2. * b2.ms +tau_NMDA_decay = 100. * b2.ms + +# additional NMDA parameters +alpha = 0.5 / b2.ms +Mg2 = 1. + +# synaptic weights +weight_AMPA_ext = 1. +weight_AMPA = 1. * 50 / NE +weight_NMDA = 1. * 50 / NE +weight_GABA = 1. * 50 / NI + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Brian simulation +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +## Equations +eqsE=""" + + dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) + I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA: amp + + I_AMPA_ext = g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp + ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 + #Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. + + I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp + s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here + #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). + #I then sum all the solutions s of the differential equations and I obtain s_AMPA_tot_post. + + I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp + s_GABA_tot :1 + + I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp + s_NMDA_tot : 1 + + """ + + + +eqsI=""" + + dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) + I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA : amp + + I_AMPA_ext= g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp + ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 + # Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. + + + I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp + s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here + #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). + #I then sum all the solutions s of the differential equations and I obtain s_AMPA_tot_post. + + I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp + s_GABA_tot :1 + + I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp + s_NMDA_tot : 1 + + """ + +eqs_ampa=""" + s_AMPA_tot_post = w_AMPA * s_AMPA : 1 (summed) + ds_AMPA / dt = - s_AMPA / tau_AMPA : 1 (clock-driven) + w_AMPA: 1 + """ + +eqs_gaba=""" + s_GABA_tot_post= w_GABA* s_GABA : 1 (summed) + ds_GABA/ dt = - s_GABA/ tau_GABA : 1 (clock-driven) + w_GABA: 1 + """ + +eqs_nmda="""s_NMDA_tot_post = w_NMDA * s_NMDA : 1 (summed) + ds_NMDA / dt = - s_NMDA / tau_NMDA_decay + alpha * x * (1 - s_NMDA) : 1 (clock-driven) + dx / dt = - x / tau_NMDA_rise : 1 (clock-driven) + w_NMDA : 1 + """ + + + +#Create the two population with the corresponfing equations: +popE = b2.NeuronGroup(NE, model=eqsE, threshold="v > V_th", reset="v = E_L", refractory=t_ref, method="rk4") +popI= b2.NeuronGroup(NI, model=eqsI, threshold="v > V_th", reset="v = E_L", refractory=t_ref, method="rk4") + + +#Set the initial value of the potential v for all the neurons +for k in range(0,NE): + popE[k].v[0]=E_L + +for k in range(0,NI): + popI[k].v[0]=E_L + + +# Connect the neurons of popE with the neurons of popI (for the ampa connections) +conn= b2.Synapses(popE,popI,model=eqs_ampa,on_pre="s_AMPA+=1", method="rk4") +conn.connect() +conn.w_AMPA= weight_AMPA +conn.delay = 1.0 * b2.ms + +# Connect the neurons of popE with the neurons of popI (for the NMDA connections) +conn1= b2.Synapses(popE,popI,model=eqs_nmda,on_pre="x+=1", method="rk4") +conn1.connect() +conn1.w_NMDA= weight_NMDA +conn1.delay = 1.0 * b2.ms + +# Connect the neurons of popE with the neurons of popE (for the AMPA connections) +conn2= b2.Synapses(popE,popE,model=eqs_ampa,on_pre="s_AMPA+=1", method="rk4") +conn2.connect() +conn2.w_AMPA= weight_AMPA +conn2.delay = 1.0 * b2.ms + +# Connect the neurons of popE with the neurons of popE (for the NMDA connections) +conn3= b2.Synapses(popE,popE,model=eqs_nmda,on_pre="x+=1", method="rk4") +conn3.connect() +conn3.w_NMDA= weight_NMDA +conn3.delay = 1.0 * b2.ms + +# Connect the neurons of popI with the neurons of popE (for the GABA connections) +conn4= b2.Synapses(popI,popE,model = eqs_gaba,on_pre="s_GABA+=1", method="rk4") +conn4.connect() +conn4.w_GABA= weight_GABA +conn4.delay = 1.0 * b2.ms + +# Connect the neurons of popI with the neurons of popI (for the GABA connections) +conn5= b2.Synapses(popI,popI,model = eqs_gaba,on_pre="s_GABA+=1", method="rk4") +conn5.connect() +conn5.w_GABA= weight_GABA +conn5.delay = 1.0 * b2.ms + +# To excitatory neurons +rate_E = 4000 * b2.Hz +ext_inputE = b2.PoissonGroup(NE, rates = rate_E) +ext_connE = b2.Synapses(ext_inputE, popE, on_pre="s_AMPA_ext += 1") +ext_connE.connect(j="i") +ext_connE.delay = 1.0 * b2.ms + +# To inhibitory neurons +rate_I=4000 * b2.Hz +ext_inputI= b2.PoissonGroup(NI, rates = rate_I) +ext_connI = b2.Synapses(ext_inputI, popI, on_pre="s_AMPA_ext += 1") +ext_connI.connect(j="i") +ext_connI.delay = 1.0 * b2.ms + +# Recorder to save the spikes of the neurons +S_e = b2.SpikeMonitor(popE[:NE], record=True) +S_i = b2.SpikeMonitor(popI[:NI], record=True) + +b2.defaultclock.dt = resolution * b2.ms +tic = time.time() +b2.run(simtime * b2.ms) +toc = time.time() +brian_time = toc - tic + +brian_espikes = S_e.spike_trains() +brian_espikes = np.array(np.concatenate(tuple(brian_espikes.values()))) * 1000. +brian_ispikes = S_i.spike_trains() +brian_ispikes = np.array(np.concatenate(tuple(brian_ispikes.values()))) * 1000. + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# NEST simulation exact +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +nest.rng_seed = 12345 + +nest.ResetKernel() +nest.resolution = resolution + +neuron_params = {"tau_AMPA": np.asarray(tau_AMPA) * 1e3, # units ms + "tau_GABA": np.asarray(tau_GABA) * 1e3, # units ms + "tau_rise_NMDA": np.asarray(tau_NMDA_rise) * 1e3, # units ms + "tau_decay_NMDA": np.asarray(tau_NMDA_decay) * 1e3, # units ms + "conc_Mg2": np.asarray(Mg2), # dimensionless + "E_ex": np.asarray(E_ex) * 1e3, # units mV + "E_in": np.asarray(E_in) * 1e3, # units mV + "E_L": np.asarray(E_L) * 1e3, # units mV + "V_th": np.asarray(V_th) * 1e3, # units mV + "C_m": np.asarray(C_m) * 1e12, # units pF + "g_L": np.asarray(g_L) * 1e9, # units nS + "V_reset": np.asarray(V_reset) * 1e3, # units nS + "alpha": np.asarray(alpha * b2.ms), # units nS + # DIFFERENCE: subtract 0.1 ms from t_ref + "t_ref": np.asarray(t_ref) * 1e3 - b2.defaultclock.dt / b2.ms} # units ms + + + +poisson = nest.Create("poisson_generator", {"rate": 4000.}) +epop = nest.Create("iaf_wang_2002_exact", NE, params=neuron_params) +ipop = nest.Create("iaf_wang_2002_exact", NI, params=neuron_params) + +sr_ex = nest.Create("spike_recorder") +sr_in = nest.Create("spike_recorder") + + +# DIFFERENCE: add 0.1ms to delay +nest_delay = 1. + b2.defaultclock.dt / b2.ms +ex_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS + "receptor_type": 1, + "delay": nest_delay} + +ex_syn_spec_ext = {"synapse_model": "static_synapse", + "weight": np.asarray(g_AMPA_ext) * 1e9 * weight_AMPA_ext, # units nS + "receptor_type": 1, + "delay": nest_delay} + +nmda_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_NMDA) * 1e9 * weight_NMDA, # units nS + "receptor_type": 3, + "delay": nest_delay} + +in_syn_spec = {"synapse_model": "static_synapse", + "weight": -np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS + "receptor_type": 2, + "delay": nest_delay} + +conn_spec = {"rule": "all_to_all"} + +nest.Connect(poisson, epop + ipop, syn_spec=ex_syn_spec_ext, conn_spec="all_to_all") +nest.Connect(epop, sr_ex) +nest.Connect(ipop, sr_in) +nest.Connect(epop, epop + ipop, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(epop, epop + ipop, syn_spec=nmda_syn_spec, conn_spec=conn_spec) +nest.Connect(ipop, ipop + epop, syn_spec=in_syn_spec, conn_spec=conn_spec) + +tic = time.time() +nest.Simulate(simtime) +toc = time.time() +nest_time_exact = toc - tic + +nest_espikes_exact = sr_ex.get("events", "times") +nest_ispikes_exact = sr_in.get("events", "times") + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# NEST simulation approximate +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +nest.rng_seed = 12345 + +nest.ResetKernel() +nest.resolution = resolution + +neuron_params = {"tau_AMPA": np.asarray(tau_AMPA) * 1e3, # units ms + "tau_GABA": np.asarray(tau_GABA) * 1e3, # units ms + "tau_rise_NMDA": np.asarray(tau_NMDA_rise) * 1e3, # units ms + "tau_decay_NMDA": np.asarray(tau_NMDA_decay) * 1e3, # units ms + "conc_Mg2": np.asarray(Mg2), # dimensionless + "E_ex": np.asarray(E_ex) * 1e3, # units mV + "E_in": np.asarray(E_in) * 1e3, # units mV + "E_L": np.asarray(E_L) * 1e3, # units mV + "V_th": np.asarray(V_th) * 1e3, # units mV + "C_m": np.asarray(C_m) * 1e12, # units pF + "g_L": np.asarray(g_L) * 1e9, # units nS + "V_reset": np.asarray(V_reset) * 1e3, # units nS + "alpha": np.asarray(alpha * b2.ms), # units nS + # DIFFERENCE: subtract 0.1 ms from t_ref + "t_ref": np.asarray(t_ref) * 1e3 - b2.defaultclock.dt / b2.ms} # units ms + + + +poisson = nest.Create("poisson_generator", {"rate": 4000.}) +epop = nest.Create("iaf_wang_2002", NE, params=neuron_params) +ipop = nest.Create("iaf_wang_2002", NI, params=neuron_params) + +sr_ex = nest.Create("spike_recorder") +sr_in = nest.Create("spike_recorder") + +# DIFFERENCE: add 0.1ms to delay +nest_delay = 1. + b2.defaultclock.dt / b2.ms +ex_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS + "receptor_type": 1, + "delay": nest_delay} + +ex_syn_spec_ext = {"synapse_model": "static_synapse", + "weight": np.asarray(g_AMPA_ext) * 1e9 * weight_AMPA_ext, # units nS + "receptor_type": 1, + "delay": nest_delay} + +nmda_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_NMDA) * 1e9 * weight_NMDA, # units nS + "receptor_type": 3, + "delay": nest_delay} + +in_syn_spec = {"synapse_model": "static_synapse", + "weight": -np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS + "receptor_type": 2, + "delay": nest_delay} + +conn_spec = {"rule": "all_to_all"} + +nest.Connect(poisson, epop + ipop, syn_spec=ex_syn_spec_ext, conn_spec="all_to_all") +nest.Connect(epop, sr_ex) +nest.Connect(ipop, sr_in) +nest.Connect(epop, epop + ipop, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(epop, epop + ipop, syn_spec=nmda_syn_spec, conn_spec=conn_spec) +nest.Connect(ipop, ipop + epop, syn_spec=in_syn_spec, conn_spec=conn_spec) + +tic = time.time() +nest.Simulate(simtime) +toc = time.time() +nest_time_approx = toc - tic + +with open(outfile, "a") as f: + f.write(f"{brian_time},{nest_time_exact},{nest_time_approx},{NE},{NI}\n") + +nest_espikes_approx = sr_ex.get("events", "times") +nest_ispikes_approx = sr_in.get("events", "times") + + +# Plotting +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +print(f"Time NEST exact: {nest_time_exact}") +print(f"Time NEST approx: {nest_time_approx}") +print(f"Time Brian2 exact: {brian_time}") + +print(f"Total excitatory spikes Brian exact: {len(brian_espikes)}") +print(f"Total inhibitory spikes Brian exact: {len(brian_ispikes)}") + +print(f"Total excitatory spikes NEST exact: {len(nest_espikes_exact)}") +print(f"Total inhibitory spikes NEST exact: {len(nest_ispikes_exact)}") + +print(f"Total excitatory spikes NEST approx: {len(nest_espikes_approx)}") +print(f"Total inhibitory spikes NEST approx: {len(nest_ispikes_approx)}") + +bins = np.arange(0, simtime+1, 1) - 0.001 +nest_ehist_exact, _ = np.histogram(nest_espikes_exact, bins=bins) +nest_ihist_exact, _ = np.histogram(nest_ispikes_exact, bins=bins) + +nest_ehist_approx, _ = np.histogram(nest_espikes_approx, bins=bins) +nest_ihist_approx, _ = np.histogram(nest_ispikes_approx, bins=bins) + +brian_ehist, _ = np.histogram(brian_espikes, bins=bins) +brian_ihist, _ = np.histogram(brian_ispikes, bins=bins) + +fig, ax = plt.subplots(ncols=2, nrows=3, sharex=True, sharey=True) +ax[0,0].plot(nest_ehist_exact * 1000 / NE) +ax[1,0].plot(nest_ehist_approx * 1000 / NE) +ax[2,0].plot(brian_ehist * 1000 / NE) + +ax[0,1].plot(nest_ihist_exact * 1000 / NI) +ax[1,1].plot(nest_ihist_approx * 1000 / NI) +ax[2,1].plot(brian_ihist * 1000 / NI) + +ax[0,0].set_title("excitatory") +ax[0,1].set_title("inhibitory") +ax[2,0].set_xlabel("time (ms)") +ax[2,1].set_xlabel("time (ms)") +ax[0,0].set_ylabel("NEST exact") +ax[1,0].set_ylabel("NEST approx") +ax[2,0].set_ylabel("Brian") +plt.show() + From 565bf1b960fd6e2cf6e36e3192534b2d0a6c4671 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 30 Jan 2024 14:49:36 +0100 Subject: [PATCH 048/184] add all examples scripts, remove later --- pynest/examples/wang_approx_compare_brian.py | 257 ++++++++++++++++++ pynest/examples/wang_benchmarks.py | 6 +- pynest/examples/wang_compare_brian.py | 69 +++-- pynest/examples/wang_decision_making.py | 3 +- .../examples/wong_wang_nmda_approximation.py | 34 ++- 5 files changed, 317 insertions(+), 52 deletions(-) create mode 100644 pynest/examples/wang_approx_compare_brian.py diff --git a/pynest/examples/wang_approx_compare_brian.py b/pynest/examples/wang_approx_compare_brian.py new file mode 100644 index 0000000000..20a3095bbb --- /dev/null +++ b/pynest/examples/wang_approx_compare_brian.py @@ -0,0 +1,257 @@ +""" +Check that NEST implementation gives same results as a reference implementation from Brian. +Note that in the NEST model, the constant "g" parameter is baked into the synaptic weight, instead of being +a separate parameter. This is the only difference in parameterization between the two models. +Also, in the NEST model, the weight for the NMDA receptor is applied AFTER computing the s_NMDA values, +so the in the recorded value of NMDA_sum, the weights are not yet applied. The end result (V_m) is still the same. +""" + + +import brian2 as b2 +import nest +import numpy as np +import time +import statistics +import matplotlib.pyplot as plt + + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Parameters +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +V_th = -55 * b2.mV +V_reset = -70 * b2.mV +t_ref = 2 * b2.ms + +# parameters for the equation of the neuron +# (Inhibitory and excitatory neurons have different parameters) +g_L = 25. * b2.nS +C_m = 0.5 * b2.nF + +g_AMPA_rec = 1.0 * b2.nS +g_AMPA_ext = 100.0 *b2.nS +g_GABA = 1.0 * b2.nS +g_NMDA = 1.0 * b2.nS + +# reversal potentials +E_L = V_reset +E_ex= 0. * b2.mV +E_in = -70. * b2.mV + +# time constant of the receptors +tau_AMPA= 2 * b2.ms +tau_GABA= 5 * b2.ms +tau_NMDA_rise = 2. * b2.ms +tau_NMDA_decay = 100. * b2.ms + +# additional NMDA parameters +alpha = 0.5 / b2.ms +Mg2 = 1. + +# synaptic weights +weight_AMPA = 1. +weight_GABA = 3. +weight_NMDA = 2. + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Brian simulation +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +## Equations +eqsE=""" + + dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) + I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA: amp + + I_AMPA_ext = g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp + ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 + #Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. + + + I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp + s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here + #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). + #I then sum all the solutions s of the differential equations and I obtain s_AMPA_tot_post. + + I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp + s_GABA_tot :1 + + + I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp + s_NMDA_tot : 1 + + """ + +eqs_ampa=""" + s_AMPA_tot_post= w_AMPA * s_AMPA : 1 (summed) + ds_AMPA / dt = - s_AMPA / tau_AMPA : 1 (clock-driven) + w_AMPA: 1 + """ + +eqs_gaba=""" + s_GABA_tot_post= w_GABA* s_GABA : 1 (summed) + ds_GABA/ dt = - s_GABA/ tau_GABA : 1 (clock-driven) + w_GABA: 1 + """ + +eqs_nmda="""s_NMDA_tot_post = w_NMDA * s_NMDA : 1 (summed) + ds_NMDA / dt = - s_NMDA / tau_NMDA_decay + alpha * x * (1 - s_NMDA) : 1 (clock-driven) + dx / dt = - x / tau_NMDA_rise : 1 (clock-driven) + w_NMDA : 1 + """ + +nrn1 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") +nrn2 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") + +nrn1[0].v[0]=V_reset +nrn2[0].v[0]=V_reset + +times = np.array([10, 20, 40, 80, 90]) * b2.ms +indices = np.arange(len(times)) +spikeGen = b2.SpikeGeneratorGroup(len(times), indices, times) + +ext_conn1 = b2.Synapses(spikeGen, nrn1, on_pre="s_AMPA_ext += 1") +ext_conn1.connect() +ext_conn1.delay = 1.0 * b2.ms + +conn2 = b2.Synapses(nrn1, nrn2, model=eqs_ampa, on_pre="s_AMPA+=1", method="rk4") +conn2.connect() +conn2.w_AMPA = weight_AMPA +conn2.delay = 1.0 * b2.ms + +conn3= b2.Synapses(nrn1,nrn2,model=eqs_nmda,on_pre="x+=1", method="rk4") +conn3.connect() +conn3.w_NMDA = weight_NMDA +conn3.delay = 1.0 * b2.ms + +conn4 = b2.Synapses(nrn1, nrn2, model=eqs_gaba, on_pre="s_GABA+=1", method="rk4") +conn4.connect() +conn4.w_GABA = weight_GABA +conn4.delay = 1.0 * b2.ms + +vMonitor1 = b2.StateMonitor(nrn1, "v",record=True) +ampaMonitor1 = b2.StateMonitor(nrn1, "s_AMPA_ext",record=True) +gabaMonitor1 = b2.StateMonitor(nrn1, "s_GABA_tot",record=True) +nmdaMonitor1 = b2.StateMonitor(nrn2, "s_NMDA_tot", record=True) + +vMonitor2 = b2.StateMonitor(nrn2, "v", record=True) +ampaMonitor2 = b2.StateMonitor(nrn2, "s_AMPA_tot", record=True) +gabaMonitor2 = b2.StateMonitor(nrn2, "s_GABA_tot", record=True) +nmdaMonitor2 = b2.StateMonitor(nrn2, "s_NMDA_tot", record=True) + +t_sim = 300 +b2.run(t_sim * b2.ms) + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# NEST simulation +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +nest.rng_seed = 12345 + +nest.ResetKernel() + +neuron_params = {"tau_AMPA": np.asarray(tau_AMPA) * 1e3, # units ms + "E_ex": np.asarray(E_ex) * 1e3, # units mV + "E_L": np.asarray(E_L) * 1e3, # units mV + "V_th": np.asarray(V_th) * 1e3, # units mV + "C_m": np.asarray(C_m) * 1e12, # units pF + "g_L": np.asarray(g_L) * 1e9, # units nS + "V_reset": np.asarray(V_reset) * 1e3, # units nS + # DIFFERENCE: subtract 0.1 ms from t_ref + "t_ref": np.asarray(t_ref) * 1e3 - 0.1} # units ms + +nrn1 = nest.Create("iaf_wang_2002", neuron_params) +nrn2 = nest.Create("iaf_wang_2002", neuron_params) + +times = np.array([10.0, 20.0, 40.0, 80.0, 90.0]) +sg = nest.Create("spike_generator", {"spike_times": times}) +sr = nest.Create("spike_recorder") + +mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA", "s_NMDA"], "interval": 0.1}) +mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA", "s_NMDA"], "interval": 0.1}) + +# DIFFERENCE: add 0.1ms to delay +nest_delay = 1.1 +ex_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS + "receptor_type": 1, + "delay": nest_delay} + +ex_syn_spec_ext = {"synapse_model": "static_synapse", + "weight": np.asarray(g_AMPA_ext) * 1e9, # units nS + "receptor_type": 1, + "delay": nest_delay} + +nmda_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_NMDA) * 1e9 * weight_NMDA, # units nS + "receptor_type": 3, + "delay": nest_delay} + +in_syn_spec = {"synapse_model": "static_synapse", + "weight": np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS + "receptor_type": 2, + "delay": nest_delay} + +conn_spec = {"rule": "all_to_all"} + + +nest.Connect(sg, nrn1, syn_spec=ex_syn_spec_ext, conn_spec=conn_spec) +nest.Connect(nrn1, sr) +nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) +nest.Connect(mm1, nrn1) +nest.Connect(mm2, nrn2) + +nest.Simulate(300.) + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Plotting +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +fig, ax = plt.subplots(4, 2) +fig.set_size_inches([12,10]) +fig.subplots_adjust(hspace=0.5) +ax[0,0].plot(vMonitor1.t / b2.ms, vMonitor1.v[0] / b2.mV, label="brian2") +ax[0,0].plot(mm1.get("events", "times"), mm1.get("events", "V_m"), "--", label="nest") +ax[0,0].set_xlabel("time (ms)") +ax[0,0].set_ylabel("membrane potential V (mV)") +ax[0,0].legend() +ax[0,0].set_title("Presynaptic neuron") + +ax[0,1].plot(vMonitor2.t / b2.ms, vMonitor2.v[0] / b2.mV) +ax[0,1].plot(mm2.get("events", "times"), mm2.get("events", "V_m"), "--") +ax[0,1].set_xlabel("time (ms)") +ax[0,1].set_ylabel("membrane potential V (mV)") +ax[0,1].set_title("Postsynaptic neuron") + +# multiply by g_AMPA_ext since it is baked into s_AMPA in NEST +ax[1,0].plot(ampaMonitor1.t/b2.ms, ampaMonitor1.s_AMPA_ext[0] * g_AMPA_ext / b2.nS) +ax[1,0].plot(mm1.get("events", "times"), mm1.get("events", "s_AMPA"), "--") +ax[1,0].set_xlabel("time (ms)") +ax[1,0].set_ylabel("s_AMPA") + +ax[1,1].plot(ampaMonitor2.t/b2.ms, ampaMonitor2.s_AMPA_tot[0]) +ax[1,1].plot(mm2.get("events", "times"), mm2.get("events", "s_AMPA"), "--") +ax[1,1].set_xlabel("time (ms)") +ax[1,1].set_ylabel("s_AMPA") + +ax[2,1].plot(gabaMonitor2.t/b2.ms, gabaMonitor2.s_GABA_tot[0]) +ax[2,1].plot(mm2.get("events", "times"), mm2.get("events", "s_GABA"), "--") +ax[2,1].set_xlabel("time (ms)") +ax[2,1].set_ylabel("s_GABA") + +ax[3,1].plot(nmdaMonitor2.t/b2.ms, nmdaMonitor2.s_NMDA_tot[0]) +ax[3,1].plot(mm2.get("events", "times"), mm2.get("events", "s_NMDA"), "--") +ax[3,1].set_xlabel("time (ms)") +ax[3,1].set_ylabel("s_NMDA") + +ax[2,0].axis("off") +ax[3,0].axis("off") + +plt.show() + + diff --git a/pynest/examples/wang_benchmarks.py b/pynest/examples/wang_benchmarks.py index 33b07d0e8f..e374c53851 100644 --- a/pynest/examples/wang_benchmarks.py +++ b/pynest/examples/wang_benchmarks.py @@ -191,14 +191,14 @@ # To excitatory neurons rate_E = 4000 * b2.Hz ext_inputE = b2.PoissonGroup(NE, rates = rate_E) -ext_connE = b2.Synapses(ext_inputE, popE, on_pre="s_AMPA_ext += 1") +ext_connE = b2.Synapses(ext_inputE, popE, on_pre="s_AMPA_ext += 1", method="rk4") ext_connE.connect(j="i") ext_connE.delay = 1.0 * b2.ms # To inhibitory neurons -rate_I=4000 * b2.Hz +rate_I= 4000 * b2.Hz ext_inputI= b2.PoissonGroup(NI, rates = rate_I) -ext_connI = b2.Synapses(ext_inputI, popI, on_pre="s_AMPA_ext += 1") +ext_connI = b2.Synapses(ext_inputI, popI, on_pre="s_AMPA_ext += 1", method="rk4") ext_connI.connect(j="i") ext_connI.delay = 1.0 * b2.ms diff --git a/pynest/examples/wang_compare_brian.py b/pynest/examples/wang_compare_brian.py index 63676ad67c..df8a39b014 100644 --- a/pynest/examples/wang_compare_brian.py +++ b/pynest/examples/wang_compare_brian.py @@ -51,8 +51,8 @@ # synaptic weights weight_AMPA = 1. -weight_GABA = 3. -weight_NMDA = 2. +weight_GABA = 1. +weight_NMDA = 1. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -100,7 +100,7 @@ w_NMDA : 1 """ -b2.defaultclock.dt = 0.001 * b2.ms +b2.defaultclock.dt = 0.01 * b2.ms nrn1 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") nrn2 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") @@ -108,13 +108,13 @@ nrn1[0].v[0] = V_reset nrn2[0].v[0] = V_reset -times = np.array([10, 20, 40, 80, 90]) * b2.ms +times = np.array([10, 20, 40, 80, 90, 104, 109, 115, 185, 188, 190]) * b2.ms indices = np.arange(len(times)) spikeGen = b2.SpikeGeneratorGroup(len(times), indices, times) -ext_conn1 = b2.Synapses(spikeGen, nrn1, on_pre="s_AMPA_ext += 1") +ext_conn1 = b2.Synapses(spikeGen, nrn1, on_pre="s_AMPA_ext += 1", method="rk4") ext_conn1.connect() -ext_conn1.delay = 1.0 * b2.ms +ext_conn1.delay = 0.9 * b2.ms conn2 = b2.Synapses(nrn1, nrn2, model=eqs_ampa, on_pre="s_AMPA+=1", method="rk4") conn2.connect() @@ -167,26 +167,31 @@ "V_reset": np.asarray(V_reset) * 1e3, # units nS "alpha": np.asarray(alpha * b2.ms), # units nS # DIFFERENCE: subtract 0.1 ms from t_ref - "t_ref": np.asarray(t_ref) * 1e3 - b2.defaultclock.dt / b2.ms} # units ms + "t_ref": np.asarray(t_ref) * 1e3 - b2.defaultclock.dt / b2.ms} # units ms -nrn1 = nest.Create("iaf_wang_2002_exact", neuron_params) +nrn1 = nest.Create("iaf_wang_2002", neuron_params) nrn2 = nest.Create("iaf_wang_2002_exact", neuron_params) +nrn3 = nest.Create("iaf_wang_2002", neuron_params) -times = np.array([10.0, 20.0, 40.0, 80.0, 90.0]) +times = np.array([10, 20, 40, 80, 90, 104, 109, 115, 185, 188, 190]) * 1.0 sg = nest.Create("spike_generator", {"spike_times": times}) sr = nest.Create("spike_recorder") -mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], +mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": b2.defaultclock.dt / b2.ms} ) -mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], +mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], + "interval": b2.defaultclock.dt / b2.ms} +) + +mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": b2.defaultclock.dt / b2.ms} ) # DIFFERENCE: add 0.1ms to delay -nest_delay = 1. + b2.defaultclock.dt / b2.ms +nest_delay = 1.# + b2.defaultclock.dt / b2.ms ex_syn_spec = {"synapse_model": "static_synapse", "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS "receptor_type": 1, @@ -203,7 +208,7 @@ "delay": nest_delay} in_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS + "weight": -np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS "receptor_type": 2, "delay": nest_delay} @@ -211,11 +216,18 @@ nest.Connect(sg, nrn1, syn_spec=ex_syn_spec_ext, conn_spec=conn_spec) nest.Connect(nrn1, sr) + nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) + +nest.Connect(nrn1, nrn3, syn_spec=ex_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn3, syn_spec=in_syn_spec, conn_spec=conn_spec) +nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec, conn_spec=conn_spec) + nest.Connect(mm1, nrn1) nest.Connect(mm2, nrn2) +nest.Connect(mm3, nrn3) nest.Simulate(300.) @@ -226,40 +238,39 @@ fig, ax = plt.subplots(4, 2) fig.set_size_inches([12,10]) fig.subplots_adjust(hspace=0.5) -ax[0,0].plot(vMonitor1.t / b2.ms, vMonitor1.v[0] / b2.mV, label="brian2") +ax[0,0].plot(vMonitor1.t / b2.ms, vMonitor1.v[0] / b2.mV, label="brian2", c="black") ax[0,0].plot(mm1.get("events", "times"), mm1.get("events", "V_m"), "--", label="nest") ax[0,0].set_xlabel("time (ms)") ax[0,0].set_ylabel("membrane potential V (mV)") -ax[0,0].legend() ax[0,0].set_title("Presynaptic neuron") -ax[0,1].plot(vMonitor2.t / b2.ms, vMonitor2.v[0] / b2.mV) -ax[0,1].plot(mm2.get("events", "times"), mm2.get("events", "V_m"), "--") +ax[0,1].plot(vMonitor2.t / b2.ms, vMonitor2.v[0] / b2.mV, label="brian2", c="black") +ax[0,1].plot(mm2.get("events", "times"), mm2.get("events", "V_m"), "--", label="NEST exact", c="C0") +ax[0,1].plot(mm3.get("events", "times"), mm3.get("events", "V_m"), "--", label="NEST approx", c="C1") ax[0,1].set_xlabel("time (ms)") ax[0,1].set_ylabel("membrane potential V (mV)") ax[0,1].set_title("Postsynaptic neuron") +ax[0,1].legend() -# multiply by g_AMPA_ext since it is baked into s_AMPA in NEST -ax[1,0].plot(ampaMonitor1.t/b2.ms, ampaMonitor1.s_AMPA_ext[0] * g_AMPA_ext / b2.nS) -ax[1,0].plot(mm1.get("events", "times"), mm1.get("events", "s_AMPA"), "--") -ax[1,0].set_xlabel("time (ms)") -ax[1,0].set_ylabel("s_AMPA") - -ax[1,1].plot(ampaMonitor2.t/b2.ms, ampaMonitor2.s_AMPA_tot[0]) -ax[1,1].plot(mm2.get("events", "times"), mm2.get("events", "s_AMPA"), "--") +ax[1,1].plot(ampaMonitor2.t/b2.ms, ampaMonitor2.s_AMPA_tot[0], c="black") +ax[1,1].plot(mm2.get("events", "times"), mm2.get("events", "s_AMPA"), "--", c="C0") +ax[1,1].plot(mm3.get("events", "times"), mm3.get("events", "s_AMPA"), "--", c="C1") ax[1,1].set_xlabel("time (ms)") ax[1,1].set_ylabel("s_AMPA") -ax[2,1].plot(gabaMonitor2.t/b2.ms, gabaMonitor2.s_GABA_tot[0]) -ax[2,1].plot(mm2.get("events", "times"), mm2.get("events", "s_GABA"), "--") +ax[2,1].plot(gabaMonitor2.t/b2.ms, gabaMonitor2.s_GABA_tot[0], c="black") +ax[2,1].plot(mm2.get("events", "times"), mm2.get("events", "s_GABA"), "--", c="C0") +ax[2,1].plot(mm3.get("events", "times"), mm3.get("events", "s_GABA"), "--", c="C1") ax[2,1].set_xlabel("time (ms)") ax[2,1].set_ylabel("s_GABA") -ax[3,1].plot(nmdaMonitor2.t/b2.ms, nmdaMonitor2.s_NMDA_tot[0]) -ax[3,1].plot(mm2.get("events", "times"), mm2.get("events", "NMDA_sum"), "--") +ax[3,1].plot(nmdaMonitor2.t/b2.ms, nmdaMonitor2.s_NMDA_tot[0], c="black") +ax[3,1].plot(mm2.get("events", "times"), mm2.get("events", "s_NMDA"), "--", c="C0") +ax[3,1].plot(mm3.get("events", "times"), mm3.get("events", "s_NMDA"), "--", c="C1") ax[3,1].set_xlabel("time (ms)") ax[3,1].set_ylabel("s_NMDA") +ax[1,0].axis("off") ax[2,0].axis("off") ax[3,0].axis("off") diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index aed2c31798..b51fee5593 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -10,7 +10,7 @@ np.random.seed(1234) rng = np.random.default_rng() -model = "iaf_wang_2002_exact" +model = "iaf_wang_2002" dt = 0.1 nest.set(resolution=dt, print_time=True) @@ -287,6 +287,5 @@ ax[0,3].set_title("Inhibitory pop") - plt.show() diff --git a/pynest/examples/wong_wang_nmda_approximation.py b/pynest/examples/wong_wang_nmda_approximation.py index 0655c2bd2e..db8200b72f 100644 --- a/pynest/examples/wong_wang_nmda_approximation.py +++ b/pynest/examples/wong_wang_nmda_approximation.py @@ -40,7 +40,7 @@ mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) -mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) +mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) ampa_ext_syn_spec = {"synapse_model": "static_synapse", "weight": w_ext, @@ -99,15 +99,11 @@ def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): nest.Simulate(1000.) - times = mm3.get("events", "times") -nest_nmda = mm3.get("events", "NMDA_sum") +nest_nmda = mm3.get("events", "s_NMDA") nest_nmda_approx = mm2.get("events", "s_NMDA") times -= times[(nest_nmda > 0).argmax()] - 0.1 - - - from scipy.integrate import cumtrapz def nmda_integrand(t, x0, tau_decay, tau_rise, alpha): a = (1 / tau_decay - 1 / tau_rise) @@ -161,30 +157,32 @@ def nmda_approx_exp(t, tau_rise, alpha, tau_decay): plt.show() - - - from scipy.special import expn, gamma def limfun(tau_rise, tau_decay, alpha): - f0 = np.exp(-alpha * tau_rise) + f1 = np.exp(-alpha * tau_rise) at = alpha * tau_rise tr_td = tau_rise / tau_decay - f1 = -at * expn(tr_td, at) + at ** tr_td * gamma(1 - tr_td) - + f0 = -at * expn(tr_td, at) + at ** tr_td * gamma(1 - tr_td) return f0, f1 f0, f1 = limfun(2, 100, 0.5) - - - plt.plot(t, s_nmda) -plt.plot(times, nest_nmda) -plt.plot(times, nest_nmda_approx) -plt.plot(t, f1 * np.exp(-t / 100)) +# plt.plot(times, nest_nmda) +# plt.plot(times, nest_nmda_approx) +plt.plot(t, np.exp(-t / 100) * (f0 + s0 * f1)) +plt.plot(t, np.exp(-t / 100) * (s0 + 0.5 * (1 - s0))) plt.show() +a = np.exp(-t / 100) * (f0 + s0 * f1) +b = np.exp(-t / 100) * (s0 + 0.5 * (1 - s0)) +c = s_nmda.copy() + +print(np.trapz(a, x=t)) +print(np.trapz(b, x=t)) +print(np.trapz(c, x=t)) + From 490814cc9271488ca81899a1810e7718242e3150 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 5 Feb 2024 14:19:11 +0100 Subject: [PATCH 049/184] Add documentation to iaf_psc_wang, remove unused variable t_approx --- models/iaf_wang_2002.cpp | 11 ++---- models/iaf_wang_2002.h | 68 +++++++++++++++++++++--------------- models/iaf_wang_2002_exact.h | 4 +-- nestkernel/nest_names.cpp | 1 - nestkernel/nest_names.h | 1 - 5 files changed, 43 insertions(+), 42 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index b3627fd14b..cc3f4906d8 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -126,7 +126,6 @@ nest::iaf_wang_2002::Parameters_::Parameters_() , tau_rise_NMDA( 2 ) // ms , alpha( 0.5 ) // 1 / ms , conc_Mg2( 1 ) // mM - , approx_t_exact ( 4) , gsl_error_tol( 1e-3 ) { } @@ -193,7 +192,6 @@ nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const def< double >( d, names::tau_rise_NMDA, tau_rise_NMDA ); def< double >( d, names::alpha, alpha ); def< double >( d, names::conc_Mg2, conc_Mg2 ); - def< double >( d, names::approx_t_exact, approx_t_exact ); def< double >( d, names::gsl_error_tol, gsl_error_tol ); } @@ -215,7 +213,6 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) updateValueParam< double >( d, names::tau_rise_NMDA, tau_rise_NMDA, node ); updateValueParam< double >( d, names::alpha, alpha, node ); updateValueParam< double >( d, names::conc_Mg2, conc_Mg2, node ); - updateValueParam< double >( d, names::approx_t_exact, approx_t_exact, node ); updateValueParam< double >( d, names::gsl_error_tol, gsl_error_tol, node ); if ( V_reset >= V_th ) @@ -242,10 +239,6 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) { throw BadProperty( "Mg2 concentration must be strictly positive." ); } - if ( approx_t_exact <= 0.0 ) - { - throw BadProperty( "approx_t_exact must be strictly positive." ); - } if ( gsl_error_tol <= 0.0 ) { throw BadProperty( "The gsl_error_tol must be strictly positive." ); @@ -395,7 +388,7 @@ nest::iaf_wang_2002::pre_run_hook() const double at = P_.alpha * P_.tau_rise_NMDA; const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; - V_.S_jump_1 = exp(-P_.alpha * P_.tau_rise_NMDA); + V_.S_jump_1 = exp(-P_.alpha * P_.tau_rise_NMDA) - 1; V_.S_jump_0 = -boost::math::expint(tau_rise_tau_dec, at) * at + pow(at, tau_rise_tau_dec) * boost::math::tgamma(1 - tau_rise_tau_dec); } @@ -478,7 +471,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // compute current value of s_NMDA and add NMDA update to spike offset S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); - const double s_NMDA_delta = V_.S_jump_0 + V_.S_jump_1 * S_.s_NMDA_pre - S_.s_NMDA_pre; + const double s_NMDA_delta = V_.S_jump_0 + V_.S_jump_1 * S_.s_NMDA_pre;//- S_.s_NMDA_pre; S_.s_NMDA_pre += s_NMDA_delta; // guaranteed to be <= 1. SpikeEvent se; diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 086789adaa..0af576bc44 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -55,39 +55,53 @@ namespace nest */ extern "C" inline int iaf_wang_2002_dynamics( double, const double*, double*, void* ); -/* BeginUserDocs: neuron, integrate-and-fire, conductance-based -DOCUMENTATION WILL BE UPDATED +/* BeginUserDocs: neuron, integrate-and-fire, conductance-based Short description +++++++++++++++++ -Leaky integrate-and-fire-neuron model with dynamic NMDA receptors. +Leaky integrate-and-fire-neuron model with conductance based synapses, and additional NMDA receptors. Description +++++++++++ -This model implements a simplified version of the neuron model described in [1]_. +``iaf_wang_2002`` is a leaky integrate-and-fire neuron model with -It contains AMPA, GABA and NMDA synapses +* an approximate version of the neuron model described in [1]_. +* exponential conductance-based AMPA and GABA-synapses +* exponential conductance-based NMDA-synapses weighted such that it approximates the original non-linear dynamics +* a fixed refractory period +* no adaptation mechanisms -The equations for the synaptic currents from AMPA and GABA receptors are given by -the following equations +Neuron and synaptic dynamics +.................................................. -.. math:: - I_{\mathrm{AMPA}} = g_{\mathrm{AMPA}}(V(t) - E_{\mathrm{ex}} \sum_{j=1}^{C_E} w_j s_j^{\mathrm{AMPA}} - \frac{d}{dt}s^{\mathrm{AMPA}}_j = -\frac{s_j}{\tau_{\mathrm{AMPA}}} +The membrane potential and synaptic variables evolve according to .. math:: - \frac{ ds_j^{NMDA}(t) }{ dt } = - \frac{ s_j^{NMDA}(t) }{ \tau_{NMDA,decay} } + \alpha x_j(t)(1 - s_j^{NMDA}(t)) \\ - \frac{ dx_j(t) }{ dt } =- \frac{ x_j(t) }{ \tau_{NMDA,rise} } + \sum_k \delta(t - t_j^k). -The synaptic current of NMDA is given by + C_\mathrm{m} \frac{dV(t)}{dt} &= -g_\mathrm{L} (V(t) - V_\mathrm{L}) - I_\mathrm{syn} (t) \\[3ex] + I_\mathrm{syn}(t) &= I_\mathrm{AMPA}(t) + I_\mathrm{NMDA}(t) + I_\mathrm{GABA}(t) (t) \\[3ex] + I_\mathrm{AMPA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{AMPA}}(t) \\[3ex] + I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] + I_\mathrm{GABA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] + \frac{dS_{j,\mathrm{AMPA}}}{dt} &= -\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] + + +where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. .. math:: - I_{NMDA}(t) = \frac{ V(t) - E_{ex} }{ 1 + [Mg^{2+}]exp(-0.062V(t))/3.57 }\sum_{j=1}w_jg_j^{NMDA}, -where `w_j` is the weight of connection with presynaptic neuron `j`. + k_0 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) \\[3ex] + k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} \Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] + +where :math:`\mathrm{E_N}` is the generalized exponential integral (https://en.wikipedia.org/wiki/Exponential_integral#Generalization), and :math:`\Gamma` is the gamma-function (https://en.wikipedia.org/wiki/Gamma_function). + + +The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. Parameters @@ -95,6 +109,7 @@ Parameters The following parameters can be set in the status dictionary. + =============== ======= =========================================================== E_L mV Resting potential E_ex mV Excitatory reversal potential @@ -103,20 +118,17 @@ The following parameters can be set in the status dictionary. V_reset mV Reset potential C_m pF Membrane capacitance g_L nS Leak conductance - g_AMPA nS Peak recurrent AMPA conductance - g_NMDA nS Peak recurrent NMDA conductance - g_GABA nS Peak recurrent GABA conductance - g_L nS Leak conductance t_ref ms Refractory period tau_AMPA ms Synaptic time constant for AMPA synapse tau_GABA ms Synaptic time constant for GABA synapse - tau_decay_NMDA ms Synaptic decay time constant for NMDA synapse tau_rise_NMDA ms Synaptic rise time constant for NMDA synapse + tau_decay_NMDA ms Synaptic decay time constant for NMDA synapse alpha 1/ms Scaling factor for NMDA synapse conc_Mg2 mM Extracellular magnesium concentration gsl_error_tol - GSL error tolerance =============== ======= =========================================================== + Recordables +++++++++++ @@ -124,18 +136,17 @@ The following values can be recorded. =========== =========================================================== V_m Membrane potential - s_AMPA AMPA gate - s_GABA GABA gate - NMDA_sum sum of NMDA over all presynaptic neurons j + s_AMPA sum of AMPA gating variables + s_GABA sum of GABA gating variables + s_NMDA sum of NMDA gating variables =========== =========================================================== .. note:: - It is possible to set values for `V_m`, `g_AMPA` and `g_GABA` when creating the model, while the - different `g_NMDA_j` (`j` represents presynaptic neuron `j`) can not be set by the user. + It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when creating the model, while the + different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be set by the user. .. note:: - The variable `g_AMPA` and `g_GABA` in the NEST implementation does not correspond to `g_{recAMPA, extAMPA, GABA}` - in [1]_. `g_{recAMPA, extAMPA, GABA, NMBA}` from [1]_ is built into the weights in this NEST model, so setting the + :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the variables is thus done by changing the weights. Sends @@ -162,6 +173,7 @@ iaf_cond_alpha, ht_neuron EndUserDocs */ + void register_iaf_wang_2002( const std::string& name ); class iaf_wang_2002 : public ArchivingNode @@ -248,8 +260,6 @@ class iaf_wang_2002 : public ArchivingNode double alpha; //!< Scaling factor for NMDA synapse in 1/ms double conc_Mg2; //!< Extracellular Magnesium Concentration in mM - // TODO: find better name for this variable - double approx_t_exact; // Time at which the S_NMDA approximation is exact double gsl_error_tol; //!< GSL Error Tolerance //! Initialize parameters to their default values. diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 70b0e8b789..0ff2d8c439 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -66,7 +66,7 @@ Leaky integrate-and-fire-neuron model with conductance based synapses, and addit Description +++++++++++ -``iaf_wang_2002_exact_dynamics`` is a leaky integrate-and-fire neuron model with +``iaf_wang_2002_exact`` is a leaky integrate-and-fire neuron model with * an exact implementation of the neuron model described in [1]_. * exponential conductance-based AMPA and GABA-synapses @@ -96,7 +96,7 @@ where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets f Since :math:`S_{j,\mathrm{AMPA}}` and :math:`S_{j,\mathrm{GABA}}` are piecewise exponential functions, the sums are also a piecewise exponential function, and can be stored in a single synaptic variable each, :math:`S_{\mathrm{AMPA}}` and :math:`S_{\mathrm{GABA}}` respectively. The sum over :math:`S_{j,\mathrm{NMDA}}` does not have a simple expression, and cannot be simplified. Therefore, for each synapse, we need to integrate separate state variable, which makes the model slow. -The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synaptic variable from the external population is not kept in a separate variable :math:`S_{\mathrm{rec,AMPA}}`, but is taken together with the local synapses in :math:`S_{\mathrm{AMPA}}`. +The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. Parameters diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index da681bec71..1e82ba03e5 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -65,7 +65,6 @@ const Name amplitude( "amplitude" ); const Name amplitude_times( "amplitude_times" ); const Name amplitude_values( "amplitude_values" ); const Name anchor( "anchor" ); -const Name approx_t_exact( "approx_t_exact" ); const Name archiver_length( "archiver_length" ); const Name asc_amps( "asc_amps" ); const Name asc_decay( "asc_decay" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index 4bbba53d96..dc29844c46 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -91,7 +91,6 @@ extern const Name amplitude; extern const Name amplitude_times; extern const Name amplitude_values; extern const Name anchor; -extern const Name approx_t_exact; extern const Name archiver_length; extern const Name asc_amps; extern const Name asc_decay; From a59c6aff18fb1993151ab877cc8f9a407ab28023 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 5 Feb 2024 14:23:01 +0100 Subject: [PATCH 050/184] remove unused var --- pynest/examples/wang_neuron.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pynest/examples/wang_neuron.py b/pynest/examples/wang_neuron.py index 39a7d221fe..339c045aeb 100644 --- a/pynest/examples/wang_neuron.py +++ b/pynest/examples/wang_neuron.py @@ -27,8 +27,6 @@ "alpha": 0.5, "t_ref": 2.0} -params_approx = params_exact.copy() -params_approx["approx_t_exact"] = 200 nrn1 = nest.Create("iaf_wang_2002", params_approx) pg = nest.Create("poisson_generator", {"rate": 50.}) From 1b7076a581f1300c39843cb9a7e6bc0c193b9d12 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 5 Feb 2024 14:24:28 +0100 Subject: [PATCH 051/184] remove test scripts --- pynest/examples/wang_approx_compare_brian.py | 257 ----------- pynest/examples/wang_benchmarks.py | 417 ------------------ pynest/examples/wang_compare_brian.py | 278 ------------ pynest/examples/wang_neuron.py | 160 ------- pynest/examples/wang_neuron_exact.py | 148 ------- .../examples/wong_wang_nmda_approximation.py | 188 -------- 6 files changed, 1448 deletions(-) delete mode 100644 pynest/examples/wang_approx_compare_brian.py delete mode 100644 pynest/examples/wang_benchmarks.py delete mode 100644 pynest/examples/wang_compare_brian.py delete mode 100644 pynest/examples/wang_neuron.py delete mode 100644 pynest/examples/wang_neuron_exact.py delete mode 100644 pynest/examples/wong_wang_nmda_approximation.py diff --git a/pynest/examples/wang_approx_compare_brian.py b/pynest/examples/wang_approx_compare_brian.py deleted file mode 100644 index 20a3095bbb..0000000000 --- a/pynest/examples/wang_approx_compare_brian.py +++ /dev/null @@ -1,257 +0,0 @@ -""" -Check that NEST implementation gives same results as a reference implementation from Brian. -Note that in the NEST model, the constant "g" parameter is baked into the synaptic weight, instead of being -a separate parameter. This is the only difference in parameterization between the two models. -Also, in the NEST model, the weight for the NMDA receptor is applied AFTER computing the s_NMDA values, -so the in the recorded value of NMDA_sum, the weights are not yet applied. The end result (V_m) is still the same. -""" - - -import brian2 as b2 -import nest -import numpy as np -import time -import statistics -import matplotlib.pyplot as plt - - - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Parameters -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -V_th = -55 * b2.mV -V_reset = -70 * b2.mV -t_ref = 2 * b2.ms - -# parameters for the equation of the neuron -# (Inhibitory and excitatory neurons have different parameters) -g_L = 25. * b2.nS -C_m = 0.5 * b2.nF - -g_AMPA_rec = 1.0 * b2.nS -g_AMPA_ext = 100.0 *b2.nS -g_GABA = 1.0 * b2.nS -g_NMDA = 1.0 * b2.nS - -# reversal potentials -E_L = V_reset -E_ex= 0. * b2.mV -E_in = -70. * b2.mV - -# time constant of the receptors -tau_AMPA= 2 * b2.ms -tau_GABA= 5 * b2.ms -tau_NMDA_rise = 2. * b2.ms -tau_NMDA_decay = 100. * b2.ms - -# additional NMDA parameters -alpha = 0.5 / b2.ms -Mg2 = 1. - -# synaptic weights -weight_AMPA = 1. -weight_GABA = 3. -weight_NMDA = 2. - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Brian simulation -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -## Equations -eqsE=""" - - dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) - I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA: amp - - I_AMPA_ext = g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp - ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 - #Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. - - - I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp - s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here - #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). - #I then sum all the solutions s of the differential equations and I obtain s_AMPA_tot_post. - - I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp - s_GABA_tot :1 - - - I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp - s_NMDA_tot : 1 - - """ - -eqs_ampa=""" - s_AMPA_tot_post= w_AMPA * s_AMPA : 1 (summed) - ds_AMPA / dt = - s_AMPA / tau_AMPA : 1 (clock-driven) - w_AMPA: 1 - """ - -eqs_gaba=""" - s_GABA_tot_post= w_GABA* s_GABA : 1 (summed) - ds_GABA/ dt = - s_GABA/ tau_GABA : 1 (clock-driven) - w_GABA: 1 - """ - -eqs_nmda="""s_NMDA_tot_post = w_NMDA * s_NMDA : 1 (summed) - ds_NMDA / dt = - s_NMDA / tau_NMDA_decay + alpha * x * (1 - s_NMDA) : 1 (clock-driven) - dx / dt = - x / tau_NMDA_rise : 1 (clock-driven) - w_NMDA : 1 - """ - -nrn1 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") -nrn2 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") - -nrn1[0].v[0]=V_reset -nrn2[0].v[0]=V_reset - -times = np.array([10, 20, 40, 80, 90]) * b2.ms -indices = np.arange(len(times)) -spikeGen = b2.SpikeGeneratorGroup(len(times), indices, times) - -ext_conn1 = b2.Synapses(spikeGen, nrn1, on_pre="s_AMPA_ext += 1") -ext_conn1.connect() -ext_conn1.delay = 1.0 * b2.ms - -conn2 = b2.Synapses(nrn1, nrn2, model=eqs_ampa, on_pre="s_AMPA+=1", method="rk4") -conn2.connect() -conn2.w_AMPA = weight_AMPA -conn2.delay = 1.0 * b2.ms - -conn3= b2.Synapses(nrn1,nrn2,model=eqs_nmda,on_pre="x+=1", method="rk4") -conn3.connect() -conn3.w_NMDA = weight_NMDA -conn3.delay = 1.0 * b2.ms - -conn4 = b2.Synapses(nrn1, nrn2, model=eqs_gaba, on_pre="s_GABA+=1", method="rk4") -conn4.connect() -conn4.w_GABA = weight_GABA -conn4.delay = 1.0 * b2.ms - -vMonitor1 = b2.StateMonitor(nrn1, "v",record=True) -ampaMonitor1 = b2.StateMonitor(nrn1, "s_AMPA_ext",record=True) -gabaMonitor1 = b2.StateMonitor(nrn1, "s_GABA_tot",record=True) -nmdaMonitor1 = b2.StateMonitor(nrn2, "s_NMDA_tot", record=True) - -vMonitor2 = b2.StateMonitor(nrn2, "v", record=True) -ampaMonitor2 = b2.StateMonitor(nrn2, "s_AMPA_tot", record=True) -gabaMonitor2 = b2.StateMonitor(nrn2, "s_GABA_tot", record=True) -nmdaMonitor2 = b2.StateMonitor(nrn2, "s_NMDA_tot", record=True) - -t_sim = 300 -b2.run(t_sim * b2.ms) - - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# NEST simulation -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -nest.rng_seed = 12345 - -nest.ResetKernel() - -neuron_params = {"tau_AMPA": np.asarray(tau_AMPA) * 1e3, # units ms - "E_ex": np.asarray(E_ex) * 1e3, # units mV - "E_L": np.asarray(E_L) * 1e3, # units mV - "V_th": np.asarray(V_th) * 1e3, # units mV - "C_m": np.asarray(C_m) * 1e12, # units pF - "g_L": np.asarray(g_L) * 1e9, # units nS - "V_reset": np.asarray(V_reset) * 1e3, # units nS - # DIFFERENCE: subtract 0.1 ms from t_ref - "t_ref": np.asarray(t_ref) * 1e3 - 0.1} # units ms - -nrn1 = nest.Create("iaf_wang_2002", neuron_params) -nrn2 = nest.Create("iaf_wang_2002", neuron_params) - -times = np.array([10.0, 20.0, 40.0, 80.0, 90.0]) -sg = nest.Create("spike_generator", {"spike_times": times}) -sr = nest.Create("spike_recorder") - -mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA", "s_NMDA"], "interval": 0.1}) -mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA", "s_NMDA"], "interval": 0.1}) - -# DIFFERENCE: add 0.1ms to delay -nest_delay = 1.1 -ex_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS - "receptor_type": 1, - "delay": nest_delay} - -ex_syn_spec_ext = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_ext) * 1e9, # units nS - "receptor_type": 1, - "delay": nest_delay} - -nmda_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_NMDA) * 1e9 * weight_NMDA, # units nS - "receptor_type": 3, - "delay": nest_delay} - -in_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS - "receptor_type": 2, - "delay": nest_delay} - -conn_spec = {"rule": "all_to_all"} - - -nest.Connect(sg, nrn1, syn_spec=ex_syn_spec_ext, conn_spec=conn_spec) -nest.Connect(nrn1, sr) -nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) -nest.Connect(mm1, nrn1) -nest.Connect(mm2, nrn2) - -nest.Simulate(300.) - - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Plotting -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -fig, ax = plt.subplots(4, 2) -fig.set_size_inches([12,10]) -fig.subplots_adjust(hspace=0.5) -ax[0,0].plot(vMonitor1.t / b2.ms, vMonitor1.v[0] / b2.mV, label="brian2") -ax[0,0].plot(mm1.get("events", "times"), mm1.get("events", "V_m"), "--", label="nest") -ax[0,0].set_xlabel("time (ms)") -ax[0,0].set_ylabel("membrane potential V (mV)") -ax[0,0].legend() -ax[0,0].set_title("Presynaptic neuron") - -ax[0,1].plot(vMonitor2.t / b2.ms, vMonitor2.v[0] / b2.mV) -ax[0,1].plot(mm2.get("events", "times"), mm2.get("events", "V_m"), "--") -ax[0,1].set_xlabel("time (ms)") -ax[0,1].set_ylabel("membrane potential V (mV)") -ax[0,1].set_title("Postsynaptic neuron") - -# multiply by g_AMPA_ext since it is baked into s_AMPA in NEST -ax[1,0].plot(ampaMonitor1.t/b2.ms, ampaMonitor1.s_AMPA_ext[0] * g_AMPA_ext / b2.nS) -ax[1,0].plot(mm1.get("events", "times"), mm1.get("events", "s_AMPA"), "--") -ax[1,0].set_xlabel("time (ms)") -ax[1,0].set_ylabel("s_AMPA") - -ax[1,1].plot(ampaMonitor2.t/b2.ms, ampaMonitor2.s_AMPA_tot[0]) -ax[1,1].plot(mm2.get("events", "times"), mm2.get("events", "s_AMPA"), "--") -ax[1,1].set_xlabel("time (ms)") -ax[1,1].set_ylabel("s_AMPA") - -ax[2,1].plot(gabaMonitor2.t/b2.ms, gabaMonitor2.s_GABA_tot[0]) -ax[2,1].plot(mm2.get("events", "times"), mm2.get("events", "s_GABA"), "--") -ax[2,1].set_xlabel("time (ms)") -ax[2,1].set_ylabel("s_GABA") - -ax[3,1].plot(nmdaMonitor2.t/b2.ms, nmdaMonitor2.s_NMDA_tot[0]) -ax[3,1].plot(mm2.get("events", "times"), mm2.get("events", "s_NMDA"), "--") -ax[3,1].set_xlabel("time (ms)") -ax[3,1].set_ylabel("s_NMDA") - -ax[2,0].axis("off") -ax[3,0].axis("off") - -plt.show() - - diff --git a/pynest/examples/wang_benchmarks.py b/pynest/examples/wang_benchmarks.py deleted file mode 100644 index e374c53851..0000000000 --- a/pynest/examples/wang_benchmarks.py +++ /dev/null @@ -1,417 +0,0 @@ -""" -Check that NEST implementation gives same results as a reference implementation from Brian. -Note that in the NEST model, the constant "g" parameter is baked into the synaptic weight, instead of being -a separate parameter. This is the only difference in parameterization between the two models. -Also, in the NEST model, the weight for the NMDA receptor is applied AFTER computing the s_NMDA values, -so the in the recorded value of NMDA_sum, the weights are not yet applied. The end result (V_m) is still the same. -""" - - -import brian2 as b2 -import nest -import numpy as np -import time, os -import statistics -import matplotlib.pyplot as plt -from pathlib import Path - - -path = Path(__file__).parent -outfile = os.path.join(path, "wang_benchmark_log.csv") -if not os.path.isfile(outfile): - with open(outfile, "w") as f: - f.write("brian_time,nest_time_exact,nest_time_approx,NE,NI\n") - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Parameters -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -simtime = 1000 -resolution = 0.01 -NE = 200 -NI = 200 - -V_th = -55 * b2.mV -V_reset = -70 * b2.mV -t_ref = 2 * b2.ms - -# parameters for the equation of the neuron -# (Inhibitory and excitatory neurons have different parameters) -g_L = 25. * b2.nS -C_m = 0.5 * b2.nF - -g_AMPA_rec = 2.0 * b2.nS -g_AMPA_ext = 1.0 *b2.nS -g_GABA = 1. * b2.nS -g_NMDA = 1. * b2.nS - -# reversal potentials -E_L = V_reset -E_ex= 0. * b2.mV -E_in = -70. * b2.mV - -# time constant of the receptors -tau_AMPA= 2 * b2.ms -tau_GABA= 5 * b2.ms -tau_NMDA_rise = 2. * b2.ms -tau_NMDA_decay = 100. * b2.ms - -# additional NMDA parameters -alpha = 0.5 / b2.ms -Mg2 = 1. - -# synaptic weights -weight_AMPA_ext = 1. -weight_AMPA = 1. * 50 / NE -weight_NMDA = 1. * 50 / NE -weight_GABA = 1. * 50 / NI - - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Brian simulation -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -## Equations -eqsE=""" - - dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) - I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA: amp - - I_AMPA_ext = g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp - ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 - #Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. - - I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp - s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here - #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). - #I then sum all the solutions s of the differential equations and I obtain s_AMPA_tot_post. - - I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp - s_GABA_tot :1 - - I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp - s_NMDA_tot : 1 - - """ - - - -eqsI=""" - - dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) - I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA : amp - - I_AMPA_ext= g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp - ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 - # Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. - - - I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp - s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here - #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). - #I then sum all the solutions s of the differential equations and I obtain s_AMPA_tot_post. - - I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp - s_GABA_tot :1 - - I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp - s_NMDA_tot : 1 - - """ - -eqs_ampa=""" - s_AMPA_tot_post = w_AMPA * s_AMPA : 1 (summed) - ds_AMPA / dt = - s_AMPA / tau_AMPA : 1 (clock-driven) - w_AMPA: 1 - """ - -eqs_gaba=""" - s_GABA_tot_post= w_GABA* s_GABA : 1 (summed) - ds_GABA/ dt = - s_GABA/ tau_GABA : 1 (clock-driven) - w_GABA: 1 - """ - -eqs_nmda="""s_NMDA_tot_post = w_NMDA * s_NMDA : 1 (summed) - ds_NMDA / dt = - s_NMDA / tau_NMDA_decay + alpha * x * (1 - s_NMDA) : 1 (clock-driven) - dx / dt = - x / tau_NMDA_rise : 1 (clock-driven) - w_NMDA : 1 - """ - - - -#Create the two population with the corresponfing equations: -popE = b2.NeuronGroup(NE, model=eqsE, threshold="v > V_th", reset="v = E_L", refractory=t_ref, method="rk4") -popI= b2.NeuronGroup(NI, model=eqsI, threshold="v > V_th", reset="v = E_L", refractory=t_ref, method="rk4") - - -#Set the initial value of the potential v for all the neurons -for k in range(0,NE): - popE[k].v[0]=E_L - -for k in range(0,NI): - popI[k].v[0]=E_L - - -# Connect the neurons of popE with the neurons of popI (for the ampa connections) -conn= b2.Synapses(popE,popI,model=eqs_ampa,on_pre="s_AMPA+=1", method="rk4") -conn.connect() -conn.w_AMPA= weight_AMPA -conn.delay = 1.0 * b2.ms - -# Connect the neurons of popE with the neurons of popI (for the NMDA connections) -conn1= b2.Synapses(popE,popI,model=eqs_nmda,on_pre="x+=1", method="rk4") -conn1.connect() -conn1.w_NMDA= weight_NMDA -conn1.delay = 1.0 * b2.ms - -# Connect the neurons of popE with the neurons of popE (for the AMPA connections) -conn2= b2.Synapses(popE,popE,model=eqs_ampa,on_pre="s_AMPA+=1", method="rk4") -conn2.connect() -conn2.w_AMPA= weight_AMPA -conn2.delay = 1.0 * b2.ms - -# Connect the neurons of popE with the neurons of popE (for the NMDA connections) -conn3= b2.Synapses(popE,popE,model=eqs_nmda,on_pre="x+=1", method="rk4") -conn3.connect() -conn3.w_NMDA= weight_NMDA -conn3.delay = 1.0 * b2.ms - -# Connect the neurons of popI with the neurons of popE (for the GABA connections) -conn4= b2.Synapses(popI,popE,model = eqs_gaba,on_pre="s_GABA+=1", method="rk4") -conn4.connect() -conn4.w_GABA= weight_GABA -conn4.delay = 1.0 * b2.ms - -# Connect the neurons of popI with the neurons of popI (for the GABA connections) -conn5= b2.Synapses(popI,popI,model = eqs_gaba,on_pre="s_GABA+=1", method="rk4") -conn5.connect() -conn5.w_GABA= weight_GABA -conn5.delay = 1.0 * b2.ms - -# To excitatory neurons -rate_E = 4000 * b2.Hz -ext_inputE = b2.PoissonGroup(NE, rates = rate_E) -ext_connE = b2.Synapses(ext_inputE, popE, on_pre="s_AMPA_ext += 1", method="rk4") -ext_connE.connect(j="i") -ext_connE.delay = 1.0 * b2.ms - -# To inhibitory neurons -rate_I= 4000 * b2.Hz -ext_inputI= b2.PoissonGroup(NI, rates = rate_I) -ext_connI = b2.Synapses(ext_inputI, popI, on_pre="s_AMPA_ext += 1", method="rk4") -ext_connI.connect(j="i") -ext_connI.delay = 1.0 * b2.ms - -# Recorder to save the spikes of the neurons -S_e = b2.SpikeMonitor(popE[:NE], record=True) -S_i = b2.SpikeMonitor(popI[:NI], record=True) - -b2.defaultclock.dt = resolution * b2.ms -tic = time.time() -b2.run(simtime * b2.ms) -toc = time.time() -brian_time = toc - tic - -brian_espikes = S_e.spike_trains() -brian_espikes = np.array(np.concatenate(tuple(brian_espikes.values()))) * 1000. -brian_ispikes = S_i.spike_trains() -brian_ispikes = np.array(np.concatenate(tuple(brian_ispikes.values()))) * 1000. - - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# NEST simulation exact -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -nest.rng_seed = 12345 - -nest.ResetKernel() -nest.resolution = resolution - -neuron_params = {"tau_AMPA": np.asarray(tau_AMPA) * 1e3, # units ms - "tau_GABA": np.asarray(tau_GABA) * 1e3, # units ms - "tau_rise_NMDA": np.asarray(tau_NMDA_rise) * 1e3, # units ms - "tau_decay_NMDA": np.asarray(tau_NMDA_decay) * 1e3, # units ms - "conc_Mg2": np.asarray(Mg2), # dimensionless - "E_ex": np.asarray(E_ex) * 1e3, # units mV - "E_in": np.asarray(E_in) * 1e3, # units mV - "E_L": np.asarray(E_L) * 1e3, # units mV - "V_th": np.asarray(V_th) * 1e3, # units mV - "C_m": np.asarray(C_m) * 1e12, # units pF - "g_L": np.asarray(g_L) * 1e9, # units nS - "V_reset": np.asarray(V_reset) * 1e3, # units nS - "alpha": np.asarray(alpha * b2.ms), # units nS - # DIFFERENCE: subtract 0.1 ms from t_ref - "t_ref": np.asarray(t_ref) * 1e3 - b2.defaultclock.dt / b2.ms} # units ms - - - -poisson = nest.Create("poisson_generator", {"rate": 4000.}) -epop = nest.Create("iaf_wang_2002_exact", NE, params=neuron_params) -ipop = nest.Create("iaf_wang_2002_exact", NI, params=neuron_params) - -sr_ex = nest.Create("spike_recorder") -sr_in = nest.Create("spike_recorder") - - -# DIFFERENCE: add 0.1ms to delay -nest_delay = 1. + b2.defaultclock.dt / b2.ms -ex_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS - "receptor_type": 1, - "delay": nest_delay} - -ex_syn_spec_ext = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_ext) * 1e9 * weight_AMPA_ext, # units nS - "receptor_type": 1, - "delay": nest_delay} - -nmda_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_NMDA) * 1e9 * weight_NMDA, # units nS - "receptor_type": 3, - "delay": nest_delay} - -in_syn_spec = {"synapse_model": "static_synapse", - "weight": -np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS - "receptor_type": 2, - "delay": nest_delay} - -conn_spec = {"rule": "all_to_all"} - -nest.Connect(poisson, epop + ipop, syn_spec=ex_syn_spec_ext, conn_spec="all_to_all") -nest.Connect(epop, sr_ex) -nest.Connect(ipop, sr_in) -nest.Connect(epop, epop + ipop, syn_spec=ex_syn_spec, conn_spec=conn_spec) -nest.Connect(epop, epop + ipop, syn_spec=nmda_syn_spec, conn_spec=conn_spec) -nest.Connect(ipop, ipop + epop, syn_spec=in_syn_spec, conn_spec=conn_spec) - -tic = time.time() -nest.Simulate(simtime) -toc = time.time() -nest_time_exact = toc - tic - -nest_espikes_exact = sr_ex.get("events", "times") -nest_ispikes_exact = sr_in.get("events", "times") - - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# NEST simulation approximate -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -nest.rng_seed = 12345 - -nest.ResetKernel() -nest.resolution = resolution - -neuron_params = {"tau_AMPA": np.asarray(tau_AMPA) * 1e3, # units ms - "tau_GABA": np.asarray(tau_GABA) * 1e3, # units ms - "tau_rise_NMDA": np.asarray(tau_NMDA_rise) * 1e3, # units ms - "tau_decay_NMDA": np.asarray(tau_NMDA_decay) * 1e3, # units ms - "conc_Mg2": np.asarray(Mg2), # dimensionless - "E_ex": np.asarray(E_ex) * 1e3, # units mV - "E_in": np.asarray(E_in) * 1e3, # units mV - "E_L": np.asarray(E_L) * 1e3, # units mV - "V_th": np.asarray(V_th) * 1e3, # units mV - "C_m": np.asarray(C_m) * 1e12, # units pF - "g_L": np.asarray(g_L) * 1e9, # units nS - "V_reset": np.asarray(V_reset) * 1e3, # units nS - "alpha": np.asarray(alpha * b2.ms), # units nS - # DIFFERENCE: subtract 0.1 ms from t_ref - "t_ref": np.asarray(t_ref) * 1e3 - b2.defaultclock.dt / b2.ms} # units ms - - - -poisson = nest.Create("poisson_generator", {"rate": 4000.}) -epop = nest.Create("iaf_wang_2002", NE, params=neuron_params) -ipop = nest.Create("iaf_wang_2002", NI, params=neuron_params) - -sr_ex = nest.Create("spike_recorder") -sr_in = nest.Create("spike_recorder") - -# DIFFERENCE: add 0.1ms to delay -nest_delay = 1. + b2.defaultclock.dt / b2.ms -ex_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS - "receptor_type": 1, - "delay": nest_delay} - -ex_syn_spec_ext = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_ext) * 1e9 * weight_AMPA_ext, # units nS - "receptor_type": 1, - "delay": nest_delay} - -nmda_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_NMDA) * 1e9 * weight_NMDA, # units nS - "receptor_type": 3, - "delay": nest_delay} - -in_syn_spec = {"synapse_model": "static_synapse", - "weight": -np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS - "receptor_type": 2, - "delay": nest_delay} - -conn_spec = {"rule": "all_to_all"} - -nest.Connect(poisson, epop + ipop, syn_spec=ex_syn_spec_ext, conn_spec="all_to_all") -nest.Connect(epop, sr_ex) -nest.Connect(ipop, sr_in) -nest.Connect(epop, epop + ipop, syn_spec=ex_syn_spec, conn_spec=conn_spec) -nest.Connect(epop, epop + ipop, syn_spec=nmda_syn_spec, conn_spec=conn_spec) -nest.Connect(ipop, ipop + epop, syn_spec=in_syn_spec, conn_spec=conn_spec) - -tic = time.time() -nest.Simulate(simtime) -toc = time.time() -nest_time_approx = toc - tic - -with open(outfile, "a") as f: - f.write(f"{brian_time},{nest_time_exact},{nest_time_approx},{NE},{NI}\n") - -nest_espikes_approx = sr_ex.get("events", "times") -nest_ispikes_approx = sr_in.get("events", "times") - - -# Plotting -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -print(f"Time NEST exact: {nest_time_exact}") -print(f"Time NEST approx: {nest_time_approx}") -print(f"Time Brian2 exact: {brian_time}") - -print(f"Total excitatory spikes Brian exact: {len(brian_espikes)}") -print(f"Total inhibitory spikes Brian exact: {len(brian_ispikes)}") - -print(f"Total excitatory spikes NEST exact: {len(nest_espikes_exact)}") -print(f"Total inhibitory spikes NEST exact: {len(nest_ispikes_exact)}") - -print(f"Total excitatory spikes NEST approx: {len(nest_espikes_approx)}") -print(f"Total inhibitory spikes NEST approx: {len(nest_ispikes_approx)}") - -bins = np.arange(0, simtime+1, 1) - 0.001 -nest_ehist_exact, _ = np.histogram(nest_espikes_exact, bins=bins) -nest_ihist_exact, _ = np.histogram(nest_ispikes_exact, bins=bins) - -nest_ehist_approx, _ = np.histogram(nest_espikes_approx, bins=bins) -nest_ihist_approx, _ = np.histogram(nest_ispikes_approx, bins=bins) - -brian_ehist, _ = np.histogram(brian_espikes, bins=bins) -brian_ihist, _ = np.histogram(brian_ispikes, bins=bins) - -fig, ax = plt.subplots(ncols=2, nrows=3, sharex=True, sharey=True) -ax[0,0].plot(nest_ehist_exact * 1000 / NE) -ax[1,0].plot(nest_ehist_approx * 1000 / NE) -ax[2,0].plot(brian_ehist * 1000 / NE) - -ax[0,1].plot(nest_ihist_exact * 1000 / NI) -ax[1,1].plot(nest_ihist_approx * 1000 / NI) -ax[2,1].plot(brian_ihist * 1000 / NI) - -ax[0,0].set_title("excitatory") -ax[0,1].set_title("inhibitory") -ax[2,0].set_xlabel("time (ms)") -ax[2,1].set_xlabel("time (ms)") -ax[0,0].set_ylabel("NEST exact") -ax[1,0].set_ylabel("NEST approx") -ax[2,0].set_ylabel("Brian") -plt.show() - diff --git a/pynest/examples/wang_compare_brian.py b/pynest/examples/wang_compare_brian.py deleted file mode 100644 index df8a39b014..0000000000 --- a/pynest/examples/wang_compare_brian.py +++ /dev/null @@ -1,278 +0,0 @@ -""" -Check that NEST implementation gives same results as a reference implementation from Brian. -Note that in the NEST model, the constant "g" parameter is baked into the synaptic weight, instead of being -a separate parameter. This is the only difference in parameterization between the two models. -Also, in the NEST model, the weight for the NMDA receptor is applied AFTER computing the s_NMDA values, -so the in the recorded value of NMDA_sum, the weights are not yet applied. The end result (V_m) is still the same. -""" - - -import brian2 as b2 -import nest -import numpy as np -import time -import statistics -import matplotlib.pyplot as plt - - - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Parameters -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -V_th = -55 * b2.mV -V_reset = -70 * b2.mV -t_ref = 2 * b2.ms - -# parameters for the equation of the neuron -# (Inhibitory and excitatory neurons have different parameters) -g_L = 25. * b2.nS -C_m = 0.5 * b2.nF - -g_AMPA_rec = 1.0 * b2.nS -g_AMPA_ext = 100.0 *b2.nS -g_GABA = 1.0 * b2.nS -g_NMDA = 1.0 * b2.nS - -# reversal potentials -E_L = V_reset -E_ex= 0. * b2.mV -E_in = -70. * b2.mV - -# time constant of the receptors -tau_AMPA= 2 * b2.ms -tau_GABA= 5 * b2.ms -tau_NMDA_rise = 2. * b2.ms -tau_NMDA_decay = 100. * b2.ms - -# additional NMDA parameters -alpha = 0.5 / b2.ms -Mg2 = 1. - -# synaptic weights -weight_AMPA = 1. -weight_GABA = 1. -weight_NMDA = 1. - - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Brian simulation -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -## Equations -eqsE=""" - - dv / dt = (- g_L * (v - E_L) - I_syn) / C_m : volt (unless refractory) - I_syn = I_AMPA_rec + I_AMPA_ext + I_GABA + I_NMDA: amp - - I_AMPA_ext = g_AMPA_ext * (v - E_ex) * s_AMPA_ext : amp - ds_AMPA_ext / dt = - s_AMPA_ext / tau_AMPA : 1 - #Here I don"t need the summed variable because the neuron receive inputs from only one Poisson generator. Each neuron need only one s. - - I_AMPA_rec = g_AMPA_rec * (v - E_ex) * 1 * s_AMPA_tot : amp - s_AMPA_tot : 1 #the eqs_ampa solve many s and sum them and give the summed value here - #Each neuron receives inputs from many neurons. Each of them has his own differential equation s_AMPA (where I have the deltas with the spikes). - #I then sum all the solutions s of the differential equations and I obtain s_AMPA_tot_post. - - I_GABA= g_GABA * (v - E_in) * s_GABA_tot : amp - s_GABA_tot :1 - - I_NMDA = g_NMDA * (v - E_ex) / (1 + Mg2 * exp(-0.062 * v / mV) / 3.57) * s_NMDA_tot : amp - s_NMDA_tot : 1 - - """ - -eqs_ampa=""" - s_AMPA_tot_post = w_AMPA * s_AMPA : 1 (summed) - ds_AMPA / dt = - s_AMPA / tau_AMPA : 1 (clock-driven) - w_AMPA: 1 - """ - -eqs_gaba=""" - s_GABA_tot_post= w_GABA* s_GABA : 1 (summed) - ds_GABA/ dt = - s_GABA/ tau_GABA : 1 (clock-driven) - w_GABA: 1 - """ - -eqs_nmda="""s_NMDA_tot_post = w_NMDA * s_NMDA : 1 (summed) - ds_NMDA / dt = - s_NMDA / tau_NMDA_decay + alpha * x * (1 - s_NMDA) : 1 (clock-driven) - dx / dt = - x / tau_NMDA_rise : 1 (clock-driven) - w_NMDA : 1 - """ - -b2.defaultclock.dt = 0.01 * b2.ms - -nrn1 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") -nrn2 = b2.NeuronGroup(1, model=eqsE, threshold="v > V_th", reset="v = V_reset", refractory=t_ref, method="rk4") - -nrn1[0].v[0] = V_reset -nrn2[0].v[0] = V_reset - -times = np.array([10, 20, 40, 80, 90, 104, 109, 115, 185, 188, 190]) * b2.ms -indices = np.arange(len(times)) -spikeGen = b2.SpikeGeneratorGroup(len(times), indices, times) - -ext_conn1 = b2.Synapses(spikeGen, nrn1, on_pre="s_AMPA_ext += 1", method="rk4") -ext_conn1.connect() -ext_conn1.delay = 0.9 * b2.ms - -conn2 = b2.Synapses(nrn1, nrn2, model=eqs_ampa, on_pre="s_AMPA+=1", method="rk4") -conn2.connect() -conn2.w_AMPA = weight_AMPA -conn2.delay = 1.0 * b2.ms - -conn3= b2.Synapses(nrn1,nrn2,model=eqs_nmda,on_pre="x+=1", method="rk4") -conn3.connect() -conn3.w_NMDA = weight_NMDA -conn3.delay = 1.0 * b2.ms - -conn4 = b2.Synapses(nrn1, nrn2, model=eqs_gaba, on_pre="s_GABA+=1", method="rk4") -conn4.connect() -conn4.w_GABA = weight_GABA -conn4.delay = 1.0 * b2.ms - -vMonitor1 = b2.StateMonitor(nrn1, "v",record=True) -ampaMonitor1 = b2.StateMonitor(nrn1, "s_AMPA_ext",record=True) -gabaMonitor1 = b2.StateMonitor(nrn1, "s_GABA_tot",record=True) -nmdaMonitor1 = b2.StateMonitor(nrn2, "s_NMDA_tot", record=True) - -vMonitor2 = b2.StateMonitor(nrn2, "v", record=True) -ampaMonitor2 = b2.StateMonitor(nrn2, "s_AMPA_tot", record=True) -gabaMonitor2 = b2.StateMonitor(nrn2, "s_GABA_tot", record=True) -nmdaMonitor2 = b2.StateMonitor(nrn2, "s_NMDA_tot", record=True) - -t_sim = 300 -b2.run(t_sim * b2.ms) - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# NEST simulation -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -nest.rng_seed = 12345 - -nest.ResetKernel() -nest.resolution = b2.defaultclock.dt / b2.ms - -neuron_params = {"tau_AMPA": np.asarray(tau_AMPA) * 1e3, # units ms - "tau_GABA": np.asarray(tau_GABA) * 1e3, # units ms - "tau_rise_NMDA": np.asarray(tau_NMDA_rise) * 1e3, # units ms - "tau_decay_NMDA": np.asarray(tau_NMDA_decay) * 1e3, # units ms - "conc_Mg2": np.asarray(Mg2), # dimensionless - "E_ex": np.asarray(E_ex) * 1e3, # units mV - "E_in": np.asarray(E_in) * 1e3, # units mV - "E_L": np.asarray(E_L) * 1e3, # units mV - "V_th": np.asarray(V_th) * 1e3, # units mV - "C_m": np.asarray(C_m) * 1e12, # units pF - "g_L": np.asarray(g_L) * 1e9, # units nS - "V_reset": np.asarray(V_reset) * 1e3, # units nS - "alpha": np.asarray(alpha * b2.ms), # units nS - # DIFFERENCE: subtract 0.1 ms from t_ref - "t_ref": np.asarray(t_ref) * 1e3 - b2.defaultclock.dt / b2.ms} # units ms - - -nrn1 = nest.Create("iaf_wang_2002", neuron_params) -nrn2 = nest.Create("iaf_wang_2002_exact", neuron_params) -nrn3 = nest.Create("iaf_wang_2002", neuron_params) - -times = np.array([10, 20, 40, 80, 90, 104, 109, 115, 185, 188, 190]) * 1.0 -sg = nest.Create("spike_generator", {"spike_times": times}) -sr = nest.Create("spike_recorder") - -mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], - "interval": b2.defaultclock.dt / b2.ms} -) - -mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], - "interval": b2.defaultclock.dt / b2.ms} -) - -mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], - "interval": b2.defaultclock.dt / b2.ms} -) - -# DIFFERENCE: add 0.1ms to delay -nest_delay = 1.# + b2.defaultclock.dt / b2.ms -ex_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_rec) * 1e9 * weight_AMPA, # units nS - "receptor_type": 1, - "delay": nest_delay} - -ex_syn_spec_ext = {"synapse_model": "static_synapse", - "weight": np.asarray(g_AMPA_ext) * 1e9, # units nS - "receptor_type": 1, - "delay": nest_delay} - -nmda_syn_spec = {"synapse_model": "static_synapse", - "weight": np.asarray(g_NMDA) * 1e9 * weight_NMDA, # units nS - "receptor_type": 3, - "delay": nest_delay} - -in_syn_spec = {"synapse_model": "static_synapse", - "weight": -np.asarray(g_GABA) * 1e9 * weight_GABA, # units nS - "receptor_type": 2, - "delay": nest_delay} - -conn_spec = {"rule": "all_to_all"} - -nest.Connect(sg, nrn1, syn_spec=ex_syn_spec_ext, conn_spec=conn_spec) -nest.Connect(nrn1, sr) - -nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) - -nest.Connect(nrn1, nrn3, syn_spec=ex_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn3, syn_spec=in_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec, conn_spec=conn_spec) - -nest.Connect(mm1, nrn1) -nest.Connect(mm2, nrn2) -nest.Connect(mm3, nrn3) - -nest.Simulate(300.) - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Plotting -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - -fig, ax = plt.subplots(4, 2) -fig.set_size_inches([12,10]) -fig.subplots_adjust(hspace=0.5) -ax[0,0].plot(vMonitor1.t / b2.ms, vMonitor1.v[0] / b2.mV, label="brian2", c="black") -ax[0,0].plot(mm1.get("events", "times"), mm1.get("events", "V_m"), "--", label="nest") -ax[0,0].set_xlabel("time (ms)") -ax[0,0].set_ylabel("membrane potential V (mV)") -ax[0,0].set_title("Presynaptic neuron") - -ax[0,1].plot(vMonitor2.t / b2.ms, vMonitor2.v[0] / b2.mV, label="brian2", c="black") -ax[0,1].plot(mm2.get("events", "times"), mm2.get("events", "V_m"), "--", label="NEST exact", c="C0") -ax[0,1].plot(mm3.get("events", "times"), mm3.get("events", "V_m"), "--", label="NEST approx", c="C1") -ax[0,1].set_xlabel("time (ms)") -ax[0,1].set_ylabel("membrane potential V (mV)") -ax[0,1].set_title("Postsynaptic neuron") -ax[0,1].legend() - -ax[1,1].plot(ampaMonitor2.t/b2.ms, ampaMonitor2.s_AMPA_tot[0], c="black") -ax[1,1].plot(mm2.get("events", "times"), mm2.get("events", "s_AMPA"), "--", c="C0") -ax[1,1].plot(mm3.get("events", "times"), mm3.get("events", "s_AMPA"), "--", c="C1") -ax[1,1].set_xlabel("time (ms)") -ax[1,1].set_ylabel("s_AMPA") - -ax[2,1].plot(gabaMonitor2.t/b2.ms, gabaMonitor2.s_GABA_tot[0], c="black") -ax[2,1].plot(mm2.get("events", "times"), mm2.get("events", "s_GABA"), "--", c="C0") -ax[2,1].plot(mm3.get("events", "times"), mm3.get("events", "s_GABA"), "--", c="C1") -ax[2,1].set_xlabel("time (ms)") -ax[2,1].set_ylabel("s_GABA") - -ax[3,1].plot(nmdaMonitor2.t/b2.ms, nmdaMonitor2.s_NMDA_tot[0], c="black") -ax[3,1].plot(mm2.get("events", "times"), mm2.get("events", "s_NMDA"), "--", c="C0") -ax[3,1].plot(mm3.get("events", "times"), mm3.get("events", "s_NMDA"), "--", c="C1") -ax[3,1].set_xlabel("time (ms)") -ax[3,1].set_ylabel("s_NMDA") - -ax[1,0].axis("off") -ax[2,0].axis("off") -ax[3,0].axis("off") - -plt.show() - diff --git a/pynest/examples/wang_neuron.py b/pynest/examples/wang_neuron.py deleted file mode 100644 index 339c045aeb..0000000000 --- a/pynest/examples/wang_neuron.py +++ /dev/null @@ -1,160 +0,0 @@ -""" -docstring -""" -import nest -import matplotlib.pyplot as plt -import numpy as np - -nest.ResetKernel() -nest.rng_seed = 12345 - -w_ext = 40. -w_ex = 1. -w_in = -15. - -params_exact = {"tau_AMPA": 2.0, - "tau_GABA": 5.0, - "tau_rise_NMDA": 2.0, - "tau_decay_NMDA": 100.0, - "conc_Mg2": 1.0, - "E_ex": 0.0, - "E_in": -70.0, - "E_L": -70.0, - "V_th": -55.0, - "C_m": 500.0, - "g_L": 25.0, - "V_reset": -70.0, - "alpha": 0.5, - "t_ref": 2.0} - - -nrn1 = nest.Create("iaf_wang_2002", params_approx) -pg = nest.Create("poisson_generator", {"rate": 50.}) -sr = nest.Create("spike_recorder") -nrn2 = nest.Create("iaf_wang_2002", params_approx) - -nrn3 = nest.Create("iaf_wang_2002_exact", params_exact) - -mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) -mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) -mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) - -ampa_ext_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ext, - "receptor_type": 1} - -ampa_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex, - "receptor_type": 1} - -nmda_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex, - "receptor_type": 3} - -gaba_syn_spec = {"synapse_model": "static_synapse", - "weight": w_in, - "receptor_type": 2} - -conn_spec = {"rule": "all_to_all"} - -def s_soln(w, t, tau): - isyn = np.zeros_like(t) - useinds = t >= 0. - isyn[useinds] = w * np.exp(-t[useinds] / tau) - return isyn - -def spiketrain_response(t, tau, spiketrain, w): - response = np.zeros_like(t) - for sp in spiketrain: - t_ = t - 1. - sp - zero_arg = t_ == 0. - response += s_soln(w, t_, tau) - return response - -def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): - response = np.zeros_like(t) - for sp in spiketrain: - t_ = t - 1. - sp - zero_arg = t_ == 0. - w_ = w * alpha * (1 - response[zero_arg]) - w_ = min(w_, 1 - response[zero_arg]) - response += s_soln(w_, t_, tau) - return response - -nest.Connect(pg, nrn1, syn_spec=ampa_ext_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, sr) -nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec, conn_spec=conn_spec) -nest.Connect(mm1, nrn1) - -nest.Connect(mm2, nrn2) -nest.Connect(mm3, nrn3) - -nest.Simulate(1000.) - -# get spike times from membrane potential -# cannot use spike_recorder because we abuse exact spike timing -V_m = mm1.get("events", "V_m") -times = mm1.get("events", "times") -diff = np.ediff1d(V_m, to_begin=0.) -spikes = sr.get("events", "times") -spikes = times[diff < -3] - -def nmda_integrand(t, x0, tau_decay, tau_rise, alpha): - a = (1 / tau_decay - 1 / tau_rise) - - # argument of exp - arg = t * a + alpha * x0 * tau_rise * (1 - np.exp(- t / tau_rise)) - return np.exp(arg) - -def nmda_fn(t, s0, x0, tau_decay, tau_rise, alpha): - f1 = np.exp(- t / tau_decay + alpha * x0 * tau_rise * (1 - np.exp(-t / tau_rise))) - - tvec = np.linspace(0, t, 1001) - f2 = alpha * x0 * np.trapz(nmda_integrand(tvec, x0, tau_decay, tau_rise, alpha), x = tvec) + s0 - return f1, f2 - -fig, ax = plt.subplots(4,2) -fig.set_size_inches([12,10]) -fig.subplots_adjust(hspace=0.5) - -ax[0,0].plot(mm1.events["V_m"]) -ax[0,0].set_xlabel("time (ms)") -ax[0,0].set_ylabel("membrane potential V (mV)") -ax[0,0].legend() -ax[0,0].set_title("Presynaptic neuron") - -ax[0,1].plot(mm2.events["V_m"]) -ax[0,1].plot(mm3.events["V_m"], "--") -ax[0,1].set_xlabel("time (ms)") -ax[0,1].set_ylabel("membrane potential V (mV)") -ax[0,1].set_title("Postsynaptic neuron") - - -ax[1,1].plot(mm2.events["s_AMPA"]) -ax[1,1].plot(mm3.events["s_AMPA"], "--") -ax[1,1].set_xlabel("time (ms)") -ax[1,1].set_ylabel("s_AMPA") - - -ax[2,1].plot(mm2.events["s_GABA"]) -ax[2,1].plot(mm3.events["s_GABA"], "--") -ax[2,1].set_xlabel("time (ms)") -ax[2,1].set_ylabel("s_GABA") - - -ax[3,1].plot(mm2.events["s_NMDA"]) -ax[3,1].plot(mm3.events["s_NMDA"], "--") -ax[3,1].set_xlabel("time (ms)") -ax[3,1].set_ylabel("s_NMDA") - -ax[1,0].axis("off") -ax[2,0].axis("off") -ax[3,0].axis("off") - -plt.show() - diff --git a/pynest/examples/wang_neuron_exact.py b/pynest/examples/wang_neuron_exact.py deleted file mode 100644 index ff7514d9f9..0000000000 --- a/pynest/examples/wang_neuron_exact.py +++ /dev/null @@ -1,148 +0,0 @@ -""" -docstring -""" - - -import nest -import matplotlib.pyplot as plt -import numpy as np - -nest.rng_seed = 12345 - -nest.ResetKernel() - -alpha = 0.5 -tau_AMPA = 2.0 -tau_GABA = 5.0 -tau_rise_NMDA = 2.0 -tau_NMDA = 100.0 - -Mg2 = 1.0 - -t_ref = 2.0 - -# reversal potentials -E_ex = 0. -E_in = -70.0 -E_L = -70.0 - -V_th = -55.0 -V_reset = -70. -C_m = 500.0 -g_L = 25.0 - - -# set through synaptic weights -g_AMPA_rec = 1.0 -g_AMPA_ext = 100.0 -g_GABA = 1.0 -g_NMDA = 1.0 - -neuron_params = {"tau_AMPA": tau_AMPA, - "tau_GABA": tau_GABA, - "tau_rise_NMDA": tau_rise_NMDA, - "tau_decay_NMDA": tau_NMDA, - "conc_Mg2": Mg2, - "E_ex": E_ex, - "E_in": E_in, - "E_L": E_L, - "V_th": V_th, - "C_m": C_m, - "g_L": g_L, - "t_ref": t_ref} - - -nrn1 = nest.Create("iaf_wang_2002_exact", neuron_params) -nrn2 = nest.Create("iaf_wang_2002_exact", neuron_params) - -times = np.array([10.0, 20.0, 40.0, 80.0, 90.0]) -sg = nest.Create("spike_generator", {"spike_times": times}) -sr = nest.Create("spike_recorder") - -mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) -mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "NMDA_sum", "s_GABA"], "interval": 0.1}) - -ex_syn_spec = {"synapse_model": "static_synapse", - "weight": g_AMPA_rec, - "receptor_type": 1} - -ex_syn_spec_ext = {"synapse_model": "static_synapse", - "weight": g_AMPA_ext, - "receptor_type": 1} - -nmda_syn_spec = {"synapse_model": "static_synapse", - "weight": g_NMDA, - "receptor_type": 3} - -in_syn_spec = {"synapse_model": "static_synapse", - "weight": g_GABA, - "receptor_type": 2} - -conn_spec = {"rule": "all_to_all"} - -def s_soln(w, t, tau): - isyn = np.zeros_like(t) - useinds = t >= 0. - isyn[useinds] = w * np.exp(-t[useinds] / tau) - return isyn - -def spiketrain_response(t, tau, spiketrain, w): - response = np.zeros_like(t) - for sp in spiketrain: - t_ = t - 1. - sp - zero_arg = t_ == 0. - response += s_soln(w, t_, tau) - return response - -def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): - response = np.zeros_like(t) - for sp in spiketrain: - t_ = t - 1. - sp - zero_arg = t_ == 0. - w_ = w * alpha * (1 - response[zero_arg]) - w_ = min(w_, 1 - response[zero_arg]) - response += s_soln(w_, t_, tau) - return response - -nest.Connect(sg, nrn1, syn_spec=ex_syn_spec_ext, conn_spec=conn_spec) -nest.Connect(nrn1, sr) -nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) -nest.Connect(mm1, nrn1) - -nest.Connect(mm2, nrn2) - -nest.Simulate(300.) - -# get spike times from membrane potential -# cannot use spike_recorder because we abuse exact spike timing -V_m = mm1.get("events", "V_m") -times = mm1.get("events", "times") -diff = np.ediff1d(V_m, to_begin=0.) -spikes = sr.get("events", "times") -spikes = times[diff < -3] - -# compute analytical solutimes = mm1.get("events", "times") -ampa_soln = spiketrain_response(times, tau_AMPA, spikes, g_AMPA_rec) -nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, g_NMDA, alpha) -gaba_soln = spiketrain_response(times, tau_GABA, spikes, g_GABA) - -fig, ax = plt.subplots(4,2) -ax[0,0].plot(mm1.events["V_m"]) -ax[0,1].plot(mm2.events["V_m"]) - -ax[1,0].plot(mm1.events["s_AMPA"]) -ax[1,1].plot(mm2.events["s_AMPA"]) -ax[1,1].plot(ampa_soln, '--') - -ax[2,0].plot(mm1.events["s_GABA"]) -ax[2,1].plot(mm2.events["s_GABA"]) -ax[2,1].plot(gaba_soln, '--') - -ax[3,0].plot(mm1.events["NMDA_sum"]) -ax[3,1].plot(mm2.events["NMDA_sum"]) -ax[3,1].plot(nmda_soln, '--') - -plt.show() - diff --git a/pynest/examples/wong_wang_nmda_approximation.py b/pynest/examples/wong_wang_nmda_approximation.py deleted file mode 100644 index db8200b72f..0000000000 --- a/pynest/examples/wong_wang_nmda_approximation.py +++ /dev/null @@ -1,188 +0,0 @@ -""" -docstring -""" - -import nest -import matplotlib.pyplot as plt -import numpy as np - -nest.ResetKernel() -nest.rng_seed = 12345 - -w_ext = 40. -w_ex = 1. -w_in = -15. - -params_exact = {"tau_AMPA": 2.0, - "tau_GABA": 5.0, - "tau_rise_NMDA": 2.0, - "tau_decay_NMDA": 100.0, - "conc_Mg2": 1.0, - "E_ex": 0.0, - "E_in": -70.0, - "E_L": -70.0, - "V_th": -55.0, - "C_m": 500.0, - "g_L": 25.0, - "V_reset": -70.0, - "alpha": 0.5, - "t_ref": 2.0} - -params_approx = params_exact.copy() - -nrn1 = nest.Create("iaf_wang_2002", params_approx) -pg = nest.Create("inhomogeneous_poisson_generator", {"rate_values": [400., 0.], - "rate_times": [0.1, 10.]}) -sr = nest.Create("spike_recorder") -nrn2 = nest.Create("iaf_wang_2002", params_approx) - -nrn3 = nest.Create("iaf_wang_2002_exact", params_exact) - -mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) -mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) -mm3 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) - -ampa_ext_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ext, - "receptor_type": 1} - -ampa_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex, - "receptor_type": 1} - -nmda_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex, - "receptor_type": 3} - -gaba_syn_spec = {"synapse_model": "static_synapse", - "weight": w_in, - "receptor_type": 2} - -conn_spec = {"rule": "all_to_all"} - -def s_soln(w, t, tau): - isyn = np.zeros_like(t) - useinds = t >= 0. - isyn[useinds] = w * np.exp(-t[useinds] / tau) - return isyn - -def spiketrain_response(t, tau, spiketrain, w): - response = np.zeros_like(t) - for sp in spiketrain: - t_ = t - 1. - sp - zero_arg = t_ == 0. - response += s_soln(w, t_, tau) - return response - -def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): - response = np.zeros_like(t) - for sp in spiketrain: - t_ = t - 1. - sp - zero_arg = t_ == 0. - w_ = w * alpha * (1 - response[zero_arg]) - w_ = min(w_, 1 - response[zero_arg]) - response += s_soln(w_, t_, tau) - return response - -nest.Connect(pg, nrn1, syn_spec=ampa_ext_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, sr) -nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec, conn_spec=conn_spec) -nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec, conn_spec=conn_spec) -nest.Connect(mm1, nrn1) - -nest.Connect(mm2, nrn2) -nest.Connect(mm3, nrn3) - -nest.Simulate(1000.) - -times = mm3.get("events", "times") -nest_nmda = mm3.get("events", "s_NMDA") -nest_nmda_approx = mm2.get("events", "s_NMDA") -times -= times[(nest_nmda > 0).argmax()] - 0.1 - -from scipy.integrate import cumtrapz -def nmda_integrand(t, x0, tau_decay, tau_rise, alpha): - a = (1 / tau_decay - 1 / tau_rise) - - # argument of exp - arg = t * a + alpha * x0 * tau_rise * (1 - np.exp(- t / tau_rise)) - return np.exp(arg) - -def nmda_fn(t, s0, x0, tau_decay, tau_rise, alpha): - f1 = np.exp(- t / tau_decay - alpha * x0 * tau_rise * (1 - np.exp(-t / tau_rise))) - - tvec = np.linspace(0, t, 1001) - integrand = nmda_integrand(tvec, x0, tau_decay, tau_rise, alpha) -# f2 = alpha * x0 * np.trapz(integrand, x = tvec) + s0 - f2 = np.trapz(integrand, x = tvec) - return f1, f2 # f1 * f2 - -def nmda_fn_approx(t, x0, tau_decay, tau_rise, alpha): - f1 = np.exp(-t / tau_decay - alpha * x0 * tau_rise * (1 - np.exp(-t / tau_rise))) - f2 = (np.exp((1 - np.exp(-t / tau_rise)) * alpha * tau_rise) - 1) / alpha - - return f1, f2 - - -t = np.arange(0.1, 1000, 0.1) -s0 = 0. -f1s, f2s = [], [] -for t_ in t: - f1, f2 = nmda_fn(t_, 0., 1., 100., 2., 0.5) - f1s.append(f1) - f2s.append(f2) - -s_nmda = np.array([f1s[i] * (f2s[i] * 0.5 + s0) for i, _ in enumerate(f1s)]) - -f1_approx, f2_approx = nmda_fn_approx(t, 1, 100, 2, 0.5) -s_nmda_approx = f1_approx * (f2_approx * 0.5 + s0) - -def nmda_approx_exp(t, tau_rise, alpha, tau_decay): - f1 = np.exp(-alpha * tau_rise * (1 - np.exp(-t / tau_rise))) - f2 = -(1 - np.exp(alpha * tau_rise * (1 - np.exp(-t / tau_rise)))) - return f1, f2 - -f1_exp, f2_exp = nmda_approx_exp(t, 2.0, 0.5, 100) - -i = 40 -s_nmda_exp = (f1_exp[i] * f2_exp[i] + f1_exp[i] * s0) * np.exp(-t / 100) - -plt.plot(t, s_nmda, color="C0") -plt.plot(t, s_nmda_approx, color="C1") -plt.plot(t, s_nmda_exp, "--", color="C2") - -plt.show() - -from scipy.special import expn, gamma -def limfun(tau_rise, tau_decay, alpha): - f1 = np.exp(-alpha * tau_rise) - - at = alpha * tau_rise - tr_td = tau_rise / tau_decay - f0 = -at * expn(tr_td, at) + at ** tr_td * gamma(1 - tr_td) - return f0, f1 - -f0, f1 = limfun(2, 100, 0.5) - -plt.plot(t, s_nmda) -# plt.plot(times, nest_nmda) -# plt.plot(times, nest_nmda_approx) -plt.plot(t, np.exp(-t / 100) * (f0 + s0 * f1)) -plt.plot(t, np.exp(-t / 100) * (s0 + 0.5 * (1 - s0))) - -plt.show() - - -a = np.exp(-t / 100) * (f0 + s0 * f1) -b = np.exp(-t / 100) * (s0 + 0.5 * (1 - s0)) -c = s_nmda.copy() - -print(np.trapz(a, x=t)) -print(np.trapz(b, x=t)) -print(np.trapz(c, x=t)) - - From ed03c83bc19239ee37a3923c777fef57cfbd4fa7 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 5 Feb 2024 14:39:20 +0100 Subject: [PATCH 052/184] clean up --- models/iaf_wang_2002.h | 8 +------- models/iaf_wang_2002_exact.cpp | 5 ----- models/iaf_wang_2002_exact.h | 1 - 3 files changed, 1 insertion(+), 13 deletions(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 0af576bc44..b65d5ad612 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -95,12 +95,11 @@ where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets f .. math:: - k_0 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) \\[3ex] + k_0 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 \\[3ex] k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} \Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] where :math:`\mathrm{E_N}` is the generalized exponential integral (https://en.wikipedia.org/wiki/Exponential_integral#Generalization), and :math:`\Gamma` is the gamma-function (https://en.wikipedia.org/wiki/Gamma_function). - The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. @@ -141,10 +140,6 @@ The following values can be recorded. s_NMDA sum of NMDA gating variables =========== =========================================================== -.. note:: - It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when creating the model, while the - different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be set by the user. - .. note:: :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the variables is thus done by changing the weights. @@ -173,7 +168,6 @@ iaf_cond_alpha, ht_neuron EndUserDocs */ - void register_iaf_wang_2002( const std::string& name ); class iaf_wang_2002 : public ArchivingNode diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index a2fddd99a6..c237ff20ca 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -183,21 +183,16 @@ nest::iaf_wang_2002_exact::Parameters_::set( const DictionaryDatum& d, Node* nod updateValueParam< double >( d, names::V_reset, V_reset, node ); updateValueParam< double >( d, names::t_ref, t_ref, node ); updateValueParam< double >( d, names::E_L, E_L, node ); - updateValueParam< double >( d, names::E_ex, E_ex, node ); updateValueParam< double >( d, names::E_in, E_in, node ); - updateValueParam< double >( d, names::C_m, C_m, node ); updateValueParam< double >( d, names::g_L, g_L, node ); - updateValueParam< double >( d, names::tau_AMPA, tau_AMPA, node ); updateValueParam< double >( d, names::tau_GABA, tau_GABA, node ); updateValueParam< double >( d, names::tau_rise_NMDA, tau_rise_NMDA, node ); updateValueParam< double >( d, names::tau_decay_NMDA, tau_decay_NMDA, node ); - updateValueParam< double >( d, names::alpha, alpha, node ); updateValueParam< double >( d, names::conc_Mg2, conc_Mg2, node ); - updateValueParam< double >( d, names::gsl_error_tol, gsl_error_tol, node ); if ( V_reset >= V_th ) diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 0ff2d8c439..59e21e122e 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -226,7 +226,6 @@ class iaf_wang_2002_exact : public ArchivingNode }; - // make dynamics function quasi-member friend int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); From 9ba059c6daa246be122929e6a3088c3daf1b5b21 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 5 Feb 2024 15:17:52 +0100 Subject: [PATCH 053/184] add comments to wang_decision_making.py --- pynest/examples/wang_decision_making.py | 171 +++++++++++++++++------- 1 file changed, 126 insertions(+), 45 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index b51fee5593..1e74403dc3 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -1,5 +1,44 @@ +# -*- coding: utf-8 -*- +# +# brunel_alpha_nest.py +# +# This file is part of NEST. +# +# Copyright (C) 2004 The NEST Initiative +# +# NEST is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# NEST is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with NEST. If not, see . + """ -docstring +Decision making in recurrent network with NMDA-dynamics +------------------------------------------------------------ + +This script simulates the network modelled in [1]_. +An excitatory and an inhibitory population receives input +from an external population modelled as a Poisson process. +Two different subsets of the excitatory population, +comprising 15% of the total population each, receive additional +inputs from a time-inhomogeneous Poisson process, where the +coherence between the two signals can be varied. Local inhibition +mediates a winner-takes-all comptetion, and the activity of +one of the sub-population is suppressed. + +References +~~~~~~~~~~ +.. [1] Wang X-J (2002). Probabilistic Decision Making by Slow Reverberation in +Cortical Circuits. Neuron, Volume 36, Issue 5, Pages 955-968. +https://doi.org/10.1016/S0896-6273(02)01092-9. + """ import nest @@ -10,11 +49,16 @@ np.random.seed(1234) rng = np.random.default_rng() +# Use approximate model, can be replaced by "iaf_wang_2002_exact" model = "iaf_wang_2002" dt = 0.1 nest.set(resolution=dt, print_time=True) +################################################## +# Set parameter values, taken from [1]_. + +# conductances g_AMPA_ex = 0.05 g_AMPA_ext_ex = 2.1 g_NMDA_ex = 0.165 @@ -25,8 +69,7 @@ g_NMDA_in = 0.13 g_GABA_in = 1.0 - -# Parameters from paper +# neuron parameters epop_params = {"tau_GABA": 5.0, "tau_AMPA": 2.0, "tau_decay_NMDA": 100.0, @@ -43,7 +86,6 @@ "t_ref": 2.0 # refreactory period } - ipop_params = {"tau_GABA": 5.0, "tau_AMPA": 2.0, "tau_decay_NMDA": 100.0, @@ -60,37 +102,54 @@ "t_ref": 1.0 # refreactory period } -simtime = 4000. +# synaptic weights +w_plus = 1.7 +w_minus = 1 - f * (w_plus - 1) / (1 - f) + + +# signals to the two different excitatory sub-populations +# the signal is given by a time-inhomogeneous Poisson process, +# where the expectations are constant over intervals of 50ms, +# and then change. The values for each interval are normally +# distributed, with means mu_a and mu_b, and standard deviation +# sigma. signal_start = 1000. signal_duration = 2000. signal_update_interval = 50. f = 0.15 # proportion of neurons receiving signal inputs -w_plus = 1.7 -w_minus = 1 - f * (w_plus - 1) / (1 - f) +# compute expectations of the time-inhomogeneous Poisson processes +mu_0 = 40. # base rate +rho_a = mu_0 / 100 # scaling factors coherence +rho_b = rho_a +c = 0. # coherence +sigma = 4. # standard deviation +mu_a = mu_0 + rho_a * c # expectation for pop A +mu_b = mu_0 - rho_b * c # expectation for pop B + +# sample values for the Poisson process +num_updates = int(signal_duration / signal_update_interval) +update_times = np.arange(0, signal_duration, signal_update_interval) +update_times[0] = 0.1 +rates_a = np.random.normal(mu_a, sigma, size=num_updates) +rates_b = np.random.normal(mu_b, sigma, size=num_updates) + + + delay = 0.5 +# number of neurons in each population NE = 1600 NI = 400 + +################################################## +# Create neurons and devices + selective_pop1 = nest.Create(model, int(0.15 * NE), params=epop_params) selective_pop2 = nest.Create(model, int(0.15 * NE), params=epop_params) nonselective_pop = nest.Create(model, int(0.7 * NE), params=epop_params) inhibitory_pop = nest.Create(model, NI, params=ipop_params) -mu_0 = 40. -rho_a = mu_0 / 100 -rho_b = rho_a -c = 0. -sigma = 4. -mu_a = mu_0 + rho_a * c -mu_b = mu_0 - rho_b * c - -num_updates = int(signal_duration / signal_update_interval) -update_times = np.arange(0, signal_duration, signal_update_interval) -update_times[0] = 0.1 -rates_a = np.random.normal(mu_a, sigma, size=num_updates) -rates_b = np.random.normal(mu_b, sigma, size=num_updates) - poisson_a = nest.Create("inhomogeneous_poisson_generator", params={"origin": signal_start-0.1, "start": 0., @@ -107,6 +166,20 @@ poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.}) +sr_nonselective = nest.Create("spike_recorder") +sr_selective1 = nest.Create("spike_recorder") +sr_selective2 = nest.Create("spike_recorder") +sr_inhibitory = nest.Create("spike_recorder") + +mm_selective1 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) +mm_selective2 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) +mm_nonselective = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) +mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) + + +################################################## +# Define synapse specifications + syn_spec_pot_AMPA = {"synapse_model": "static_synapse", "weight":w_plus * g_AMPA_ex, "delay":delay, "receptor_type": 1} syn_spec_pot_NMDA = {"synapse_model": "static_synapse", "weight":w_plus * g_NMDA_ex, "delay":delay, "receptor_type": 3} @@ -124,19 +197,10 @@ exte_syn_spec = {"synapse_model": "static_synapse", "weight":g_AMPA_ext_ex, "delay":0.1, "receptor_type": 1} exti_syn_spec = {"synapse_model": "static_synapse", "weight":g_AMPA_ext_in, "delay":0.1, "receptor_type": 1} -sr_nonselective = nest.Create("spike_recorder") -sr_selective1 = nest.Create("spike_recorder") -sr_selective2 = nest.Create("spike_recorder") -sr_inhibitory = nest.Create("spike_recorder") -mm_selective1 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) -mm_selective2 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) -mm_nonselective = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) -mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) - - -# # # Create connections +################################################## +# Create connections # from external nest.Connect(poisson_0, nonselective_pop + selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec) @@ -185,15 +249,21 @@ nest.Connect(inhibitory_pop, sr_inhibitory) - -# multimeters +# multimeters record from single neuron from each population. +# since the network is fully connected, it's the same for all +# neurons in the same population. nest.Connect(mm_selective1, selective_pop1[0]) nest.Connect(mm_selective2, selective_pop2[0]) nest.Connect(mm_nonselective, nonselective_pop[0]) nest.Connect(mm_inhibitory, inhibitory_pop[0]) +################################################## +# Run simulation nest.Simulate(5000.) + +################################################## +# Collect data from simulation spikes_nonselective = sr_nonselective.get("events", "times") spikes_selective1 = sr_selective1.get("events", "times") spikes_selective2 = sr_selective2.get("events", "times") @@ -220,51 +290,62 @@ s_NMDA_inhibitory = mm_inhibitory.get("events", "s_NMDA") -res = 1.0 + +################################################## +# Plots + +# bins for histograms +res = 1.0 bins = np.arange(0, 4001, res) - 0.001 fig, ax = plt.subplots(ncols=2, nrows=2, sharex=True, sharey=True) fig.tight_layout() -d = NE * f * (res / 1000) + +# selective populations +num = NE * f * (res / 1000) hist1, _ = np.histogram(spikes_selective1, bins=bins) hist2, _ = np.histogram(spikes_selective2, bins=bins) - -ax[0,0].plot(hist1 / d) +ax[0,0].plot(hist1 / num) ax[0,0].set_title("Selective pop A") -ax[0,1].plot(hist2 / d) +ax[0,1].plot(hist2 / num) ax[0,1].set_title("Selective pop B") -d = NE * (1 - 2*f) * res / 1000 +# nonselective population +num = NE * (1 - 2*f) * res / 1000 hist, _ = np.histogram(spikes_nonselective, bins=bins) -ax[1,0].plot(hist / d) +ax[1,0].plot(hist / num) ax[1,0].set_title("Nonselective pop") -d = NI * res / 1000 +# inhibitory population +num = NI * res / 1000 hist, _ = np.histogram(spikes_inhibitory, bins=bins) -ax[1,1].plot(hist / d) +ax[1,1].plot(hist / num) ax[1,1].set_title("Inhibitory pop") - fig, ax = plt.subplots(ncols=4, nrows=4, sharex=True, sharey="row") fig.tight_layout() - +# AMPA conductances ax[0,0].plot(s_AMPA_selective1) ax[0,1].plot(s_AMPA_selective2) ax[0,2].plot(s_AMPA_nonselective) ax[0,3].plot(s_AMPA_inhibitory) +# NMDA conductances ax[1,0].plot(s_NMDA_selective1) ax[1,1].plot(s_NMDA_selective2) ax[1,2].plot(s_NMDA_nonselective) ax[1,3].plot(s_NMDA_inhibitory) + +# GABA conductances ax[2,0].plot(s_GABA_selective1) ax[2,1].plot(s_GABA_selective2) ax[2,2].plot(s_GABA_nonselective) ax[2,3].plot(s_GABA_inhibitory) +# Membrane potential ax[3,0].plot(vm_selective1) ax[3,1].plot(vm_selective2) ax[3,2].plot(vm_nonselective) From c980c87e1948c65fd95c40550d8decb23365f2a6 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 10:02:36 +0100 Subject: [PATCH 054/184] update doc --- models/iaf_wang_2002.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index b65d5ad612..72cc641d2a 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -98,7 +98,7 @@ where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets f k_0 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 \\[3ex] k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} \Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] -where :math:`\mathrm{E_N}` is the generalized exponential integral (https://en.wikipedia.org/wiki/Exponential_integral#Generalization), and :math:`\Gamma` is the gamma-function (https://en.wikipedia.org/wiki/Gamma_function). +where :math:`\mathrm{E_N}` is the generalized exponential integral (https://en.wikipedia.org/wiki/Exponential_integral#Generalization), and :math:`\Gamma` is the gamma-function (https://en.wikipedia.org/wiki/Gamma_function). For these values of :math:`k_0` and :math:`k_1`, the approximate model will approach the exact model for large t. The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. From 99766edb70ea1593660342837374eeaf3cb6b952 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 11:18:08 +0100 Subject: [PATCH 055/184] update test --- testsuite/pytests/test_iaf_wang_2002.py | 118 ++++++++++++++---------- 1 file changed, 70 insertions(+), 48 deletions(-) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 18b355b9d0..30d15315d9 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -31,17 +31,33 @@ import numpy as np import numpy.testing as nptest import pytest +from scipy.special import expn, gamma + + +w_ex = 40. +w_in = -15. +alpha = 0.5 +tau_AMPA = 2.0 +tau_GABA = 5.0 +tau_rise_NMDA = 1.8 +tau_decay_NMDA = 100.0 + def s_soln(w, t, tau): """ - Solution for GABA/AMPA receptors + Solution for synaptic variables """ isyn = np.zeros_like(t) useinds = t >= 0. isyn[useinds] = w * np.exp(-t[useinds] / tau) return isyn + def spiketrain_response(t, tau, spiketrain, w): + """ + Response for AMPA/NMDA + """ + response = np.zeros_like(t) for sp in spiketrain: t_ = t - 1. - sp @@ -49,75 +65,81 @@ def spiketrain_response(t, tau, spiketrain, w): response += s_soln(w, t_, tau) return response -def spiketrain_response_nmda(t, tau, spiketrain, w, alpha): + +def spiketrain_response_nmda(t, spiketrain): """ - Solution for NMDA receptors + Response for NMDA """ + tr = tau_rise_NMDA / tau_decay_NMDA + at = alpha * tau_rise_NMDA + k_0 = -expn(tr, at) * at + at**tr * gamma(1 - tr) + k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 + response = np.zeros_like(t) for sp in spiketrain: t_ = t - 1. - sp zero_arg = t_ == 0. - w_ = w * alpha * (1 - response[zero_arg]) - w_ = min(w_, 1 - response[zero_arg]) - response += s_soln(w_, t_, tau) + s0 = response[zero_arg] + w = k_0 + k_1 * s0 + response += s_soln(w, t_, tau_decay_NMDA) + response *= w_ex return response def test_wang(): - w_ex = 40. - w_in = -15. - alpha = 0.5 - tau_AMPA = 2.0 - tau_GABA = 5.0 - tau_NMDA = 100.0 - # Create 2 neurons, so that the Wang dynamics are present nrn1 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_NMDA}) - - pg = nest.Create("poisson_generator", {"rate": 50.}) - sr = nest.Create("spike_recorder", {"time_in_steps": True}) + "tau_decay_NMDA": tau_decay_NMDA, + "tau_rise_NMDA": tau_rise_NMDA}) + nrn2 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_NMDA, + "tau_decay_NMDA": tau_decay_NMDA, + "tau_rise_NMDA": tau_rise_NMDA, "t_ref": 0.}) - - mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) - mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1}) - - ex_syn_spec = {"synapse_model": "static_synapse", - "weight": w_ex, - "receptor_type": 0} - - in_syn_spec = {"synapse_model": "static_synapse", - "weight": w_in} - - conn_spec = {"rule": "all_to_all"} - - nest.Connect(pg, nrn1, syn_spec=ex_syn_spec, conn_spec=conn_spec) + + pg = nest.Create("poisson_generator", {"rate": 50.}) + sr = nest.Create("spike_recorder", {"time_in_steps": True}) + + mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], + "interval": 0.1, + "time_in_steps": True}) + mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], + "interval": 0.1, + "time_in_steps": True}) + + ampa_syn_spec = {"weight": w_ex, + "receptor_type": 1} + + gaba_syn_spec = {"weight": w_in, + "receptor_type": 2} + + nmda_syn_spec = {"weight": w_ex, + "receptor_type": 3} + + nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) nest.Connect(nrn1, sr) - nest.Connect(nrn1, nrn2, syn_spec=ex_syn_spec, conn_spec=conn_spec) - nest.Connect(nrn1, nrn2, syn_spec=in_syn_spec, conn_spec=conn_spec) + nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec) + nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec) + nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) nest.Connect(mm1, nrn1) - nest.Connect(mm2, nrn2) - + nest.Simulate(1000.) - - # get spike times from membrane potential - # cannot use spike_recorder because we abuse exact spike timing - V_m = mm1.get("events", "V_m") - times = mm1.get("events", "times") - diff = np.ediff1d(V_m, to_begin=0.) - spikes = sr.get("events", "times") - spikes = times[diff < -3] - + + spikes = sr.get("events", "times") * nest.resolution + # compute analytical solutions - times = mm1.get("events", "times") + times = mm1.get("events", "times") * nest.resolution ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) - nmda_soln = spiketrain_response_nmda(times, tau_NMDA, spikes, w_ex, alpha) + nmda_soln = spiketrain_response_nmda(times, spikes) gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) - + + import matplotlib.pyplot as plt + plt.plot(mm2.events["s_NMDA"]) + plt.plot(nmda_soln) + plt.show() + nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) nptest.assert_array_almost_equal(nmda_soln, mm2.events["s_NMDA"]) From a2dae5b92c2e56a9d186cf1f0306a0107d029617 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 11:19:15 +0100 Subject: [PATCH 056/184] remove comment --- models/iaf_wang_2002.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index cc3f4906d8..7dd2eb9030 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -471,8 +471,8 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // compute current value of s_NMDA and add NMDA update to spike offset S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); - const double s_NMDA_delta = V_.S_jump_0 + V_.S_jump_1 * S_.s_NMDA_pre;//- S_.s_NMDA_pre; - S_.s_NMDA_pre += s_NMDA_delta; // guaranteed to be <= 1. + const double s_NMDA_delta = V_.S_jump_0 + V_.S_jump_1 * S_.s_NMDA_pre; + S_.s_NMDA_pre += s_NMDA_delta; SpikeEvent se; se.set_offset( s_NMDA_delta ); From 79e383f6a8f0dcb6955d72c7bdd872a80250c510 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 11:49:34 +0100 Subject: [PATCH 057/184] add receptor types dictionary --- models/iaf_wang_2002.h | 6 ++ pynest/examples/wang_decision_making.py | 90 ++++++++++++++++++------- testsuite/pytests/test_iaf_wang_2002.py | 9 ++- 3 files changed, 78 insertions(+), 27 deletions(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 72cc641d2a..7bca23552a 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -446,6 +446,12 @@ iaf_wang_2002::get_status( DictionaryDatum& d ) const S_.get( d ); ArchivingNode::get_status( d ); + DictionaryDatum receptor_type = new Dictionary(); + ( *receptor_type )[ names::AMPA ] = AMPA; + ( *receptor_type )[ names::GABA ] = GABA; + ( *receptor_type )[ names::NMDA ] = NMDA; + ( *d )[ names::receptor_types ] = receptor_type; + ( *d )[ names::recordables ] = recordablesMap_.get_list(); } diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 1e74403dc3..450ebf535d 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -102,11 +102,6 @@ "t_ref": 1.0 # refreactory period } -# synaptic weights -w_plus = 1.7 -w_minus = 1 - f * (w_plus - 1) / (1 - f) - - # signals to the two different excitatory sub-populations # the signal is given by a time-inhomogeneous Poisson process, # where the expectations are constant over intervals of 50ms, @@ -133,6 +128,9 @@ rates_a = np.random.normal(mu_a, sigma, size=num_updates) rates_b = np.random.normal(mu_b, sigma, size=num_updates) +# synaptic weights +w_plus = 1.7 +w_minus = 1 - f * (w_plus - 1) / (1 - f) delay = 0.5 @@ -145,9 +143,9 @@ ################################################## # Create neurons and devices -selective_pop1 = nest.Create(model, int(0.15 * NE), params=epop_params) -selective_pop2 = nest.Create(model, int(0.15 * NE), params=epop_params) -nonselective_pop = nest.Create(model, int(0.7 * NE), params=epop_params) +selective_pop1 = nest.Create(model, int(f * NE), params=epop_params) +selective_pop2 = nest.Create(model, int(f * NE), params=epop_params) +nonselective_pop = nest.Create(model, int((1 - 2 * f) * NE), params=epop_params) inhibitory_pop = nest.Create(model, NI, params=ipop_params) poisson_a = nest.Create("inhomogeneous_poisson_generator", @@ -180,22 +178,66 @@ ################################################## # Define synapse specifications -syn_spec_pot_AMPA = {"synapse_model": "static_synapse", "weight":w_plus * g_AMPA_ex, "delay":delay, "receptor_type": 1} -syn_spec_pot_NMDA = {"synapse_model": "static_synapse", "weight":w_plus * g_NMDA_ex, "delay":delay, "receptor_type": 3} - -syn_spec_dep_AMPA = {"synapse_model": "static_synapse", "weight":w_minus * g_AMPA_ex, "delay":delay, "receptor_type": 1} -syn_spec_dep_NMDA = {"synapse_model": "static_synapse", "weight":w_minus * g_NMDA_ex, "delay":delay, "receptor_type": 3} - -ie_syn_spec = {"synapse_model": "static_synapse", "weight": -1.0 * g_GABA_ex, "delay":delay, "receptor_type": 2} -ii_syn_spec = {"synapse_model": "static_synapse", "weight": -1.0 * g_GABA_in, "delay":delay, "receptor_type": 2} - -ei_syn_spec_AMPA = {"synapse_model": "static_synapse", "weight": 1.0 * g_AMPA_in, "delay":delay, "receptor_type": 1} -ei_syn_spec_NMDA = {"synapse_model": "static_synapse", "weight": 1.0 * g_NMDA_in, "delay":delay, "receptor_type": 3} -ee_syn_spec_AMPA = {"synapse_model": "static_synapse", "weight": 1.0 * g_AMPA_ex, "delay":delay, "receptor_type": 1} -ee_syn_spec_NMDA = {"synapse_model": "static_synapse", "weight": 1.0 * g_NMDA_ex, "delay":delay, "receptor_type": 3} - -exte_syn_spec = {"synapse_model": "static_synapse", "weight":g_AMPA_ext_ex, "delay":0.1, "receptor_type": 1} -exti_syn_spec = {"synapse_model": "static_synapse", "weight":g_AMPA_ext_in, "delay":0.1, "receptor_type": 1} +receptor_types = selective_pop1[0].get("receptor_types") + +syn_spec_pot_AMPA = {"synapse_model": "static_synapse", + "weight":w_plus * g_AMPA_ex, + "delay":delay, + "receptor_type": receptor_types["AMPA"]} +syn_spec_pot_NMDA = {"synapse_model": "static_synapse", + "weight":w_plus * g_NMDA_ex, + "delay":delay, + "receptor_type": receptor_types["NMDA"]} + +syn_spec_dep_AMPA = {"synapse_model": "static_synapse", + "weight":w_minus * g_AMPA_ex, + "delay":delay, + "receptor_type": receptor_types["AMPA"]} + +syn_spec_dep_NMDA = {"synapse_model": "static_synapse", + "weight":w_minus * g_NMDA_ex, + "delay":delay, + "receptor_type": receptor_types["NMDA"]} + +ie_syn_spec = {"synapse_model": "static_synapse", + "weight": -1.0 * g_GABA_ex, + "delay":delay, + "receptor_type": receptor_types["GABA"]} + +ii_syn_spec = {"synapse_model": "static_synapse", + "weight": -1.0 * g_GABA_in, + "delay":delay, + "receptor_type": receptor_types["GABA"]} + +ei_syn_spec_AMPA = {"synapse_model": "static_synapse", + "weight": 1.0 * g_AMPA_in, + "delay":delay, + "receptor_type": receptor_types["AMPA"]} + +ei_syn_spec_NMDA = {"synapse_model": "static_synapse", + "weight": 1.0 * g_NMDA_in, + "delay":delay, + "receptor_type": receptor_types["NMDA"]} + +ee_syn_spec_AMPA = {"synapse_model": "static_synapse", + "weight": 1.0 * g_AMPA_ex, + "delay":delay, + "receptor_type": receptor_types["AMPA"]} + +ee_syn_spec_NMDA = {"synapse_model": "static_synapse", + "weight": 1.0 * g_NMDA_ex, + "delay":delay, + "receptor_type": receptor_types["NMDA"]} + +exte_syn_spec = {"synapse_model": "static_synapse", + "weight":g_AMPA_ext_ex, + "delay":0.1, + "receptor_type": receptor_types["AMPA"]} + +exti_syn_spec = {"synapse_model": "static_synapse", + "weight":g_AMPA_ext_in, + "delay":0.1, + "receptor_type": receptor_types["AMPA"]} diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 30d15315d9..e2959ff88d 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -98,6 +98,9 @@ def test_wang(): "tau_rise_NMDA": tau_rise_NMDA, "t_ref": 0.}) + receptor_types = nrn1.get("receptor_types") + + pg = nest.Create("poisson_generator", {"rate": 50.}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) @@ -109,13 +112,13 @@ def test_wang(): "time_in_steps": True}) ampa_syn_spec = {"weight": w_ex, - "receptor_type": 1} + "receptor_type": receptor_types["AMPA"]} gaba_syn_spec = {"weight": w_in, - "receptor_type": 2} + "receptor_type": receptor_types["GABA"]} nmda_syn_spec = {"weight": w_ex, - "receptor_type": 3} + "receptor_type": receptor_types["NMDA"]} nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) nest.Connect(nrn1, sr) From 5c14f8a5dccb42ad16e8b9aaca00bac80027e40f Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 11:52:04 +0100 Subject: [PATCH 058/184] black --- pynest/examples/wang_decision_making.py | 351 ++++++++++-------- testsuite/pytests/test_iaf_wang_2002.py | 77 ++-- testsuite/pytests/test_iaf_wang_2002_exact.py | 36 +- 3 files changed, 252 insertions(+), 212 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 450ebf535d..3acb81aef0 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -70,37 +70,39 @@ g_GABA_in = 1.0 # neuron parameters -epop_params = {"tau_GABA": 5.0, - "tau_AMPA": 2.0, - "tau_decay_NMDA": 100.0, - "tau_rise_NMDA": 2.0, - "alpha": 0.5, - "conc_Mg2": 1.0, - "g_L": 25., # leak conductance - "E_L": -70.0, # leak reversal potential - "E_ex": 0.0, # excitatory reversal potential - "E_in": -70.0, # inhibitory reversal potential - "V_reset": -55.0, # reset potential - "V_th": -50.0, # threshold - "C_m": 500.0, # membrane capacitance - "t_ref": 2.0 # refreactory period - } - -ipop_params = {"tau_GABA": 5.0, - "tau_AMPA": 2.0, - "tau_decay_NMDA": 100.0, - "tau_rise_NMDA": 2.0, - "alpha": 0.5, - "conc_Mg2": 1.0, - "g_L": 20., # leak conductance - "E_L": -70.0, # leak reversal potential - "E_ex": 0.0, # excitatory reversal potential - "E_in": -70.0, # inhibitory reversal potential - "V_reset": -55.0, # reset potential - "V_th": -50.0, # threshold - "C_m": 200.0, # membrane capacitance - "t_ref": 1.0 # refreactory period - } +epop_params = { + "tau_GABA": 5.0, + "tau_AMPA": 2.0, + "tau_decay_NMDA": 100.0, + "tau_rise_NMDA": 2.0, + "alpha": 0.5, + "conc_Mg2": 1.0, + "g_L": 25.0, # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold + "C_m": 500.0, # membrane capacitance + "t_ref": 2.0, # refreactory period +} + +ipop_params = { + "tau_GABA": 5.0, + "tau_AMPA": 2.0, + "tau_decay_NMDA": 100.0, + "tau_rise_NMDA": 2.0, + "alpha": 0.5, + "conc_Mg2": 1.0, + "g_L": 20.0, # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold + "C_m": 200.0, # membrane capacitance + "t_ref": 1.0, # refreactory period +} # signals to the two different excitatory sub-populations # the signal is given by a time-inhomogeneous Poisson process, @@ -108,18 +110,18 @@ # and then change. The values for each interval are normally # distributed, with means mu_a and mu_b, and standard deviation # sigma. -signal_start = 1000. -signal_duration = 2000. -signal_update_interval = 50. -f = 0.15 # proportion of neurons receiving signal inputs +signal_start = 1000.0 +signal_duration = 2000.0 +signal_update_interval = 50.0 +f = 0.15 # proportion of neurons receiving signal inputs # compute expectations of the time-inhomogeneous Poisson processes -mu_0 = 40. # base rate -rho_a = mu_0 / 100 # scaling factors coherence +mu_0 = 40.0 # base rate +rho_a = mu_0 / 100 # scaling factors coherence rho_b = rho_a -c = 0. # coherence -sigma = 4. # standard deviation -mu_a = mu_0 + rho_a * c # expectation for pop A -mu_b = mu_0 - rho_b * c # expectation for pop B +c = 0.0 # coherence +sigma = 4.0 # standard deviation +mu_a = mu_0 + rho_a * c # expectation for pop A +mu_b = mu_0 - rho_b * c # expectation for pop B # sample values for the Poisson process num_updates = int(signal_duration / signal_update_interval) @@ -148,21 +150,29 @@ nonselective_pop = nest.Create(model, int((1 - 2 * f) * NE), params=epop_params) inhibitory_pop = nest.Create(model, NI, params=ipop_params) -poisson_a = nest.Create("inhomogeneous_poisson_generator", - params={"origin": signal_start-0.1, - "start": 0., - "stop": signal_duration, - "rate_times": update_times, - "rate_values": rates_a}) - -poisson_b = nest.Create("inhomogeneous_poisson_generator", - params={"origin": signal_start-0.1, - "start": 0., - "stop": signal_duration, - "rate_times": update_times, - "rate_values": rates_b}) - -poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.}) +poisson_a = nest.Create( + "inhomogeneous_poisson_generator", + params={ + "origin": signal_start - 0.1, + "start": 0.0, + "stop": signal_duration, + "rate_times": update_times, + "rate_values": rates_a, + }, +) + +poisson_b = nest.Create( + "inhomogeneous_poisson_generator", + params={ + "origin": signal_start - 0.1, + "start": 0.0, + "stop": signal_duration, + "rate_times": update_times, + "rate_values": rates_b, + }, +) + +poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.0}) sr_nonselective = nest.Create("spike_recorder") sr_selective1 = nest.Create("spike_recorder") @@ -180,72 +190,97 @@ receptor_types = selective_pop1[0].get("receptor_types") -syn_spec_pot_AMPA = {"synapse_model": "static_synapse", - "weight":w_plus * g_AMPA_ex, - "delay":delay, - "receptor_type": receptor_types["AMPA"]} -syn_spec_pot_NMDA = {"synapse_model": "static_synapse", - "weight":w_plus * g_NMDA_ex, - "delay":delay, - "receptor_type": receptor_types["NMDA"]} - -syn_spec_dep_AMPA = {"synapse_model": "static_synapse", - "weight":w_minus * g_AMPA_ex, - "delay":delay, - "receptor_type": receptor_types["AMPA"]} - -syn_spec_dep_NMDA = {"synapse_model": "static_synapse", - "weight":w_minus * g_NMDA_ex, - "delay":delay, - "receptor_type": receptor_types["NMDA"]} - -ie_syn_spec = {"synapse_model": "static_synapse", - "weight": -1.0 * g_GABA_ex, - "delay":delay, - "receptor_type": receptor_types["GABA"]} - -ii_syn_spec = {"synapse_model": "static_synapse", - "weight": -1.0 * g_GABA_in, - "delay":delay, - "receptor_type": receptor_types["GABA"]} - -ei_syn_spec_AMPA = {"synapse_model": "static_synapse", - "weight": 1.0 * g_AMPA_in, - "delay":delay, - "receptor_type": receptor_types["AMPA"]} - -ei_syn_spec_NMDA = {"synapse_model": "static_synapse", - "weight": 1.0 * g_NMDA_in, - "delay":delay, - "receptor_type": receptor_types["NMDA"]} - -ee_syn_spec_AMPA = {"synapse_model": "static_synapse", - "weight": 1.0 * g_AMPA_ex, - "delay":delay, - "receptor_type": receptor_types["AMPA"]} - -ee_syn_spec_NMDA = {"synapse_model": "static_synapse", - "weight": 1.0 * g_NMDA_ex, - "delay":delay, - "receptor_type": receptor_types["NMDA"]} - -exte_syn_spec = {"synapse_model": "static_synapse", - "weight":g_AMPA_ext_ex, - "delay":0.1, - "receptor_type": receptor_types["AMPA"]} - -exti_syn_spec = {"synapse_model": "static_synapse", - "weight":g_AMPA_ext_in, - "delay":0.1, - "receptor_type": receptor_types["AMPA"]} - +syn_spec_pot_AMPA = { + "synapse_model": "static_synapse", + "weight": w_plus * g_AMPA_ex, + "delay": delay, + "receptor_type": receptor_types["AMPA"], +} +syn_spec_pot_NMDA = { + "synapse_model": "static_synapse", + "weight": w_plus * g_NMDA_ex, + "delay": delay, + "receptor_type": receptor_types["NMDA"], +} + +syn_spec_dep_AMPA = { + "synapse_model": "static_synapse", + "weight": w_minus * g_AMPA_ex, + "delay": delay, + "receptor_type": receptor_types["AMPA"], +} + +syn_spec_dep_NMDA = { + "synapse_model": "static_synapse", + "weight": w_minus * g_NMDA_ex, + "delay": delay, + "receptor_type": receptor_types["NMDA"], +} + +ie_syn_spec = { + "synapse_model": "static_synapse", + "weight": -1.0 * g_GABA_ex, + "delay": delay, + "receptor_type": receptor_types["GABA"], +} + +ii_syn_spec = { + "synapse_model": "static_synapse", + "weight": -1.0 * g_GABA_in, + "delay": delay, + "receptor_type": receptor_types["GABA"], +} + +ei_syn_spec_AMPA = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_AMPA_in, + "delay": delay, + "receptor_type": receptor_types["AMPA"], +} + +ei_syn_spec_NMDA = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_NMDA_in, + "delay": delay, + "receptor_type": receptor_types["NMDA"], +} + +ee_syn_spec_AMPA = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_AMPA_ex, + "delay": delay, + "receptor_type": receptor_types["AMPA"], +} + +ee_syn_spec_NMDA = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_NMDA_ex, + "delay": delay, + "receptor_type": receptor_types["NMDA"], +} + +exte_syn_spec = { + "synapse_model": "static_synapse", + "weight": g_AMPA_ext_ex, + "delay": 0.1, + "receptor_type": receptor_types["AMPA"], +} + +exti_syn_spec = { + "synapse_model": "static_synapse", + "weight": g_AMPA_ext_in, + "delay": 0.1, + "receptor_type": receptor_types["AMPA"], +} ################################################## # Create connections # from external -nest.Connect(poisson_0, nonselective_pop + selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec) +nest.Connect( + poisson_0, nonselective_pop + selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec +) nest.Connect(poisson_0, inhibitory_pop, conn_spec="all_to_all", syn_spec=exti_syn_spec) nest.Connect(poisson_a, selective_pop1, conn_spec="all_to_all", syn_spec=exte_syn_spec) @@ -286,7 +321,9 @@ nest.Connect(selective_pop2, sr_selective2) # from inhibitory pop -nest.Connect(inhibitory_pop, selective_pop1 + selective_pop2 + nonselective_pop, conn_spec="all_to_all", syn_spec=ie_syn_spec) +nest.Connect( + inhibitory_pop, selective_pop1 + selective_pop2 + nonselective_pop, conn_spec="all_to_all", syn_spec=ie_syn_spec +) nest.Connect(inhibitory_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ii_syn_spec) nest.Connect(inhibitory_pop, sr_inhibitory) @@ -301,7 +338,7 @@ ################################################## # Run simulation -nest.Simulate(5000.) +nest.Simulate(5000.0) ################################################## @@ -332,12 +369,11 @@ s_NMDA_inhibitory = mm_inhibitory.get("events", "s_NMDA") - ################################################## # Plots # bins for histograms -res = 1.0 +res = 1.0 bins = np.arange(0, 4001, res) - 0.001 fig, ax = plt.subplots(ncols=2, nrows=2, sharex=True, sharey=True) @@ -347,68 +383,67 @@ num = NE * f * (res / 1000) hist1, _ = np.histogram(spikes_selective1, bins=bins) hist2, _ = np.histogram(spikes_selective2, bins=bins) -ax[0,0].plot(hist1 / num) -ax[0,0].set_title("Selective pop A") -ax[0,1].plot(hist2 / num) -ax[0,1].set_title("Selective pop B") +ax[0, 0].plot(hist1 / num) +ax[0, 0].set_title("Selective pop A") +ax[0, 1].plot(hist2 / num) +ax[0, 1].set_title("Selective pop B") # nonselective population -num = NE * (1 - 2*f) * res / 1000 +num = NE * (1 - 2 * f) * res / 1000 hist, _ = np.histogram(spikes_nonselective, bins=bins) -ax[1,0].plot(hist / num) -ax[1,0].set_title("Nonselective pop") +ax[1, 0].plot(hist / num) +ax[1, 0].set_title("Nonselective pop") # inhibitory population num = NI * res / 1000 hist, _ = np.histogram(spikes_inhibitory, bins=bins) -ax[1,1].plot(hist / num) -ax[1,1].set_title("Inhibitory pop") +ax[1, 1].plot(hist / num) +ax[1, 1].set_title("Inhibitory pop") fig, ax = plt.subplots(ncols=4, nrows=4, sharex=True, sharey="row") fig.tight_layout() # AMPA conductances -ax[0,0].plot(s_AMPA_selective1) -ax[0,1].plot(s_AMPA_selective2) -ax[0,2].plot(s_AMPA_nonselective) -ax[0,3].plot(s_AMPA_inhibitory) +ax[0, 0].plot(s_AMPA_selective1) +ax[0, 1].plot(s_AMPA_selective2) +ax[0, 2].plot(s_AMPA_nonselective) +ax[0, 3].plot(s_AMPA_inhibitory) # NMDA conductances -ax[1,0].plot(s_NMDA_selective1) -ax[1,1].plot(s_NMDA_selective2) -ax[1,2].plot(s_NMDA_nonselective) -ax[1,3].plot(s_NMDA_inhibitory) +ax[1, 0].plot(s_NMDA_selective1) +ax[1, 1].plot(s_NMDA_selective2) +ax[1, 2].plot(s_NMDA_nonselective) +ax[1, 3].plot(s_NMDA_inhibitory) # GABA conductances -ax[2,0].plot(s_GABA_selective1) -ax[2,1].plot(s_GABA_selective2) -ax[2,2].plot(s_GABA_nonselective) -ax[2,3].plot(s_GABA_inhibitory) +ax[2, 0].plot(s_GABA_selective1) +ax[2, 1].plot(s_GABA_selective2) +ax[2, 2].plot(s_GABA_nonselective) +ax[2, 3].plot(s_GABA_inhibitory) # Membrane potential -ax[3,0].plot(vm_selective1) -ax[3,1].plot(vm_selective2) -ax[3,2].plot(vm_nonselective) -ax[3,3].plot(vm_inhibitory) +ax[3, 0].plot(vm_selective1) +ax[3, 1].plot(vm_selective2) +ax[3, 2].plot(vm_nonselective) +ax[3, 3].plot(vm_inhibitory) -ax[0,0].set_ylabel("S_AMPA") -ax[1,0].set_ylabel("S_NMDA") -ax[2,0].set_ylabel("S_GABA") -ax[3,0].set_ylabel("V_m") +ax[0, 0].set_ylabel("S_AMPA") +ax[1, 0].set_ylabel("S_NMDA") +ax[2, 0].set_ylabel("S_GABA") +ax[3, 0].set_ylabel("V_m") -ax[0,0].set_title("Selective pop1") -ax[0,1].set_title("Selective pop2") -ax[0,2].set_title("Nonselective pop") -ax[0,3].set_title("Inhibitory pop") +ax[0, 0].set_title("Selective pop1") +ax[0, 1].set_title("Selective pop2") +ax[0, 2].set_title("Nonselective pop") +ax[0, 3].set_title("Inhibitory pop") -ax[0,0].set_title("Selective pop1") -ax[0,1].set_title("Selective pop2") -ax[0,2].set_title("Nonselective pop") -ax[0,3].set_title("Inhibitory pop") +ax[0, 0].set_title("Selective pop1") +ax[0, 1].set_title("Selective pop2") +ax[0, 2].set_title("Nonselective pop") +ax[0, 3].set_title("Inhibitory pop") plt.show() - diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index e2959ff88d..90f0c1b807 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -34,8 +34,8 @@ from scipy.special import expn, gamma -w_ex = 40. -w_in = -15. +w_ex = 40.0 +w_in = -15.0 alpha = 0.5 tau_AMPA = 2.0 tau_GABA = 5.0 @@ -48,7 +48,7 @@ def s_soln(w, t, tau): Solution for synaptic variables """ isyn = np.zeros_like(t) - useinds = t >= 0. + useinds = t >= 0.0 isyn[useinds] = w * np.exp(-t[useinds] / tau) return isyn @@ -60,8 +60,8 @@ def spiketrain_response(t, tau, spiketrain, w): response = np.zeros_like(t) for sp in spiketrain: - t_ = t - 1. - sp - zero_arg = t_ == 0. + t_ = t - 1.0 - sp + zero_arg = t_ == 0.0 response += s_soln(w, t_, tau) return response @@ -72,53 +72,55 @@ def spiketrain_response_nmda(t, spiketrain): """ tr = tau_rise_NMDA / tau_decay_NMDA at = alpha * tau_rise_NMDA - k_0 = -expn(tr, at) * at + at**tr * gamma(1 - tr) + k_0 = -expn(tr, at) * at + at ** tr * gamma(1 - tr) k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 - + response = np.zeros_like(t) for sp in spiketrain: - t_ = t - 1. - sp - zero_arg = t_ == 0. + t_ = t - 1.0 - sp + zero_arg = t_ == 0.0 s0 = response[zero_arg] w = k_0 + k_1 * s0 response += s_soln(w, t_, tau_decay_NMDA) response *= w_ex return response + def test_wang(): # Create 2 neurons, so that the Wang dynamics are present - nrn1 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, - "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_decay_NMDA, - "tau_rise_NMDA": tau_rise_NMDA}) - - nrn2 = nest.Create("iaf_wang_2002", {"tau_AMPA": tau_AMPA, - "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_decay_NMDA, - "tau_rise_NMDA": tau_rise_NMDA, - "t_ref": 0.}) + nrn1 = nest.Create( + "iaf_wang_2002", + {"tau_AMPA": tau_AMPA, "tau_GABA": tau_GABA, "tau_decay_NMDA": tau_decay_NMDA, "tau_rise_NMDA": tau_rise_NMDA}, + ) + + nrn2 = nest.Create( + "iaf_wang_2002", + { + "tau_AMPA": tau_AMPA, + "tau_GABA": tau_GABA, + "tau_decay_NMDA": tau_decay_NMDA, + "tau_rise_NMDA": tau_rise_NMDA, + "t_ref": 0.0, + }, + ) receptor_types = nrn1.get("receptor_types") - - pg = nest.Create("poisson_generator", {"rate": 50.}) + pg = nest.Create("poisson_generator", {"rate": 50.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) - mm1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], - "interval": 0.1, - "time_in_steps": True}) - mm2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], - "interval": 0.1, - "time_in_steps": True}) + mm1 = nest.Create( + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + ) + mm2 = nest.Create( + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + ) - ampa_syn_spec = {"weight": w_ex, - "receptor_type": receptor_types["AMPA"]} + ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} - gaba_syn_spec = {"weight": w_in, - "receptor_type": receptor_types["GABA"]} + gaba_syn_spec = {"weight": w_in, "receptor_type": receptor_types["GABA"]} - nmda_syn_spec = {"weight": w_ex, - "receptor_type": receptor_types["NMDA"]} + nmda_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["NMDA"]} nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) nest.Connect(nrn1, sr) @@ -128,7 +130,7 @@ def test_wang(): nest.Connect(mm1, nrn1) nest.Connect(mm2, nrn2) - nest.Simulate(1000.) + nest.Simulate(1000.0) spikes = sr.get("events", "times") * nest.resolution @@ -139,10 +141,11 @@ def test_wang(): gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) import matplotlib.pyplot as plt + plt.plot(mm2.events["s_NMDA"]) plt.plot(nmda_soln) plt.show() - nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) - nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) - nptest.assert_array_almost_equal(nmda_soln, mm2.events["s_NMDA"]) + nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) + nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) + nptest.assert_array_almost_equal(nmda_soln, mm2.events["s_NMDA"]) diff --git a/testsuite/pytests/test_iaf_wang_2002_exact.py b/testsuite/pytests/test_iaf_wang_2002_exact.py index 5632218cd0..2bb4dd47bd 100644 --- a/testsuite/pytests/test_iaf_wang_2002_exact.py +++ b/testsuite/pytests/test_iaf_wang_2002_exact.py @@ -35,41 +35,43 @@ def test_multiple_NMDA_ports(self): Check that setting multiple NMDA receptors works """ # Create the new model, noise and detectors - neuron = nest.Create('iaf_wang_2002') - poiss = nest.Create('poisson_generator') - poiss.rate = 6400. + neuron = nest.Create("iaf_wang_2002") + poiss = nest.Create("poisson_generator") + poiss.rate = 6400.0 - voltmeter = nest.Create('voltmeter') - voltmeter.set(record_from=['V_m', 'g_AMPA', 'g_GABA', 'NMDA_sum']) + voltmeter = nest.Create("voltmeter") + voltmeter.set(record_from=["V_m", "g_AMPA", "g_GABA", "NMDA_sum"]) # Connect to NMDA receptor several times to check that we create new ports every time. - receptors = neuron.get('receptor_types') + receptors = neuron.get("receptor_types") - nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['AMPA']}) - nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['GABA']}) - nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['NMDA']}) - nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['NMDA']}) - nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['NMDA']}) - nest.Connect(poiss, neuron, syn_spec={'receptor_type': receptors['NMDA']}) + nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["AMPA"]}) + nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["GABA"]}) + nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["NMDA"]}) + nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["NMDA"]}) + nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["NMDA"]}) + nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["NMDA"]}) nest.Connect(voltmeter, neuron) # Check if NMDA sum is 0 before simulating - self.assertEqual(neuron.NMDA_sum, 0.) + self.assertEqual(neuron.NMDA_sum, 0.0) # Simulate - nest.Simulate(1000.) + nest.Simulate(1000.0) # Check sum NMDA after simulating - self.assertTrue(neuron.NMDA_sum > 0.) + self.assertTrue(neuron.NMDA_sum > 0.0) # Check g_AMPA after simulating - self.assertTrue(voltmeter.get('events', 'g_AMPA').any() > 0.) + self.assertTrue(voltmeter.get("events", "g_AMPA").any() > 0.0) + def suite(): - suite = unittest.makeSuite(IafWang2002TestCase, 'test') + suite = unittest.makeSuite(IafWang2002TestCase, "test") return suite + def run(): runner = unittest.TextTestRunner(verbosity=2) runner.run(suite()) From 24d21ce84e95cb28a33a1835496ad8562afbfd97 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 12:27:17 +0100 Subject: [PATCH 059/184] clang-format --- models/iaf_wang_2002.cpp | 22 +++++++------- models/iaf_wang_2002.h | 54 ++++++++++++++++++++-------------- models/iaf_wang_2002_exact.cpp | 4 +-- models/iaf_wang_2002_exact.h | 54 ++++++++++++++++++++-------------- 4 files changed, 77 insertions(+), 57 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 7dd2eb9030..42f32ddd70 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -25,8 +25,8 @@ #ifdef HAVE_GSL // Includes from libnestutil: -#include "dictdatum.h" #include "dict_util.h" +#include "dictdatum.h" #include "numerics.h" // Includes from nestkernel: @@ -93,7 +93,7 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode const double I_rec_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; const double I_rec_NMDA = ( y[ S::V_m ] - node.P_.E_ex ) - / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * y[ S::s_NMDA ]; + / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * y[ S::s_NMDA ]; const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA + node.B_.I_stim_; @@ -123,7 +123,7 @@ nest::iaf_wang_2002::Parameters_::Parameters_() , tau_AMPA( 2.0 ) // ms , tau_GABA( 5.0 ) // ms , tau_decay_NMDA( 100 ) // ms - , tau_rise_NMDA( 2 ) // ms + , tau_rise_NMDA( 2 ) // ms , alpha( 0.5 ) // 1 / ms , conc_Mg2( 1 ) // mM , gsl_error_tol( 1e-3 ) @@ -251,7 +251,7 @@ nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const def< double >( d, names::V_m, y_[ V_m ] ); // Membrane potential def< double >( d, names::s_AMPA, y_[ s_AMPA ] ); def< double >( d, names::s_GABA, y_[ s_GABA ] ); - def< double >( d, names::s_NMDA, y_[ s_NMDA] ); + def< double >( d, names::s_NMDA, y_[ s_NMDA ] ); } void @@ -388,9 +388,9 @@ nest::iaf_wang_2002::pre_run_hook() const double at = P_.alpha * P_.tau_rise_NMDA; const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; - V_.S_jump_1 = exp(-P_.alpha * P_.tau_rise_NMDA) - 1; - V_.S_jump_0 = -boost::math::expint(tau_rise_tau_dec, at) * at - + pow(at, tau_rise_tau_dec) * boost::math::tgamma(1 - tau_rise_tau_dec); + V_.S_jump_1 = exp( -P_.alpha * P_.tau_rise_NMDA ) - 1; + V_.S_jump_0 = -boost::math::expint( tau_rise_tau_dec, at ) * at + + pow( at, tau_rise_tau_dec ) * boost::math::tgamma( 1 - tau_rise_tau_dec ); } void @@ -413,7 +413,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to for ( long lag = from; lag < to; ++lag ) { double t = 0.0; - + // numerical integration with adaptive step size control: // ------------------------------------------------------ // gsl_odeiv_evolve_apply performs only a single numerical @@ -435,7 +435,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to &t, // from t B_.step_, // to t <= step &B_.integration_step_, // integration step size - S_.y_ ); // neuronal state + S_.y_ ); // neuronal state if ( status != GSL_SUCCESS ) { @@ -462,7 +462,7 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to S_.y_[ State_::V_m ] = P_.V_reset; // get previous spike time - double t_lastspike = get_spiketime_ms(); + double t_lastspike = get_spiketime_ms(); // log spike with ArchivingNode set_spiketime( Time::step( origin.get_steps() + lag + 1 ) ); @@ -510,7 +510,7 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) { B_.spikes_[ AMPA - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); } - else + else { B_.spikes_[ GABA - 1 ].add_value( steps, -e.get_weight() * e.get_multiplicity() ); } diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 7bca23552a..062e846a30 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -84,23 +84,33 @@ The membrane potential and synaptic variables evolve according to C_\mathrm{m} \frac{dV(t)}{dt} &= -g_\mathrm{L} (V(t) - V_\mathrm{L}) - I_\mathrm{syn} (t) \\[3ex] I_\mathrm{syn}(t) &= I_\mathrm{AMPA}(t) + I_\mathrm{NMDA}(t) + I_\mathrm{GABA}(t) (t) \\[3ex] I_\mathrm{AMPA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{AMPA}}(t) \\[3ex] - I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] - I_\mathrm{GABA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] - \frac{dS_{j,\mathrm{AMPA}}}{dt} &= -\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] + I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in +\Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] I_\mathrm{GABA} &= (V(t) - V_E)\sum_{j \in +\Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] \frac{dS_{j,\mathrm{AMPA}}}{dt} &= +-\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t +- t_j^k) \\[3ex] \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in +\Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] -where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. +where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory +neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. .. math:: k_0 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 \\[3ex] - k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} \Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] + k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} +\Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - +\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] -where :math:`\mathrm{E_N}` is the generalized exponential integral (https://en.wikipedia.org/wiki/Exponential_integral#Generalization), and :math:`\Gamma` is the gamma-function (https://en.wikipedia.org/wiki/Gamma_function). For these values of :math:`k_0` and :math:`k_1`, the approximate model will approach the exact model for large t. +where :math:`\mathrm{E_N}` is the generalized exponential integral +(https://en.wikipedia.org/wiki/Exponential_integral#Generalization), and :math:`\Gamma` is the gamma-function +(https://en.wikipedia.org/wiki/Gamma_function). For these values of :math:`k_0` and :math:`k_1`, the approximate model +will approach the exact model for large t. -The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. +The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, +:math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. +Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. Parameters @@ -141,8 +151,8 @@ The following values can be recorded. =========== =========================================================== .. note:: - :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the - variables is thus done by changing the weights. + :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST +model, so setting the variables is thus done by changing the weights. Sends +++++ @@ -183,14 +193,14 @@ class iaf_wang_2002 : public ArchivingNode * see http://www.gotw.ca/gotw/005.htm. */ - using Node::handles_test_event; using Node::handle; + using Node::handles_test_event; //! Used to validate that we can send SpikeEvent to desired target:port. size_t send_test_event( Node&, size_t, synindex, bool ) override; void handle( SpikeEvent& ) override; //!< accept spikes - void handle( CurrentEvent& ) override; //!< accept current + void handle( CurrentEvent& ) override; //!< accept current void handle( DataLoggingRequest& ) override; //!< allow recording with multimeter size_t handles_test_event( SpikeEvent&, size_t ) override; @@ -205,10 +215,10 @@ class iaf_wang_2002 : public ArchivingNode void set_status( const DictionaryDatum& ) override; bool - is_off_grid() const override - { - return true; - } + is_off_grid() const override + { + return true; + } private: void init_state_() override; @@ -219,7 +229,7 @@ class iaf_wang_2002 : public ArchivingNode /** * Synapse types to connect to - **/ + **/ enum SynapseTypes { INF_SPIKE_RECEPTOR = 0, @@ -289,9 +299,9 @@ class iaf_wang_2002 : public ArchivingNode }; double y_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver - double s_NMDA_pre; // for determining (unweighted) alpha * (1 - s_NMDA) term on - // pre-synaptic side - int r_; //!< number of refractory steps remaining + double s_NMDA_pre; // for determining (unweighted) alpha * (1 - s_NMDA) term on + // pre-synaptic side + int r_; //!< number of refractory steps remaining State_( const Parameters_& ); //!< Default initialization State_( const State_& ); @@ -352,7 +362,7 @@ class iaf_wang_2002 : public ArchivingNode double I_stim_; }; -// Variables class ------------------------------------------------------- + // Variables class ------------------------------------------------------- /** * Internal variables of the model. diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index c237ff20ca..f1408b85d3 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -25,8 +25,8 @@ #ifdef HAVE_GSL // Includes from libnestutil: -#include "dictdatum.h" #include "dict_util.h" +#include "dictdatum.h" #include "numerics.h" // Includes from nestkernel: @@ -555,7 +555,7 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) { B_.spikes_[ AMPA - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); } - else + else { B_.spikes_[ GABA - 1 ].add_value( steps, -e.get_weight() * e.get_multiplicity() ); } diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 59e21e122e..78f314a980 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -52,7 +52,7 @@ namespace nest * @note No point in declaring it inline, since it is called * through a function pointer. * @param void* Pointer to model neuron instance. -**/ + **/ extern "C" inline int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); @@ -84,19 +84,28 @@ The membrane potential and synaptic variables evolve according to C_\mathrm{m} \frac{dV(t)}{dt} &= -g_\mathrm{L} (V(t) - V_\mathrm{L}) - I_\mathrm{syn} (t) \\[3ex] I_\mathrm{syn}(t) &= I_\mathrm{AMPA}(t) + I_\mathrm{NMDA}(t) + I_\mathrm{GABA}(t) (t) \\[3ex] I_\mathrm{AMPA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{AMPA}}(t) \\[3ex] - I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] - I_\mathrm{GABA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] - \frac{dS_{j,\mathrm{AMPA}}}{dt} &= -\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}}+ \alpha x_j (1 - S_{j,\mathrm{NMDA}})\\[3ex] - \frac{dx_j}{dt} &= - \frac{x_j}{\tau_\mathrm{NMDA,rise}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) + I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in +\Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] I_\mathrm{GABA} &= (V(t) - V_E)\sum_{j \in +\Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] \frac{dS_{j,\mathrm{AMPA}}}{dt} &= +-\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t +- t_j^k) \\[3ex] \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}}+ \alpha x_j (1 +- S_{j,\mathrm{NMDA}})\\[3ex] \frac{dx_j}{dt} &= - \frac{x_j}{\tau_\mathrm{NMDA,rise}} + \sum_{k \in \Delta_j} \delta +(t - t_j^k) -where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. +where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory +neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. -Since :math:`S_{j,\mathrm{AMPA}}` and :math:`S_{j,\mathrm{GABA}}` are piecewise exponential functions, the sums are also a piecewise exponential function, and can be stored in a single synaptic variable each, :math:`S_{\mathrm{AMPA}}` and :math:`S_{\mathrm{GABA}}` respectively. The sum over :math:`S_{j,\mathrm{NMDA}}` does not have a simple expression, and cannot be simplified. Therefore, for each synapse, we need to integrate separate state variable, which makes the model slow. +Since :math:`S_{j,\mathrm{AMPA}}` and :math:`S_{j,\mathrm{GABA}}` are piecewise exponential functions, the sums are also +a piecewise exponential function, and can be stored in a single synaptic variable each, :math:`S_{\mathrm{AMPA}}` and +:math:`S_{\mathrm{GABA}}` respectively. The sum over :math:`S_{j,\mathrm{NMDA}}` does not have a simple expression, and +cannot be simplified. Therefore, for each synapse, we need to integrate separate state variable, which makes the model +slow. -The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. +The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, +:math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. +Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. Parameters @@ -137,12 +146,13 @@ The following values can be recorded. =========== =========================================================== .. note:: - It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when creating the model, while the - different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be set by the user. + It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when +creating the model, while the different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be +set by the user. .. note:: - :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the - variables is thus done by changing the weights. + :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST +model, so setting the variables is thus done by changing the weights. Sends +++++ @@ -183,12 +193,12 @@ class iaf_wang_2002_exact : public ArchivingNode * see http://www.gotw.ca/gotw/005.htm. */ - using Node::handles_test_event; using Node::handle; + using Node::handles_test_event; /** * Used to validate that we can send SpikeEvent to desired target:port. - **/ + **/ size_t send_test_event( Node& target, size_t receptor_type, synindex, bool ) override; void handle( SpikeEvent& ) override; //!< accept spikes @@ -215,7 +225,7 @@ class iaf_wang_2002_exact : public ArchivingNode /** * Synapse types to connect to - **/ + **/ enum SynapseTypes { INF_SPIKE_RECEPTOR = 0, @@ -254,7 +264,7 @@ class iaf_wang_2002_exact : public ArchivingNode /** * Initialize parameters to their default values. - **/ + **/ Parameters_(); void get( DictionaryDatum& ) const; //!< Store current values in dictionary @@ -325,7 +335,7 @@ class iaf_wang_2002_exact : public ArchivingNode /** * Logger for all analog data - **/ + **/ UniversalDataLogger< iaf_wang_2002_exact > logger_; // ----------------------------------------------------------------------- @@ -431,13 +441,13 @@ iaf_wang_2002_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) { if ( receptor_type == NMDA ) { - // give each NMDA synapse a unique rport, starting from 2 (num_ports_ is initialized to 2) + // give each NMDA synapse a unique rport, starting from 2 (num_ports_ is initialized to 2) ++S_.num_ports_; return S_.num_ports_; } - else + else { - return receptor_type; + return receptor_type; } } } From 7c9c02ac3d1a03c3b11ef3f04f5b4ae7dfbf6e20 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 12:56:37 +0100 Subject: [PATCH 060/184] formatting --- pynest/examples/wang_decision_making.py | 6 +++--- testsuite/pytests/test_iaf_wang_2002.py | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 3acb81aef0..6a731f8882 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -35,15 +35,15 @@ References ~~~~~~~~~~ -.. [1] Wang X-J (2002). Probabilistic Decision Making by Slow Reverberation in -Cortical Circuits. Neuron, Volume 36, Issue 5, Pages 955-968. +.. [1] Wang X-J (2002). Probabilistic Decision Making by Slow Reverberation in +Cortical Circuits. Neuron, Volume 36, Issue 5, Pages 955-968. https://doi.org/10.1016/S0896-6273(02)01092-9. """ -import nest import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpec +import nest import numpy as np np.random.seed(1234) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 90f0c1b807..d7ddb46a41 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -33,7 +33,6 @@ import pytest from scipy.special import expn, gamma - w_ex = 40.0 w_in = -15.0 alpha = 0.5 @@ -72,7 +71,7 @@ def spiketrain_response_nmda(t, spiketrain): """ tr = tau_rise_NMDA / tau_decay_NMDA at = alpha * tau_rise_NMDA - k_0 = -expn(tr, at) * at + at ** tr * gamma(1 - tr) + k_0 = -expn(tr, at) * at + at**tr * gamma(1 - tr) k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 response = np.zeros_like(t) From 6bee519bb09ef3d86188067e3ba92a69bff26a38 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 12:56:51 +0100 Subject: [PATCH 061/184] test for exact version --- testsuite/pytests/test_iaf_wang_2002_exact.py | 160 +++++++++++------- 1 file changed, 101 insertions(+), 59 deletions(-) diff --git a/testsuite/pytests/test_iaf_wang_2002_exact.py b/testsuite/pytests/test_iaf_wang_2002_exact.py index 2bb4dd47bd..877f175b52 100644 --- a/testsuite/pytests/test_iaf_wang_2002_exact.py +++ b/testsuite/pytests/test_iaf_wang_2002_exact.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# test_iaf_wang_2002.py +# test_iaf_wang_2002_exact.py # # This file is part of NEST. # @@ -19,63 +19,105 @@ # You should have received a copy of the GNU General Public License # along with NEST. If not, see . -import unittest -import nest -import numpy as np - - -class IafWang2002TestCase(unittest.TestCase): - """Tests for iaf_wang_2002""" - - def setup(self): - nest.ResetKernel() - - def test_multiple_NMDA_ports(self): - """ - Check that setting multiple NMDA receptors works - """ - # Create the new model, noise and detectors - neuron = nest.Create("iaf_wang_2002") - poiss = nest.Create("poisson_generator") - poiss.rate = 6400.0 - - voltmeter = nest.Create("voltmeter") - voltmeter.set(record_from=["V_m", "g_AMPA", "g_GABA", "NMDA_sum"]) - - # Connect to NMDA receptor several times to check that we create new ports every time. - receptors = neuron.get("receptor_types") - - nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["AMPA"]}) - nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["GABA"]}) - nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["NMDA"]}) - nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["NMDA"]}) - nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["NMDA"]}) - nest.Connect(poiss, neuron, syn_spec={"receptor_type": receptors["NMDA"]}) - - nest.Connect(voltmeter, neuron) +""" +Tests synaptic dynamics of iaf_wang_2002_exact. Since the neuron is conductance based, +it is impossible to analytically confirm the membrane potential. We can confirm the +AMPA and GABA values exactly, and upper and lower bounds on the NMDA values. +""" - # Check if NMDA sum is 0 before simulating - self.assertEqual(neuron.NMDA_sum, 0.0) - # Simulate - nest.Simulate(1000.0) - - # Check sum NMDA after simulating - self.assertTrue(neuron.NMDA_sum > 0.0) - - # Check g_AMPA after simulating - self.assertTrue(voltmeter.get("events", "g_AMPA").any() > 0.0) - - -def suite(): - suite = unittest.makeSuite(IafWang2002TestCase, "test") - return suite - - -def run(): - runner = unittest.TextTestRunner(verbosity=2) - runner.run(suite()) - - -if __name__ == "__main__": - run() +import nest +import numpy as np +import numpy.testing as nptest +import pytest +from scipy.special import expn, gamma + +w_ex = 40.0 +w_in = -15.0 +alpha = 0.5 +tau_AMPA = 2.0 +tau_GABA = 5.0 +tau_rise_NMDA = 1.8 +tau_decay_NMDA = 100.0 + + +def s_soln(w, t, tau): + """ + Solution for synaptic variables + """ + isyn = np.zeros_like(t) + useinds = t >= 0.0 + isyn[useinds] = w * np.exp(-t[useinds] / tau) + return isyn + + +def spiketrain_response(t, tau, spiketrain, w): + """ + Response for AMPA/NMDA + """ + + response = np.zeros_like(t) + for sp in spiketrain: + t_ = t - 1.0 - sp + zero_arg = t_ == 0.0 + response += s_soln(w, t_, tau) + return response + + +def test_wang(): + # Create 2 neurons, so that the Wang dynamics are present + nrn1 = nest.Create( + "iaf_wang_2002_exact", + {"tau_AMPA": tau_AMPA, "tau_GABA": tau_GABA, "tau_decay_NMDA": tau_decay_NMDA, "tau_rise_NMDA": tau_rise_NMDA}, + ) + + nrn2 = nest.Create( + "iaf_wang_2002_exact", + { + "tau_AMPA": tau_AMPA, + "tau_GABA": tau_GABA, + "tau_decay_NMDA": tau_decay_NMDA, + "tau_rise_NMDA": tau_rise_NMDA, + "t_ref": 0.0, + }, + ) + + receptor_types = nrn1.get("receptor_types") + + pg = nest.Create("poisson_generator", {"rate": 50.0}) + sr = nest.Create("spike_recorder", {"time_in_steps": True}) + + mm1 = nest.Create( + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + ) + mm2 = nest.Create( + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + ) + + ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} + + gaba_syn_spec = {"weight": w_in, "receptor_type": receptor_types["GABA"]} + nmda_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["NMDA"]} + + nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) + nest.Connect(nrn1, sr) + nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec) + nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec) + nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + nest.Connect(mm1, nrn1) + nest.Connect(mm2, nrn2) + + nest.Simulate(1000.0) + + spikes = sr.get("events", "times") * nest.resolution + + # compute analytical solutions + times = mm1.get("events", "times") * nest.resolution + ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) + gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) + + nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) + nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) + + assert mm2.events["s_NMDA"].max() < w_ex + assert mm2.events["s_NMDA"].min() >= 0.0 From cf8b82ab2b5d40de57c7340b4ce1db434cf02612 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 13:04:38 +0100 Subject: [PATCH 062/184] rename NMDA_sum --- models/iaf_wang_2002_exact.cpp | 4 ++-- models/iaf_wang_2002_exact.h | 4 ++-- nestkernel/nest_names.cpp | 1 - nestkernel/nest_names.h | 1 - pynest/examples/wang_decision_making.py | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index f1408b85d3..01cb3c2830 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -233,8 +233,8 @@ nest::iaf_wang_2002_exact::State_::get( DictionaryDatum& d ) const def< double >( d, names::s_GABA, ode_state_[ s_GABA ] ); // total NMDA sum - double s_NMDA = get_NMDA_sum(); - def< double >( d, names::NMDA_sum, s_NMDA ); + double s_NMDA = get_s_NMDA(); + def< double >( d, names::s_NMDA, s_NMDA ); } void diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 78f314a980..751bdfd64e 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -308,7 +308,7 @@ class iaf_wang_2002_exact : public ArchivingNode //! Get the sum of NMDA over all presynaptic neurons double - get_NMDA_sum() const + get_s_NMDA() const { double NMDA_sum = 0.0; for ( size_t i = s_NMDA_base; i < state_vec_size; i += 2 ) @@ -405,7 +405,7 @@ class iaf_wang_2002_exact : public ArchivingNode double get_s_NMDA_() const { - return S_.get_NMDA_sum(); + return S_.get_s_NMDA(); } // Data members ----------------------------------------------------------- diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 1e82ba03e5..01f89fcd3f 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -313,7 +313,6 @@ const Name music_channel( "music_channel" ); const Name N( "N" ); const Name NMDA( "NMDA" ); -const Name NMDA_sum( "NMDA_sum" ); const Name N_channels( "N_channels" ); const Name N_NaP( "N_NaP" ); const Name N_T( "N_T" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index dc29844c46..5303c0e8cd 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -339,7 +339,6 @@ extern const Name music_channel; extern const Name N; extern const Name NMDA; -extern const Name NMDA_sum; extern const Name N_channels; extern const Name N_NaP; extern const Name N_T; diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 6a731f8882..fa1500444c 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -42,9 +42,9 @@ """ import matplotlib.pyplot as plt -from matplotlib.gridspec import GridSpec import nest import numpy as np +from matplotlib.gridspec import GridSpec np.random.seed(1234) rng = np.random.default_rng() From d8774f8bf133934ea21d6adfb2e7f3566a31e9e6 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 13:05:02 +0100 Subject: [PATCH 063/184] correct copyright header --- pynest/examples/wang_decision_making.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index fa1500444c..6c7c7eb0c7 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# brunel_alpha_nest.py +# wang_decision_making.py # # This file is part of NEST. # From bd8e1011f36d7c5e8aa5bb1d4dc0f11a47b25232 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 13:13:39 +0100 Subject: [PATCH 064/184] remove plotting --- testsuite/pytests/test_iaf_wang_2002.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index d7ddb46a41..f9dfca9f10 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -139,12 +139,6 @@ def test_wang(): nmda_soln = spiketrain_response_nmda(times, spikes) gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) - import matplotlib.pyplot as plt - - plt.plot(mm2.events["s_NMDA"]) - plt.plot(nmda_soln) - plt.show() - nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) nptest.assert_array_almost_equal(nmda_soln, mm2.events["s_NMDA"]) From be9f99f5c4aae37a7c4615e58160482a1bf7ccb2 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 13:17:06 +0100 Subject: [PATCH 065/184] update docstring --- testsuite/pytests/test_iaf_wang_2002.py | 10 ++++++---- testsuite/pytests/test_iaf_wang_2002_exact.py | 8 +++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index f9dfca9f10..c93a415a6a 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -20,10 +20,12 @@ # along with NEST. If not, see . """ -Tests synaptic dynamics of iaf_wang_2002. Since the neuron is conductance based, -it is impossible to analytically confirm the membrane potential, but all the -synaptic currents can be computed analytically (for the simplified implementation -we use). The integration of the membrane potential is not tested here. +Tests synaptic dynamics of the approximate model iaf_wang_2002. + +Since the neuron is conductance based, it is impossible to analytically +confirm the membrane potential, but all the synaptic currents can be +computed analytically (for the simplified implementation we use). +The integration of the membrane potential is not tested here. """ diff --git a/testsuite/pytests/test_iaf_wang_2002_exact.py b/testsuite/pytests/test_iaf_wang_2002_exact.py index 877f175b52..39b0c86aa5 100644 --- a/testsuite/pytests/test_iaf_wang_2002_exact.py +++ b/testsuite/pytests/test_iaf_wang_2002_exact.py @@ -20,9 +20,11 @@ # along with NEST. If not, see . """ -Tests synaptic dynamics of iaf_wang_2002_exact. Since the neuron is conductance based, -it is impossible to analytically confirm the membrane potential. We can confirm the -AMPA and GABA values exactly, and upper and lower bounds on the NMDA values. +Tests synaptic dynamics of the exact model iaf_wang_2002_exact. + +Since the neuron is conductance based, it is impossible to analytically +confirm the membrane potential. We can confirm the AMPA and GABA values +exactly, and upper and lower bounds on the NMDA values. """ From 3743147ceb23d26aabbc2561758a259000f30fb1 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 13:21:36 +0100 Subject: [PATCH 066/184] flake8 --- testsuite/pytests/test_iaf_wang_2002.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index c93a415a6a..70d222d77d 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -23,7 +23,7 @@ Tests synaptic dynamics of the approximate model iaf_wang_2002. Since the neuron is conductance based, it is impossible to analytically -confirm the membrane potential, but all the synaptic currents can be +confirm the membrane potential, but all the synaptic currents can be computed analytically (for the simplified implementation we use). The integration of the membrane potential is not tested here. """ From a303a2995394034595aa9fb410eb15965ce87d24 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 7 Feb 2024 13:28:26 +0100 Subject: [PATCH 067/184] more comments --- pynest/examples/wang_decision_making.py | 77 +++++++++++++------------ 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 6c7c7eb0c7..19bedf1956 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -58,50 +58,51 @@ ################################################## # Set parameter values, taken from [1]_. -# conductances -g_AMPA_ex = 0.05 -g_AMPA_ext_ex = 2.1 -g_NMDA_ex = 0.165 -g_GABA_ex = 1.3 - -g_AMPA_in = 0.04 -g_AMPA_ext_in = 1.62 -g_NMDA_in = 0.13 -g_GABA_in = 1.0 +# conductances excitatory population +g_AMPA_ex = 0.05 # recurrent AMPA conductance +g_AMPA_ext_ex = 2.1 # external AMPA conductance +g_NMDA_ex = 0.165 # recurrent GABA conductance +g_GABA_ex = 1.3 # recurrent GABA conductance + +# conductances inhibitory population +g_AMPA_in = 0.04 # recurrent AMPA conductance +g_AMPA_ext_in = 1.62 # external AMPA conductance +g_NMDA_in = 0.13 # recurrent GABA conductance +g_GABA_in = 1.0 # recurrent GABA conductance # neuron parameters epop_params = { - "tau_GABA": 5.0, - "tau_AMPA": 2.0, - "tau_decay_NMDA": 100.0, - "tau_rise_NMDA": 2.0, - "alpha": 0.5, - "conc_Mg2": 1.0, - "g_L": 25.0, # leak conductance - "E_L": -70.0, # leak reversal potential - "E_ex": 0.0, # excitatory reversal potential - "E_in": -70.0, # inhibitory reversal potential - "V_reset": -55.0, # reset potential - "V_th": -50.0, # threshold - "C_m": 500.0, # membrane capacitance - "t_ref": 2.0, # refreactory period + "tau_GABA": 5.0, # GABA decay time constant + "tau_AMPA": 2.0, # AMPA decay time constant + "tau_decay_NMDA": 100.0, # NMDA decay time constant + "tau_rise_NMDA": 2.0, # NMDA rise time constant + "alpha": 0.5, # NMDA parameter + "conc_Mg2": 1.0, # Magnesium concentration + "g_L": 25.0, # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold + "C_m": 500.0, # membrane capacitance + "t_ref": 2.0, # refreactory period } ipop_params = { - "tau_GABA": 5.0, - "tau_AMPA": 2.0, - "tau_decay_NMDA": 100.0, - "tau_rise_NMDA": 2.0, - "alpha": 0.5, - "conc_Mg2": 1.0, - "g_L": 20.0, # leak conductance - "E_L": -70.0, # leak reversal potential - "E_ex": 0.0, # excitatory reversal potential - "E_in": -70.0, # inhibitory reversal potential - "V_reset": -55.0, # reset potential - "V_th": -50.0, # threshold - "C_m": 200.0, # membrane capacitance - "t_ref": 1.0, # refreactory period + "tau_GABA": 5.0, # GABA decay time constant + "tau_AMPA": 2.0, # AMPA decay time constant + "tau_decay_NMDA": 100.0, # NMDA decay time constant + "tau_rise_NMDA": 2.0, # NMDA rise time constant + "alpha": 0.5, # NMDA parameter + "conc_Mg2": 1.0, # Magnesium concentration + "g_L": 20.0, # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold + "C_m": 200.0, # membrane capacitance + "t_ref": 1.0, # refreactory period } # signals to the two different excitatory sub-populations From 041a7b4ba5fd58fcfc614edd51b604db6eb0c138 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 13 Feb 2024 11:24:01 +0100 Subject: [PATCH 068/184] fixes from review --- models/iaf_wang_2002.cpp | 35 +++++++++------------------------- models/iaf_wang_2002.h | 31 +++++++++--------------------- models/iaf_wang_2002_exact.cpp | 19 ++++-------------- models/iaf_wang_2002_exact.h | 30 ++++++++++++++--------------- 4 files changed, 37 insertions(+), 78 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 42f32ddd70..a24196911e 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -274,8 +274,6 @@ nest::iaf_wang_2002::iaf_wang_2002() , B_( *this ) { recordablesMap_.create(); - - calibrate(); } /* --------------------------------------------------------------------------- @@ -385,22 +383,14 @@ nest::iaf_wang_2002::pre_run_hook() assert( V_.RefractoryCounts_ >= 0 ); // helper vars - const double at = P_.alpha * P_.tau_rise_NMDA; + const double alpha_tau = P_.alpha * P_.tau_rise_NMDA; const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; V_.S_jump_1 = exp( -P_.alpha * P_.tau_rise_NMDA ) - 1; - V_.S_jump_0 = -boost::math::expint( tau_rise_tau_dec, at ) * at - + pow( at, tau_rise_tau_dec ) * boost::math::tgamma( 1 - tau_rise_tau_dec ); + V_.S_jump_0 = -boost::math::expint( tau_rise_tau_dec, alpha_tau ) * alpha_tau + + pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma( 1 - tau_rise_tau_dec ); } -void -nest::iaf_wang_2002::calibrate() -{ - B_.logger_.init(); - - // internals V_ - V_.RefractoryCounts_ = Time( Time::ms( ( double ) ( P_.t_ref ) ) ).get_steps(); -} /* --------------------------------------------------------------------------- * Update and spike handling functions @@ -445,9 +435,9 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // add incoming spikes - S_.y_[ State_::s_AMPA ] += B_.spikes_[ AMPA - 1 ].get_value( lag ); - S_.y_[ State_::s_GABA ] += B_.spikes_[ GABA - 1 ].get_value( lag ); - S_.y_[ State_::s_NMDA ] += B_.spikes_[ NMDA - 1 ].get_value( lag ); + S_.y_[ State_::s_AMPA ] += B_.spikes_[ SynapseTypes::AMPA - 1 ].get_value( lag ); + S_.y_[ State_::s_GABA ] += B_.spikes_[ SynapseTypes::GABA - 1 ].get_value( lag ); + S_.y_[ State_::s_NMDA ] += B_.spikes_[ SynapseTypes::NMDA - 1 ].get_value( lag ); if ( S_.r_ ) { @@ -462,12 +452,12 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to S_.y_[ State_::V_m ] = P_.V_reset; // get previous spike time - double t_lastspike = get_spiketime_ms(); + const double t_lastspike = get_spiketime_ms(); // log spike with ArchivingNode set_spiketime( Time::step( origin.get_steps() + lag + 1 ) ); - double t_spike = get_spiketime_ms(); + const double t_spike = get_spiketime_ms(); // compute current value of s_NMDA and add NMDA update to spike offset S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); @@ -506,14 +496,7 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) if ( rport < NMDA ) { - if ( e.get_weight() > 0 ) - { - B_.spikes_[ AMPA - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); - } - else - { - B_.spikes_[ GABA - 1 ].add_value( steps, -e.get_weight() * e.get_multiplicity() ); - } + B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); } else { diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 062e846a30..903b58a096 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -84,14 +84,10 @@ The membrane potential and synaptic variables evolve according to C_\mathrm{m} \frac{dV(t)}{dt} &= -g_\mathrm{L} (V(t) - V_\mathrm{L}) - I_\mathrm{syn} (t) \\[3ex] I_\mathrm{syn}(t) &= I_\mathrm{AMPA}(t) + I_\mathrm{NMDA}(t) + I_\mathrm{GABA}(t) (t) \\[3ex] I_\mathrm{AMPA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{AMPA}}(t) \\[3ex] - I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in -\Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] I_\mathrm{GABA} &= (V(t) - V_E)\sum_{j \in -\Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] \frac{dS_{j,\mathrm{AMPA}}}{dt} &= --\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t -- t_j^k) \\[3ex] \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in -\Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] - + I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] + I_\mathrm{GABA} &= (V(t) - V_I)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] \frac{dS_{j,\mathrm{AMPA}}}{dt} &= -\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}} + \sum_{k \in \Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. @@ -99,14 +95,9 @@ neurons respectively, and :math:`\Delta_j` is an index set for the spike times o .. math:: k_0 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 \\[3ex] - k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} -\Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - -\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] + k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} \Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] -where :math:`\mathrm{E_N}` is the generalized exponential integral -(https://en.wikipedia.org/wiki/Exponential_integral#Generalization), and :math:`\Gamma` is the gamma-function -(https://en.wikipedia.org/wiki/Gamma_function). For these values of :math:`k_0` and :math:`k_1`, the approximate model -will approach the exact model for large t. +where :math:`\mathrm{E_N}` is the `generalized exponential integral `_, and :math:`\Gamma` is the `gamma function `_. For these values of :math:`k_0` and :math:`k_1`, the approximate model will approach the exact model for large t. The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. @@ -174,7 +165,7 @@ References See also ++++++++ -iaf_cond_alpha, ht_neuron +iaf_wang_2002_exact EndUserDocs */ @@ -224,7 +215,6 @@ class iaf_wang_2002 : public ArchivingNode void init_state_() override; void pre_run_hook() override; void init_buffers_() override; - void calibrate(); void update( Time const&, const long, const long ) override; /** @@ -413,12 +403,9 @@ iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) ) { throw UnknownReceptorType( receptor_type, get_name() ); - return 0; - } - else - { - return receptor_type; } + + return receptor_type; } inline size_t diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 01cb3c2830..ca984622c1 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -95,7 +95,7 @@ nest::iaf_wang_2002_exact::Parameters_::Parameters_() nest::iaf_wang_2002_exact::State_::State_( const Parameters_& p ) : state_vec_size( 0 ) , ode_state_( nullptr ) - , num_ports_( 2 ) + , num_ports_( SynapseTypes::NMDA ) , r_( 0 ) { ode_state_ = new double[ s_NMDA_base ]; @@ -114,7 +114,7 @@ nest::iaf_wang_2002_exact::State_::State_( const State_& s ) , num_ports_( s.num_ports_ ) , r_( s.r_ ) { - assert( s.num_ports_ == 2 ); + assert( s.num_ports_ == SynapseTypes::NMDA ); assert( state_vec_size == s_NMDA_base ); ode_state_ = new double[ s_NMDA_base ]; @@ -256,8 +256,6 @@ nest::iaf_wang_2002_exact::iaf_wang_2002_exact() , B_( *this ) { recordablesMap_.create(); - - calibrate(); } /* --------------------------------------------------------------------------- @@ -311,7 +309,7 @@ nest::iaf_wang_2002_exact::init_state_() assert( S_.state_vec_size == State_::s_NMDA_base ); double* old_state = S_.ode_state_; - S_.state_vec_size = State_::s_NMDA_base + 2 * ( S_.num_ports_ - 2 ); + S_.state_vec_size = State_::s_NMDA_base + 2 * ( S_.num_ports_ - SynapseTypes::NMDA ); S_.ode_state_ = new double[ S_.state_vec_size ]; assert( S_.ode_state_ ); @@ -340,7 +338,7 @@ nest::iaf_wang_2002_exact::init_buffers_() B_.currents_.clear(); // includes resize - B_.weights_.resize( S_.num_ports_ - NMDA + 1, 0.0 ); + B_.weights_.resize( S_.num_ports_ - SynapseTypes::NMDA + 1, 0.0 ); B_.logger_.reset(); // includes resize ArchivingNode::clear_history(); @@ -394,15 +392,6 @@ nest::iaf_wang_2002_exact::pre_run_hook() assert( V_.RefractoryCounts >= 0 ); } -void -nest::iaf_wang_2002_exact::calibrate() -{ - B_.logger_.init(); - - // internals V_ - V_.RefractoryCounts = Time( Time::ms( ( double ) ( P_.t_ref ) ) ).get_steps(); -} - /* --------------------------------------------------------------------------- * Update and spike handling functions * --------------------------------------------------------------------------- */ diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 751bdfd64e..b13909fc56 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -85,14 +85,12 @@ The membrane potential and synaptic variables evolve according to I_\mathrm{syn}(t) &= I_\mathrm{AMPA}(t) + I_\mathrm{NMDA}(t) + I_\mathrm{GABA}(t) (t) \\[3ex] I_\mathrm{AMPA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{AMPA}}(t) \\[3ex] I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in -\Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] I_\mathrm{GABA} &= (V(t) - V_E)\sum_{j \in -\Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] \frac{dS_{j,\mathrm{AMPA}}}{dt} &= --\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t -- t_j^k) \\[3ex] \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}}+ \alpha x_j (1 -- S_{j,\mathrm{NMDA}})\\[3ex] \frac{dx_j}{dt} &= - \frac{x_j}{\tau_\mathrm{NMDA,rise}} + \sum_{k \in \Delta_j} \delta -(t - t_j^k) - + \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] + I_\mathrm{GABA} &= (V(t) - V_I)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] + \frac{dS_{j,\mathrm{AMPA}}}{dt} &=-\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}}+ \alpha x_j (1 - S_{j,\mathrm{NMDA}})\\[3ex] + \frac{dx_j}{dt} &= - \frac{x_j}{\tau_\mathrm{NMDA,rise}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. @@ -174,7 +172,7 @@ References See also ++++++++ -iaf_cond_alpha, ht_neuron +iaf_wang_2002 EndUserDocs */ @@ -220,7 +218,6 @@ class iaf_wang_2002_exact : public ArchivingNode void init_state_() override; void pre_run_hook() override; void init_buffers_() override; - void calibrate(); void update( Time const&, const long, const long ) override; /** @@ -285,13 +282,16 @@ class iaf_wang_2002_exact : public ArchivingNode */ struct State_ { - //! Symbolic indices to the elements of the state vector y + /** + * Symbolic indices to the elements of the state vector y + * (x_NMDA_1, G_NMDA_1), (x_NMDA_2, G_NMDA_2), (x_NMDA_3, G_NMDA_3), ..., (x_NMDA_j, G_NMDA_j) + */ enum StateVecElems { V_m = 0, s_AMPA, s_GABA, - s_NMDA_base, // (x_NMDA_1, G_NMDA_1), (x_NMDA_2, G_NMDA_2), (x_NMDA_3, G_NMDA_3), ..., (x_NMDA_j, G_NMDA_j) + s_NMDA_base, }; size_t state_vec_size; @@ -311,9 +311,9 @@ class iaf_wang_2002_exact : public ArchivingNode get_s_NMDA() const { double NMDA_sum = 0.0; - for ( size_t i = s_NMDA_base; i < state_vec_size; i += 2 ) + for ( size_t i = s_NMDA_base + 1; i < state_vec_size; i += 2 ) { - NMDA_sum += ode_state_[ i + 1 ]; + NMDA_sum += ode_state_[ i ]; } return NMDA_sum; } @@ -439,7 +439,7 @@ iaf_wang_2002_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) } else { - if ( receptor_type == NMDA ) + if ( receptor_type == SynapseTypes::NMDA ) { // give each NMDA synapse a unique rport, starting from 2 (num_ports_ is initialized to 2) ++S_.num_ports_; From 4810fe8f580bc3b4f7b61ae08d7adb35f9233de9 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 13 Feb 2024 13:34:26 +0100 Subject: [PATCH 069/184] update inhibitory weight signs --- models/iaf_wang_2002_exact.cpp | 2 +- models/iaf_wang_2002_exact.h | 2 +- testsuite/pytests/test_iaf_wang_2002.py | 7 +++++-- testsuite/pytests/test_iaf_wang_2002_exact.py | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index ca984622c1..d9856172fb 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -488,7 +488,7 @@ nest::iaf_wang_2002_exact::update( Time const& origin, const long from, const lo const size_t si = i - ( NMDA - 1 ); assert( si >= 0 ); - assert( State_::s_NMDA_base + si * 2 < S_.state_vec_size ); + assert( State_::s_NMDA_base + si * 2 <= S_.state_vec_size ); S_.ode_state_[ State_::s_NMDA_base + si * 2 ] += B_.spikes_.at( i ).get_value( lag ); } diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index b13909fc56..42c993e57c 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -441,7 +441,7 @@ iaf_wang_2002_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) { if ( receptor_type == SynapseTypes::NMDA ) { - // give each NMDA synapse a unique rport, starting from 2 (num_ports_ is initialized to 2) + // give each NMDA synapse a unique rport, starting from 3 (num_ports_ is initialized to 3) ++S_.num_ports_; return S_.num_ports_; } diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 70d222d77d..c46cc6e9bc 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -36,7 +36,7 @@ from scipy.special import expn, gamma w_ex = 40.0 -w_in = -15.0 +w_in = 15.0 alpha = 0.5 tau_AMPA = 2.0 tau_GABA = 5.0 @@ -73,8 +73,11 @@ def spiketrain_response_nmda(t, spiketrain): """ tr = tau_rise_NMDA / tau_decay_NMDA at = alpha * tau_rise_NMDA - k_0 = -expn(tr, at) * at + at**tr * gamma(1 - tr) + k_0 = -expn(0, at) * at + at**tr * gamma(1 - tr) + print(tr) k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 + print(expn(0, at)) + print(at) response = np.zeros_like(t) for sp in spiketrain: diff --git a/testsuite/pytests/test_iaf_wang_2002_exact.py b/testsuite/pytests/test_iaf_wang_2002_exact.py index 39b0c86aa5..8582f61db2 100644 --- a/testsuite/pytests/test_iaf_wang_2002_exact.py +++ b/testsuite/pytests/test_iaf_wang_2002_exact.py @@ -35,7 +35,7 @@ from scipy.special import expn, gamma w_ex = 40.0 -w_in = -15.0 +w_in = 15.0 alpha = 0.5 tau_AMPA = 2.0 tau_GABA = 5.0 From 55e5d603c5202521a23494a043fd06e32f6e7e76 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 13 Feb 2024 13:58:26 +0100 Subject: [PATCH 070/184] fix bug, wrong SynapseTypes:: logic --- models/iaf_wang_2002_exact.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index d9856172fb..a6a2c106c0 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -95,7 +95,7 @@ nest::iaf_wang_2002_exact::Parameters_::Parameters_() nest::iaf_wang_2002_exact::State_::State_( const Parameters_& p ) : state_vec_size( 0 ) , ode_state_( nullptr ) - , num_ports_( SynapseTypes::NMDA ) + , num_ports_( SynapseTypes::GABA ) // only AMPA/GABA for now, add NMDA later , r_( 0 ) { ode_state_ = new double[ s_NMDA_base ]; @@ -114,7 +114,7 @@ nest::iaf_wang_2002_exact::State_::State_( const State_& s ) , num_ports_( s.num_ports_ ) , r_( s.r_ ) { - assert( s.num_ports_ == SynapseTypes::NMDA ); + assert( s.num_ports_ == SynapseTypes::GABA ); assert( state_vec_size == s_NMDA_base ); ode_state_ = new double[ s_NMDA_base ]; @@ -309,7 +309,7 @@ nest::iaf_wang_2002_exact::init_state_() assert( S_.state_vec_size == State_::s_NMDA_base ); double* old_state = S_.ode_state_; - S_.state_vec_size = State_::s_NMDA_base + 2 * ( S_.num_ports_ - SynapseTypes::NMDA ); + S_.state_vec_size = State_::s_NMDA_base + 2 * ( S_.num_ports_ - SynapseTypes::GABA ); S_.ode_state_ = new double[ S_.state_vec_size ]; assert( S_.ode_state_ ); @@ -338,7 +338,7 @@ nest::iaf_wang_2002_exact::init_buffers_() B_.currents_.clear(); // includes resize - B_.weights_.resize( S_.num_ports_ - SynapseTypes::NMDA + 1, 0.0 ); + B_.weights_.resize( S_.num_ports_ - SynapseTypes::GABA + 1, 0.0 ); B_.logger_.reset(); // includes resize ArchivingNode::clear_history(); From 4536e5936625268d8faeb445a683271abee3df08 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 13 Feb 2024 14:11:58 +0100 Subject: [PATCH 071/184] specify AMPA/GABA by receptor_type instead of weight sign --- models/iaf_wang_2002_exact.cpp | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index a6a2c106c0..a3cb59e7de 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -538,25 +538,14 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) const double steps = e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ); const auto rport = e.get_rport(); - if ( rport < NMDA ) - { - if ( e.get_weight() > 0 ) - { - B_.spikes_[ AMPA - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); - } - else - { - B_.spikes_[ GABA - 1 ].add_value( steps, -e.get_weight() * e.get_multiplicity() ); - } - } - else - { - // spikes_ has 2 + N elements, where N is number of NMDA synapses - // rport starts at 1, so subtract one to get correct index - B_.spikes_[ rport - 1 ].add_value( steps, e.get_multiplicity() ); - // we need to scale each individual S_j variable by its weight, - // so we keep track of the weight. + B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); + + + if ( rport >= NMDA ) + // we need to scale each individual S_j variable by its weight, + // so we store them + { const size_t w_idx = rport - NMDA; if ( B_.weights_[ w_idx ] == 0.0 ) { From 301eb017866651798c386d42ff2661187aeba5a0 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 15 Feb 2024 18:07:56 +0100 Subject: [PATCH 072/184] change expn function to avoid truncation of n --- models/iaf_wang_2002.cpp | 6 ++++-- testsuite/pytests/test_iaf_wang_2002.py | 9 ++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index a24196911e..26dde512ae 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -44,7 +44,6 @@ // Includes from standard library #include -#include #include /* --------------------------------------------------------------------------- @@ -385,9 +384,12 @@ nest::iaf_wang_2002::pre_run_hook() // helper vars const double alpha_tau = P_.alpha * P_.tau_rise_NMDA; const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; + const double expint = boost::math::gamma_q(1 - tau_rise_tau_dec, alpha_tau) + * boost::math::tgamma(1 - tau_rise_tau_dec) * pow(alpha_tau, tau_rise_tau_dec - 1); + V_.S_jump_1 = exp( -P_.alpha * P_.tau_rise_NMDA ) - 1; - V_.S_jump_0 = -boost::math::expint( tau_rise_tau_dec, alpha_tau ) * alpha_tau + V_.S_jump_0 = -expint * alpha_tau + pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma( 1 - tau_rise_tau_dec ); } diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index c46cc6e9bc..d646fffb7e 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -33,7 +33,7 @@ import numpy as np import numpy.testing as nptest import pytest -from scipy.special import expn, gamma +from scipy.special import gamma, gammaincc w_ex = 40.0 w_in = 15.0 @@ -73,11 +73,10 @@ def spiketrain_response_nmda(t, spiketrain): """ tr = tau_rise_NMDA / tau_decay_NMDA at = alpha * tau_rise_NMDA - k_0 = -expn(0, at) * at + at**tr * gamma(1 - tr) - print(tr) + expn = gammaincc(1 - tr, at) * gamma(1 - tr) * at ** (tr - 1) + + k_0 = -expn * at + at**tr * gamma(1 - tr) k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 - print(expn(0, at)) - print(at) response = np.zeros_like(t) for sp in spiketrain: From 05403dad0c4082f6d3c6966dfda41e474ddec3a8 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 15 Feb 2024 19:10:05 +0100 Subject: [PATCH 073/184] begin model_details notebook, still missing a bit --- .../wong_approximate_implementation.ipynb | 327 ++++++++++++++++++ 1 file changed, 327 insertions(+) create mode 100644 doc/model_details/wong_approximate_implementation.ipynb diff --git a/doc/model_details/wong_approximate_implementation.ipynb b/doc/model_details/wong_approximate_implementation.ipynb new file mode 100644 index 0000000000..3f16689051 --- /dev/null +++ b/doc/model_details/wong_approximate_implementation.ipynb @@ -0,0 +1,327 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0dd90717-10b0-47da-b891-eec7bf86a8a5", + "metadata": {}, + "source": [ + "# Approximate NMDA dynamics\n", + "\n", + "In this notebook, we will describe the approximation we employ, and compare the dynamics to the exact implementation. The full sub-threshold dynamics are given by the following equations\n", + "\n", + "$$\\begin{align}\n", + " I_\\mathrm{syn}(t) &= \n", + " + I_\\mathrm{rec, AMPA}(t) \n", + " + I_\\mathrm{rec, NMDA}(t) \n", + " + I_\\mathrm{rec, GABA}(t) \\mathrm{,}\\\\[1.5ex]\n", + " I_\\mathrm{ext,AMPA} &= g_\\mathrm{ext,AMPA}(V(t) - V_E)S_{j,\\mathrm{ext, AMPA}}(t)\\mathrm{,}\\\\\n", + " I_\\mathrm{rec,AMPA} &= g_\\mathrm{rec,AMPA}(V(t) - V_E)\\sum_{j=1}^{N_E}w_jS_{j,\\mathrm{rec,AMPA}}(t) \\mathrm{,}\\\\\n", + " I_\\mathrm{rec,NMDA} &= \\frac{g_\\mathrm{rec,NMDA}(V(t) - V_E)}{1+[\\mathrm{Mg^{2+}}]\\mathrm{exp}(-0.062V(t))/3.57}\\sum_{j=1}^{N_E}w_jS_{j,\\mathrm{NMDA}}(t) \\mathrm{,}\\\\\n", + " I_\\mathrm{rec,GABA} &= g_\\mathrm{rec,GABA}(V(t) - V_E)\\sum_{j=1}^{N_E}w_jS_{j,\\mathrm{GABA}}(t) \\mathrm{.}\n", + "\\end{align}\n", + "$$\n", + "\n", + "where the variables $S_{j,\\mathrm{ext,AMPA}},S_{j,\\mathrm{rec,AMPA}},S_{j,\\mathrm{NMDA}},\\ \\mathrm{ and }\\ S_{j,\\mathrm{GABA}}$\n", + "are governed by the equations\n", + "\n", + "$$\\begin{align}\n", + " \\frac{dS_{j,\\mathrm{AMPA}}}{dt} &= -\\frac{S_{j,\\mathrm{AMPA}}}{\\tau_\\mathrm{AMPA}}+\\sum_k \\delta (t - t_j^k) \\mathrm{,} \\\\\n", + " \\frac{dS_{j,\\mathrm{GABA}}}{dt} &= -\\frac{S_{j,\\mathrm{GABA}}}{\\tau_\\mathrm{GABA}} + \\sum_k \\delta (t - t_j^k) \\mathrm{,} \\\\\n", + " \\frac{dS_{j,\\mathrm{NMDA}}}{dt} &= -\\frac{S_{j,\\mathrm{NMDA}}}{\\tau_\\mathrm{NMDA,decay}}+ \\alpha x_j (1 - S_{j,\\mathrm{NMDA}})\\mathrm{,}\\\\\n", + " \\frac{dx_j}{dt} &= - \\frac{x_j}{\\tau_\\mathrm{NMDA,rise}} + \\sum_k \\delta (t - t_j^k) \\mathrm{.}\n", + "\\end{align}\n", + "$$\n", + "\n", + "We will from now on only focus on the last two equations, which are the subjects of the approximation in the model. We drop the subscript NMDA in the following. Between spikes, plugging in the solution for $x$ on the interval $[0, t]$, we get the following equation for $S_j$\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dS_{j}}{dt} + \\bigg(\\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}}\\bigg] \\bigg) S_{j,\\mathrm{NMDA}} &= \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}}\\bigg] \\mathrm{,}\n", + "\\end{align}\n", + "$$\n", + "for which the formal solution can easily be found by an integrating factor:\n", + "$$\n", + " S_{j}(t) = \\mathrm{exp}\\Bigg[-\\int_0^t \\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] dt' \\Bigg] \n", + " \\Bigg( \\int_0^t \\mathrm{exp}\\Bigg[\\int_0^{t'} \\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t''}{\\tau_\\mathrm{r}} \\bigg] dt'' \\Bigg]\\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}}\\bigg] dt' + S_{j}^0 \\Bigg) \\mathrm{.}\n", + "$$\n", + "\n", + "The first and innermost integrals can be solved, which gives\n", + "$$\n", + " S_{j}(t) \n", + " = \n", + " \\mathrm{exp}\\Bigg[-\\frac{t}{\\tau_\\mathrm{d}} - \\alpha x_j^{k-1} \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", + " \\Bigg( \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha x_j^0 \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha x_j^0 dt' + S_{j}^0 \\Bigg) \\mathrm{.}\n", + "$$\n", + "\n", + "Since we have two different time scales in the exponential inside the remaining integral, there is no exact solution for arbitrary limits of integration. We would like to approximate this function with an exponential function, such that we can integrate the sum of multiple such functions in a single variable. Our approximate function will then have the dynamics\n", + "\n", + "$$\n", + "\\frac{d}{dt}\\hat{S_j} = - \\frac{\\hat{S_j}}{\\tau_d} + \\sum_k c_k \\delta (t - t_j^k)\n", + "$$\n", + "\n", + "WILL BE COMPLETED SHORTLY\n", + "\n", + "However, in the limit $t \\to \\infty$, it has the following solution (found by Mathematica)\n", + "\n", + "$$\n", + "\\lim_{t \\to \\infty} \\int_0^t \n", + " \\mathrm{exp}\\Bigg[t' \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha x_0 \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha x_0 dt' \\\\\n", + " =\n", + " \\mathrm{exp}\\Big[\\alpha x_0 \\tau_\\mathrm{r}\\Big] \\bigg( \n", + " -\\alpha x_0 \\tau_\\mathrm{r} \\mathrm{ExpEn}\\Big[\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}, \\alpha x_0 \\tau_\\mathrm{r} \\Big] \n", + " + (\\alpha x_0 \\tau_\\mathrm{r})^\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\mathrm{Gamma}\\Big[1 - \\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\Big] \\bigg) \\mathrm{.}\n", + "$$\n", + "\n", + "\n", + "The first term in the solution for $S_j$ obviously converges, so we get" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "524ec469-ba8d-4b0d-a9e9-1941828f16d5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -- N E S T --\n", + " Copyright (C) 2004 The NEST Initiative\n", + "\n", + " Version: 3.6.0-post0.dev0\n", + " Built: Feb 15 2024 17:55:17\n", + "\n", + " This program is provided AS IS and comes with\n", + " NO WARRANTY. See the file LICENSE for details.\n", + "\n", + " Problems or suggestions?\n", + " Visit https://www.nest-simulator.org\n", + "\n", + " Type 'nest.help()' to find out more about NEST.\n", + "\n" + ] + } + ], + "source": [ + "import nest\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3ec686e2-2ae2-4479-9b57-7d6151f7a1f1", + "metadata": {}, + "outputs": [], + "source": [ + "w_ext = 40.\n", + "w_ex = 1.\n", + "w_in = 15.\n", + "\n", + "params = {\"tau_AMPA\": 2.0,\n", + " \"tau_GABA\": 5.0,\n", + " \"tau_rise_NMDA\": 2.0,\n", + " \"tau_decay_NMDA\": 100.0,\n", + " \"conc_Mg2\": 1.0,\n", + " \"E_ex\": 0.0,\n", + " \"E_in\": -70.0,\n", + " \"E_L\": -70.0,\n", + " \"V_th\": -55.0,\n", + " \"C_m\": 500.0,\n", + " \"g_L\": 25.0,\n", + " \"V_reset\": -70.0,\n", + " \"alpha\": 0.5,\n", + " \"t_ref\": 2.0}" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "77c6bf6b-c422-46e3-a88e-4925e9bd7842", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Feb 15 18:17:24 NodeManager::add_node [Info]: \n", + " Neuron models emitting precisely timed spikes exist: the kernel property \n", + " off_grid_spiking has been set to true.\n", + " \n", + " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", + "\n", + "Feb 15 18:17:24 NodeManager::add_node [Info]: \n", + " Neuron models emitting precisely timed spikes exist: the kernel property \n", + " off_grid_spiking has been set to true.\n", + " \n", + " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", + "\n", + "Feb 15 18:17:24 NodeManager::prepare_nodes [Info]: \n", + " Preparing 8 nodes for simulation.\n", + "\n", + "Feb 15 18:17:24 SimulationManager::start_updating_ [Info]: \n", + " Number of local nodes: 8\n", + " Simulation time (ms): 1000\n", + " Number of OpenMP threads: 1\n", + " Number of MPI processes: 1\n", + "\n", + "Feb 15 18:17:24 SimulationManager::run [Info]: \n", + " Simulation finished.\n" + ] + } + ], + "source": [ + "nest.ResetKernel()\n", + "nest.rng_seed = 12345\n", + "\n", + "# pre-synaptic neuron, must be approximate model since the post-synaptic approximate model needs the offset\n", + "nrn1 = nest.Create(\"iaf_wang_2002\", params)\n", + "nrn2 = nest.Create(\"iaf_wang_2002\", params)\n", + "nrn3 = nest.Create(\"iaf_wang_2002_exact\", params)\n", + "\n", + "pg = nest.Create(\"poisson_generator\", {\"rate\": 50.})\n", + "sr = nest.Create(\"spike_recorder\", {\"time_in_steps\": True})\n", + "\n", + "mm1 = nest.Create(\"multimeter\", {\"record_from\": [\"V_m\", \"s_AMPA\", \"s_NMDA\", \"s_GABA\"], \"interval\": 0.1})\n", + "mm2 = nest.Create(\"multimeter\", {\"record_from\": [\"V_m\", \"s_AMPA\", \"s_NMDA\", \"s_GABA\"], \"interval\": 0.1})\n", + "mm3 = nest.Create(\"multimeter\", {\"record_from\": [\"V_m\", \"s_AMPA\", \"s_NMDA\", \"s_GABA\"], \"interval\": 0.1})\n", + "\n", + "ampa_ext_syn_spec = {\"synapse_model\": \"static_synapse\",\n", + " \"weight\": w_ext,\n", + " \"receptor_type\": 1}\n", + "\n", + "ampa_syn_spec = {\"synapse_model\": \"static_synapse\",\n", + " \"weight\": w_ex,\n", + " \"receptor_type\": 1}\n", + "\n", + "nmda_syn_spec = {\"synapse_model\": \"static_synapse\",\n", + " \"weight\": w_ex,\n", + " \"receptor_type\": 3}\n", + "\n", + "gaba_syn_spec = {\"synapse_model\": \"static_synapse\",\n", + " \"weight\": w_in,\n", + " \"receptor_type\": 2}\n", + "\n", + "nest.Connect(pg, nrn1, syn_spec=ampa_ext_syn_spec)\n", + "nest.Connect(nrn1, sr)\n", + "nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec)\n", + "nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec)\n", + "nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec)\n", + "nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec)\n", + "nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec)\n", + "nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec)\n", + "nest.Connect(mm1, nrn1)\n", + "\n", + "nest.Connect(mm2, nrn2)\n", + "nest.Connect(mm3, nrn3)\n", + "\n", + "nest.Simulate(1000.)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9df3957c-7903-4e7f-a767-e98d121dbbd0", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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m8jq1atJRkYG6dixI7FarexvP/zwQ7Jw4UKyfv168scff5BVq1aR3r17k86dOxOz2cyuN3fuXAKAZGZmkmeffZb88ssv5O233ybh4eGkb9++7LoHDhwg2dnZpG/fvmTXrl1k165d5MCBA+wxAiArVqxgt3vo0CESERFBsrKyyLJly8iWLVvIF198Qe644w5SV1fn9row28rKyiKjR48mP/zwA/nhhx9Iz549SWxsLKmpqWHX3bp1K9FoNGTw4MFk7dq1ZPPmzWTKlCkubWGO0d09cOHCBXZZZmYmSUlJIdnZ2WT58uVk27ZtZO/eveTUqVMkMjKStG/fnnz++edk06ZN5O677yYAyBtvvMH+3pdrJCMTTOR+W0bGu77dbreTUaNGEZVKRV566SXy66+/ksWLF7P9ntFoJIR47r+NRiPZvHkzAUCmTp3K9o1nz54lhBAyatQo0qZNG/Lxxx+T7du3kx9++IHMmTOHrFmzhhBCSGlpKdFqteSFF17gtbWyspLo9Xry7LPPsssyMzNJ27ZtSbdu3cjnn39OfvnlF3L77bcTAOSPP/5g1zt16hT517/+RdasWUO2b99ONm7cSKZOnUoUCgXZtm0bux7T16anp5Nrr72WfPvtt+Trr78mV111FVGr1WTnzp2EEEIKCgrI448/TgCQ7777jj3G2tpaQgghQ4YMIUOGDGG3a7FYyPXXX09UKhV55plnyE8//UTWr19P/v3vf5PVq1dLXrshQ4aQ+Ph40rFjR7Js2TLy22+/kUcffZQAIKtWrWLXa2xsJH369CEJCQnk7bffJr///jt57733SHR0NBk2bBix2+28Y+SOBxgAkLlz57KfuWOh559/nvz222/khx9+8Ppe8eUaych4S0CCfuvWrWTSpEkkPDycREdHk0ceeSRY7ZKRaTUwnf7u3buJxWIh9fX1ZOPGjaRNmzYkMjKSlJSUEEJoQQ+ALF++nPf71atXEwDk22+/5S3ft28fAUA++OADQggh33zzDQFADh065LYtdXV1JDIyksyYMYO3vFu3buT6669nPzNicezYsbz11q1bRwCQXbt2iW7fbrcTi8VC8vLyCADy448/st8xndjMmTN5v/nyyy8JAPLFF1+wy7p3787ruBnEOs1hw4aRmJgYUlZW5va4xWC21bNnT5743bt3LwHAGxB06dKF9O3bl1gsFt42xo8fT1JSUojNZuMdoxB3gl6pVJKcnBzeunfddRfRarUkPz+ft3zMmDEkLCyMnWjw9xrJyASC3G/LyNB407czIvzNN9/k/Xbt2rW8CX1v+u/y8nIXccgQERFBnnzyScn2Tp48mSQmJhKTycQue+ONN4hCoXDpm3Q6HcnLy2OXNTU1kbi4OMnn3Wq1EovFQoYPH05uvvlmdjnT16amppKmpiZ2eV1dHYmLiyM33HADu2zRokUufSWDUNB//vnnBAD55JNPJI9bjCFDhhAAZM+ePbzl3bp1I6NGjWI/L1y4kCgUCpdJG+Z6/fTTT7xj9EXQz5kzh7eet/cKIf5fIxkZd/jkcg8A+fn5WLBgAbKzszF8+HDk5eXhgw8+QHFxMZYtW+br5mRkLhmuueYaqNVqREZGYvz48UhOTsbPP/+MpKQk3nq33nor7/PGjRsRExODCRMmwGq1sv/69OmD5ORk1h2tT58+0Gg0ePjhh7Fq1SqcP3/epQ2RkZF44IEHsHLlStZdbOvWrThx4gSmT5/usv7EiRN5n3v16gXA6UoIAGVlZZg2bRrS09OhUqmgVquRmZkJADh58qTLNu+9917e5zvuuAMqlQrbtm0TPW9SGAwG/PHHH7jjjjv8jqsfN24clEol+1l4jGfPnsWpU6fYdnOvwdixY1FcXOy3i3uvXr3QqVMn3rKtW7di+PDhSE9P5y2fMmUKDAYDdu3axVvuzTWSkQkEud+WkXGPVN++detWAGBd4xluv/12hIeHsy7n3vTfUlx99dVYuXIlXnnlFezevRsWi8VlnRkzZqCsrAxff/01AMBut+PDDz/EuHHj2LA2hj59+iAjI4P9rNPp0KlTJ5d+ZdmyZbjiiiug0+nY/n/Lli2iff8tt9wCnU7Hfo6MjMSECRPwv//9DzabzafjBYCff/4ZOp0ODz74oM+/BYDk5GRcffXVvGW9evXiHePGjRvRo0cP9OnTh9f3jxo1ihcO4A/CsZ639wqDt9dIRsYbvBb0X331FUaMGIHs7Gx89NFHuPPOO3H69Gn88ccfuP/++6HX60PZThmZFufzzz/Hvn37cPDgQRQVFeHIkSMYNGgQb52wsDBERUXxlpWWlqKmpgYajQZqtZr3r6SkhI1Vb9++PX7//XckJibiscceQ/v27dG+fXu89957vO09/vjjqK+vx5dffgkAeP/999G2bVvceOONLm2Oj4/nfdZqtQCcydvsdjtGjhyJ7777Ds899xy2bNmCvXv3sjHoYknekpOTeZ9VKhXi4+NRWVkpfQJFqK6uhs1mQ9u2bX3+LYOnYywtLQUAPPPMMy7n/9FHHwUAl3wB3pKSkuKyrLKyUnR5amoq+70v7ZeR8Re535aR8YxU315ZWQmVSuUy4UxRFJKTk9n3ubf9tzvWrl2LyZMn49NPP8WAAQMQFxeH+++/HyUlJew6ffv2xeDBg7F06VIAtFjNzc0VncwX9isA3bdw+5W3334b//rXv9C/f398++232L17N/bt24fRo0d71fczy8xmMxoaGrw6Ti7l5eVITU2FQuGzbRGAd8dYWlqKI0eOuPT9kZGRIIT43fcDrv2/t/eKL+2XkfEWlbcrTpkyBePGjcMPP/yAsWPH+v0AyshcqnTt2hX9+vWTXEcsoVpCQgLi4+OxefNm0d9ERkayfw8ePBiDBw+GzWbD33//jf/85z948sknkZSUhLvuugsA0KFDB4wZMwZLly7FmDFjsH79esyfP59npfaWY8eO4fDhw1i5ciUmT57MLj979qzb35SUlCAtLY39bLVaUVlZKdo5eSIuLg5KpRIXL170+bfekpCQAACYPXs2brnlFtF1OnfuDACs9cFkMrHCGnAv+MWud3x8PIqLi12WFxUV8dojIxNq5H5bRsYzUn17fHw8rFYrysvLeUKNEIKSkhJcddVV7DJv+m93JCQk4N1338W7776L/Px8rF+/HrNmzUJZWRlv7PDEE0/g9ttvx4EDB/D++++jU6dOGDFihF/H/cUXX2Do0KH48MMPecvr6+tF1+dOLnCXaTQaRERE+Lz/Nm3a4K+//oLdbg/ZuykhIQF6vd5tsjmmP+b2/VykDBXC/t+Xe0VGJth4/QRdvHgR33//PcaPHy8PCmRkfGD8+PGorKyEzWZDv379XP4xYpKLUqlE//792Zn4AwcO8L6fMWMGjhw5gsmTJ0OpVOKhhx7yq21Mh8QVrwBd7sodjGcAw7p162C1WnnZa72dZdbr9RgyZAi+/vrrgGbKpejcuTM6duyIw4cPi57/fv36sZMqjNvikSNHeNvYsGGD1/sbPnw4tm7dygp4hs8//xxhYWFsBmUZmVAj99syMoHBVKr54osveMu//fZbNDY2st9zcdd/e+t9lZGRgenTp2PEiBEuff/NN9+MjIwMPP300/j999/x6KOPik4sewNFUS59/5EjR1zCwhi+++47NpM+QAv/DRs2YPDgwaxBwRcPszFjxsBoNIpmlg8W48ePx7lz5xAfHy/a9zN9flJSEnQ6nUvf/+OPP3q9L3/uFRmZYOG1hT4xMZH9u7CwEDt27EBZWZlLeYgnnngieK2TkfkHcNddd+HLL7/E2LFjMWPGDFx99dVQq9W4ePEitm3bhhtvvBE333wzli1bhq1bt2LcuHHIyMiA0WhkZ5VvuOEG3jZHjBiBbt26Ydu2bbjvvvt4z6cvdOnSBe3bt8esWbNACEFcXBw2bNiA3377ze1vvvvuO6hUKowYMQLHjx/HSy+9hN69e+OOO+5g1+nZsyfWrFmDtWvXIjs7GzqdDj179hTd3ttvv41rr70W/fv3x6xZs9ChQweUlpZi/fr1+Oijj3geDP7y0UcfYcyYMRg1ahSmTJmCtLQ0VFVV4eTJkzhw4AAbkzh27FjExcVh6tSpWLBgAVQqFVauXClaKsgdc+fOxcaNG3H99ddjzpw5iIuLw5dffolNmzbhzTffRHR0dMDHIyPjDXK/LSMTGCNGjMCoUaPw/PPPo66uDoMGDcKRI0cwd+5c9O3bF5MmTQIAr/rvyMhIZGZm4scff8Tw4cMRFxeHhIQExMbG4vrrr8c999yDLl26IDIyEvv27cPmzZtdvMqUSiUee+wxPP/88wgPD3eJ1/aF8ePH4+WXX8bcuXMxZMgQ5OTkYMGCBWjXrh2sVqvL+kqlEiNGjMBTTz0Fu92ON954A3V1dWy5VgBsP//ee+9h8uTJUKvV6Ny5s2g/fvfdd2PFihWYNm0acnJycP3118Nut2PPnj3o2rWrR68Gb3jyySfx7bff4rrrrsPMmTPRq1cv2O125Ofn49dff8XTTz+N/v37g6Io3HfffVi+fDnat2+P3r17Y+/evfjqq6+83pe394qMTEjwNYve8uXLiUajIRERESQzM5NkZWWx/9q1axfspH0yMi2Ou9I2QiZPnkzCw8NFv7NYLGTx4sWkd+/eRKfTkYiICNKlSxfyyCOPkDNnzhBCCNm1axe5+eabSWZmJtFqtSQ+Pp4MGTKErF+/XnSb8+bNYzP0CmEyqH/99de85WKZXE+cOEFGjBhBIiMjSWxsLLn99ttJfn6+28yu+/fvJxMmTCAREREkMjKS3H333aS0tJS3n9zcXDJy5EgSGRnJlndxt3+mDbfffjuJj48nGo2GZGRkkClTpvDKvAhhtrVo0SKX74RtJ4SQw4cPkzvuuIMkJiYStVpNkpOTybBhw8iyZct46+3du5cMHDiQhIeHk7S0NDJ37lzy6aefima5HzdunGjbjh49SiZMmECio6OJRqMhvXv3djlmX66RjEwgyP22jIwr3vbtTU1N5PnnnyeZmZlErVaTlJQU8q9//YstJ0uI9/3377//Tvr27Uu0Wi0BQCZPnkyMRiOZNm0a6dWrF4mKiiJ6vZ507tyZzJ07lzQ2Nrq0Jzc3lwAg06ZNE22vu75JmGXeZDKRZ555hqSlpRGdTkeuuOIK8sMPP5DJkyezfTYhzj7pjTfeIPPnzydt27YlGo2G9O3bl/zyyy8u+5k9ezZJTU0lCoWCAGBL4An3z5zbOXPmkI4dOxKNRkPi4+PJsGHD2FJ47hgyZAjp3r27y3Jh2wkhpKGhgbz44oukc+fORKPRkOjoaNKzZ08yc+ZMtkoRIYTU1taS//u//yNJSUkkPDycTJgwgT3XYmOh8vJyl/17c68Q4v01kpHxFooQQnyZAEhPT8e0adMwe/Zs2YVPRqYF6devHyiKwr59+5plf/PmzcP8+fNRXl4ux4HLyFxCyP22jMw/h//85z944okncOzYMXTv3j3k+8vNzUW7du2waNEiPPPMMyHfn4yMjO947XLPYDAYcNddd8mDAhmZFqCurg7Hjh3Dxo0bsX//fnz//fct3SQZGZlWjtxvy8hc+hw8eBAXLlzAggULcOONNzaLmJeRkbk08Ll3nzp1KhtvKiMj07wcOHAAgwYNwscff4y5c+fipptuaukmycjItHLkfltG5tLn5ptvxj333IM+ffpg2bJlLd0cGRmZVoTPLvc2mw3jx49HU1MTevbsCbVazfv+7bffDmoDZWRkZGRkZPxH7rdlZGRkZGT+ufjscv/aa6/hl19+YUttcctl+Fs6Q0ZGRkZGRiY0yP22jIyMjIzMPxefLfSxsbF45513AiqVISMjIyMjI9M8yP22jIyMjIzMPxefY+i1Wi0GDRoUirbIyMjIyMjIBBm535aRkZGRkfnn4rOFfuHChSguLsaSJUtC1aYWxW63o6ioCJGRkbIrooyMjIxMi0MIQX19PVJTU/3KVP9P77f9Qe7rZWRkZGRaG/729z4L+ptvvhlbt25FfHw8unfv7pJc57vvvvNlc62OixcvIj09vaWbISMjIyMjw6OgoABt27b1+Xf/9H7bH+S+XkZGRkamteJrf+9zUryYmBjccsstvv7skiEyMhIAfSKjoqJauDUyMjIyMpc7dXV1SE9PZ/snX/mn99v+IPf1MjIyMjKtDX/7e58t9C1FVlYW8vLyeMuef/55vP766+xnMbe5Dz/8ENOmTfN6P3V1dYiOjkZtba3cycvIyMjItDhyvxR85HMqIyMjI9Pa8Ldv8tlC35IsWLAADz30EPs5IiLCZZ0VK1Zg9OjR7Ofo6OhmaZuMjIyMjIyMjIyMjIyMTHPiVbT96NGjsXPnTo/r1dfX44033sDSpUsDbpgYkZGRSE5OZv+JCfqYmBjeOnq9PiRtkZGRkZGRaa20ln5bRkZGRkZGJrR4Jehvv/123HHHHejatSuef/55fP3119ixYwf279+P33//HUuWLMEdd9yBlJQUHDx4EBMnTgxJY9944w3Ex8ejT58+ePXVV2E2m13WmT59OhISEnDVVVdh2bJlsNvtkts0mUyoq6vj/ZNpPdjsBP/6Yj/e/f10SzdFlBU7LuDtX3P8/n2d0YLR7/4PS7acCWKrAqfGYMbY9/7ER3+ca+mmhASz1Q530UbnyxuwPaesmVsUfM6VNyC3orGlm+GWb/dfxOZjxSHb/uGCGkz/6gAuVhuCts1d5yqxbl9B0LYXSlpLvy0jIyNzOVFjMGPckj/x3DeHW7opMpcRXrncT506FZMmTcI333yDtWvX4pNPPkFNTQ0AOm69W7duGDVqFPbv34/OnTuHpKEzZszAFVdcgdjYWOzduxezZ8/GhQsX8Omnn7LrvPzyyxg+fDj0ej22bNmCp59+GhUVFXjxxRfdbnfhwoWYP39+SNr8T6aszoiyehN6pIU2pOF/Z8rx87ES/HysBE/e0Clk+9mWU4YonRpXZsb69Lv5G04AAG6+oi3aJYT7vN9VO3JxqqQep0rq8cTwjuzyk8V1WLLlDJ4e2QkdEv1LhBUI7289ixPFdThRXIdHhrRv9v2HksKaJgx+Yytu7tsWb93R2+X7YW/9AQD48bFB6J0eE/D+jBYbnlxzCMO6JuKOfs2TVdtgtmK44zjOvDoGaqXvpc5CSXFtE57+mh7s5L4+LiT7uHHpDgBAUU0Tvns0ODXY7/5kNwCgW2pUyN99gdIa+u1LHUIIrFYrbDZbSzdF5h+AUqmESqWSyyT+w/ntRCmOF9XheFEdZtzQCWkxsqewTOjxOoZeo9HgnnvuwT333AMAqK2tRVNTE+Lj411K4HjLvHnzPIrpffv2oV+/fpg5cya7rFevXoiNjcVtt93GWu0B8IR7nz59ANBx91KCfvbs2XjqqafYz0x2QRlprn5tCwDg96eGoEOia+hDsGgwWoO+zXd+O42jhbX4eNKVUCkVKKppwgMr9gHwTVzY7U4Lr9Hi34DPaBX/3c0f7IDRYsfhghrsnD3cr20HQk2Tpdn3abbS3jQaVWjF58odF2AnwLcHLooKeoac0nq/BX2d0YLPd+ZiYu80bD5ejM3HS7D5eEmzCfrKBqf3ktVGoFY2y269pqrR1bsqVORXBc9Cz1DeYAr6NkNBKPrtywWz2Yzi4mIYDMG/f2QuX8LCwpCSkgKNRtPSTZEJEZrTG/Ca6lf8ZL8GxwuvlAW9TLPgd1K86OjogBPOTZ8+HXfddZfkOllZWaLLr7nmGgDA2bNnWUEvtk5dXR1KS0uRlJQkuo5Wq4VWq/W+0TI8jhbWhFTQW2zSIRP+8J7DvX17Tjlu6JaEwpomv7Zj47hsKxX+zbjb3dSYMFro4y6qNfq13UAxWYN/3qWw2QmuWUhPEu174Qa/z6c3WGzeFfbQB6CCn//mCH4+VoLvDhRiRHfxd08o4T43rdEY5CESKqgEyzvBxnlYw1rbDImXBKPfvhyw2+24cOEClEolUlNTodFoZKuqTEAQQmA2m1FeXo4LFy6gY8eOUChal+eUTHCIqT6GG1XbYLRqkV91R0s3R+YyoUWz3CckJCAhIcGv3x48eBAAkJKSIrmOTqdDTEyMX/to7ew8V4F6oxWjuie3WBs0ytAObEMh6BmsDlVh8VO8cgf4Cj8He3Z3ir6FMfnpceAvlY0m1mpb22RBXHjorBdmiXuKG1evC0C0bT5eAgA4X9EIm5cTCGLUGiz440w5hndJRLjW+9c1995sjTrE1ozVUsUmh1bsuIBP/7yA1Q9dg4z4MK+2Y+J40wRyb8i0fsxmM+x2O9LT0xEW5t39ISPjCb1eD7Vajby8PJjNZuh0upZukkwIUJqqAQCjlXvxa8FOANkt2yCZy4JLomzdrl27sHv3blx//fWIjo7Gvn37MHPmTEycOBEZGRkAgA0bNqCkpAQDBgyAXq/Htm3b8MILL+Dhhx++5C3wZ8sasONsBe66Oh1aFT2QrGwwYcqKfTBb7dj85GB0SW6ZOrpqZWjVgjkAMeQJRoRb/BTV9qBY6KX3rQqhpVoKKdEbCrinIdSHbJU4Nu5x69T+W0+4xxOIeH198yms3puP+wdkYsGNPbz+nbWVThQxcCccCCEhtX6KPZtM7ouXN53AJ/f382o7Zs7EX2vLSSATGmQLqkywke+pfz4acy0AIJWqQruSzQDua9kGyVwWXBKCXqvVYu3atZg/fz5MJhMyMzPx0EMP4bnnnmPXUavV+OCDD/DUU0/BbrcjOzsbCxYswGOPPdaCLQ8Oz3x9GIcKalDXZMHjjsRpRwtr2QHm37nVzSrouVZMdYjjnaXEV6Awgt7fffAt9P61wZPuUoV4wsQd5mZ2uedObITatVXqcnPd8YMl2gLxwli9Nx8A8PmuPJ8EPV8w+737kOFpIstfCCHYcKQY7eKdCSqlJtt8uTbcyZ5QhoTIyMjIyFy66K217N9hTaGr5CIjw8VrQW+1WqFStYz+v+KKK7B7927JdUaPHo3Ro0c3U4uaD5PVhkMFNQCAn4+VsIK+rN6ZlOlsWUOztolr/dOE2FIVSpd7ZlDubUy1EG4csL8DfJsHQaFqodn85o6htzejhV5KTFqCbIXVKBVBcy+32wkUXp6cUD43wcDTfe8vu85V4onVBxGucbrES3m5eHs+Af57ojWGMYjRkv22jIyMzOWIzu5MpBlrufRL4MpcGng9Yk1JScEzzzyDkydPhrI9MgKqG53Zxg1mZ8b3Ok4W8iI/k7r5C1cshNr11F+x7Q3MoNzqZ4auYCTFc1cLnSHUIQ3uMLnJvh8q7HbvLPR2O8GiX05h7b58v/cl5Y5usQfXChuhU/ktXoWivMKHzOqhEszBIlS5I/bn0bGLjWbn/auUmBTz5RI3t9dKMGgN/famTZvQv39/6PV6JCQk4JZbbuF9v2XLFgwcOBCRkZFISUnB888/D6vVc3WTXbt2YdiwYQgPD0dMTAyGDh2Kpqbm7Qtlgsu8efPYCkUtAUVR+OGHH1ps/zL/DDTEWcUljlS1+gl2mX8GXquxp556Chs2bECPHj0wYMAAfPbZZ2hoaF7L8OVILUe4F9caWQFYY+Avb04sVq5bcohj6EM4iGYEm7/ihzsR4HdSPI8u9y1kobe0XAy91JnceqoMS7edw/PfHkW1oPTZz0eL8fZvpz1eT5vEBI41yBNIWpXC7/urTlA60JeKB609hj5UzasUKYcnZaGnJO82PtxBWWsMYxCjpfvtb7/9FpMmTcIDDzyAw4cPY8eOHWwJPQA4cuQIxo4di9GjR+PgwYNYs2YN1q9fj1mzZklud9euXRg9ejRGjhyJvXv3Yt++fZg+fbocn3yJ88wzz2DLli0h34+7iYPi4mKMGTMm5PuX+Wej5gp6qgFlNfUt2BqZywWve7/Zs2cjJycH27dvR5cuXfDkk08iJSUFDzzwAHbs2BHKNl42WGx2LPz5JH47UcouqzE4Xwwmqx3VDiFf0+Rc3tyCvjljST1Zz40WG25cugOTPtvjcyw8I8L9jeflNs3fAb4nd2z1ZZIUz9trcKzIGZt2oriO/dtgtuKJNQexZMsZ/OLIMO8OKdHOF22BqzZa0Pv32zoj30pZUuu99bG1W+i5930wxTH3fckg5Vbvi/67FC30LdlvW61WzJgxA4sWLcK0adPQqVMndO7cGbfddhu7zpo1a9CrVy/MmTMHHTp0wJAhQ7Bw4UIsXboU9fXuB8EzZ87EE088gVmzZqF79+7o2LEjbrvttks+Ae6lis1mgz0ItSgjIiLcliFuDpKTk+V7SCZgJlGv4DrTO+znypKLLdgamcsFn6ezBw8ejBUrVqCkpATvvvsuzp49i8GDB6Nz58548803Q9HGy4bvDxTioz/O47EvD7DColZgpSt2DOobOIP9igZTsw42m9N9yJPL/f68ahwuqMGfZypw0JFrQAq7SKk5fw8nGLHRnkSj8jJMiicF1yp/rtxpacwpqWfvlcMXa/zeV7BDPDQqhd8TRi4W+pp/kIU+RO0Tvi8BDxZ6HzxrmnuSK5i0RL994MABFBYWQqFQoG/fvkhJScGYMWNw/Phxdh2TyeRSukuv18NoNGL//v2i2y0rK8OePXuQmJiIgQMHIikpCUOGDMFff/0l2R6TyYS6ujreP28hhMBgtrbIP18nFjdv3oxrr70WMTExiI+Px/jx43Hu3DkAQG5uLiiKwpo1azBw4EDodDp0794d27dvZ3+/fft2UBSFTZs2oXfv3tDpdOjfvz+OHj3KrrNy5UrExMRg48aN6NatG7RaLfLy8lBdXY37778fsbGxCAsLw5gxY3DmzBkAQHl5OZKTk/Haa6+x29mzZw80Gg1+/fVXAK6W8ylTpuCmm27Ca6+9hqSkJMTExGD+/PmwWq149tlnERcXh7Zt22L58uW8c/D888+jU6dOCAsLQ3Z2Nl566SVYLBa27fPnz8fhw4dBURQoisLKlSsBuLrcHz16FMOGDYNer0d8fDwefvhhnocL077FixcjJSUF8fHxeOyxx9h9+UprLWMr4xtF1mjkkySUgC7L3VBR2MItkrkc8DtbTnh4OKZOnYqpU6di06ZNuP/++zF79mxe5nkZ3zhSWAOAHjheqGhEp6RI1LtY6YzonhrtkrSsqtGM5OjmqWnanILek7A8Xeq04pwoqsNVWXGS63NFODPO97cTDUbnKyfFo+GeBqkzUsvLHeEUuFVcoe8hSaTUOfc3n4I7NCqF3+K6wcR/9isbvY+hD2V1iGAQKg+CGhFBL+VF5EuojOUStNALac5++/z58wBokfb2228jKysLb731FoYMGYLTp08jLi4Oo0aNwrvvvovVq1fjjjvuQElJCV555RUAtPuzp+0uXrwYffr0weeff47hw4fj2LFj6Nixo+jvFi5ciPnz5/t1LE0WG7rN+cWv3wbKiQWjEKbxfqjW2NiIp556Cj179kRjYyPmzJmDm2++GYcOHWLXefbZZ/Huu++iW7duePvttzFx4kRcuHCBZx1/9tln8d577yE5ORn//ve/MXHiRJw+fRpqtRoAYDAYsHDhQnz66aeIj49HYmIi7rnnHpw5cwbr169HVFQUnn/+eYwdOxYnTpxAmzZtsHz5ctx0000YOXIkunTpgvvuuw+PPvooRo4c6fZ4tm7dirZt2+J///sfduzYgalTp2LXrl247rrrsGfPHqxduxbTpk3DiBEjkJ6eDgCIjIzEypUrkZqaiqNHj+Khhx5CZGQknnvuOdx55504duwYNv70M774ZgNSY/SIjY1x2a/BYMDo0aNxzTXXYN++fSgrK8P//d//Yfr06ewEAABs27YNKSkp2LZtG86ePYs777wTffr0wUMPPeT1NQOAvecrsWjFV7jyymsw66arfPqtTOuBEMLmIPok9kkcKzFhPFIxsIXbJfPPx2+1YDAYsGLFClx33XWYOHEi4uPj8eqrrwazbZcdFfVOUcJkrhcKq8oGeh2h0PVlsB8ozWuhl94XN5dAfpWB911Voxm3L9uJpdvOssu4QoKNoffTghoMUeLpVLZUdSyTpXmT4knLeCc1vJwSThd0d0JfDMmkeNYgW+iVCr8nfoSJCZln3xtau4U+WJn/hfhsofdh25eyhZ4hGP32vHnzWMumu39///0364L9wgsv4NZbb8WVV16JFStWgKIofP311wCAkSNHsi75Wq0WnTp1wrhx4wAASqVSdP/Mdh955BE88MAD6Nu3L9555x107tzZxVLLZfbs2aitrWX/FRQU+HTclwq33norbrnlFnTs2BF9+vTBZ599hqNHj+LEiRPsOtOnT8ett96Krl274sMPP0R0dDQ+++wz3nbmzp2LESNGoGfPnli1ahVKS0vx/fffs99bLBZ88MEHGDhwIDp37oyioiKsX78en376KQYPHozevXvjyy+/RGFhIWv1Hjt2LB566CHce++9mDZtGnQ6HV5//XXJ44mLi8OSJUvQuXNnPPjgg+jcuTMMBgP+/e9/o2PHjpg9ezY0Gg0vhOTFF1/EwIEDkZWVhQkTJuDpp5/GunXrANAeIGFh4QClgCYqDrroOOj1epf9fvnll2hqasLnn3+OHj16YNiwYXj//ffx3//+F6WlzrDI2NhYvP/+++jSpQvGjx+PcePG+ZUH4Mzvy/G18kVcu3/GJRneI0NjtdnxovJzPK9aDUNSP+whXXHRIP4uk5EJJj5b6P/880+sWLEC33zzDWw2G2677Ta88soruO6660LRvsuKOqNr5nrhoL7CIdzdCf3moDmtt56SlNVKZPtfvTcf+3KrsS+3GlOvbQedWsmL12Via/0VP7w4YC8FqRCPLvctpOhDWV1ADG8vAS8ZJEe485NESseaS03EcLPcB+MMaFVKvyd+hIO6Ch+e8VZfh57bviBuVyyZo7SF3vtt8/IrBLXVoSeY/fb06dNx1113Sa6TlZXFxsB369aNXa7VapGdnY38fGeViqeeegozZ85EcXExYmNjkZubi9mzZ6Ndu3ai205JSXHZLgB07dqVt10hWq3W7/hovVqJEwtG+fXbQNGrfRMD586dw0svvYTdu3ejoqKCnQDJz89nz9mAAQPY9VUqFfr16+dSCYG7TlxcHDp37sxbR6PRoFevXuznkydPQqVSoX///uyy+Ph4l98tXrwYPXr0wLp16/D333+7hFwI6d69Oy/ZYVJSEnr06MF+ViqViI+PR1mZszzYN998w4aWNDQ0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f/zjH3z22Wd89913dOnSJXg8MzMToNF7k5mZidfrpbCwsNFrdu3aVafe3bt3t7l7vHjxYvLz8xkyZAh2ux273c68efN4/vnnsdvtwfcj96xGVlYWAwYMqHWsf//+bN26FZDPWX1uv/127rrrLs455xwOOOAAJk6cyM0338yjjz4KyD1rSizvT2ZmZp16CgsL8fl8Yd9DCeiFEEIIIcLkdDoZMmQIc+bMqXV8zpw5jBw5soVaFRuGYXD99dczY8YM5s6dS48ePWqd79GjB5mZmbXujdfrZd68ecF7M2TIEBwOR61rcnNzWblyZfCaESNGUFxczK+//hq8ZuHChRQXF7e5ezxmzBhWrFjBsmXLgv+GDh3K+eefz7Jly+jZs6fcs30cdthhdbZDXLt2Ld26dQPkc1afiooKVLV2eGez2YLb1sk9a1ws78+IESNYuXIlubm5wWtmz56Ny+ViyJAh4TU8rBR6QgghhBDCMIyabetef/11Y9WqVcZNN91kJCYmGps3b27pplnqmmuuMVJTU43vv//eyM3NDf6rqKgIXvPYY48ZqampxowZM4wVK1YY5557br1bP3Xp0sX45ptvjCVLlhhHH310vVs/DRo0yFiwYIGxYMEC44ADDmgTW2M1R2iWe8OQe7avX3/91bDb7cbDDz9srFu3znjvvfeMhIQE49133w1eI/estosuusjo3LlzcNu6GTNmGB06dDDuuOOO4DV/93tWWlpqLF261Fi6dKkBGM8884yxdOnS4Hajsbo/1dvWjRkzxliyZInxzTffGF26dJFt64QQQgghYunFF180unXrZjidTuPggw8Obt32VwbU++/NN98MXqPruvGvf/3LyMzMNFwul3HkkUcaK1asqFVOZWWlcf311xvp6elGfHy8cdJJJxlbt26tdc2ePXuM888/30hOTjaSk5ON888/3ygsLIzBu7TevgG93LO6Pv/8c2PgwIGGy+Uy+vXrZ7zyyiu1zss9q62kpMS48cYbja5duxpxcXFGz549jXvuucfweDzBa/7u9+y7776r9+/XRRddZBhGbO/Pli1bjBNPPNGIj4830tPTjeuvv95wu91hvyfFMAwjvDF9IYQQQgghhBBCtDRZQy+EEEIIIYQQQrRBEtALIYQQQgghhBBtkAT0QgghhBBCCCFEGyQBvRBCCCGEEEII0QZJQC+EEEIIIYQQQrRBEtALIYQQQgghhBBtkAT0QgghhBBCCCFEGyQBvRBCCCGEEEII0QZJQC+EEEIIIcRfyPfff4+iKBQVFbVI/XPnzqVfv37oum5ZHYcccggzZsywrHwh2goJ6IUQQgghhGijRo0axU033VTr2MiRI8nNzSU1NbVF2nTHHXdwzz33oKrWhRr//Oc/ueuuuyztNBCiLZCAXgghhBBCiL8Qp9NJZmYmiqLEvO758+ezbt06zjzzTEvrOfHEEykuLmbWrFmW1iNEaycBvRBCCCGEEG3QxRdfzLx583juuedQFAVFUdi8eXOdKfdTp06lXbt2fPHFF/Tt25eEhATOOOMMysvLeeutt+jevTtpaWn84x//QNO0YPler5c77riDzp07k5iYyLBhw/j+++8bbdP06dMZO3YscXFxwWP33XcfBx10EG+88QZdu3YlKSmJa665Bk3TeOKJJ8jMzKRTp048/PDDtcq677776Nq1Ky6Xi+zsbG644YbgOZvNxgknnMC0adMiv5FCtGH2lm6AEEIIIYQQInzPPfcca9euZeDAgTzwwAMAdOzYkc2bN9e5tqKigueff57p06dTWlrKhAkTmDBhAu3atWPmzJls3LiR008/ncMPP5yzzz4bgEsuuYTNmzczffp0srOz+eSTTzj++ONZsWIF++23X71t+uGHHzj33HPrHN+wYQNfffUVX3/9NRs2bOCMM85g06ZN9OnTh3nz5jF//nwuvfRSxowZw/Dhw/noo4949tlnmT59Ovvvvz95eXksX768VpmHHnooTzzxRIR3UYi2TQJ6IYQQQggh2qDU1FScTicJCQlkZmY2eq3P52PKlCn06tULgDPOOIN33nmHXbt2kZSUxIABAxg9ejTfffcdZ599Nhs2bGDatGls376d7OxsAG677Ta+/vpr3nzzTR555JF669m8eXPw+lC6rvPGG2+QnJwcrGvNmjXMnDkTVVXp27cvjz/+ON9//z3Dhw9n69atZGZmcswxx+BwOOjatSuHHnporTI7d+7M1q1b0XXd0vX6QrRm8skXQgghhBDiLy4hISEYzANkZGTQvXt3kpKSah3Lz88HYMmSJRiGQZ8+fUhKSgr+mzdvHhs2bGiwnsrKylrT7at1796d5OTkWnUNGDCgViAeWv+ZZ55JZWUlPXv25IorruCTTz7B7/fXKjM+Ph5d1/F4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55ZbbsFms/n+pDQhhBBCCOGzOXPmaAaDQXv77be1bdu2abfeeqsWFhamZWRkHOqmBdWJJ56ovffee9qWLVu0DRs2aDNmzNB69uypVVVVec556qmntIiICG3u3Lna5s2btfPPP19LTk7WKioqPOdcf/31Wo8ePbSFCxdq69at04499lht5MiRmsPh8Jxz0kknacOGDdP++OMP7Y8//tCGDRumnXrqqZ36fANt9erVWq9evbQRI0Zot956q+e43LOmSkpKtLS0NO2KK67QVq1ape3fv19btGiRtmfPHs85cs+aeuyxx7S4uDjt+++/1/bv36998cUXWnh4uPbiiy96zvm737P58+drDzzwgDZ37lwN0L7++usmj3fW/XE4HNqwYcO0Y489Vlu3bp22cOFCrXv37tpNN93k83OSgF4IIYQQwg8TJkzQrr/++ibHBg0apN17772HqEWHRmFhoQZoS5cu1TRN01wul5aUlKQ99dRTnnMsFosWFRWlvfHGG5qmaVpZWZlmMBi0OXPmeM7JycnRVFXVfvrpJ03TNG3btm0aoK1cudJzzooVKzRA27FjR2c8tYCrrKzU+vfvry1cuFA7+uijPQG93LPm7rnnHm3KlCmtPi73rLkZM2ZoV155ZZNjM2fO1C655BJN0+SeHezggL4z78/8+fM1VVW1nJwczzmzZ8/WTCaTVl5e7tPzkCn3QgghhBA+stlsrF27lunTpzc5Pn36dP74449D1KpDo7y8HIDY2FgA9u/fT35+fpN7YzKZOProoz33Zu3atdjt9ibndO/enWHDhnnOWbFiBVFRUUycONFzzqRJk4iKiuqy9/if//wnM2bMYNq0aU2Oyz1rbt68eYwbN45zzz2XhIQERo8ezdtvv+15XO5Zc1OmTOGXX35h165dAGzcuJHffvuNU045BZB71p7OvD8rVqxg2LBhdO/e3XPOiSeeiNVqbbKsxBt635+qEEIIIcTfW1FREU6nk8TExCbHExMTyc/PP0St6nyapnH77bczZcoUhg0bBuB5/i3dm4yMDM85RqORmJiYZufUX5+fn09CQkKzOhMSErrkPZ4zZw7r1q3jzz//bPaY3LPm9u3bx+uvv87tt9/O/fffz+rVq7nlllswmUxcdtllcs9acM8991BeXs6gQYPQ6XQ4nU4ef/xxLrzwQkDeZ+3pzPuTn5/frJ6YmBiMRqPP91ACeiGEEEIIPymK0uR3TdOaHfsru+mmm9i0aRO//fZbs8f8uTcHn9PS+V3xHmdlZXHrrbeyYMECzGZzq+fJPWvgcrkYN24cTzzxBACjR49m69atvP7661x22WWe8+SeNfjss8/4+OOP+fTTTxk6dCgbNmxg1qxZdO/encsvv9xzntyztnXW/QnUPZQp90IIIYQQPoqPj0en0zUbSSksLGw26vJXdfPNNzNv3jwWL15MSkqK53hSUhJAm/cmKSkJm81GaWlpm+cUFBQ0q/fAgQNd7h6vXbuWwsJCxo4di16vR6/Xs3TpUv773/+i1+s9z0fuWYPk5GSGDBnS5NjgwYPJzMwE5H3Wkrvuuot7772XCy64gOHDh3PppZdy22238eSTTwJyz9rTmfcnKSmpWT2lpaXY7Xaf76EE9EIIIYQQPjIajYwdO5aFCxc2Ob5w4UKOOOKIQ9SqzqFpGjfddBNfffUVv/76K717927yeO/evUlKSmpyb2w2G0uXLvXcm7Fjx2IwGJqck5eXx5YtWzznTJ48mfLyclavXu05Z9WqVZSXl3e5e3z88cezefNmNmzY4Pk3btw4Lr74YjZs2ECfPn3knh3kyCOPbLYd4q5du0hLSwPkfdaSmpoaVLVpeKfT6Tzb1sk9a1tn3p/JkyezZcsW8vLyPOcsWLAAk8nE2LFjfWu4Tyn0hBBCCCGEpmkN29a988472rZt27RZs2ZpYWFhWnp6+qFuWlDdcMMNWlRUlLZkyRItLy/P86+mpsZzzlNPPaVFRUVpX331lbZ582btwgsvbHHrp5SUFG3RokXaunXrtOOOO67FrZ9GjBihrVixQluxYoU2fPjwLrE1ljcaZ7nXNLlnB1u9erWm1+u1xx9/XNu9e7f2ySefaKGhodrHH3/sOUfuWVOXX3651qNHD8+2dV999ZUWHx+v3X333Z5z/u73rLKyUlu/fr22fv16DdCef/55bf369Z7tRjvr/tRvW3f88cdr69at0xYtWqSlpKTItnVCCCGEEJ3p1Vdf1dLS0jSj0aiNGTPGs3XbXxnQ4r/33nvPc47L5dIeeughLSkpSTOZTNpRRx2lbd68uUk5tbW12k033aTFxsZqISEh2qmnnqplZmY2Oae4uFi7+OKLtYiICC0iIkK7+OKLtdLS0k54lsF3cEAv96y57777Ths2bJhmMpm0QYMGaW+99VaTx+WeNVVRUaHdeuutWs+ePTWz2az16dNHe+CBBzSr1eo55+9+zxYvXtzi36/LL79c07TOvT8ZGRnajBkztJCQEC02Nla76aabNIvF4vNzUjRN03wb0xdCCCGEEEIIIcShJmvohRBCCCGEEEKILkgCeiGEEEIIIYQQoguSgF4IIYQQQgghhOiCJKAXQgghhBBCCCG6IAnohRBCCCGEEEKILkgCeiGEEEIIIYQQoguSgF4IIYQQQgghhOiCJKAXQgghhBBCCCG6IAnohRBCCCGE+AtZsmQJiqJQVlZ2SOr/9ddfGTRoEC6XK2h1jB8/nq+++ipo5QvRVUhAL4QQQgghRBd1zDHHMGvWrCbHjjjiCPLy8oiKijokbbr77rt54IEHUNXghRoPPvgg9957b1A7DYToCiSgF0IIIYQQ4i/EaDSSlJSEoiidXvcff/zB7t27Offcc4Naz4wZMygvL+fnn38Oaj1CHO4koBdCCCGEEKILuuKKK1i6dCkvvfQSiqKgKArp6enNpty///77REdH8/333zNw4EBCQ0M555xzqK6u5oMPPqBXr17ExMRw880343Q6PeXbbDbuvvtuevToQVhYGBMnTmTJkiVttmnOnDlMnz4ds9nsOfbwww8zatQo3n33XXr27El4eDg33HADTqeTZ555hqSkJBISEnj88ceblPXwww/Ts2dPTCYT3bt355ZbbvE8ptPpOOWUU5g9e3bHb6QQXZj+UDdACCGEEEII4buXXnqJXbt2MWzYMB599FEAunXrRnp6erNza2pq+O9//8ucOXOorKxk5syZzJw5k+joaObPn8++ffs4++yzmTJlCueffz4A//jHP0hPT2fOnDl0796dr7/+mpNOOonNmzfTv3//Ftu0bNkyLrzwwmbH9+7dy48//shPP/3E3r17Oeecc9i/fz8DBgxg6dKl/PHHH1x55ZUcf/zxTJo0iS+//JIXXniBOXPmMHToUPLz89m4cWOTMidMmMAzzzzTwbsoRNcmAb0QQgghhBBdUFRUFEajkdDQUJKSkto812638/rrr9O3b18AzjnnHD766CMKCgoIDw9nyJAhHHvssSxevJjzzz+fvXv3Mnv2bLKzs+nevTsAd955Jz/99BPvvfceTzzxRIv1pKene85vzOVy8e677xIREeGpa+fOncyfPx9VVRk4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PqtaffZPz549ceTIEaSnp+titm/fDrVajcDAQOMabtQSekREREQkhCjftm7VqlXi2LFjYsqUKcLa2lqkpqY2dNNM6uWXXxYajUbs3LlTpKen6478/HxdzPvvvy80Go3YtGmTSE5OFk888USFWz+5u7uLHTt2iMTERPGf//ynwq2fOnfuLOLj40V8fLzo1KmTWWyNVR13rnIvBPvsbvv37xcKhUK899574tSpU+Kbb74RVlZW4uuvv9bFsM/0PfPMM6J169a6bes2bdoknJycxMyZM3Uxzb3P8vLyRFJSkkhKShIAxCeffCKSkpJ0243WV/+UbVsXGhoqEhMTxY4dO4S7uzu3rSMiIiKqT59//rnw9PQUKpVKdOvWTbd1W1MGoMJjzZo1uhitVivmzp0rXF1dhVqtFg888IBITk7WK+fmzZti4sSJwsHBQVhaWoqhQ4eKtLQ0vZgrV66Ip556Stja2gpbW1vx1FNPiWvXrtXDXZre3Qk9+8zQTz/9JPz9/YVarRa+vr5ixYoVeu+zz/Tl5uaKyZMnizZt2ggLCwvRtm1bMWfOHFFQUKCLae599scff1T49+uZZ54RQtRv/5w7d06Eh4cLS0tL4eDgICZOnChu3bpl9D1JQghh3Jg+ERERERERETU0PkNPREREREREZIaY0BMRERERERGZISb0RERERERERGaICT0RERERERGRGWJCT0RERERERGSGmNATERERERERmSEm9ERERERERERmiAk9ERERERERkRliQk9ERERE1ITs3LkTkiQhOzu7Qer//fff4evrC61Wa7I6unfvjk2bNpmsfCJzwYSeiIiIiMhMPfTQQ5gyZYreuV69eiE9PR0ajaZB2jRz5kzMmTMHMpnpUo0333wTs2bNMumXBkTmgAk9EREREVETolKp4OrqCkmS6r3uuLg4nDp1CqNGjTJpPeHh4cjJycG2bdtMWg9RY8eEnoiIiIjIDD377LPYtWsXFi9eDEmSIEkSUlNTDabcr127Fi1atMDWrVvh4+MDKysrjBw5Ejdu3MCXX34JLy8v2Nvb45VXXkFJSYmu/MLCQsycOROtW7eGtbU1goODsXPnzirbFB0djbCwMFhYWOjOzZs3D127dsXq1avRpk0b2NjY4OWXX0ZJSQk++OADuLq6wtnZGe+9955eWfPmzUObNm2gVqvh5uaGSZMm6d6Ty+UYMmQI1q9fX/uOJDJjioZuABERERERGW/x4sU4efIk/P39MX/+fABAy5YtkZqaahCbn5+PJUuWIDo6Gnl5eRgxYgRGjBiBFi1aICYmBmfPnsVjjz2GPn36ICIiAgDw3HPPITU1FdHR0XBzc8PmzZsxaNAgJCcno127dhW2affu3XjiiScMzp85cwa//PILfv31V5w5cwYjR45ESkoK2rdvj127diEuLg7PP/88QkNDERISgu+//x6ffvopoqOj0bFjR2RkZODw4cN6Zfbo0QMffPBBLXuRyLwxoSciIiIiMkMajQYqlQpWVlZwdXWtMraoqAjLli3DfffdBwAYOXIkvvrqK1y6dAk2Njbw8/NDv3798McffyAiIgJnzpzB+vXrceHCBbi5uQEApk+fjl9//RVr1qzBggULKqwnNTVVF38nrVaL1atXw9bWVlfXiRMnEBMTA5lMBh8fHyxatAg7d+5ESEgI0tLS4Orqiv79+0OpVKJNmzbo0aOHXpmtW7dGWloatFqtSZ/XJ2rM+JtPRERERNTEWVlZ6ZJ5AHBxcYGXlxdsbGz0zmVmZgIAEhMTIYRA+/btYWNjozt27dqFM2fOVFrPzZs39abbl/Hy8oKtra1eXX5+fnqJ+J31jxo1Cjdv3kTbtm0xduxYbN68GcXFxXplWlpaQqvVoqCgwMjeIGo6OEJPRERERNTEKZVKvdeSJFV4rmzVeK1WC7lcjoSEBMjlcr24O78EuJuTkxOuXbtW6/o9PDxw4sQJxMbGYseOHRg/fjw+/PBD7Nq1S3fd1atXYWVlBUtLy6punahJY0JPRERERGSmVCqV3kJ2dSUgIAAlJSXIzMxE3759jbru2LFjddIGS0tLDB8+HMOHD8eECRPg6+uL5ORkdOvWDQBw5MgR3X8TNVdM6ImIiIiIzJSXlxf27duH1NRU2NjYwMHBoU7Kbd++PZ566imMGTMGH3/8MQICApCVlYXff/8dnTp1wpAhQyq8buDAgfjyyy9rXf/atWtRUlKC4OBgWFlZ4auvvoKlpSU8PT11MXv27EFYWFit6yIyZ3yGnoiIiIjITE2fPh1yuRx+fn5o2bIl0tLS6qzsNWvWYMyYMXj11Vfh4+OD4cOHY9++ffDw8Kj0mqeffhrHjh3DiRMnalV3ixYtsHLlSvTu3RudO3fGb7/9hp9++gmOjo4AgIsXLyIuLg7PPfdcreohMneSEEI0dCOIiIiIiKhpmDlzJnJycvDFF1+YrI4ZM2YgJycHK1asMFkdROaAI/RERERERFRn5syZA09PT5M821/G2dkZ77zzjsnKJzIXHKEnIiIiIiIiMkMcoSciIiIiIiIyQ0zoiYiIiIiIiMwQE3oiIiIiIiIiM8SEnoiIiIiIiMgMMaEnIiIiIiIiMkNM6ImIiIiIiIjMEBN6IiIiIiIiIjPEhJ6IiIiIiIjIDDGhJyIiIiIiIjJD/x/RjPLytG43JgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# get spike times from membrane potential\n", + "# cannot use spike_recorder because we abuse exact spike timing\n", + "V_m = mm1.get(\"events\", \"V_m\")\n", + "times = mm1.get(\"events\", \"times\")\n", + "spikes = sr.get(\"events\", \"times\") * nest.resolution\n", + "\n", + "def s_soln(w, t, tau):\n", + " isyn = np.zeros_like(t)\n", + " useinds = t >= 0.\n", + " isyn[useinds] = w * np.exp(-t[useinds] / tau)\n", + " return isyn\n", + "\n", + "fig, ax = plt.subplots(4,2)\n", + "fig.set_size_inches([12,10])\n", + "fig.subplots_adjust(hspace=0.5)\n", + "\n", + "ax[0,0].plot(mm1.events[\"V_m\"])\n", + "ax[0,0].set_xlabel(\"time (ms)\")\n", + "ax[0,0].set_ylabel(\"membrane potential V (mV)\")\n", + "ax[0,0].set_title(\"Presynaptic neuron\")\n", + "\n", + "ax[0,1].plot(mm2.events[\"V_m\"], label=\"approximation\")\n", + "ax[0,1].plot(mm3.events[\"V_m\"], \"--\", label=\"exact model\")\n", + "ax[0,1].set_xlabel(\"time (ms)\")\n", + "ax[0,1].set_ylabel(\"membrane potential V (mV)\")\n", + "ax[0,1].set_title(\"Postsynaptic neuron\")\n", + "ax[0,1].legend()\n", + "\n", + "\n", + "\n", + "ax[1,1].plot(mm2.events[\"s_AMPA\"])\n", + "ax[1,1].plot(mm3.events[\"s_AMPA\"], \"--\")\n", + "ax[1,1].set_xlabel(\"time (ms)\")\n", + "ax[1,1].set_ylabel(\"s_AMPA\")\n", + "\n", + "\n", + "ax[2,1].plot(mm2.events[\"s_GABA\"])\n", + "ax[2,1].plot(mm3.events[\"s_GABA\"], \"--\")\n", + "ax[2,1].set_xlabel(\"time (ms)\")\n", + "ax[2,1].set_ylabel(\"s_GABA\")\n", + "\n", + "\n", + "ax[3,1].plot(mm2.events[\"s_NMDA\"])\n", + "ax[3,1].plot(mm3.events[\"s_NMDA\"], \"--\")\n", + "ax[3,1].set_xlabel(\"time (ms)\")\n", + "ax[3,1].set_ylabel(\"s_NMDA\")\n", + "\n", + "ax[1,0].axis(\"off\")\n", + "ax[2,0].axis(\"off\")\n", + "ax[3,0].axis(\"off\")\n", + "\n", + "plt.show();" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aca0a5e1-e105-4def-adf7-cc353b3fc601", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "nest", + "language": "python", + "name": "nest" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From f840d773b0df1b019e98bd4e9e10b633d927dd2f Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 12:36:23 +0100 Subject: [PATCH 074/184] finish notebook --- .../wong_approximate_implementation.ipynb | 106 ++++++++++++------ 1 file changed, 73 insertions(+), 33 deletions(-) diff --git a/doc/model_details/wong_approximate_implementation.ipynb b/doc/model_details/wong_approximate_implementation.ipynb index 3f16689051..e172a542ca 100644 --- a/doc/model_details/wong_approximate_implementation.ipynb +++ b/doc/model_details/wong_approximate_implementation.ipynb @@ -52,27 +52,37 @@ " \\Bigg( \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha x_j^0 \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha x_j^0 dt' + S_{j}^0 \\Bigg) \\mathrm{.}\n", "$$\n", "\n", - "Since we have two different time scales in the exponential inside the remaining integral, there is no exact solution for arbitrary limits of integration. We would like to approximate this function with an exponential function, such that we can integrate the sum of multiple such functions in a single variable. Our approximate function will then have the dynamics\n", - "\n", + "Since we have two different time scales in the exponential inside the remaining integral, there is no exact solution for arbitrary limits of integration. We would like to approximate this function with an exponential function, such that we can integrate the sum of multiple such functions in a single variable. Our approximate function will then have the form \n", "$$\n", - "\\frac{d}{dt}\\hat{S_j} = - \\frac{\\hat{S_j}}{\\tau_d} + \\sum_k c_k \\delta (t - t_j^k)\n", + "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", "$$\n", + "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit as $t \\to \\infty$, in the sense that their ratio approaches unity. We additionally make the assumption that $x_0 = 0$ immediately before every spikes. Since $\\tau_r$ is very small (e.g. $2 ms$), this is reasonable unless the neuron is firing very rapidly.\n", "\n", - "WILL BE COMPLETED SHORTLY\n", - "\n", - "However, in the limit $t \\to \\infty$, it has the following solution (found by Mathematica)\n", - "\n", + "Setting $x_0 = 1$ in the exact solution upon spiking, we then get\n", + "$$\\begin{align}\n", + " S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", + " &=\n", + " \\mathrm{exp}\\Bigg[-\\frac{t}{\\tau_\\mathrm{d}} - \\alpha \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", + " \\Bigg( \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha dt' + S_{j}^0 \\Bigg) \\mathrm{,} \\\\\n", + " S_\\mathrm{jump}\n", + " &=\n", + " \\mathrm{exp}\\Bigg[- \\alpha x_j^{k-1} \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", + " \\Bigg( \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha dt' + S_{j}^0 \\Bigg)\n", + "\\end{align}\n", "$$\n", - "\\lim_{t \\to \\infty} \\int_0^t \n", - " \\mathrm{exp}\\Bigg[t' \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha x_0 \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha x_0 dt' \\\\\n", - " =\n", - " \\mathrm{exp}\\Big[\\alpha x_0 \\tau_\\mathrm{r}\\Big] \\bigg( \n", - " -\\alpha x_0 \\tau_\\mathrm{r} \\mathrm{ExpEn}\\Big[\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}, \\alpha x_0 \\tau_\\mathrm{r} \\Big] \n", - " + (\\alpha x_0 \\tau_\\mathrm{r})^\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\mathrm{Gamma}\\Big[1 - \\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\Big] \\bigg) \\mathrm{.}\n", + "and taking the limit, we get\n", + "$$\\begin{align}\n", + " S_\\mathrm{jump} = \n", + " \\mathrm{exp}\\Big[-\\alpha \\tau_\\mathrm{r}\\Big] S_0\n", + " - \n", + " \\alpha \\tau_\\mathrm{r} \\mathrm{ExpE}\\Big[\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}, \\alpha \\tau_\\mathrm{r} \\Big] \n", + " +\n", + " (\\alpha \\tau_\\mathrm{r})^\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\mathrm{Gamma}\\Big[1 - \\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\Big] \\mathrm{,}\n", + "\\end{align}\n", "$$\n", + "where $S_0$ is the initial condition of $S$ in the exact solution.\n", "\n", - "\n", - "The first term in the solution for $S_j$ obviously converges, so we get" + "After spiking, the new value of $S$ is then dependent only on the value of $S$ immediately before spiking. In pre-synaptic neurons, every time a spike occurs, the value of $S_0$ immediately before spiking is computed. $\\Delta S = S_\\mathrm{jump} - S_0$ is then computed, and sent to post-synaptic neurons as an offset in the SpikeEvent object. The post-synaptic neuron then adds the offset multiplied by weight and multiplicity to its $s_\\mathrm{NMDA}$ variable. Integration in the post-synaptic neuron is then done as a normal exponential synapse." ] }, { @@ -137,6 +147,14 @@ " \"t_ref\": 2.0}" ] }, + { + "cell_type": "markdown", + "id": "ab7b922a-1ab7-4c40-8dd5-35c23c1b4fde", + "metadata": {}, + "source": [ + "We create 1 pre-synaptic approximate neuron, 1 post-synaptic approximate and 1 post-synaptic exact neuron. Stimulating the pre-synaptic neuron, we will compare the synaptic variables and membrane potential in the approximate and exact post-synaptic neurons." + ] + }, { "cell_type": "code", "execution_count": 3, @@ -148,28 +166,28 @@ "output_type": "stream", "text": [ "\n", - "Feb 15 18:17:24 NodeManager::add_node [Info]: \n", + "Feb 19 12:31:55 NodeManager::add_node [Info]: \n", " Neuron models emitting precisely timed spikes exist: the kernel property \n", " off_grid_spiking has been set to true.\n", " \n", " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", "\n", - "Feb 15 18:17:24 NodeManager::add_node [Info]: \n", + "Feb 19 12:31:55 NodeManager::add_node [Info]: \n", " Neuron models emitting precisely timed spikes exist: the kernel property \n", " off_grid_spiking has been set to true.\n", " \n", " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", "\n", - "Feb 15 18:17:24 NodeManager::prepare_nodes [Info]: \n", + "Feb 19 12:31:55 NodeManager::prepare_nodes [Info]: \n", " Preparing 8 nodes for simulation.\n", "\n", - "Feb 15 18:17:24 SimulationManager::start_updating_ [Info]: \n", + "Feb 19 12:31:55 SimulationManager::start_updating_ [Info]: \n", " Number of local nodes: 8\n", " Simulation time (ms): 1000\n", " Number of OpenMP threads: 1\n", " Number of MPI processes: 1\n", "\n", - "Feb 15 18:17:24 SimulationManager::run [Info]: \n", + "Feb 19 12:31:55 SimulationManager::run [Info]: \n", " Simulation finished.\n" ] } @@ -184,6 +202,7 @@ "nrn3 = nest.Create(\"iaf_wang_2002_exact\", params)\n", "\n", "pg = nest.Create(\"poisson_generator\", {\"rate\": 50.})\n", + "# since we're \"abusing\" spike offset, set time_in_steps to True and multiply by resolution after\n", "sr = nest.Create(\"spike_recorder\", {\"time_in_steps\": True})\n", "\n", "mm1 = nest.Create(\"multimeter\", {\"record_from\": [\"V_m\", \"s_AMPA\", \"s_NMDA\", \"s_GABA\"], \"interval\": 0.1})\n", @@ -224,15 +243,15 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 11, "id": "9df3957c-7903-4e7f-a767-e98d121dbbd0", "metadata": {}, "outputs": [ { "data": { - "image/png": "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m8jq1atJRkYG6dixI7FarexvP/zwQ7Jw4UKyfv168scff5BVq1aR3r17k86dOxOz2cyuN3fuXAKAZGZmkmeffZb88ssv5O233ybh4eGkb9++7LoHDhwg2dnZpG/fvmTXrl1k165d5MCBA+wxAiArVqxgt3vo0CESERFBsrKyyLJly8iWLVvIF198Qe644w5SV1fn9row28rKyiKjR48mP/zwA/nhhx9Iz549SWxsLKmpqWHX3bp1K9FoNGTw4MFk7dq1ZPPmzWTKlCkubWGO0d09cOHCBXZZZmYmSUlJIdnZ2WT58uVk27ZtZO/eveTUqVMkMjKStG/fnnz++edk06ZN5O677yYAyBtvvMH+3pdrJCMTTOR+W0bGu77dbreTUaNGEZVKRV566SXy66+/ksWLF7P9ntFoJIR47r+NRiPZvHkzAUCmTp3K9o1nz54lhBAyatQo0qZNG/Lxxx+T7du3kx9++IHMmTOHrFmzhhBCSGlpKdFqteSFF17gtbWyspLo9Xry7LPPsssyMzNJ27ZtSbdu3cjnn39OfvnlF3L77bcTAOSPP/5g1zt16hT517/+RdasWUO2b99ONm7cSKZOnUoUCgXZtm0bux7T16anp5Nrr72WfPvtt+Trr78mV111FVGr1WTnzp2EEEIKCgrI448/TgCQ7777jj3G2tpaQgghQ4YMIUOGDGG3a7FYyPXXX09UKhV55plnyE8//UTWr19P/v3vf5PVq1dLXrshQ4aQ+Ph40rFjR7Js2TLy22+/kUcffZQAIKtWrWLXa2xsJH369CEJCQnk7bffJr///jt57733SHR0NBk2bBix2+28Y+SOBxgAkLlz57KfuWOh559/nvz222/khx9+8Ppe8eUaych4S0CCfuvWrWTSpEkkPDycREdHk0ceeSRY7ZKRaTUwnf7u3buJxWIh9fX1ZOPGjaRNmzYkMjKSlJSUEEJoQQ+ALF++nPf71atXEwDk22+/5S3ft28fAUA++OADQggh33zzDQFADh065LYtdXV1JDIyksyYMYO3vFu3buT6669nPzNicezYsbz11q1bRwCQXbt2iW7fbrcTi8VC8vLyCADy448/st8xndjMmTN5v/nyyy8JAPLFF1+wy7p3787ruBnEOs1hw4aRmJgYUlZW5va4xWC21bNnT5743bt3LwHAGxB06dKF9O3bl1gsFt42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QoKNoffTghoMUeLpVLZUdSyTpXmT4knLeCc1vJwSThd0d0JfDMmkeNYgW+iVCr8nfoSJCZln3xtau4U+WJn/hfhsofdh25eyhZ4hGP32vHnzWMumu39///0364L9wgsv4NZbb8WVV16JFStWgKIofP311wCAkSNHsi75Wq0WnTp1wrhx4wAASqVSdP/Mdh955BE88MAD6Nu3L9555x107tzZxVLLZfbs2aitrWX/FRQU+HTclwq33norbrnlFnTs2BF9+vTBZ599hqNHj+LEiRPsOtOnT8ett96Krl274sMPP0R0dDQ+++wz3nbmzp2LESNGoGfPnli1ahVKS0vx/fffs99bLBZ88MEHGDhwIDp37oyioiKsX78en376KQYPHozevXvjyy+/RGFhIWv1Hjt2LB566CHce++9mDZtGnQ6HV5//XXJ44mLi8OSJUvQuXNnPPjgg+jcuTMMBgP+/e9/o2PHjpg9ezY0Gg0vhOTFF1/EwIEDkZWVhQkTJuDpp5/GunXrANAeIGFh4QClgCYqDrroOOj1epf9fvnll2hqasLnn3+OHj16YNiwYXj//ffx3//+F6WlzrDI2NhYvP/+++jSpQvGjx+PcePG+ZUH4Mzvy/G18kVcu3/GJRneI0NjtdnxovJzPK9aDUNSP+whXXHRIP4uk5EJJj5b6P/880+sWLEC33zzDWw2G2677Ta88soruO6660LRvsuKOqNr5nrhoL7CIdzdCf3moDmtt56SlNVKZPtfvTcf+3KrsS+3GlOvbQedWsmL12Via/0VP7w4YC8FqRCPLvctpOhDWV1ADG8vAS8ZJEe485NESseaS03EcLPcB+MMaFVKvyd+hIO6Ch+e8VZfh57bviBuVyyZo7SF3vtt8/IrBLXVoSeY/fb06dNx1113Sa6TlZXFxsB369aNXa7VapGdnY38fGeViqeeegozZ85EcXExYmNjkZubi9mzZ6Ndu3ai205JSXHZLgB07dqVt10hWq3W7/hovVqJEwtG+fXbQNGrfRMD586dw0svvYTdu3ejoqKCnQDJz89nz9mAAQPY9VUqFfr16+dSCYG7TlxcHDp37sxbR6PRoFevXuznkydPQqVSoX///uyy+Ph4l98tXrwYPXr0wLp16/D333+7hFwI6d69Oy/ZYVJSEnr06MF+ViqViI+PR1mZszzYN998w4aWNDQ0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f/zjH3z22Wd89913dOnSJXg8MzMToNF7k5mZidfrpbCwsNFrdu3aVafe3bt3t7l7vHjxYvLz8xkyZAh2ux273c68efN4/vnnsdvtwfcj96xGVlYWAwYMqHWsf//+bN26FZDPWX1uv/127rrrLs455xwOOOAAJk6cyM0338yjjz4KyD1rSizvT2ZmZp16CgsL8fl8Yd9DCeiFEEIIIcLkdDoZMmQIc+bMqXV8zpw5jBw5soVaFRuGYXD99dczY8YM5s6dS48ePWqd79GjB5mZmbXujdfrZd68ecF7M2TIEBwOR61rcnNzWblyZfCaESNGUFxczK+//hq8ZuHChRQXF7e5ezxmzBhWrFjBsmXLgv+GDh3K+eefz7Jly+jZs6fcs30cdthhdbZDXLt2Ld26dQPkc1afiooKVLV2eGez2YLb1sk9a1ws78+IESNYuXIlubm5wWtmz56Ny+ViyJAh4TU8rBR6QgghhBDCMIyabetef/11Y9WqVcZNN91kJCYmGps3b27pplnqmmuuMVJTU43vv//eyM3NDf6rqKgIXvPYY48ZqampxowZM4wVK1YY5557br1bP3Xp0sX45ptvjCVLlhhHH310vVs/DRo0yFiwYIGxYMEC44ADDmgTW2M1R2iWe8OQe7avX3/91bDb7cbDDz9srFu3znjvvfeMhIQE49133w1eI/estosuusjo3LlzcNu6GTNmGB06dDDuuOOO4DV/93tWWlpqLF261Fi6dKkBGM8884yxdOnS4Hajsbo/1dvWjRkzxliyZInxzTffGF26dJFt64QQQgghYunFF180unXrZjidTuPggw8Obt32VwbU++/NN98MXqPruvGvf/3LyMzMNFwul3HkkUcaK1asqFVOZWWlcf311xvp6elGfHy8cdJJJxlbt26tdc2ePXuM888/30hOTjaSk5ON888/3ygsLIzBu7TevgG93LO6Pv/8c2PgwIGGy+Uy+vXrZ7zyyiu1zss9q62kpMS48cYbja5duxpxcXFGz549jXvuucfweDzBa/7u9+y7776r9+/XRRddZBhGbO/Pli1bjBNPPNGIj4830tPTjeuvv95wu91hvyfFMAwjvDF9IYQQQgghhBBCtDRZQy+EEEIIIYQQQrRBEtALIYQQQgghhBBtkAT0QgghhBBCCCFEGyQBvRBCCCGEEEII0QZJQC+EEEIIIYQQQrRBEtALIYQQQgghhBBtkAT0QgghhBBCCCFEGyQBvRBCCCGEEEII0QZJQC+EEEIIIcRfyPfff4+iKBQVFbVI/XPnzqVfv37oum5ZHYcccggzZsywrHwh2goJ6IUQQgghhGijRo0axU033VTr2MiRI8nNzSU1NbVF2nTHHXdwzz33oKrWhRr//Oc/ueuuuyztNBCiLZCAXgghhBBCiL8Qp9NJZmYmiqLEvO758+ezbt06zjzzTEvrOfHEEykuLmbWrFmW1iNEaycBvRBCCCGEEG3QxRdfzLx583juuedQFAVFUdi8eXOdKfdTp06lXbt2fPHFF/Tt25eEhATOOOMMysvLeeutt+jevTtpaWn84x//QNO0YPler5c77riDzp07k5iYyLBhw/j+++8bbdP06dMZO3YscXFxwWP33XcfBx10EG+88QZdu3YlKSmJa665Bk3TeOKJJ8jMzKRTp048/PDDtcq677776Nq1Ky6Xi+zsbG644YbgOZvNxgknnMC0adMiv5FCtGH2lm6AEEIIIYQQInzPPfcca9euZeDAgTzwwAMAdOzYkc2bN9e5tqKigueff57p06dTWlrKhAkTmDBhAu3atWPmzJls3LiR008/ncMPP5yzzz4bgEsuuYTNmzczffp0srOz+eSTTzj++ONZsWIF++23X71t+uGHHzj33HPrHN+wYQNfffUVX3/9NRs2bOCMM85g06ZN9OnTh3nz5jF//nwuvfRSxowZw/Dhw/noo4949tlnmT59Ovvvvz95eXksX768VpmHHnooTzzxRIR3UYi2TQJ6IYQQQggh2qDU1FScTicJCQlkZmY2eq3P52PKlCn06tULgDPOOIN33nmHXbt2kZSUxIABAxg9ejTfffcdZ599Nhs2bGDatGls376d7OxsAG677Ta+/vpr3nzzTR555JF669m8eXPw+lC6rvPGG2+QnJwcrGvNmjXMnDkTVVXp27cvjz/+ON9//z3Dhw9n69atZGZmcswxx+BwOOjatSuHHnporTI7d+7M1q1b0XXd0vX6QrRm8skXQgghhBDiLy4hISEYzANkZGTQvXt3kpKSah3Lz88HYMmSJRiGQZ8+fUhKSgr+mzdvHhs2bGiwnsrKylrT7at1796d5OTkWnUNGDCgViAeWv+ZZ55JZWUlPXv25IorruCTTz7B7/fXKjM+Ph5d1/F4PGHeDSH+OmSEXgghhBBCiL84h8NR67miKPUeq84ar+s6NpuNxYsXY7PZal0X2gmwrw4dOlBYWBhx/Tk5OaxZs4Y5c+bwzTffcO211/Lkk08yb9684Ov27t1LQkIC8fHxjb11If7SJKAXQgghhBCijXI6nbUS2UXL4MGD0TSN/Px8jjjiiLBet2rVqqi0IT4+nvHjxzN+/Hiuu+46+vXrx4oVKzj44IMBWLlyZfCxEH9XEtALIYQQQgjRRnXv3p2FCxeyefNmkpKSSE9Pj0q5ffr04fzzz+fCCy/k6aefZvDgwRQUFDB37lwOOOAATjjhhHpfd9xxx/HWW29FXP/UqVPRNI1hw4aRkJDAO++8Q3x8PN26dQte8+OPPzJ27NiI6xKiLZM19EIIIYQQQrRRt912GzabjQEDBtCxY0e2bt0atbLffPNNLrzwQm699Vb69u3L+PHjWbhwITk5OQ2+5oILLmDVqlWsWbMmorrbtWvHq6++ymGHHcagQYP49ttv+fzzz2nfvj0AO3bsYP78+VxyySUR1SNEW6cYhmG0dCOEEEIIIYQQfw133HEHxcXF/Oc//7Gsjttvv53i4mJeeeUVy+oQoi2QEXohhBBCCCFE1Nxzzz1069bNkrX91Tp16sSDDz5oWflCtBUyQi+EEEIIIYQQQrRBMkIvhBBCCCGEEEK0QRLQCyGEEEIIIYQQbZAE9EIIIYQQQgghRBskAb0QQgghhBBCCNEGSUAvhBBCCCGEEEK0QRLQCyGEEEIIIYQQbZAE9EIIIYQQQgghRBskAb0QQgghhBBCCNEGSUAvhBBCCCGEEEK0QRLQCyGEEEIIIYQQbZAE9EIIIYQQQgghRBskAb0QQgghhBBCCNEGSUAvhBBCCCGEEEK0QRLQCyGEEEIIIYQQbZAE9EIIIYQQQgghRBskAb0QQgghhBBCCNEGSUAvhBBCCCGEEEK0QRLQCyGEEEIIIYQQbZAE9EIIIYQQQgghRBskAb0QQgghhBBCCNEGSUAvhBBCCCGEEEK0QRLQCyGEEEIIIYQQbZAE9EIIIYQQQgghRBskAb0QQgghhBBCCNEGSUAvhBBCCCGEEEK0QfaWboAQQgghRCzpus7OnTtJTk5GUZSWbo4QQgiBYRiUlpaSnZ2NqjZ/3F0CeiGEEEL8rezcuZOcnJyWboYQQghRx7Zt2+jSpUuzr5eAXgghhBB/K8nJyUDgS1NKSkoLt0YIIYSAkpIScnJygv+Pai4J6IUQQgjxt1I9zT4lJUUCeiGEEK1KuEvBJCmeEEIIIYQQQgjRBklAL4QQQgghhBBCtEES0AshhBBCCCFEBH5ct5tRT37Hwo17Wrop4m9GAnohhBBCCCGEiMALb7zF6KKPefzVt1u6KeJvRgJ6IYQQQgghhIjAcbbf+JfjHY62LW3ppoi/GQnohRBCCCGEECICTnwAJOBp4ZaIvxsJ6IUQQgghhBAiAhfYvwXgUvvXLdwS8XcjAb0QQgghhBBCCNEGSUAvhBBCCCGEEEK0QRLQCyGEEEIIIYQQbZAE9EIIIYQQQgghRBskAb0QQgghhBBCROBt7VgAVurdW7Yh4m9HAnohhBBCCCGEiMB6ugKw3ejYwi0RfzcS0AshhBBCiL88v6bz3ep8iit8Ld0U8Re0Tcnmf9pIftP7tnRTxN+MBPRCCCGEEOIv75UfN3LJ1N848z/zW7op4i/IrzpZoA+QgF7EnL2lGyCEEEIIIYTVdiz6ghcdX7K0YD/gqJZujviLGacs4DzHTP7tP7WlmyL+ZiSgF0IIIYQQf3ldjDxOtP2K0tINCaH5/ZSXFZPSrn1LN0VESFUAA5zIkg4RWzLlXgghhBBC/OUd6F8BwAm2X1u4JTXWP3YYKZN7krd1XUs3RUToKP03AK6yf9nCLRF/NxLQCyGEEEKIv7w0vbClm1BHX/9qADb/8F4Lt0RESlNsLd0E8TclAb0QQgghhPjL05XWu9LU0P0t3QQRIa0Vf77+rhZ98QqLPnu5pZthOQnohRBCCNFq/PDDD5x88slkZ2ejKAqffvpprfMXX3wxiqLU+jd8+PCWaaxoUzS19QZcbiWxpZvwt+L165z9nwU8OWt11MrUkBH61qSisoKhi25n6JI7KS4pbunmWEoCeiGEEEK0GuXl5Rx44IG88MILDV5z/PHHk5ubG/w3c+bMGLZQtFVGKxxB3aJ3AiAvsU8Lt+TvZfaqPBZu2suL322IWpkyQt+6+PWaxxUVFS3XkBiQgF4IIYQQrca4ceN46KGHmDBhQoPXuFwuMjMzg//S09MbLdPj8VBSUlLrn2iaYRj8Z94G5q3dbXldheVenpy1mk0F5VEpz9B1Frx1Nyt++F/wmG5yhN5dWc4vL17OinkzTLcnd8saFvznOnZtrx1ALjL68KM2kAolwXTZkdi5aTULXr2RgrxtManPXVHGgtdvZd2yHy2vK3fLmsB727mlzjl7RT5PO17iEfurEdWxZtFcFrx6E+7KcmbFnxBRWWZUeP08M3sNK3e0zhHospJCFrx2M5v+WGhZHd/+uYvXftxY57jd7gg+1nzN33lA8/v5ZcpVLJ31VlTaFwsS0AshhBCiTfn+++/p1KkTffr04YorriA/P7/R6x999FFSU1OD/3JycmLU0rZtwZ+b+GHWf/n3m29bXtddM37nxe82MO65H6JS3rJv3mfEphc5YO6FwWM/tTsVgK16x/DK+vgJhu/+Lwd8d4np9vjeOo0Rue9S9ubptY7f6ruWib67yXd1N112JJS3TmLEjqnkv35OTOpbOu0+Rmx7jf0+Pcnyura9fSUjdkxl5Vs31jmXXrKa020/cZ79u4jq6PvFaYzY8SZLp93PFud+AOw0Gu9gjKZ/z13P83PXc9K/f4pZneFY9P4DjNj+Bp0+PNmyOi57axEPffkni7fsrXU8dHtKzVfZ7PKWznqT4bumM3jBDVFqofUkoBdCCCFEmzFu3Djee+895s6dy9NPP81vv/3G0UcfjcfjafA1kyZNori4OPhv27bYjEa2dWW563jP+SjPOxte/hAtvTa9z2LXVUwyXo9KeZ49dX/Gui0OAB9hjtQX74i4PV31QBm9tE21jr/seJbfXZfRu+CbiOswI4vA7IsBvpUxqW9jZRIAa/Qultf1hycDgN/LU+uccxDdJIRxe1ZRaUthjjaEH7RBUS27MXu2rmGC+gOHqStiVmc4Vla2A+A3vZ9ldSRTQXuK2bm3tPYJvzv40PDsc64RleVl0WpazMhiDyGEEEK0GWeffXbw8cCBAxk6dCjdunXjyy+/bHCavsvlwuVyxaqJfxl2VWn6oihJUHy0V0pJVBrumAmHJ77uKPy2pEF0d78HKGwOoywjCsn0XveP4zL7V7zoH891Icfj8ZCiVKKGBB9/ZV57IPnfbiOVvi3YDtUe3RBIMfy0U0r5XBvOOqMLsZnvAEdUzOFk5ztVz+6KUa3NZyiBae/2KHeghFoRdzkAC3c+C4MvrfcazedtdnnFqf0B2GW0IyPy5sWEjNALIYQQos3KysqiW7durFu3rqWb8pcT7w+sy81W9jZxZeSO1wNT7c+wRWfKfUVKLwD2GknBY/0ql/CU4z9MtM0Oq6w9ib2j0qb6HGX7HYDOZS0zwvqufwwAz/pOb+LK6LDFsJOoMarNGXxs6HojVzZPni2bIyu+5Xnni4yzWbdefF+dfXXzA7QqtkDHiUPRLK9K8TY8sq75mx/QK/bAZ8OO9W2OFgnohRBCCNFm7dmzh23btpGVldXSTfnLcenNX3caKYcS3RE81VY9MljzpTzDu40zbD8wTP0zrLK8zjQAluk9o9fAfdi06MxMCJdBbAPsTr6dABxu+8Pyui6xzwLgBvundc6p9poZO74wRm/39bV2CAA7bZ1pib6KaMwesdJQ9y8ADFOjtz1gQwx/w4nv9DB+xtV/OxxtKKBv3Z8CIYQQQvytlJWVsX79+uDzTZs2sWzZMtLT00lPT+e+++7j9NNPJysri82bN3P33XfToUMHTjvttBZs9V9T6Cim1bQofyVV7E7KjDjKiSel6liqFphpcFKYI6g704dxiPtFNGwsMdmek20LALjO/ln97TWsm5LcmAX6APx+G8sM62YhhErXGk9gGSu2kAzofp8HpyvOVDk3+K5H86kMjevAHaWPBI7V04FgFbM7N8RKnBG7TkH0hgP64uRezS6mfXlgtleK0na2umvdnwIhhBBC/K0sWrSI0aNHB5/fcsstAFx00UVMmTKFFStW8Pbbb1NUVERWVhajR4/mgw8+IDk5uaWa/JelOmoCet3vj/q641DR3sM72VdAkuKmQK9JiOak+VtXhXIpPg5T/0BHAc41VcZOoz2dlCI8hoP6sjmojQQjVvJhJ1vZQy9lZ0zqM1RH0xfFgOoIGaH3mh+h76QUEYcHuz++1mi5oesoqvUToVvL/WxILNtnNDKt3mfYml2OYjfXudOSJKAXQgghRKsxatQoDMNo8PysWbNi2Jq/N9VeE9D7/B5clgb00f3ibw8JpnTdQFUVDJu5OlL9hUx2vkSxkQA8YqqMT40jOYgNfKMP5sR6zistFNB3VXZxnG0RFfV2M0TfzuRBUDAjNnUZ6Q3mf1AcgaAt10jH4TDfGfi0YwrD1NU86rkbI6RTyu/34XBaf09be0Bfbk+LXWVaw79Dfq35eRL0uHYAbNIz6G4YKErryPvQGFlDL4QQQggh6tBSuwYfRzKK2Rx77eHtDd8Um63mS7ivOulZSPATTiK0dE9gC7zUCKbg6krj63IL1famy45EPIGfaztis1VXYWJg6nO+0c7yuqZopwLwVdU691De9v3o7n6fEZ4X8OkNdyA2pXpt+Aj3j7WCa38E6/LDYcRwWYwZeQl9AJijDbG8LkPb556rdrxVI/OOkuYnD7TbasJjn2b+sxFLEtALIYQQQog6jOTOwcd+r7VJ235IOh6AVXq3qJTnrNomq7u6C19lVbBqqxlBDScRWrJvd8TtsauBwCCR2tvTbdUDHRnz4o+JuA4zbrF/BMBo2/KY1FedQTza+8DXp3p9eX11hU4C8vkjD9p6aJtqTbmPJNFeOLam1u2saE3UGI5uFzlqbzJn2Bz8aQT+njjKc5tdjr2qye2Ucnz+lsltES6Zci+EEEIIIeqw2exohoJNMfD7rA3oPfYUVujd2WRkMSAK5dnsNWtmNa8bSIWQ0cxwEqGpttoj+2bWRl/PBwActk9295VGD3br7SgzYjPlfV8+7LhM5hYwI9EIdK6kKdbPCNDV6s6D+mdFTLK/RwoV6KX9oH3zk6bVx2b4Wdr+RIbtDSQ91BvJuB5NO9OGcq73HtyGk09iUmN47DEYOu7ufh+Aazr0Ytw+53xVoa7eyHT8fTmqOt/SlDKKywshrvXvRi8BvRBCCCGEqEP1lXOn/0oqDBf3uNItrWtbfH9O9gbWp4+PQnmKUhPQ+6o6I9blnMmIDc8FjoWxhEAJzSXg85rKiO5v4Cv3tb6bABhii+Fa4xCxDuhzSpbGrK5zmQ3AUbbf65xzFm/iKvuXAGwqLwAiC+jthp/cpIHohoKqGPjD2Pc8EoYjiQX6/jGpy4xUbQ8Ax9oWW16Xz7/PMhpDp7NSEHjoc9fzivqpat2/Ha2dTLkXQgghhBB1OIs38JTjP9zjeA+fbu1XxqPLPucn1w3cbX8vOgWGTPWtXs9sOJJCjoXxRX2fkX0zPEr9I/CX2b7kF9d1nFvyhqlyI+WL8u4CTfHEBZYY5BrWdhABrFYDQfpz/rpbWqq+8uBjLQrT4+1V0/p/1A9gnjYIvxGbECvdl8c4dSGHKNbv827Gnx0DS2lKjXjL6rChEYenbpZ7XyVZVUkRVW9ps8vT7AnBx7HKhRApGaEXQgghhBCN8oWRJdqMRKOSLkoBaTT/i3dj/K6a7eq06iBcUejvfgM/dn50NT8JXa1s/yaTA/5qH0qO73Ne8J/C9SHHE/CQqRSSoEXnfYdLo/nbeUWDUrV8Yb2eTSfdwKZat8a6ueu3ozGabsdPRuV63tWOYaORxZtO6zssAHoU/8JFzsCsE0O/OSZb5YXDVvW747QwZ8KGuIkA/LjjbOCV+i8KY8p9ZfsBlBrxJCuVNX87WrnW9VMXQgghhBCtSmdlD0aJtfuUd/IHyj/T/kNUyvOk9qLQCIzIVyf0y9i7iEn2aZxm+zGszOZKSDI9bwMj7U1pKLi81RFIStfHv8ZUuZGabxsKwGT/hJjUZw/dfcDiTiK1mZ0FegSjsNuNDgDsNDoypOAzXnU+w3jb/JqdFSzmNGra7o/Ruv1wqCFJEBvbjjQa4nwNd4rVyYDfBH9VR5fVyUCjRQJ6IYQQQgjRuNLmZ4k2w4qB2uqEWNXTZtPK1nGhfQ5HqivCCiYVAo1bpvfCp5jb97upgVOX0TKBQ/Xe6XqMpojblUBQd4RtJV53eRNXR2Z/LdBJcqO98XRxegQj9G/4A2nYNhhZhIar/hhtd1Yrv4O3+evEY6VX0XwAVMVAszhjvKI33KFhaOHVXf23Q4tRLoRISUAvhBBCCCEaFckoZnMYNnOBcmNKjXhKjPg6gcRJtl+gZEezy9nbaRhHeZ7hGu9NpgO1Llqgvuvt/6v3vN1omdHVP+39me4fxR9GdLYLbIotpGfDX2ltpnub0ryfVSRB23vaGA5wv8ZtvquCx260f4Jt90rTZYZDsYUG9K1vhD5er/kZ+ywe7W4soP+j4wnNLidhz0o6KUVAdPIrxIIE9EIIIYQQolF+v8UjyGpIQB+FqbmJuxbTXcljt9GO0vS6G+EZ5XuaXZZuT6CnkssQdS3+iiJT7dnl6NLoeVsDW6tZba1zAC7FxxHqithUqNSEHlaPfmrNTPhnRDBVPYUKUihHMWrP+LC6A6xa6HIQfxiZ3GOlVoeDxevR1UYC+nKan5RP9dfcR489qZErWw8J6IUQQgghRKOMGI7Qa2FOj22ITTFQ0fH663YQhLve+AnHK7zg/DcUbzPVlnnJgRHCAiOl3vMOC5OGNaadWs5ptp9jsq0YQElqv+Bjq0ds99o6NHyyKqeB23CQ13Gk6TpedD7Hz3E3cpS6vNbxSKbxhyd0N4dWuN475Pfab3XOBKPh3yEzM2s26pmUJcZm5kqkJKAXQgghhKWWLVvW0k0QJvgSOgUfa2FkiTaj0tWxpt4oB3r1rZc3wgh+EkrW01EpBiIYVbbVJAerz3Y61nvcai41EOgkUxmT+kpTelNiBLYF0yweUf445SIA9hp1R1nd7fenu/t9+nnewoP55R6DlI0AXGP/vNZxrQUS1PlN7sBgJaVqRsZsbQhee7KlddUZoVftbNEDf8NyCheaKtPqxI3RIgG9EEIIIaKuuLiYl156iYMPPpghQ4a0dHOECf6EDH7T+wBgWDzlflX2mcHH3igG9D3UXSTk1x19DifgSijbWvM6k6OgihqYGu2idr3b9EAg/6B2qalyIzWx7A0AUpSKmNXpDSYcszjorUoYZ29iOYMvggR2cUrgPRykbqh1XI9RQL8n/aDgY83qZTERsjo43mTvUfuA3cVsPbCLQ3bZ72GX51T8sg+9EEIIIf5+5s6dyxtvvMGMGTPo1q0bp59+Oq+//npLN0uY5Ddik+1ZsTvYoGfhw06nKGTDDg3R1PLddc7rYW5jVc1skqyzCl8FagLAahuMbMr0eMr0lvlKrpnM2m+Ww11IB6UEsH5LsOo97xvaA/0M2zwGKFtI3X0e0HiOg+ZYmXYMwws+BsCweEZLtbLEblzovROAe+IzYlJnOEJ/D60K6Lu73wdgSEYa40PrNmq2nyOMZTzVbe6iFLB7+1wYMDE6DbWQBPRCCCGEiMj27duZOnUqb7zxBuXl5Zx11ln4fD4+/vhjBgyom5BMtA2Kv5K3tLG8p43huA6HWVqXqtoY430agIXO1KiWXb2eeUP2yfT+80XaK6XoJkczza6N1kOS/hm6jlKV7f1i352myouW0HbFQqf8n4KPzc52aK7jS2cAdTtRAJwlm3nK8R8AFhYPBk6JuL6tSYNYpvfiIHVDDNfQww/6gQDcriTErM7m0tXALImxtsVsKlgLHQ+2rK46a/QNnXYEsuyrWmx/32NNptwLIYQQwrQTTjiBAQMGsGrVKv7973+zc+dO/v3vf7d0s0QUuPau42XnZO5yTKNCtTbbc7+dM5jtvJ1b7R/i9Ud5JK9qNN5rS2SzkQmAHsYsgNBRRrNf8I2QwNkXMsp/sLKWuc5beMPxhKlyI6WHZII39NitFy42EihL3c/SOqqn2j/nn4Cm155Wr3pLg4+jOZr+h96dhXo/Km2xyY4eV7mLUeoyBikb8MXw59dcmzqPJ89IA0DzWpmnwcC/7++0r4Jz7d8B4NTKm12SbnPVlNpGAnoZoRdCCCGEabNnz+aGG27gmmuuYb/9rP2CLlqON4J1xs0R5y+mj7qDZXrvqEzN1Zw12eRDv5Rf4r0dgMc6jWCwiXLNBvTequ2v/u0/lUuxU72Zl0vx0VPNw6/bTJUbqdARer/fh8PpauTq6Fmu98KuNH8rMTNsak0GeJ+mY1MbuMdRCto6uLfwlX4oW7VO3Jxm3Uh0qIyCBUx1BjqDlpQcA6TFpN5w+Aw7KNbNyNgcdx4Af5b0AX6r95rG9qjfV0WHA/hWG8wY29I2E9DLCL0QQgghTPvxxx8pLS1l6NChDBs2jBdeeIHdu+uuWRZtVxelgLQ9S2NS11n2eSh7NzR9YRPc7fbja+0QoCYI71S0lOvs/+NodRk+zAXQe1L6NX1RPVSldnBZ7S3HYwD0UXeYKjdS1R0NL/tPwmfENizwWpwkLeSWN9pJZIQR7O1rpjYs+HjY7o941/kop9t+jP4sk2Zw7F0X8zqbI1ZJEJON0gbPNbalXX18VW02TObaiDUJ6IUQQghh2ogRI3j11VfJzc3lqquuYvr06XTu3Bld15kzZw6lpQ1/yRJtR4fC2AT0AJq7LCrlVAft1VOq00tWc5X9S8bYlpgKuJbqvSl1ZZpqS2hwGRrIOpXGM7BbrXpbsXIjDl8Mm3KkbQWOoo2W1mGruuc32mfgL9vb8IURTLl/jdMAyDXSax1viYDebF4IK3Xe9T291FzA+vbZGwna62xp14Tqvx2x2q0gUhLQCyGEECJiCQkJXHrppfz000+sWLGCW2+9lccee4xOnToxfvz4pgsQrVsMv9hGa2quDzt+Q8XQa0eqJ9t+IW33r80up6jDIYzzPMrNvmsi2uIM4B/2T9FL8yMqI5p2JA7gf9pI1hpdYr4GO75wtbUVhPSi+L2N7HkfwSjsZltXhrlf4ATPI8FcCzfaZ9Bj8wemyzSrNSZwi/PUzNbSLd4Czk7Df6PeTb2y2eUk7PmDk22/BJ7ICL0QQggh/o769u3LE088wfbt25k2bVpLN0dEQSynnkZji7zE/CUcp/7GGiOHJdnn1jmfXNL86cl+ZzIKBj2UPJylW5t+QT12x9fska25W8+slcXtT6LISGSMuhR/+Z6Y1h3LANTXSECvRDBCn6z68GKnnNr5AGy+6MwyCUdrH03WLN7Kz0bDU0x20b7Z5aj+iuDjQld2RG2KFQnohRBCCGEJm83GqaeeymeffdbSTRERUvTYBV9GFEboFUMnUfEQj6fe9dPhZja/1v4ZbzqfJDPvB1PtWdzhVAqNwHp1v8UjleE6w/YDZ9nnoZWXWF5XSUqf4GOrE465bcnBx411Es3LuNB0Hc8bj7I07mpGq8tqn2iB6e9GK5xyH8qjWpsE0dHIlHu/Hv7Mmg16FmvTRkfSpJiRgF4IIYQQEfnuu+94+umn+fnnnwH4z3/+Q9euXenYsSNXXHEFlZVWblckrOJP6FjzRAsvqVS4vLbEkKqiO5Lnr2+afBjBZELpJk6qnoIbQceGv2pdrhYS0GuG0tDlMaEYGgaBNmj+RqalR0lJal/maEOA6G4XV59vs65kjxEI6vddxuFuP5Du7vfo4X6XEiW5vpc3SxKBv233O6bWPmFy3/NI6Bbfz0jM0oayK/0QS+twsM/fKNXOb3qgA+mIim9MlRmNHTdiQQJ6IYQQQpj26quvcuyxxzJlyhTGjBnDo48+yq233sqJJ57IWWedxYcffsj999/f0s0UJvgSs3jRX5X/wOIp9390PpNlei8gulOxe6p59MurO0MknNHMxJKa5G2RjCoHs32HBJe5VVOBx3seNF1uJE7Z/jRJirtOu6wUTFYYgyn31dnK68yKUBRAwUCNKGhzVq3bzlQKUYyQcmK0RGVvuwOCj1v7FmuR5p9oym9Gn9oH7HG85j8RgKMq55oq06e1bNLK5pKAXgghhBCmPffcczz77LOsX7+eTz/9lP/7v//jxRdfZMqUKbz44ou89tprfPTRR80u74cffuDkk08mOzsbRVH49NNPa503DIP77ruP7Oxs4uPjGTVqFH/88UeU35WoVh0QhbOPs1l5Rjpb9Y7BwDcSoaFDh/K1dS8wO4JqchR07Pbn6awE1qiHTv/eSUc26Rl4caCZmBYcqdAa/T7rf8Z2XzE9lLxA3TEIemtmRdT9eR+srOU2+wcM3Gtu9BbArziCj1cmHU6F4QJAiVFAX5LUk9M9/+Jq701sTxvW9AtakFWj3f3db9Df/QYTvZPqnKv+W2JrJGHevoyqX4peai6jNz8blTZaTQJ6IYQQQpi2cePGYBb7448/HkVROPTQQ4Pnhw0bxrZt25pdXnl5OQceeCAvvPBCveefeOIJnnnmGV544QV+++03MjMzOfbYY2V7PAsofjcL9f7c4L2e79qfZ3l9V/tu5kjvc+R2PCyq5Sp6YCrupsxxfKsNDhwzu97YZEBvC1nfGzrl/gr1AUZ7n2W10bVFtjoLpcVgDXZm3jz6q1WJBS2eIn5Y/nt0UQoA8Bu1Qx578RZmuO7jevv/2L/0R9N1aEpN59O6+P2Z4j8ZiF1AD7DY6MvX+qGtMoGbUbUt4nG2RXTd+okldVQSRyVxGPuEtYZhEEfg52A32SFZ/bejtZOAXgghhBCmud1u4uNrkh25XC5cLlet535/878UjRs3joceeogJEybUOWcYBpMnT+aee+5hwoQJDBw4kLfeeouKigref//9yN6IqCOucA3TnA9zh2M6+bYMS+vqm/sZ/3Peyz9sM6I+Nbc6uHI727HS6F51zGTwGoXkgKH7ccfbDL5w3s1s5+14G9srPQas3lYslMews7r9sZbWkeYNzASY7J9Acbv9a52zeYuDj9UI1ruHjtAbfh95pLNS785eWwfTZYbD5S7gUOVP+ijbLJ/SbsaGnAn8TxsJgM1rfdLFWrxlTHE+B0CiUdHExTUMteZnGstkoJGQgF4IIYQQpimKQmlpKSUlJRQXF6MoCmVlZZSUlAT/RcumTZvIy8tj7NixwWMul4ujjjqK+fPnN/g6j8dTqz3RbNNfWWh44LE4OVSCdw8HqhvpohREZaRacyYFH4d+KX/dP47h7n/zZcfm70tthNyJSEdeX/SPJ7/jyOBz1Wanv7KFPuoOfO7mBx1W0HzWJ8WrtlDvz157J0vrCP25Nfb5tUWwnKR6BBogvXIzG/RsrvTewsx085nzw5G5+yc+dD3IbNedpBSviUmd4apetmPVGv+3HY+yOe48Nsc1PIvIQfPrLu94EI/4AltdRrKlYSxJQC+EEEII0wzDoE+fPqSlpZGenk5ZWRmDBw8mLS2NtLQ0+vbtG7W68vICI24ZGbVHizMyMoLn6vPoo4+Smpoa/JeTkxO1Nv0ddFEKGFj0fUzqOtv+PZ23fR5xOZVp/fiX7yKgZv1/h+IVXGr/msHqekqMOFPlLk8ZFVG7NNRaHRZP+x7CpgQCT6+n5XaDmOofy+70oTGt0+pOolCNdRLZdPMj9EudNffs+L3vMsN1H2fZv8frj30ytZ75s2JeZ3N4jKoRb4uWdBxpW9HkNU4jvM4EL4E2q21khD7yrCNCCCGE+Nv67rvvYl6notTe6sswjDrHQk2aNIlbbrkl+LykpESC+jAdVvIlcEuT10WDszI/KuV4qr6U26qmVHcsXsHJ9hl8po3ga+2UsMtbovdmnWtg5O0KCS576DX5JXyelhuhLzBS6WTELiw40raCjXt/A/pbXtdN9hn8sn0s7H9uvecjGaH/OOlcTij7mHZKObaQ4K8l8iGYzgthoezdPzLa/m3gSQy2RTR0HUWtO17tCiMpHoAbJxDZcoxYkoBeCCGEEKYdddRRTV6ze/fuqNSVmZkJBEbqs7Kygsfz8/PrjNqH2nddvwhfJKOYYYvSF//qkcF92z7etoCSPZ8AQ5pVTmGHIUzw3Ec5cfSJMFC7wf4p3+eOg8Hn1Dnn88Zuynu1vLjezNGGsMnIoleMR5X77/kGiM3UdLWioMFz9jBHb/d1qvcB/Nj5V/xXDCTQgTA/fy/wv4jKDZfpvBAWSqzMDT6ORft8Pi9OV93ZN+d472VGM8uI37uKxxyvAWCP5d+9CMiUeyGEEEJEnWEYzJw5kwkTJtClS5eolNmjRw8yMzOZM2dO8JjX62XevHmMHDmykVeKSNljOfU0CgF94u6l/J/jHVbq3Xmo3UN1zh9U/lPzm+Nsx1YjgzSljIyyP021Z4+rZkZIfOnm+uvxxn7K/S8dJjBbH8Ih6mpSdv0W07pVLXYdGEYj+QEchvmgzWF4yTPSyTXS8ei24PE0f3Q6McOhxGAEPBJWtc9t1CSx8zSQh+IPozuG0bykgTZfWfDxBluvyBoXIxLQCyGEECJqNm7cyL333kvXrl05//zzSUhIYPr06c1+fVlZGcuWLWPZsmVAIBHesmXL2Lp1K4qicNNNN/HII4/wySefsHLlSi6++GISEhI47zzrt1X7O4t0FDMc0Zg6rOh+0pQy4vHgqSf7txrmNOuj1OVMdz7EyXveMNWeXzudycfa4UDDwaXmaZmA7Ch1ORfbZ5NUtNryukqSewUDMKunM/vUmt03jEaCyTsddfcvb677CiexOu4SxqhL0PSaz5nNiH0ytda+3rtYTbOk3Or17gDeRhJLesKcXbNBz+LNhIvNNiumZMq9EEIIISLidrv56KOPeO211/jll1849thjyc3NZdmyZQwcGN6a40WLFjF69Ojg8+q17xdddBFTp07ljjvuoLKykmuvvZbCwkKGDRvG7NmzSU5Ojup7EuCPa88fejf2V7fgsDig96s1SyKiPTXX46s7lTycDor4sq1cYP8m8LoIpuAGk4P56h+J9+ots+1Yda6BxoLeaCluN4D7/BfxmOM1ywPQWdnXkrtzB2fZ59XpRHGn788A9xsYQJIjNeK6Jtnfp0ir2aouknX5ZtliOOMhXF9rhzAz/SLGNn1p+ELyp/hCE0uqdr7QhnOS7Reusn2Bp3IMcY6UsIqu729HayQj9EIIIYQw7dprryU7O5sXX3yRM888kx07dvD555+jKApqPcmJmjJq1CgMw6jzb+rUqUAgId59991Hbm4ubrebefPmhd1pIJrHl9yFSb7LAXBYHHz93uU8HvcF1pVHY2pu9ezaXmouV5a/XOd8OO8nqXgtg9X1ALUSn4XLU5Voy6g1AyHQ0JM9D5Ef4yzzAKfseIrTbYHlB41NS48Ww2g4t4EVqjsr6mRYV21UEEclcREGbYGfXw91F130ncGj9jCTsJlVmDqA9Xo20DoTuIXOcndbHBzvMNrjDq3CEc/1vn+gGwq3OD7CW1EUdpktkdzQDBmhF0IIIYRpr7zyCnfeeSd33XWXjJL/BVUHRM4w9nE2q5R4CowUKoluAsORvoV1jpldQmB2vfWY7S9xhD2wrVhoh0Whkoqi+/Fja5HgQTVCIqAYZEm3+cvpqBQBYNes/0xVZyuvLy9DIpVcZJtNnKYDx0Vc1wIOIEEr5RjbUhwxmnJfnNKHy3y3MVRZS7v2PTgwJrWaE+6U9+Y6kecod/spJpHPXfsmR1Xw4CAeLz53M3NUVPVC9FJzmVp+NWD9UpRISUAvhBBCCNPefvtt3nzzTbKysjjxxBOZOHEixx9/fEs3S0SBonnx4OBG77XscWTxrsX1vasdy7vasRzXPoOm905ovurOiE0Zx/HlynwedEw1HXCZXXrg1GuCidAlBZc5n2RncSDYtCrgabYYTLnPzv2WUxzTALBHkIyuOUbkf8iJ9plASGBfxVG6jRcczzPathwAQ3+l3u3OwvGL1p/l/m4cY1uKPYZr6LcYmWwxMjnY1i5mdYbreNtvJO9+GCsy/xeRQil+ADwhOzUYuo4NDT+BZIW1puM3U5JRHp1GWkym3AshhBDCtPPOO485c+awcuVK+vXrx3XXXUdWVha6rrNq1aqWbp6IQPzeVXzvupXb7P/lV/9+ltbVZ9dMpjsf5Crb51EPbF1VQXilsz2/6f0A81Oio7H0YN8cAbfaP+RT5z/ptO2riMuORKy3PXsp7gpLy+/g2QrAs77Tmd3xklrnbO69wWAewOuL/L2rupdyXGzQs9hOw9toRpPTW8gByka6K7kt3yFUj3U5Z3Kl92YAOvjyLK+v1j3wlrEhbiLJSiCQ93saTpgXylBqditwtkByQzMkoBdCCCFExLp3787999/P5s2beeeddzj99NO54IIL6NKlCzfccENLN09EyKvp6BYmbUvy5DFc/ZMeSi4eX+SBiW5PYLcRSHbmDAneNxmZjPE8yfk8bKpcR4Rro1/3j2N6p5trHeum7OIgdQPOil0RlR0pNYbbns3TBrGcPjGrL3Tktt7zzZ2O3YjuSh7xeDnH+08m6vdFXF5zZO/6ns9d9/K961YOcC+KSZ1hUZTg7Airdsq4lbfZHHcem+POI2HbDw1e52vmtpBlnYYw3P1vIDZLjaJBAnohhBBCRI2iKBx//PF8+OGH7Ny5k9tuu4158+a1dLOECdX7Nueou7nINguv1/qA7xz791y695mIy6lovz/Hep4AwKFoaH4f7UtWcZFtFt2VPDb72ze7rNBujJeMMyNqVxlxVPhrvn4/4nuc8bYFgXpisIa9If/1H8knHa+KaZ2xzCDe1Oh1Y9udNWalY1Dw8eX2r/jKNYnzbN/i1WI/Wn5D5ZSY19kcHsPagH6CMTf4WPM0PEU+nG0hg7lDFA3N7zffuBiRgF4IIYQQlkhPT+emm25i+fLlTV8sWrX7HW/hqSiNSV09fOujUo4nZH9qj7uCjKKl3O2YxnjbAryaHuywaK7F+n686x8TebtCRov76RtqTrRgQL/ZyGSvnhSz+o6y/c4x3rlNXxgFNzs+5pS8Fxu9xmcyoH8/6SLe8h9btzzNqLUvfSw4Lc5JYEZmwQKecgR2mbB660sArYEtIQG0Zo7QQ+2cC55mTtVvSZIUTwghhBCmFRUVMW3aNK655hoAzj//fCora7442e12XnnlFdq1a9dCLRTR4o3CtOTmMJtJfl+ekC/loW0/xTafPCMNn/cYnK6mM+oXdTiY872TKDUS8BqBpQeqqjT5uvrcaP+EDwpTgEPrnozhlPdqu11d+Unbn+1Gh5ivwb5Tfw1MLn0IV6Z3U6Pnmzsduz4v+8fznnYMN9k/5gTbr4EOBNvPuMsPIzG5nelyw+WM0VZ54Uiu2EqOuhsAZwwCer2BWUQXeu/k4nbN2940vnA1rzueCj73VlaQkBje/vWxJiP0QgghhDDt1Vdf5eeffw4+/+yzz1BVldTUVFJTU/n999+ZPHlyyzVQRI3ZacnhisaWX4kFy/nOeQt/6N3o734Dtz211vmr7F/ibWR6biifK535+v4YKAxVVuP1hR+YFDkzg48PrPyt3mtinZQO4KeO5/CA/0L6qts5sujTmNYdywC0qS3yfG7znSm5tGetkcNeo2bbzp5qHu6KMtNlmhGLgDkSsViPbvjq/zku1PtTrjYvKLd7SxhpCyR0XaANaJXJBvclAb0QQgghTPvoo48477zzah174oknePPNN3nzzTd59NFH+d//or9VkYi95maJjlQ0pg4rmoduaj5xeKkkDk89a5rDmXGgYvC5614+cj2At6w47PbMzziPi713AGDX639/SguM0EMgKd+19s8YWW79FPiypO58po0AArkN/CY6R5pLU2omIje2Rd4pngcoTcwxVccje29lc9x5jFXrdtJ4KmO75Vmc4sPQW2/wudPoYHkdRiO/Q+EG5uv1bM713Yvbkdr0xS1MAnohhBBCmLZhwwZ69+4dfN63b1+czpqpzgceeCDr1q1riaaJCPnj2jPdPyr4PJJpyU3RQ4IvK0Zu6/sy39z3E1e+nbNt39eUZbJjo6ls396QNf+xVJ1rwKqkZaEK0wZxh+/K4HOvhZ1EX3a+ifO9k4C62w1Wtu/PUPcUDna/zHKjN26aXnrRmH/YP+FE28Jax3yVsR2hB2KSuNKMr7RDON7zWNh5K8JVa4RetTFHO5hKw8kFtjnE7zW3jaqM0AshhBDiL62iogKvt+bL8qJFi+jSpUvweXl5OXorHjUSDfMm53CX/0o264E9tf0e6wL6ZTkXcpj7OSBKU4erAodeai5P2l/G2LOxziXNHaFPKVrNI47Xw35dreYAHqMqc3Y97+8kz0N81PG6sMuN1Ek7nuNt5+NA9HIXNMYwandceCutzctQfc/rdFaoDgpIZS+BadiRBm0HqJtJU2oH8F639SP0Rcl9meI/Ofg8GtvvWcnK4LjQSKLEllZzwJHAFb7bmK0P5Z+O92i/+9dmlbNvl4M7hrsxmCVJ8YQQQghhWs+ePVmyZAkDB9afcGjRokX06NEjxq0S0VQ9suy3cIQeAknsKg0nbpy4dB1Fjc6405n2H/izNK/Oca/JrP1mlh4cvfMVHnC9BdTO9l2hxFOix2Ogtkjg4NBrRjRjkYVc1dykUXPfrc4gXp0YsaH3Nk5dSBdlN7a9aUDHiOt70T+e6+yfAeCPRUCfOoDH/eew02iPGye3GzZac/o2j08nzmGLapmn8xSVHh95RhqXte/DcfvWWdWpE+62kL3VnSxxXUnezrehS+S7W1hJAnohhBBCmHbaaadx7733MnbsWDIzM2udy83N5V//+hcXXnhhC7VORET3k0QFT/rPQsPGpcl9LK2ugFT6e6YCsFoziIviPFK/x82mTscweaWL6c6HAPNTos0sPYjXaoLY0ORg5zufI7c4EFS397XsTJZYJFXrsnMWi+PuDj73WTiiPKxgBlc63gWgMmTHAwBH6Xbut7/JRfY5ACzeMwQYGVF9P2oDedJ/DqPU5eyvbsEXs+3OFN7RxgJwg+Fs4tqWMc72G18rd+ItGQQJ5vIVNCSPDpQagb3iPfX8DgW3r2xkS7uGpCtl7HDHfulEuCSgF0IIIYRpd9xxBx9//DF9+vRh4sSJ9OnTB0VRWL16Ne+++y6dO3fmzjvvbOlmChMSClawMu5ytuodOdL7HGer1iWH6p0/mzccH/CDPoip2vF4/NEdydN8lVTEZfCLPoA/9a70V7fiM/lFPdKlB859svgfrKzlVvt/Kd/dDZgWUdmRiPW2Z1d6b+Y2Z3vLys9wb6Sbms8zvjN43XYmf4Scs7v3BIN5CG+P8oa4lMD922m0J1mvwKOZ29owHA5fCb2UHVQYceTSvtWt917XZQKXLOnFStdl9FO3sdPiRIGh799wl7DGdSEuJRDs42/+z9hn2HAogRkzje1t31pIQC+EEEII05KTk/n555+ZNGkS06ZNo6ioCIB27dpx3nnn8f/s3XV0XNXawOHfOaNxbaRNmrq7F1q0FCla3Lk4XKS4fVzk4lzs4nBxaZEiBQq0hRpQoe7euDWu4+f7Y5JJ0tjMZCZt4H3W6lrJmXP23nNmJp13y7ufeOIJIiIi2i5EdAm1QZwSHlWbzSTdBgo09xpYi91JVIj/SeJcOjN7Xcn0VfMAcFqrqc97dov9JhQ07o4exXA/yrZ3YPu+2Y5jecpxIesb7WUfqdRwpG4rew5xQjNzJ6yhr7fEOZIFrvHcqIR0Sn21dieapqEo7nt+cG42zdbxQDNFOUAvJY+77NdRRgQvxo5ifIdLbafO/EX8YvoXB7RI7rJfj61qGCSEB7lW72mqgRrMlBFGLFXYgjDafRNzON/0MybsrMmaAbzvecwTzAOq3bvPbWXiBPpbP+Iz46NMVHe4/3Yc5iQpnhBCCCE6JCYmhjfeeIPi4mLy8/PJz8+nuLiYN954g9jY2Cbn/v7771itnb/ftvBfT/UA5+qWYCzeHvS6LtQv5lPDY1iLMzpUTnX8CI63Pcdi50jAHdDHVu7kUt0CkpQSdmmpVLl8z2z+jP08ykzJfrerkBjKCcficHeOPGx/gTcNLwBgdB26gP4H5wROtD2No4Xt/YKpxuZo/6QAcGltJ2Rz+Rm07TQMolpzv4+6KyUsMd3BZTr3yH8wO8AO1k2p4H3jM1C4o9Pq9EUNZgBsQcj8fxE/Eq1UE6LYCLcdaPU8bwP6etWau80S0AshhBDib0NRFBISEkhISPCMhB3s5JNPJicnp5NbJvzReBDzWcNbxBf8HsS6Gmo7QrcNe2VxQMqtrgskNGs1yaV/8m/D+5ytWwZAjc27gKt+NHeNawCvOc+k2Nijw+2qr3uUa5tnqrZZO3RTe7e6erFfS6amk4LQiep2zlB/QyvNDHpdtxu+5DPjo1gqSlo9R/FzhP79iGs43/Zgi4/Vevn+CiRHrX+JHoMlqXgVz+rfIEUpAsAW5PbpnK1/hlSHbwF9Td2UHlcXWEMvAb0QQgghOk2w9yEWwROIacneCtQX/5q6UTaXteFL+XHqBm7VzSWiwLttrMpjR3CN7Xaetl/gLrMDgdqt+q94Uv82lpK8Zo+Z6fyZK8XGHqx19adAc8+kqbF2ThAaoth4yfgapoK1nVLfRHUHtVWtB/Saj6O3je3VujPT+jCrXQMBuEE/j++M99M74wu/y/SXw3J4BfSR1fs5V7/M87sjCCP0jRlbCeivt83i64iLvCojpGwXbxme41TdKqBz/+75SwJ6IYQQQgjRLn9HMf1h93NLuXphRZv4yXgPfdQ8xlleZ2XC+Z7HIpUabjPMJb74T6/KsoYksNA1jnQtiSFKOlTk+tyeSkM8O1zu7N4X6hdjqyhodo5Z6/wp90sTLuFs2yNEKdXcqf8MS1nzjoZg6szRT2sb7ynV7v97uxYz67QB7HalAO7OiuFqOiG1nXsvARyH+WhysDscjM6WO2Z+dY1mF728KkNvKWW6zt3RtNHVh3IleMlAA0UCeiGEEEII0S6lA0GPr5wd/OKvOi0MUrOIpooioqhwtJAx38dR2Vn6ucw33U/vrK98bs+ypMs5yfY0Ga4EAGw1Fc3OMSpObIcov8Q1+h+4Sf8tjtLsoNZTHZbKF46jPL/7u3bdH62t377Idj8Los/zq8xHS+9lq+kfHKuub/7gIciOfjiPJudqsQR7AoixjU6xah/zNex29eAM22OsipnR0WYFnQT0QgghhBCiGac5hnnOyZ7ffV2D2hGODgZ6By/saGk9s7dJssw1eZyp/sY4dScAis3/UdD65GAtbZlXroVSW9O5I6z1K2Bq6hK72To4M6I9RbFjuMtxPbMdx7rr78C9bM+8HrfT2/Ixu1zunAeNO1EssYOYYn2RIyz/5Q/XMDLxL9GhQbMRpli5VvcDF+t/AcClufOHKD5sk+avg9/nndlB4pW6Bs53TuAI6yvsiDshqNU1meWiqvzmHMo2Vxozdcs5ovoXv8rsrGUoHSEBvRBCCCE6TWvJ8sThxxrZi1vsN/N/9n8AoA9iQL+255X0snzKfOcEoOma947op+bysP59RhU2H1VXvRxBjSzdwovG1xioukevFT/WW9cHzvVJ+uwHjRafan2Mkdb/UaOG+lx2R5yS/yorTDd5tvdrqaMhGGrr9xAM4oiypqhoqFTj3hqv8fptTWciW0sgl3ig49n2J+u2eX62YARAdQR/CUV5RD/ecszwdMgQxA6SQKixBm9XA6umZ6/WveGAMZxL7A9wl/1anjL8j2usH/hVbmcliuwI2YdeCCGEEB1WW1uLpmmEhroDkoyMDL7++muGDBnC9OnTPedJUryup377pmAG9PVqMGPXdDhstoCVeYV+ARsqKrBETWlyXG1lvW17/JmpcEz+e1xunE8/1b3+vn5JgRMddk2HhrujqyMJ9/wR4qwkWWlIFhfsNc6Ky04IFhy4l0ConTBFvD7Ybem5JVPMcbr1xFXEAZM6XNdy5zDQGZnKOnR+vr98URI9nCccF7PYNYpBSiYpYZOZ3P5lh0x1EN7fF/M4tVYHGVoiNgzsc2moakPHcX3nkRnfOlj6qzksN95KdvZIYG4gmxxwEtALIYQQosPOOOMMZs6cyfXXX09ZWRkTJ07EYDBQVFTE888/zw033ABAZeXhlYVZtEHT0OFkrTaAf9puISomjeFBrvJu+7XcyfXcktiPIwNYrsFZy474Y3hzi8Ix6gYu1y9E7+eUaJ0fAX24o8QTzEPD1OiZxjfIr2gINA7FVmeNBTtJXc+cH9hufsDzezCnpY8r/o7JhqUcqduKRTPgsDd0EhmqcrlXP5thyj6m6LayvyoN+L8O1/kfx3lMDDnAVNs6v99f/ljhGsoKhnKhKbXT6vTFKbrVfKX8i5LM44FnAlr2PlKo0hpG/i0OJ6HGhhC3vkMyRLOiuVwoqvcT1FPVA5TbW9/b/nAhU+6FEEII0WHr1q1j6tSpAHz55ZckJiaSkZHBhx9+yH//+99D3Drhj9AD69lrvpSPDE/yg2sS67QBQaur74FfeNXwIhfoFgOBH8kzuGqpCunBYtdo1mnu7cX0bexZ3WZZARh5PXjt+CP69/jI8ARa/uYOl90Rzk5ag52jxTHLdiNLIk4NWh09andwmm4lL9jPZpD1A7Z0a0hupq8t5Hr9d0zRbQXAFKAdBkIVK3ZDNMVaBFX10+CDSO+ooTtFxOLOD1B9mK333tvjdMZZXuc1x+mMUfcQVZsZ9Do998BSwQbTNaww3QyAQXFis/n+OhtdnZ/c0FcS0AshhBCiw2pqaoiIiABgwYIFzJw5E1VVmTRpEhkZGQGr5+GHH0ZRlCb/kpKSAla+aF0wp4PH1Oxnhm41w5R9dXV1bK2tphrJrdtbHcDU6Ev5Wt1IZlof5uXwm/0q29+OAIBPHMcz2fIyf8af3eT4WHU3U3Vb0Cry/S47EIKZpK6xXa4UvnFNYZvaP+h1ubxYzmDWAhO09Vby2Rc+mrHWN3nEfE9AymxLau5P/GG+hbeMzzNW2Ul85fag1+kLpy6EIqLIq/ss6hyB7zC6hq+Ypf+Sxcbb+M10C9ai/YB7eVe0Uo2qNCzzslS3P0OsImE8/S0fcqntXqDp347DlUy5F0IIIUSH9evXj2+++YazzjqLn3/+mdtuuw2AwsJCIiMjA1rX0KFDWbRoked3na6FLclEwIQpFk5WVxFjUYBjg1rXMbqNvK08hyV3NPCc3+VUdRvFqdZXGK7s4zvT/2Fy1RJdtZdzdEupMPRggW0AA50RPpVZqoUzx3ksttA0BvvZrgNEkUccFU73V/D7Ha9iMpTTTSkHwBGgZIC++sxxDB85p3Fy3NhOXYPdmRnE29q2zKz5t13gfn0fym0wStmDSXHwhOEdvrE6Wcp0qoKYAO5g49RdzDU9wtaikcBFnVavt2o8eTgCHxxfzTeE6RtG3vdWlbd6bm11BVFxiW0XqKjY0VOuhQES0AshhBDib+Jf//oXF110EbfddhvHH388kye7w4IFCxYwevTogNal1+tlVL4TxSsVvG58iRqnCXgkqHV1V0rorithfU1gpivXKA0JsVJKVvAfw5ssVI5mAf18CLjcI3x7tO487biQNCWUWzvarrrR4kmu9SToSigmCgBH7aHJMZGhJbJF68N4LapT6otRqpimrqVHdQQEuQvhFN0qRqp7sWUfBTza5LFazUiIYiNUseJyOlF97Bx8M+ImNpSV8T/Df5imWweAUe+eAF1psQek/b4wHGbBZ0LJWh7RzyZNLQQ6NrvFW/baimbHajQToYoVqw/bMtbvSOFrMr1DQQJ6IYQQQnTYOeecw5QpU8jLy2PkyJGe48cffzxnnXVWQOvavXs33bt3x2QyMXHiRJ544gn69OnT6vlWqxWrtWEErqKi+Rc+0YJGe5SHKla/gx4fqvLUFYh16gDo3bsuhDZaIx2pWrlS9yNRtXbguHaLqIgZxi22m6jRu4Pdjiw9GK/bwwN8THjhMGiUYrBGCSNOK8dl6dz3Zrk+ge2unlToosHZeSPm/ZUc/md8jqyq7sBtwamk7k2VphQyWM3iz6rmI7MWxUwI7mR5NdUVhEfG+FXVq8oFpLoKGahmE6VU86nhMcJdFjTXCT4lYfNXtWYmTLEcduu9o6t2c6J+oScxXTDbV/+3w95Cp9ijun9SZFG4xdCt3XJCyvfwouEVjHUvW2iA8isEkwT0QgghhAiIpKSkZiPnEyZMCGgdEydO5MMPP2TAgAEUFBTw2GOPccQRR7B161bi4uJavObJJ5/kkUeCO7L8V1ajhBCKu0OkI0GPL3UZOxjQhxZv4WvjvyjRxXOM5TlqNDMvuPa6H1Ns/MvwEQBOx6vo9G1/HbaEJjPPdQSJRj0p9ly6WazANJ/aU6OLJNPVjWS1hCP1m1hfXtbk8VpdODhAq219unAwLEq8ks+yTmBSeAHXOb8jsagvMCLo9dYqZsKwBGztelvq31Mtrd+2YsKhqegVF9UVJX6/t3NMfVlbO4CBajaq3uTZl76mppLQ8ODPevDcz8MsoK/X0L7gbeVX/zq3NEK/LvQIdtXYuNxlbrccQ20RZ+r+oJBY0l2JlBPGIJsVkzH4SQ79JUnxhBBCCNFlnHzyyZx99tkMHz6cadOm8cMPPwDwwQcftHrNfffdR3l5uedfVlZWZzX3L8GmmLBp7lH5qvLioNZVrYYDEOLs2Fpynb2a0eoe+pJNupZMITFYHC4A7IZwz3lVlWVel9ndbOU30yy+1t2D3ebbmutfk6/hKNtLfBLiXt9sdDQdRbTq3G1SrJ0b0NcbpU/nPsNsxpX9GNR6akK6871zIisN7o6+cC34WfXr31MH33MATYE7dXdzoe0ByvEtpwLAg2UPssZ0PccZGu1OYAjBoblDrOqKMr/a7Kv659gZ99Mf1Wo4VZo5qJn/6++Bo7qs2WNRIQYAKmq9z2tQo4ZxjO0FzrA9RoV/KRY6jYzQCyGEEKLLCgsLY/jw4ezevbvVc0wmEybT4Tu6crhymKJY6BxDrTGOI7XVxFFOTXkxpPYLWp0WNRxcEK4FJjmcoihEmPVUWhxY7O7p5C7ViEUzYFbsVJcXExUT32YZptoCTlT/JEGf4DlWWXqA2MQUn9vjMkZCLYQcFFzaDJE4LQpOe+dGDlrdvHSnKRosYG4h6A2kwrjx3GU3MSVRz6lFCwhRbFgtNZjMoQGv6/vut3Bl7ulckrif+8ofa/LcamMGMt36NHGRYeTpU0ivqaHc4XtYFK5VEa9UMFzZz0X6X90HFYVqJYQoqqmpLAXSAvSMWlerRrg/N0otDrsNvcEY9Dp9kWPoxdE1z6BTFfZoGoqiBLyO+r8drtpS9wFFZZ3L/bdqpLqPVHUnFJqBZK/LrP/bUWGx0y3i8P0/RAJ6IYQQQnRZVquV7du3M3Xq1EPdlL8ca1RfrrHfSc+IUEbXbiVOK6e2Ijgj9OtSLufKnRM4rY+OZ3IvJ0KrQnO5ArL++GrDT0Q5somobphuW6WEYaaM2srSdq+PLtnIm8YX2F49lEothAilluqKYp8C+vrAWQmNhnIIdTXtsFiZdBFnF13DiTFJHOl1qR13Uv5bXG9cRL5jKAChzs5JyqcPicKlKaiKRmVZEaakngGvw6GaqCYEZ0i3unve8Nw0fQi7tFRS1BDi6kZvy2v8T2I3zNV0u7gaQomiGmsLo8WBVBHWm48dx0PMIAaVuttQWVZMTDfvg9bOYNC5P8dOl0a1zUm4KfAhaKkxiT22CiqcdYG3KYKZNncSxM9qP2Ci8WdW5hqB49ssR6Nhm7uoEAOVFgfltZ2f4NAXEtALIYQQosu48847Oe200+jZsyeFhYU89thjVFRUcPnllx/qpv1lKQrU6CLAAbaqkqDU4VIN1GKGcPcaZhcKluoKwiOiO1z2DNdS+un3stkyxnOsWg0n3lWGpdK351OlhBNBrXumgg+OKviI840/c8A6CYCIg2YghJhMgOLTlOBACHeU0EfNp0Q3DICwAM2MaJWmAe4R2krFHfRWlxcTH4SAvp4aEg20PutjvLKdobrtUBgKQ9rZ0qwVdkMU1C1fLwobSJIaBq4DWNvYQi0QimJH838OPdOiEykuKabMYeByu0rwslz4R6eCUadic7oor7UHNKC/QnsIq83BgAET+HJTMZdE9WT6Qec4je6tUzWLb6/Hv50v0s+4jeL9/4GeZwamwUEgAb0QQgghuozs7GwuvPBCioqK6NatG5MmTWLlypWkpQV/Wuvf2Q8xl/JyTgEnhgwisJsQNqUzhTHC/h4VTiO/O02Et39Ju6y6cHDCFnUQr9um0D9mEKfUvAQusFe3P0LfWI0uApwHsPrYERBlK2C4ms5K3TgAwhQLdpuVswyvUVhpY1bcYGA3FYdgqzMAp9GduC1Cqw7YzIiWpGV/S7r5/9hUOJ5qJZworTposz7GlPzIaP1vmBzuThSd5sTpdKLT6TBU53Grbi6qI4optfsYa1jCyrw44Fi/6nKa3Pdvu6sn6XFT6ad7G1zgqC0L0LNp32fm88gtt3CG83CcGq7wkvEVkpz51OZ2h+jA/RXZRh+qNSejw8KBYspb6BTTzO7XR/UxR0U3yklVD1BQURCIpgaNBPRCCCGE6DLmzJlzqJvwtxFWuI6dpsvIr0niuZSP+T4rl1HEBqWu3sVL+Y/hW7TSKSwMGQNVNipq7fSIDulw2VZDJNgg3xnOfNckzgrtgVXvnnFg93FKtKWuc8BW7d9MBc0U6fm5qrwEh2LAjovuWiGvGV5EX24GOn/5iGaOBkCvuKiqKg/qTgYAmqLwcdhl5JVUcbahR1Dq6FmzmYn6pfzOIAZYPsCGgY1WF1GhOgzV+dxmmEuuI4GsCHfA35EdBupf10jFnZTOqo+k2BZBrTW4My5Up5UYKjC7wokMMZBbbqHiMJoevq/7qdyxIZEpvVO5seYWeqo5bC3LgyB0CzYkvqt7/tYKVphuAiDddBkAeptv20LaDBFgA2dNWcDaGQyS5V4IIYQQQrRAw6Q40OFo/mU5wOKrd3OObhk9a7YQWb+muQN1aYqOUi2caiUUR910W4O94cv8DwnXMdP6MHuiJvtUrs3gLsvp48i+h6rnTO0/TLK8TJkW5jkcaXRxim41E51r/Su3gzSDGZvmHuerKivqlDo3Rk/ja9dUirTI9k/uAFVV0Bnc+RNaek+5TNEAKJYy/yupm9bfQylG57LyYdpTjLW+yaaoY/wv0wu9cr9nvfl6rjrwFP0MxYxTdmApyQlqnb6w68PJ1hKo1Me6E/cR+GU7l/ID1+q+Y2j1Cn4y3sON+Q+6H9BcJCslJCsl6EKjAdDb288RUZEwjhGWt7k17FnP3w5Por3DlIzQCyGEEEKINqUqBZykriaiqBIYGNS6rnTOJcGwFSXrduhzql9lVCaMY7T1LfpHhfNv02cADHLs4hR1JT1rB1MYPYx1WhjHuHzbqmxn9FGsKo+hm6kfE/1qGRwI6Uu+tZZyq4s7HW9jMFQQrcwCIFyrweV0oup0fpbuL4Wb9A+SW6PjWSWapE6oMSoAHTfeigzRU2t3tlyX2R206XwcvQXI1qVitdlwRjbkABiT+R4liVcBUFpt86/Bfriq+m1Gm35nVaYLJo3qtHq9ZfHMiglsQH+L8hmhBiurGcIgNYusut0sGuW2Q18X0JsdXrzGqp4KwqhRQhs6ezpx6YQ/ZIReCCGEEEK0aXjlct4wvsjo/C+CX5drO9N1a1FK9gWkPK0uYJumW8drxv8yteQrokLc23qV1vgWcO1JPo2nHBey0zjE7/ZEmN3jaeW1do52reZM3R+EmdwBvE7RqKos87vsjtgTOootWh/KbJ0THvRW8jleXYu+aFvQ65qlzOZ/hmdxZK8DQNMaoj011L28QG/zfcr9fyNv53Tb41T3OqHhoLWCmDD3+6ukEwN6e10ehMNpNLlb6Qbu1c9mfMVC7HWzW1w1wWmfIcy9HKilxI71j4W4fEz6WLcURfWjs6czyQi9EEIIIYRok65uSnHjaeuB1Ggwzf3F3xK4L/5qSPP14H2VHP6h+5Geub2BoW1eXx41hHvs1xAT3b1hVLkDW5zN0JZxtn4rSk7DKLzBFEqNZiJUsVJRlEdkdJzf5fuiSh9DuisRmz6iU0fMAaZW/MBdxk9YmXMBcEpQ6xrl2s5g3VbWlqQ3e0wf5n5/mDrw3tbpDWRr8aQoRVS4zAyuXccnhhepzRoAvO93ub5w1a3jP5xGk2MrtnOy/jvWVVdgN8dBJWhBap8x3B201yd2bMyQNIg7bNdTaU7irXbKMZfv4wn92zgsiSghfQDf1953NhmhF0IIIYQQbTJExAMQYi8Lel1OszvA0qr9z34eWrKNTwyPc0ftS5T3mcHx1md50THT83hv224eMnzE+JJ57ZZVG5bCZ85jWWueRHyoQg8OoC/b61N7rLpQDmiR2FUzRzpWcY1+PqaC9U3OKVOjAagqzvWp7I74Kek6jrG9wNYe53CEspXrdfNQc1Z3TuWh7k4LnSU4WyE2ZjFEA+CoOtDsMXOUe4FBuLNjHUjLnCMAqHKoxOitHKnbSmrN9nauCqAQ9/1ULYfPCH1jrhB3wK3WBuf1DotJAMCgOKmsaHoPYrp1Z67rKBbWDsDhdLV0uYextoCL9IuZ6vgDXVR30l2JHNCigtLmQJEReiGEEEII0abQ2O4ARDqCHyxoYYlwAHQ1zYMvb+ltFRyp20q6s4KCuGT2aj2o1Boy5pui3UFcmN235zOociW/m29lZ/5A4Cyvr1vQ/UYuyzyVWSn9mVyVDdXgqmy6FValLgYcBdSW5fvUpkA52raUCYbvWZEbDZwelDpqzYn86hxFhXEgPSLdr4HZEvwkfLaQblDT/J4DhKQO50bbLVQYE/jYx3LvK3+UHsa9HCh4lvqSa2xOzFHdAAhzBncf+sZ0kYkAmCz+f26CSY1IpEYzYbEFJ/O/wRRGpRZChFJLWWEWUfENuydEhxpQFXBp7mUQCZHmdstTANfAGRyzJJbeahgnBqXVgSEBvRBCCCGEaMZpjOA351CqTd0Y0c395ThWKw3qPuUQmMBEazSJv6Uv76ExyQBEusraLctoKeIodSM9bMmExqa5r3P4NsrYaMk2WlgCFIGuprDJOTXGWBx2ldpOXEPfuF3OsAQoBbW6sPULOqig22TutodxbHQ3bo/JBiDcHpwR2x+Tb+Cm3JO4qscwRmZ/DMUNz80SM4AzrY8SExXOi/HJzHdNAgtY7E7MBu8TEsa6SkhVD1DstDJRdY/Gp1l2EBp9NQCRWnCnajdeqmKMdne6hdv9n9kSTKWDL2HIuqGMDonm6CDVUabGEKHVUlmUS1S3nmx3pQLQX1E4IWQ3EdZcSgoGkBDZv/VCGt3UbhEmAA5UWoPU4sCQgF4IIYQQQjRjie7PJfYH6BUZyk8JKQAYFQflZcVExXYLaF3re1zMP3eO4vTufTgrOhOAsAAFet3C9Nyqm8tthrmeY1Hd3AF9tFaB0+FAp2/9K3FM8Vo+ND7NtsphRHZ7F4BYrcyvjg0FBV3dyLTpoJHpr/s8ysw1+dwaPZAjfCrVfycUvssVxsUU5F2BGuHuSDHUBn+EV1EUwuLcnURRruAE9FZdOAeIxqEPRY2ov+fu5+YyhLFB60eqGkJkiB6jTsXmdFFUZSUlJtTnuhQgWXE/jwiTjshY972MpBq7zYrBaArMkzpIVWhP5jqn4DAPZ2ycO6CPcgZ/CYM/ukW6Z8gEKzhWFMg39qS2VqG8xkKKKYKTbU8DsEdn4G7lffoa9rMpewL0byOgb9zmuoC+yuqgxuYg1Hh4hs6yhl4IIYQQQrTJHBJGBe5908sKswJevkMXQgmR2HShhNUFJmanjxmpWxFmMnCd/vsmx6Lj3AGeTtEoK/Z+intMXceGSbFTUeZ94HRk4Ww+Mz7K4ILvMNbNDgi1NR1JjY6MREOlqKrzRgOj7YUMVTMIsZdiqFtLfnC7giWq7l7GUoHdFtznbIxu/bkpisKM0K1coltIeX6633UUX7KQlYkXknLpW0TFdMOuuUf6Swqz/S6zPYVx47nDfiOLos8hMrkvLzlm8qLjbJwurf2LO1lCo9HuxrsMdNR12n1cYPs/XGEJvJ/2JNNtz7LDPLrZedUG9xp+a7n3n/cwo47PTY/xu+lmSrP3BKzNgXZ4djMIIYQQQojDymvma8mocHGFFk1aEOuJTBvJEMu7WNUQdrk0dKrSofIUVaVUjSZUK2C241iKY05jnMFIKRHEUElFUQ5xiSlelVXfsRFJNWWFmUTFxnt1XZwth4nqDlZY8wmNHQ+4R1IvNLzIgUoLs2MHEl9dCUBRZedtddZYfZ6ECEfwAvq07HlsNz3MtsIJxMTNw6Gp6BUXZQdy6dajd0DrGlm6iIH6FcSWnEZYH/c+8QZnDQD6mgKu0X2PwREFHMcN2mcMMOxiQ/YEGOzfloSp/UeS2v8Nz++FSixJHKA0bz+JKX07/HzaExuXwIvOc9A0mFVjIz48OLMC/NUtTM87hmeJV8qpLB9PZLR3n532rGUwNS4nmj6kodOghU4xqykeLOCoaJ5HoTWKopCiFtNdK2ZHURb0GRSQNgeaBPRCCCGEEKKZ0AMb2GC6hoLaRGA9G2NPYkVZMSdZAx8opJX8xqP6HzCWHkFsxCxqFTOaS6M0QIFJpT4O7AUsdY0kNHQkAKVqHDGuSioKM2HoRK/LKlVjiHRVU1mcA4zxuS1R3dydBzFaOZVaCBXoQdXTx7GPVw0vosvtBnzqc7kdFRHvXm8c4/JvOYE3FM1JiGJDr9lRdTqe0V9Nbq2R621GAruIA/pUr2OCfgErqvoS1ussBlnew6ULYaemYazK4QHDp+TaE4GnqDHGgQOsZXkBq7/UkIDOZqWsLHiJJBWXAxM29JoNvU4lLsxIUZWNA5XWwyKg3590Mg9ujGFC7zTGmIyM1+0kkhoyC7MDFtA31mTNu7WCX4x3uB9wnYAzJB7KQanyPqAHqNDH0d1eQE1JTqCbGzAS0AshhBBCiGYUl5NopZoqrRaAhEj3l+X8ckvA60qs3M4Z+oWsqg6tC0xMFFVZyS+3+BeYKCpWzYCj7qtujSke7JCsFFOfd/zzxFmsSK/gAsMwRvpQdJU+DmzZ1Bb5t/QgNiGFGbYnKHRFU2Sz4V6BDQlhOqboVnOgNsavcjsqtm6WQqhiDUqehJb8Hn0Gm6vLOa1Wj3/j4t6JjwzFggmcLkqqm8+AsIYkurPglwduevzrvf/LvE0FPGAazKSAldpUn+xv2Gl+hPUFRwA/MjCsmn41uynNTYFkX97VwWE1RrNLS6W/wZ1ToFSNJdJVQ0VBBgwYFZA6zmMhTp0DxTqWYZZ1/Gh8lPJ9fVBc/6Ov6u6gcQBEpUA+GKvb3haystsYJlpeIa1bBJ8DNUb33w5bSfCWTnSUBPRCCCGEEKJdg0OrsKqrMWbkA8GdQnyj+Sd6W1dTs70Gepzr8/UViRMYaP2AAYnhLABs4alQBZfpFjDXcjQwCkvyBDbuT2dSpW9l74ifxpLMNGK0VMb73DLQGwyURQ7mQFkt9+k+IYIa9FV96JY6AIBulGKpqcIcGu5H6f4LCYvgFvUBttdG8XyVyvDY4NeZGhvC5pxyMktqglqPSa8jKdJMfoWFzJIaDk57p0WnQTEYKjJ9KrdQTURxVePUN0+klxztzjmRW17rb7N9dqf9LUYbf2fVbgeMPfQB/cHKjMmkWbKpKdgbsDLvVj4i1GAl13ID8VERDFazyLE077QxJ/SBnRBpaTug13QmCoglSnV//mwRqVANlGUErM2BJknxhBBCCCFEu8Y41/OG8UXG5n4S9LpGqPs5VrcRV+6mgJSnxPUBoLdawNElnwOQEuPOup1T6lvAld//Ip51XMAaW6rf7UmLcweAZ+p+5yL9YvTWcqLjEqnW3FvsFR6iBFw53aawW0shs6xz1vEPDq9lmroWXcbyoNd1g+knPjQ8iXXb/GaPGbu53x8RNb6Nwj4beS8n2J6lLLH5ko3kKPdrmVcW+BktrbFGuHMFaCX7O63OtsSXb+ZW3VxGVy4FwBLubp8zSO2L7+le457oOoDd0fQ9HNPdndk+wZHnU1I+Jdad2yGk0rfOns4kAb0QQgghhGhXWGI/AGKtwV9L6oh0p91TytIDUl5oYvMZBX3NlVyh+4nROW2vV6+MGsQj9kv5Kex0AFJj3cF4VgdGlY81buNf+g9JVMo8xxRVpVDnzsZeltM5Ab1FF06BFo1d5+7c6Fn33DJKqjul/gm2VfzP+Byjsz8Kel1DdFkcpduMlreJg8O5yGT3ezveEbg19IOUDD4xPM7lmfcHrMz21AefpqrA70Thj/jyzdxmmMvoyiUAaDG9ADBVBGe0Oz6pJ1bNgF5xUZK7r8ljCWmDuMt+Ldfab6e8pvUOK3PFfv6l/5DzrO5tLuv/dkR1wt89f0lAL4QQQgghmjk46InvORBwj3457IEdwT24Ll28e8Q0rNq/UbHQ0h38z/AsN9W6s45H95/C546jm1SWaqziYcOHzKyeg+ZytVpWdXga7zlPZqX5KADSYswkU0zUgXVet8ehGKjSzLgUAwDD2cOV+p+anVdmdmeary0M3JTktnyXdBMTra+xtcf5AIw25XKj7lvi93zVKfWHJbkD6ZggBEsHD8I6otydRPry5sFkt7qR3TjKqa4sC0j9PRLiOFK3ldG2tTgdjoCU2Z6Quk63GMvhud7bnOBuX2RtcNqn6nTk13WKVeTu8hxXFIWQ0DCWhJ7IStcQskpbnzVhrMnjSv1PHG9bAkBs6iCytXjSHfEB3W4vkCSgF0IIIYQQ7eqW3AurZsCgOMnL2BnUusKT3dNj463+ffHXW0qYplvPCMcWAJIS4tiluZO+1dqdAPToNwKnphBDJcU+7BXeK8zOCvPN/M/5AJXl3u1FP7/HrQyzvsua1CsAMHTr3+J51si6rdsO7PC6PR1xcHgyWEnnbsNnDCucF5T6LMZ4VjiHkG10P8/YVHcgneQsCPpe9IZu7pHWiOrmAX1UTDwPKjcxw/o4+0pb79w52B0VT/Oz8W6iC1c3eyw5bSBWzYBZsZOfudv/hrfh4NcvNsXd6ZbkzOu0ToS2HBz/RqcMwKrpKXaYcbmCExyXmnoAYCtsfs97x7nzGuwu9D5xRkLaII6xv8wVtrvIDUJC0ECQgF4IIYQQQjTj0oeyztWPPao7+FJ1OjINvQAo3LUmqHV3HzAWgCSKKCvK73B5Bl3DV97yWjvgTgKXo3OPiOftWtv6tdZSxik76Gl3T+GNikukEHfGuKztzQO5lhwcunTrN7rF8/TdR2DTdNRUVXhVbqDF9nFvw5dq3YPL6Qx4+fkJU7nQ/n/MjbkagKTUflRqIRgVB1m7NgS0rgVJ1zDV+gJbkt1JFeP7up9bT9teLJF9uND2AP823uY5f1+P09iq9WZbQZXXdSS78hioZqNzNF+ioDcYydW5g8ui9I0deSret6fXIGo0E2bFTvbuzqnTFz36j2K0433Otz5AVmlwEiHWxro7iYxF20l3JZLuSvQ8Njm2ivN1i3Ft877DyqBT6ZfgTpC3LffQfC7bIwG9EEIIIYRopjZ2MDNtj/JIyD2eY6WR7i/Ltmzvp5t7Y0P3C5hifYmFSdcC7hHTbMU9dTZ7+6qA1HGU6k6wdxrLPMeKQt2jttWZrQc/cQdW8aXpUa6sfN1zLDfUPRJasb/1joCWKO4d6kjpO5warfl2fJFjzmao9T1urr02aCOYjR134CO+MD7MgAJ3orieA0dj0/REKLXkZQRvlkDdbUDV6cgyuadhF+32rnPEW9X6GLK0RGzGKABS+o3AohkIVazk52WzwjWUrbpBnvOHJEcCsNWPoE3xPKOmSsLcS0dqsgKT3PFgVSE9mO+cwD6ze9M/nV5PhtH9ni7c/WdQ6uwIg15P3yT3toxbcoITHBtTx7LXlcxmawLH2F7gGNsLoLo3djtSt5WnDW8zKOszn8oc2t39HtqRXRjw9gaCBPRCCCGEEMIrWpJ7K6ywkq0BLdemjyBb60atPspzrDBsAKVaOPl5gVlfbUpwBzobQyZ4jlnj3IGQoWCDT2XVxg0FQJfvXaA2+cCXvG94mgGF7nXzqk5HprF5or7eyXEoOiNVVgcZQd7KDaCbLZvx6i7CrO5AxWA0kaHvBUD+jsAG2K2piHa/BlruhqDWozcYyTC4A+yq/c1nmIyOc3CJbiEDdr0VsDrtye5ZASH5vnX8eKsgfjI32mfxc/SFnmObelzIPfZrWGFveVnHoTash7vjZFt2UUDKu9V1O/+w3YUrNB6AbuPP4XjbczxcdVazc2P7umf+pPg4A+Vk/VpWm25kyoa7A9LmQJOAXgghhBBCeCVm+HRm2W7kppprsTu9X2vsj/Wjn2C09U0+rfFnt/fmRl3zOmvGPkPaVQ0Z1aMGHQNAWuX6NhPjHSy0t3ubsh4V67y6LsG6n2N0G4lqlKysLHYEAIudI7HGuIMvg05lVGo0ACv3HJrRwJLoYQA49gV+K7meOT+w1nQd1xx4wnNM33McAN2KA7uMY1j5Eu7Rz6ZHaUPHRFnMcIq1CCrz93GJbiEnOJZ6HhuZoOMxw3ucV/VxwBLjxQ5yJ1LsXbs5KEsYWmIYMZPPnMeyINfYKfX56tjwbL433s+p668NSHm/MYrFrtFoBvcODamxIcSGtfzcew4eT41mIpoq9m/zfgZDSs80EpQy+tRsPCxyExxMAnohhBBCCNFMaNFGVphu4qWa+zzH+g0cwfKQ48i0RbAuozRgdfUsXcl9+k8YUtYQYE0enAYorNhbjNXR8WDIZA5l3GnXER2f5DnWd/TRWDQDUVol+/du97qsfuOnY9N0dNcKyd672a/2hAyaBoAOF1rdlGCAC+L38r3xfvr/dltrlwaVceAJAHQvXhHwsnUuK3FKJWZXw+yDPhNP4x77NVxccweFFYFLOjagchU36L8jqWKL51jt1PsZZ32deeV9eczwHlfaG7Ys7NFnKLlKIkbFyZ4/m+9A4I/ewyZRpoWz2jmQbemdk3l+Sn/3SPWWnAqKq4KbaLA9GYkncKb1Ub6Pv8pzbMSg/gxT0xlg2055aWBG6RtTFIUp/eKJppK1puv43ng/uNx/P4wmM7tD3bOMDmz80esy+42cSgWhRFHNng3L2r+gk0lAL4QQQgghmlGddpKVEmK0soZjquIJGBZsKwhYXUmVm7lO/wP9qhpGzQYnR9AtwoTNbmP1luBk1TeZQ3k66XlGWt9mXobB6+vCIqLZZR4OQPZK/7Z4GzDxFI60vMRl9vuaZAMf0iuZYWo6gytXUFNV7lfZHdFv4inYNR1mVxV7M/zbNtAXsd2S2ZZ0JnnEsXB74N5TLRk/MA29Ttfq41mxkwCwbvo2IPUZjCb+1e9LrrHfyfe7agNSZmN9M79gn+libsj/l+dYQoSZSYkurtN9x/bFn7ZxdfDVmuLZoPXjgDHFcyypZ38y1BR0isbu5V90uI7TlOWco1uKYmtITHh27D42mK8jTqlkmJretE2p7u0rozMWtFheZfxojrU+x0NhD3qO6Q1G9oS7Z5KUrPu6w20ONAnohRBCCCGE184YFs/lup85Zc2VWGqbZ/cOFEVRmJWWwe+mWwhfcIdP11YkTqaP5WNuCP9vu+eOmHQcNZiZuy4bhw/LCEqGXcVd9mt5NH+yX/tTh4SGcdPM47h0UponIRvAwDHHkq0kEaZY2LLwQ5/L7aiIqFie7/E8R1hf4eNN3m/v1RFnjHLvNjB7VYZPSx98FWbSM21wIiot1xEx/iIAhpX+QlVF+zNQSpUYsrV4nDpzq+dMH5kGwNfrswMy0+RgqtL8vTcrbjX3GWaTsPG1gNcXCLmppwIQuvnjDpf1sPI2/zG8iWpp2EJy1ISjWz2/33GX4dBUBtm3kbG9eW4Dlz6E/VoyBWpi0weGnQ1A/9x52KyH1/Z1EtALIYQQost57bXX6N27N2azmbFjx7J8eeDX+4qWHT0omRsM8xnLdjbMfSaodU0ZP5YkpZSR1SvYvd6Hqa6KggsVl9L6aGy9E4cmER1qILukmp+Wez/NfOz0i/hRP43txU6+3ZDrfdsauXBCT/595jBUtSFLuqKqZPU6B4Dum145JMHDxKNPwY6eOauzyCsP/MjywWaOSeFswx/8u+g2Nv7qWwZyX105VM9c0yMAJLoONHls8ITpZKgphCpWNn/xWLtlPRb1EFOs/6UscXKr55wwJJHESBPhlftYNn9Oxxrvpf4nXodN0zHAsYuNv37eKXW2JLZiO9fovmdY1R9Njvedfj0OTWWIfQtblgdmNkRjUTHxrA89osXH4pN6sjlsMhbNwMKlS7wuc/hxF1JENPGUse6r5wPU0sCQgF4IIYQQXU17Bz8AAIOQSURBVMpnn33GrFmzeOCBB1i/fj1Tp07l5JNPJjMz+NODhXtrrMyRtwAwcvdr7FjzS9DqShs4ijWR01AVDeN3N1B6IC/gdYQa9dw7wcR84/0cvfhs9m9tuk1eZeQAnrGfzy8hJzU5HmbSc8Mx7kz1r85bTsbODQFr04iZd1FENClaPhvevDpoCdXsiokKLQSn2nS5wdEDujE2LQaXvZYlb99DbXVwR+pjw4yck1LBaHUPKb/dS+7+4G2ZN27kcCya+/nqlaYj9YqqUjzhLgDGZr7H+jV/NLveVya9jseGFbDQeDdHrr2NPRt/63CZ7YlLTGFd0nkAJC+7h7yM4CxZaU9C2QYeMHzK+MpFTY/36M3abu4s9PG/3EFhzv6A1x17mrtDpohoVLVpyBt5xpNMsz3HY+mDmLO66f8b5soM7tR/xhnWpnvVG4wm9g65CYAeO95jU2bTzqBDSQJ6IYQQQnQpzz//PFdddRVXX301gwcP5sUXXyQ1NZXXX3+9/YtFQIw7/Z9sNI8nRLHR+7vzWfG/28jY4V3Gd1/1uugFCogjzZWN9dUprPriOYpyM9q8JrRsJy8b/svVte96VcfZx01CM0USodTS7fMzWPHePWTt2YzmclEd2YfXnGewPPT4ZtddPbU3M5Ir+MB1H7GfnsSKDx4gZ9/WFu6Dgktrea/yloRFRJNz1NO4NIUJJd+x9tkZLN5ZSK0tsIH9V91vZ4T1HTanXty0tYrCUzOH85bpv1xY9QEFz01mzXdvUl4cvDXuIy76N/vVNOIpI+SDaaz85BHyMnYG/D2lqCoFFy6ggDhWxZ3R7PHR0y9jbfgxrHEN5MKvi3nyx+3syCvvUKfKcaeczzbzSEIVK92/msmKd+4kc9eGoGa+H3bxk6SrqSRQgvm9aaz89N/kZu3za3lIMAy6+BmylO4kcYCn3pnN+7/vJ7esNmDtSxs8lsyLlmK97CeUgwL6vgNHMvM496yKe7/azKdvP8OONb/gsNswVWVzk/5bTrY1X2M/buZt/BJ2Chfb7uO8t9fw4qJdZOQHPrGfrxTtcHlVhRBCCCHaYbPZCA0N5YsvvuCssxr2Gb711lvZsGEDS5cubXaN1WrFam3I9lxRUUFqairl5eVERkY2O98Xd32xkRmZzxLlLGnx8TJ9HLPjb/X8fl7Ra8Q58ls8t0oXyUfd7vT8PrP4LRLtLWfGtqpm3k243/P7aSXvk2Lb1+K5LkXHm4kPeX4/qfRTeltbHwF9I/EhNEVHYtkG/l1yB1lKd1Ifap4BvqqilL2vn8/I2oYR7Secl7Iw6hwizHqGanu4sPpDNFRQ6oNZBQ0FBVgceTpbQieiKHBx5r84xvE7q+LOZOLNHzSrK2PHOnSfXUSK5h6h3+XqwdnqCyRFmgk16bm38inCqEVTFEDBbC9noGMH+9U0ev/Lu73iy4ryyXnrHIbaGrLW12gmCpU4brDeTESv0Xx+XfOp1cUF2RT+71wG27c1ua5IF49VDWVB2Gk8W+BOqHX7CQO45Xjv9wdfM+91hq99kDecp/GCwz0Nf0p4Ho+6XsamC8WumtAUFVDRABSV38NPZF340SgKJNhzOKf4zVbL/8Y2gQ+qxnPvyYO4/ui+zR7fvupnEn68hjgakvOVEkGZGkeBPpmX4h/GqFdRFLi05GXiHfnUv8b1r7mGQrUukg+73UWPgiWcUfkJhdGjmX57886Wguy9VLx3Hv2dezzHqjUzj4bew46wCZgNOibZV3Fc1ffN3lP1v8+Lvows8wBOy3iS052LWNnrn0y64olmdbmcTtRWEuRZaqp48MvVfLHNvdxgkJLJt8YHOaDGU6uGYVfNOHRmRljWsMOVSs0JzzJm6smt3meAyvISMl47i2HWDZ5jNZqJfDWR2+LfwKxX0esULip/hxRHOi5F36wMu2Lk7cSGZG1P7D+fbloR60OPZPTd85udn5+1h6r3z6Ofcy8Aj9ov5TPdqSRHh3AEmzjf8hlO1dTk/tXfz5+jzmN3yAhAoa91KyeVtb4UYnHUmewIGQNAT+suZpS618ZHW3Lo7UpnbcSxjL3jm2bX5e7fwbzP3uapsuM8x34wPUC4zoFVDcGumjztU4BcYy8+j70OBXdzrzjwHyZX/oxO0ci9YjXdew1stY0Hc7k0nv5pB98tW80S020YFScOTfXM2mjtb0eFxc4/P1nH8t3uQP5YdT29J8/kX6cN8bru1lRUVBAVFeXz/03N3ylCCCGEEIepoqIinE4niYlNExYlJiaSn99yoPzkk0/yyCOPBKU9S3Yd4J/W1fRSWx653OtKZkFhw2O3Gf9ksNry0oA8LZYFBxrOvd64ltHqnhbPLddCWVDUcO5lhnWM1m1t8VyrpmdBo5HVcw0bGK1rngyq3qLtBTjREUEUEw2T6GuuaPG88MgYht/5I+sWfIhhwwf0t2wh0xnH/iJ3orwkNZ0Rxtbr+bxiCIucvQDQq+M4xvg7rtD4Fs9NGzSG6ttXsvLbF4nfP48sZySVFgeVlioABprWEatUNbuu2hDTav0Hi45PIuLuJayZ/zYhW2YzwLqFUMVKL3JxopIc1XLis7jEFKLuXsrq798kfNsc+tu2E6pY6enKARd8XtTwvowPN3ndHoBxp99A7vBjqVxXRtLOavIrLLhqiuljTKeVvG7Mr+jDIucgAIYrmTxu+r3V8pc5EoHxxLWyb/fgiSdS2mcVK799lqTcBfRyZRFDJTGuSlwWKyv2FXvOvce4odX3dr4WU/feHsx7PMZ5PVOY3sJ5iSl9ibn7d1bNe5WonV/Qz76TMMXC9jI9m0rdnQqDdXsZaWh9D/EXyo5iqSuKzZzBq8o0ru87qcXzWgvmAcyh4Txz6bGcuL2Qj1ZmMDT9B0yK3d2h5MT9z+4+d5Caxe7wsFbLqhcRFcuQu39lzY/vYN78Cf0tWwlVrIS6KtmYVeY571bjRkaqLU+Rr9ZMLGz0Wb7RGE03tQibOa7F85NS+2G96zdWzXuV6F1fssI+nGqbkz2FVYzSZTHU0PqWi++Uj2ORy73Fo0Hdy2hj6++jT8uHssDZA4Cj1fRm5zpaaV/33oO44o5nCF2Txdx1OWzJLqEfWZhcjhbf3/aaMn4tLPT8/phpFTpFw6bpCIuMbbV9LVFVhftOGcxpKTVsXjCV/lV/Eqk0JPmsMCa0eF2k2cAH/5jAD5vz+HzlbmoyQxme0rGO4Y6SEXohhBBCdBm5ubn06NGDP/74g8mTG0ZLH3/8cT766CN27Gg+8hzMEfqv1mWTmPEDekfzYBLAboggM7lh7XVq3gKM9pa3InPqQkjvcarn95SCXzBZWx75d6kG9qec6fm9e+EyQiytTIdWVPamnu35NfnA74TWtp7EbW/q2aC4p6gmlaxmyNCRJPVsf1TZZrWQX24hr8pJjc2JVp5FRN5KNK3+m7mGomnukWRNoyhmFOXhfdA0CLEUkFq+hsHHXkhYRHS7ddVYLOSU2ymstFJrcxKd/iOarQpNc7nr0FyAQq9JZ5DQo3e75bXEbrOSn7GDygPZHIgaxth+PQg3tT8WZrXUUJi9l/KCdByWakpC0igxpRJu0nPcoASMev9XvJZW28jOy4Xc9ThqK3Baa9xTlDUXmqahaC6Ko4ZQGjEQTQOTtYSUgtZzHJRGDcGVPIppgxO9aldFWTFF2XuoLsnF6tKRGzMOm8Ndd3L+L5hs7ve2O7yoCzE0DYdq9ry3DTqFE4YkEh3acidCY5aaKgqz95CjdaPGpcdid2Eo2UV0af3Iad17StNQcL+38uKPpNrsDkQjQ/ScMCQRk7795IhtcdhtFObspyxvH/baSpzW6rp77yQkLpVhU85oNq3bmzLz0rdTWVFOTshArA4nTpdGfP4yDLVF4LQ3u8al6Nif2jAzKblwOWGOEgZMPY+ouMRm5x/MYneSU1ZLQbkFrSwDc+FGXLZa9+cGjfr9EzVNozB+PFUhqWhAaHUWSUUrWy33QOxYKsL7ABBam0/ygYYkparBxICjLyAqpuXOusZqrXYK07dSeSATh7UGp7W6rn3u95PVGENewjFoaGga9Mz5Hr3TQmSvkQwa13xJjC9cTidF+ZmUZO/GVlNB2qhjvGpzpcWOXlUJMXbsPQb+j9BLQC+EEEKILsOfKfcH8/dLkxBCCBEs/v7fJEnxhBBCCNFlGI1Gxo4dy8KFC5scX7hwIUcc0fI2RUIIIcRflayhF0IIIUSXcvvtt3PppZcybtw4Jk+ezFtvvUVmZibXX3/9oW6aEEII0akkoBdCCCFEl3L++edTXFzMo48+Sl5eHsOGDWP+/PmkpaUd6qYJIYQQnUrW0AshhBDib6W8vJzo6GiysrJkDb0QQojDQn3C1rKyMqKiory+TkbohRBCCPG3UllZCUBqauohbokQQgjRVGVlpU8BvYzQCyGEEOJvxeVykZubS0REBIqidKis+hEVGe33ntwz38k9853cM9/JPfNdIO+ZpmlUVlbSvXt3VB+2QZQReiGEEEL8raiqSkpKSkDLjIyMlC/APpJ75ju5Z76Te+Y7uWe+C9Q982Vkvp5sWyeEEEIIIYQQQnRBEtALIYQQQgghhBBdkAT0QgghhBB+MplMPPTQQ5hMpkPdlC5D7pnv5J75Tu6Z7+Se+e5wuGeSFE8IIYQQQgghhOiCZIReCCGEEEIIIYTogiSgF0IIIYQQQgghuiAJ6IUQQgghhBBCiC5IAnohhBBCCCGEEKILkoBeCCGEEMJPr732Gr1798ZsNjN27FiWL19+qJsUdE8++STjx48nIiKChIQEzjzzTHbu3NnkHE3TePjhh+nevTshISEcc8wxbN26tck5VquVm2++mfj4eMLCwjj99NPJzs5uck5paSmXXnopUVFRREVFcemll1JWVhbspxh0Tz75JIqiMGvWLM8xuWfN5eTkcMkllxAXF0doaCijRo1i7dq1nsflnjXlcDj4v//7P3r37k1ISAh9+vTh0UcfxeVyec75u9+zZcuWcdppp9G9e3cUReGbb75p8nhn3p/MzExOO+00wsLCiI+P55ZbbsFms/n+pDQhhBBCCOGzOXPmaAaDQXv77be1bdu2abfeeqsWFhamZWRkHOqmBdWJJ56ovffee9qWLVu0DRs2aDNmzNB69uypVVVVec556qmntIiICG3u3Lna5s2btfPPP19LTk7WKioqPOdcf/31Wo8ePbSFCxdq69at04499lht5MiRmsPh8Jxz0kknacOGDdP++OMP7Y8//tCGDRumnXrqqZ36fANt9erVWq9evbQRI0Zot956q+e43LOmSkpKtLS0NO2KK67QVq1ape3fv19btGiRtmfPHs85cs+aeuyxx7S4uDjt+++/1/bv36998cUXWnh4uPbiiy96zvm737P58+drDzzwgDZ37lwN0L7++usmj3fW/XE4HNqwYcO0Y489Vlu3bp22cOFCrXv37tpNN93k83OSgF4IIYQQwg8TJkzQrr/++ibHBg0apN17772HqEWHRmFhoQZoS5cu1TRN01wul5aUlKQ99dRTnnMsFosWFRWlvfHGG5qmaVpZWZlmMBi0OXPmeM7JycnRVFXVfvrpJ03TNG3btm0aoK1cudJzzooVKzRA27FjR2c8tYCrrKzU+vfvry1cuFA7+uijPQG93LPm7rnnHm3KlCmtPi73rLkZM2ZoV155ZZNjM2fO1C655BJN0+SeHezggL4z78/8+fM1VVW1nJwczzmzZ8/WTCaTVl5e7tPzkCn3QgghhBA+stlsrF27lunTpzc5Pn36dP74449D1KpDo7y8HIDY2FgA9u/fT35+fpN7YzKZOProoz33Zu3atdjt9ibndO/enWHDhnnOWbFiBVFRUUycONFzzqRJk4iKiuqy9/if//wnM2bMYNq0aU2Oyz1rbt68eYwbN45zzz2XhIQERo8ezdtvv+15XO5Zc1OmTOGXX35h165dAGzcuJHffvuNU045BZB71p7OvD8rVqxg2LBhdO/e3XPOiSeeiNVqbbKsxBt635+qEEIIIcTfW1FREU6nk8TExCbHExMTyc/PP0St6nyapnH77bczZcoUhg0bBuB5/i3dm4yMDM85RqORmJiYZufUX5+fn09CQkKzOhMSErrkPZ4zZw7r1q3jzz//bPaY3LPm9u3bx+uvv87tt9/O/fffz+rVq7nlllswmUxcdtllcs9acM8991BeXs6gQYPQ6XQ4nU4ef/xxLrzwQkDeZ+3pzPuTn5/frJ6YmBiMRqPP91ACeiGEEEIIPymK0uR3TdOaHfsru+mmm9i0aRO//fZbs8f8uTcHn9PS+V3xHmdlZXHrrbeyYMECzGZzq+fJPWvgcrkYN24cTzzxBACjR49m69atvP7661x22WWe8+SeNfjss8/4+OOP+fTTTxk6dCgbNmxg1qxZdO/encsvv9xzntyztnXW/QnUPZQp90IIIYQQPoqPj0en0zUbSSksLGw26vJXdfPNNzNv3jwWL15MSkqK53hSUhJAm/cmKSkJm81GaWlpm+cUFBQ0q/fAgQNd7h6vXbuWwsJCxo4di16vR6/Xs3TpUv773/+i1+s9z0fuWYPk5GSGDBnS5NjgwYPJzMwE5H3Wkrvuuot7772XCy64gOHDh3PppZdy22238eSTTwJyz9rTmfcnKSmpWT2lpaXY7Xaf76EE9EIIIYQQPjIajYwdO5aFCxc2Ob5w4UKOOOKIQ9SqzqFpGjfddBNfffUVv/76K717927yeO/evUlKSmpyb2w2G0uXLvXcm7Fjx2IwGJqck5eXx5YtWzznTJ48mfLyclavXu05Z9WqVZSXl3e5e3z88cezefNmNmzY4Pk3btw4Lr74YjZs2ECfPn3knh3kyCOPbLYd4q5du0hLSwPkfdaSmpoaVLVpeKfT6Tzb1sk9a1tn3p/JkyezZcsW8vLyPOcsWLAAk8nE2LFjfWu4Tyn0hBBCCCGEpmkN29a988472rZt27RZs2ZpYWFhWnp6+qFuWlDdcMMNWlRUlLZkyRItLy/P86+mpsZzzlNPPaVFRUVpX331lbZ582btwgsvbHHrp5SUFG3RokXaunXrtOOOO67FrZ9GjBihrVixQluxYoU2fPjwLrE1ljcaZ7nXNLlnB1u9erWm1+u1xx9/XNu9e7f2ySefaKGhodrHH3/sOUfuWVOXX3651qNHD8+2dV999ZUWHx+v3X333Z5z/u73rLKyUlu/fr22fv16DdCef/55bf369Z7tRjvr/tRvW3f88cdr69at0xYtWqSlpKTItnVCCCGEEJ3p1Vdf1dLS0jSj0aiNGTPGs3XbXxnQ4r/33nvPc47L5dIeeughLSkpSTOZTNpRRx2lbd68uUk5tbW12k033aTFxsZqISEh2qmnnqplZmY2Oae4uFi7+OKLtYiICC0iIkK7+OKLtdLS0k54lsF3cEAv96y57777Ths2bJhmMpm0QYMGaW+99VaTx+WeNVVRUaHdeuutWs+ePTWz2az16dNHe+CBBzSr1eo55+9+zxYvXtzi36/LL79c07TOvT8ZGRnajBkztJCQEC02Nla76aabNIvF4vNzUjRN03wb0xdCCCGEEEIIIcShJmvohRBCCCGEEEKILkgCeiGEEEIIIYQQoguSgF4IIYQQQgghhOiCJKAXQgghhBBCCCG6IAnohRBCCCGEEEKILkgCeiGEEEIIIYQQoguSgF4IIYQQQgghhOiCJKAXQgghhBBCCCG6IAnohRBCCCGE+AtZsmQJiqJQVlZ2SOr/9ddfGTRoEC6XK2h1jB8/nq+++ipo5QvRVUhAL4QQQgghRBd1zDHHMGvWrCbHjjjiCPLy8oiKijokbbr77rt54IEHUNXghRoPPvgg9957b1A7DYToCiSgF0IIIYQQ4i/EaDSSlJSEoiidXvcff/zB7t27Offcc4Naz4wZMygvL+fnn38Oaj1CHO4koBdCCCGEEKILuuKKK1i6dCkvvfQSiqKgKArp6enNpty///77REdH8/333zNw4EBCQ0M555xzqK6u5oMPPqBXr17ExMRw880343Q6PeXbbDbuvvtuevToQVhYGBMnTmTJkiVttmnOnDlMnz4ds9nsOfbwww8zatQo3n33XXr27El4eDg33HADTqeTZ555hqSkJBISEnj88ceblPXwww/Ts2dPTCYT3bt355ZbbvE8ptPpOOWUU5g9e3bHb6QQXZj+UDdACCGEEEII4buXXnqJXbt2MWzYMB599FEAunXrRnp6erNza2pq+O9//8ucOXOorKxk5syZzJw5k+joaObPn8++ffs4++yzmTJlCueffz4A//jHP0hPT2fOnDl0796dr7/+mpNOOonNmzfTv3//Ftu0bNkyLrzwwmbH9+7dy48//shPP/3E3r17Oeecc9i/fz8DBgxg6dKl/PHHH1x55ZUcf/zxTJo0iS+//JIXXniBOXPmMHToUPLz89m4cWOTMidMmMAzzzzTwbsoRNcmAb0QQgghhBBdUFRUFEajkdDQUJKSkto812638/rrr9O3b18AzjnnHD766CMKCgoIDw9nyJAhHHvssSxevJjzzz+fvXv3Mnv2bLKzs+nevTsAd955Jz/99BPvvfceTzzxRIv1pKene85vzOVy8e677xIREeGpa+fOncyfPx9VVRk4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PqtaffZPz549ceTIEaSnp+titm/fDrVajcDAQOMabtQSekREREQkhCjftm7VqlXi2LFjYsqUKcLa2lqkpqY2dNNM6uWXXxYajUbs3LlTpKen6478/HxdzPvvvy80Go3YtGmTSE5OFk888USFWz+5u7uLHTt2iMTERPGf//ynwq2fOnfuLOLj40V8fLzo1KmTWWyNVR13rnIvBPvsbvv37xcKhUK899574tSpU+Kbb74RVlZW4uuvv9bFsM/0PfPMM6J169a6bes2bdoknJycxMyZM3Uxzb3P8vLyRFJSkkhKShIAxCeffCKSkpJ0243WV/+UbVsXGhoqEhMTxY4dO4S7uzu3rSMiIiKqT59//rnw9PQUKpVKdOvWTbd1W1MGoMJjzZo1uhitVivmzp0rXF1dhVqtFg888IBITk7WK+fmzZti4sSJwsHBQVhaWoqhQ4eKtLQ0vZgrV66Ip556Stja2gpbW1vx1FNPiWvXrtXDXZre3Qk9+8zQTz/9JPz9/YVarRa+vr5ixYoVeu+zz/Tl5uaKyZMnizZt2ggLCwvRtm1bMWfOHFFQUKCLae599scff1T49+uZZ54RQtRv/5w7d06Eh4cLS0tL4eDgICZOnChu3bpl9D1JQghh3Jg+ERERERERETU0PkNPREREREREZIaY0BMRERERERGZISb0RERERERERGaICT0RERERERGRGWJCT0RERERERGSGmNATERERERERmSEm9ERERERERERmiAk9ERERERERkRliQk9ERERE1ITs3LkTkiQhOzu7Qer//fff4evrC61Wa7I6unfvjk2bNpmsfCJzwYSeiIiIiMhMPfTQQ5gyZYreuV69eiE9PR0ajaZB2jRz5kzMmTMHMpnpUo0333wTs2bNMumXBkTmgAk9EREREVETolKp4OrqCkmS6r3uuLg4nDp1CqNGjTJpPeHh4cjJycG2bdtMWg9RY8eEnoiIiIjIDD377LPYtWsXFi9eDEmSIEkSUlNTDabcr127Fi1atMDWrVvh4+MDKysrjBw5Ejdu3MCXX34JLy8v2Nvb45VXXkFJSYmu/MLCQsycOROtW7eGtbU1goODsXPnzirbFB0djbCwMFhYWOjOzZs3D127dsXq1avRpk0b2NjY4OWXX0ZJSQk++OADuLq6wtnZGe+9955eWfPmzUObNm2gVqvh5uaGSZMm6d6Ty+UYMmQI1q9fX/uOJDJjioZuABERERERGW/x4sU4efIk/P39MX/+fABAy5YtkZqaahCbn5+PJUuWIDo6Gnl5eRgxYgRGjBiBFi1aICYmBmfPnsVjjz2GPn36ICIiAgDw3HPPITU1FdHR0XBzc8PmzZsxaNAgJCcno127dhW2affu3XjiiScMzp85cwa//PILfv31V5w5cwYjR45ESkoK2rdvj127diEuLg7PP/88QkNDERISgu+//x6ffvopoqOj0bFjR2RkZODw4cN6Zfbo0QMffPBBLXuRyLwxoSciIiIiMkMajQYqlQpWVlZwdXWtMraoqAjLli3DfffdBwAYOXIkvvrqK1y6dAk2Njbw8/NDv3798McffyAiIgJnzpzB+vXrceHCBbi5uQEApk+fjl9//RVr1qzBggULKqwnNTVVF38nrVaL1atXw9bWVlfXiRMnEBMTA5lMBh8fHyxatAg7d+5ESEgI0tLS4Orqiv79+0OpVKJNmzbo0aOHXpmtW7dGWloatFqtSZ/XJ2rM+JtPRERERNTEWVlZ6ZJ5AHBxcYGXlxdsbGz0zmVmZgIAEhMTIYRA+/btYWNjozt27dqFM2fOVFrPzZs39abbl/Hy8oKtra1eXX5+fnqJ+J31jxo1Cjdv3kTbtm0xduxYbN68GcXFxXplWlpaQqvVoqCgwMjeIGo6OEJPRERERNTEKZVKvdeSJFV4rmzVeK1WC7lcjoSEBMjlcr24O78EuJuTkxOuXbtW6/o9PDxw4sQJxMbGYseOHRg/fjw+/PBD7Nq1S3fd1atXYWVlBUtLy6punahJY0JPRERERGSmVCqV3kJ2dSUgIAAlJSXIzMxE3759jbru2LFjddIGS0tLDB8+HMOHD8eECRPg6+uL5ORkdOvWDQBw5MgR3X8TNVdM6ImIiIiIzJSXlxf27duH1NRU2NjYwMHBoU7Kbd++PZ566imMGTMGH3/8MQICApCVlYXff/8dnTp1wpAhQyq8buDAgfjyyy9rXf/atWtRUlKC4OBgWFlZ4auvvoKlpSU8PT11MXv27EFYWFit6yIyZ3yGnoiIiIjITE2fPh1yuRx+fn5o2bIl0tLS6qzsNWvWYMyYMXj11Vfh4+OD4cOHY9++ffDw8Kj0mqeffhrHjh3DiRMnalV3ixYtsHLlSvTu3RudO3fGb7/9hp9++gmOjo4AgIsXLyIuLg7PPfdcreohMneSEEI0dCOIiIiIiKhpmDlzJnJycvDFF1+YrI4ZM2YgJycHK1asMFkdROaAI/RERERERFRn5syZA09PT5M821/G2dkZ77zzjsnKJzIXHKEnIiIiIiIiMkMcoSciIiIiIiIyQ0zoiYiIiIiIiMwQE3oiIiIiIiIiM8SEnoiIiIiIiMgMMaEnIiIiIiIiMkNM6ImIiIiIiIjMEBN6IiIiIiIiIjPEhJ6IiIiIiIjIDDGhJyIiIiIiIjJD/x/RjPLytG43JgAAAABJRU5ErkJggg==", + "image/png": "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Qu7du0dkMhnp3r072bFjBzl8+DDZsGEDGTZsGMnLy+PWyTAMuXnzpokt3377LQFArly5Qggh5NChQwQASUxMJK+88grZvXs32bhxI6lduzZp0KAB0Wq13LLLly8n8+bNIzt37iR///03WbduHWnVqhVp1KgRUavV3HwzZ84kAEhCQgJ57733yL59+8jixYuJn58fadOmDTfvuXPnSN26dUmbNm3I8ePHyfHjx8m5c+e4bQRA1qxZw4174cIF4u/vTxITE8mKFSvIgQMHyE8//UQGDx5MCgsLbR4XdqzExETSq1cvsmPHDrJjxw7SokULEhISQvLz87l5Dx48SCQSCenYsSP55ZdfyN69e8nIkSMtbGG30dY5cO/ePW5aQkICiYmJIXXr1iWrV68mhw4dIqdOnSLXr18nAQEBpF69emT9+vVk9+7d5OWXXyYAyBdffMEt78oxolCoL6OUB874O71eT3r27ElEIhGZPn06+fPPP8nChQs5X6BUKgkhjn2aUqkke/fuJQDIqFGjOH9x+/ZtQgghPXv2JBEREeS7774jhw8fJjt27CAzZswgmzZtIoQQkpGRQaRSKfnoo49MbM3JySE+Pj7kvffe46YlJCSQWrVqkaZNm5L169eTffv2kUGDBhEA5O+//+bmu379OnnrrbfIpk2byOHDh8muXbvIqFGjiEAgIIcOHeLmY/1PfHw8eeqpp8i2bdvIli1byKOPPkrEYjE5duwYIYSQlJQU8s477xAAZPv27dw2FhQUEEII6dSpE+nUqRM3rkajIV26dCEikYhMmTKF7Nmzh+zcuZN8+OGHZOPGjXaPXadOnUhYWBhp0KABWbFiBdm/fz95++23CQCybt06br6SkhLSunVrEh4eThYvXkz++usv8tVXX5GgoCDStWtXotfrTbaR7yNZAJCZM2dyn/n3Bx988AHZv38/2bFjh9PniivHiFKzoL6PUl5Q/0f9H/V/lPKgTALnwYMHybBhw4ifnx8JCgoib775pqfsotQgWId34sQJotFoSFFREdm1axeJiIggAQEBJD09nRBiEDgBkNWrV5ssv3HjRgKAbNu2zWT66dOnCQCybNkyQgghW7duJQDIhQsXbNpSWFhIAgICyIQJE0ymN23alHTp0oX7zIpnffr0MZlv8+bNBAA5fvy41fH1ej3RaDTk/v37BAD57bffuO/Y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GIbp8GPv27cPFy9exPTp0/Wf5ebmYsKECbj22mtx7NgxPPvss1iwYAHWrFljtS9CCO69917MnDmzvYdtlXvuuQcffPBBp46BQqFQKLah9s+5UPtHoVAo3QNq/5wLtX+UDoVQKBQyd+5cAsDoLzc3l+zcuZMAINXV1YQQQlauXEl8fX3Jxo0bSUpKCnF3dye33noraWhoIF9//TWJjY0lfn5+ZP78+USlUun7VygU5KmnniIRERHEw8ODDB48mOzcudPqmB599FFy2223GX329NNPk9TUVKPPHnroITJ06FC75vn888+Tvn372tUWAPn000/JxIkTibu7O0lNTSX79u0jFy9eJCNHjiQeHh7k/9m77/ioqvSP4587LT2hJzRpShMVBJUiig3F3lkLupZ1XXUtrKuy6u7adXdVZO2/VVlRAVfsYsECigLSFUF6JwEC6WXavb8/JhkSkpCZyZ2EwPf9euXFzJ1zn3PuzCQTnjznnMGDB1tr1qwJn7NkyRJrxIgRVmpqqpWWlmYdffTR1vz588OPb9iwwQKstWvXRjQGERGJL33+1aTPPxGRA58+/2rS5580d6rgFAGeeeYZhgwZwu9+9zuys7PJzs6mc+fOtbYtLS1lwoQJTJkyhc8++4yZM2dy4YUXMn36dKZPn86kSZN4+eWXeeedd8LnXHPNNXz//fdMmTKFn376iUsuuYQzzjiD1atX1zmmb7/9lkGDBlU7NmfOHEaOHFnt2Omnn86CBQvw+/0NeAZq99BDD3HVVVexZMkSevfuzeWXX87vf/97xo0bx4IFCwC45ZZbwu2vuOIKOnXqxPz581m4cCH33HMPbrc7/HiXLl1o164d3333ne1jFRGR6Onzr3b6/BMRObDp8692+vyT5szV1AMQ2R9kZGTg8XhITk4mKytrn239fj8vvPACPXr0AODiiy9m0qRJbN++ndTUVPr27ctJJ53EN998w+jRo1m7di2TJ09my5YtdOjQAYA777yTzz77jNdee41HH3201n42bNgQbl8pJyeHzMzMascyMzMJBALk5ubSvn37WJ+CWl1zzTVceumlANx9990MGTKE+++/n9NPPx0Ire1yzTXXhNtv2rSJP//5z/Tu3RuAww47rEbMjh07smHDBlvHKSIisdHnX+30+ScicmDT51/t9PknzZkSnCJRSk5ODn+4QegDpmvXrqSmplY7tmPHDgAWLVqEZVn07NmzWhyv10vr1q3r7KesrIzExMQax/deD8ayrFqP2+HII48M3678YD3iiCOqHSsvL6ewsJD09HTGjh3L9ddfz6RJkzj11FO55JJLqj1XAElJSZSWlto+VhERiS99/unzT0TkYKTPP33+SfOgBKdIlKqW3EPog6W2Y6ZpAmCaJk6nk4ULF+J0Oqu1q/qhuLc2bdqQl5dX7VhWVhY5OTnVju3YsQOXy7XPD8tYVb2uyg/Q2o5VXuvf//53Lr/8cj755BM+/fRT/va3vzFlyhQuuOCC8Dm7d++mbdu2to9VRETiS59/+vwTETkY6fNPn3/SPCjBKVLB4/EQDAZtjztgwACCwSA7duxg+PDhUZ23fPnyaseGDBnCRx99VO3YF198waBBg2p8yDaVnj170rNnT+644w4uu+wyXnvttfAHXHl5OWvXrmXAgAFNPEoREamkzz976PNPRKR50eefPfT5J/sLbTIkUqFr167MmzePDRs2kJubG/6rVEP17NmTK664gquuuop3332X9evXM3/+fJ544gmmT59e53mnn346s2fPrnbsxhtvZOPGjYwdO5YVK1bw6quv8sorr3DnnXeG27z33nvhNVAqrVmzhiVLlpCTk0NZWRlLlixhyZIl+Hw+W64RQlMqbrnlFmbOnMnGjRv5/vvvmT9/Pn369Am3mTt3LgkJCQwZMsS2fkVEpGH0+dcw+vwTEWme9PnXMPr8k/2NEpwiFe68806cTid9+/albdu2bNq0ybbYr732GldddRV/+tOf6NWrF+eeey7z5s2rc6c+gCuvvJLly5ezcuXK8LFu3boxffp0Zs6cSf/+/XnooYeYMGECF110UbhNQUFBtXMArr/+egYMGMBLL73EqlWrGDBgAAMGDGDbtm22XaPT6WTXrl1cddVV9OzZk0svvZRRo0bxwAMPhNtMnjyZK664guTkZNv6FRGRhtHnX8Po809EpHnS51/D6PNP9jeGVblCrYjsd+666y4KCgp46aWXmnooDbZz50569+7NggUL6NatW1MPR0RE9mP6/BMRkYORPv9EYqcKTpH92L333kuXLl3isjZMY1u/fj3PP/+8PtxERKRe+vwTEZGDkT7/RGKnCk4RERERERERERFptlTBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIiIiIiIiIiIs2Wq6kHICIiIk3LNE22bdtGWloahmE09XBERA4olmVRVFREhw4dcDhUXyIiIhIPSnCKiIgc5LZt20bnzp2behgiIge0zZs306lTp6YehoiIyAFJCU4REZGDXFpaGhD6z3d6enoTj0ZE5MBSWFhI586dwz9rRURExH5KcIqIiBzkKqelp6enK8EpIhInWgJEREQkfrQIjIiIiIiIiIiIiDRbSnCKiIg0km+//ZZzzjmHDh06YBgG77//fr3nzJo1i4EDB5KYmEj37t158cUXa7SZNm0affv2JSEhgb59+/Lee+/FYfQiIiIiIiL7JyU4RUREGklJSQlHHXUUzz77bETt169fz5lnnsnw4cNZvHgxf/nLX7j11luZNm1auM2cOXMYPXo0Y8aMYenSpYwZM4ZLL72UefPmxesyRCROPvkpm5P+NZPl2wqbeigiIiIizYphWZbV1IMQERE52BiGwXvvvcf5559fZ5u7776bDz/8kBUrVoSP3XjjjSxdupQ5c+YAMHr0aAoLC/n000/Dbc444wxatmzJ5MmTIxpLYWEhGRkZFBQUaA3O/VDO5jW0bd8Vp6txl04PBgKN3ufBrus9nwDQvW0KX/9pRNMORmyjn7EiIiLxpwpOERGR/dScOXMYOXJktWOnn346CxYswO/377PNDz/8UGdcr9dLYWFhta+DzdJv/kfO3w/ll+8/sTXuCzPXcuI/v2FHYXlM5+/avoXND/RhzsR7AFjy1RSyXhnIz0+eFdH5j01fwcinZ1HiDUTcZ1HBbjY+2I85L/0xfGzBhy/gfyiLn2ZO28eZDZdb7OWkf83kuW/W2B57946toefytbttjbt0cz7DHv+aT37KrnZ82dYChj72FR8s2RpVvML8XWx88HDm/N9tXOycxSOuV+hXvtDOIYfNefmPbHywH0UFu+MSvz67S3yc9K+ZTPhqtS3xsjeuZOsDPZn71sPVjr86ez1DH/uKjbtK6o3x64KvyPn7oSz+/L+2jElERESahhKcIiIi+6mcnBwyMzOrHcvMzCQQCJCbm7vPNjk5OXXGfeyxx8jIyAh/de7c2f7B7+eOmnU9Wezk8BmX2xr3ic9+ZeOuUp7+MrYEzvfT36CztY0hG14AwDXveQD6l82N6PyXvl3Hqu3F/G/B5oj7/OXjf9PF3MyQ7NfDxwYtuodEw0+/b66LYvTR++jD//F/hX+g+9c32h571buPhJ7LjTXXrW2IGyYtYGt+GTe/taja8WmvP8OEsntY97/7o4r3ywdP0cXcwpCtE/mX+yWucH3Fnf7/s3PIYUO2vU4XczO/fDg+LvHr89KstazPLeGpGatsibf1nbvpaG1n8Kp/Vju+5dMn+WPJv3nznXfqjZH58dVksZMBc261ZUwiIiLSNJTgFBER2Y8ZhlHtfuXKMlWP19Zm72NVjRs3joKCgvDX5s2RJ8Nk3/7pepEPPffSuXBR/Y1rUeBsBcBSs3vowD5ex9r8wfkhf3G9SWJJ5FWElmnW+ZjDiO9KRq5AGYc6ttHZ2Gl/cCtof0zgbP/nfOO5g7td1ZeAaBnYxSDHKro66v7jQq3MmuNMpqwhQ6zX7sRD4hq/Lh3zF7Ak4Xe87XnAlniLk4YCMN/sWe34CMcSLnN9Q2tf/d8HHstvy1hERESkaWlhJRERkf1UVlZWjUrMHTt24HK5aN269T7b7F3VWVVCQgIJCQn2D7gZ8VlOPEaQnVY6bW2Me4nrWwB2F34PXB31+Y69k9VEl+C82z0FgHk7egLHR9hpzV8Ht1qt6Wjs4kezF8dGNYIoOUJ/azewP5HqdybbHhPgXGsm3Rzb+YPjo+oPRPdS7eGoWW8Qa6j6rDXb08ORTbk7I0497Fv7slW0MEo41lhpT0CHEwBzr5qN8PdNBFsNRPs9JiIiIvsnVXCKiIjsp4YMGcKMGTOqHfviiy8YNGgQbrd7n22GDh3aaONsjt4MngrA1OBJcYmfEsyP6bykQAEARznWAbA0MZReXG/WnbCujRVFwjA3/fAafcwIDgRgntknqn6j1aHkVwAOd2y0PfbW1CMAWGZ2tTVuJ7bXevyUYGjd2wuc30cVr8zdqsYxg7qrau2wj6LduErz77I1nkXtCfITnT8BMKT063pj7KDm8y8iIiLNjyo4RUREGklxcTFr1uzZTGX9+vUsWbKEVq1accghhzBu3Di2bt3K66+H1kK88cYbefbZZxk7diy/+93vmDNnDq+88kq13dFvu+02TjjhBJ544gnOO+88PvjgA7788ktmz57d6NcnexhWbBmkDmXV1yb8NvUMXt1xGKVWApGtwlkhgsq1SkGHm61Wa3bQkm6Vp1dUtcWjsrKqWBPBkYhXXV5dFX8tKYgp3pp2I3ny5yS8uPgy4S4gfmPv4QhtjJTsy41TD42re/kKAI511F4RakSwTMHFxj/wlpcTwIlNdaUiIiLSBJTgFBERaSQLFizgpJP2VAyOHTsWgKuvvpqJEyeSnZ3Npk2bwo9369aN6dOnc8cdd/Dcc8/RoUMHJkyYwEUXXRRuM3ToUKZMmcJ9993H/fffT48ePZg6dSrHHXdc411YM/Rk4BKeD5xHKQncEpceYksMWkb1yTXlzlTWWR1iCBR5/7sz+jHM+28ANlQc+1/wROaYfVlrdYjT81PBiN9kovUthtC1/E1gz3XZoa4EZ6ypYNOdwi9WV5uiRaZVydq4xq+LZThtjdcyUHs1baVIEvRBw0OJpqmLiIg0e0pwioiINJIRI0aENwmqzcSJE2scO/HEE1m0aN8b1lx88cVcfPHFDR3eQeVa52dc55rOpOBpQByeO5vyUx0DG7nJ+QXbrDbAWZF3H0UFaXrZJl53P8Zu0sJ9XOH8iitcX/GU/2LghugGHZX4JZbal67gK89f2GhlAmfbFrfuBGdsyVrDMvFQfaMbR5ynqBd57Fx5Ngo2v9xlzrR9dxdBoj/KfbxERERkP6U1OEVEROSgk2j4yDBKScIXl/ixrqGYm9S92v1hxV9yl/ttxnuejzJS5BlWT6CUE5w/M9ixIso+Gi7giN9mV27TSw9HNl2MfVf5RauuBKfP8MQUr1vuN6xKvJpViVfzRuAUdllp/JvLGjLEOi03uwBQmJAVl/j1szebuCa5PwDfBw+vo0X93wdPmf9gQ+Ll/JJwjX0DExERkUanBKeIiIgcdE53zAfgVMfCuMQPGLFNkilI7AjAGjM0Lb2Tf0NMcYwoKkhblYTWhc0y8sLHhjtCm7ScULFZS7xsSwttBLTU7F5Py+hllq4G9qw7aZdCI7XW4++5Q9WvnwcHRRUv3btnfPcFrmOg9yXeZmTsA9wHs3Jt1SiWMLCT31X7cxeruqovf6lI5M5Oqn8Tsf4VK2+mGF7bxiUiIiKNTwlOEREROehUJr26OHbYGvfL4ABKrQSWJce4Bqqx1+Y+Uc6f/TZ4BJvNtmzOGBjxOe5gaY1jhzh2AjDIsarGY81FSmB3XOJ+4DwdgOnBY/d6JPRaOaJen6Dmaxyv9GN7I7SLuSNYHqce9m1nSk/Avp3tjToqQndboanr5STWG8PUf4dEREQOCFqDU0RERMQm1/v/DMCZaVlcF8P5ScFiYE8Ctq7p0HW5yj8OgLHpPSM/qQkXIYxv1/EJ/qFrJC8UD8fCYF2V437Dwy4rjSKSogtYZaOl0x3zGeRYyULrKOB0W8ZbVWujCIDMksZfjgBgS4tBDCp/gQAOltgQr0fZUgCGOX+pdvwXqxsEId/RwoZeREREpDlQglNERETEZmaMe8Sk+PeuOowtSWdGMwU5jjuZ16fY045lZld2WC3tDx6n67IcToLU3A3c7/Dwi9mVVWan6AJWyfK+5HkagHOtOcA9DRnmvkWxCZWdTIeHXDJsi+cxa59WvtrsiNsRwBfBf3Wi/SOCiIiI7J+U4BQRERGxycOuVzjMsZVZZX8AIp8mXqkkoQ0AS8zu9IeoSxwvd35FBiUkl48BIq3ibLoEj8fy0s+xgTSz5jT5hovPdZ0Z+JrzPB8ywxxI1Z3tM82dnOD8OYYEXs1xphGP52OPnOTecY1fl3YlK/kh4VZyrFZUfe5i9VPGCI4p+Iz1Zibdqhw/ybmYs53zeNnftd4YSnCKiIgcGJTgFBERkYNOiZVAiuHFa7mwcx/vK11fheIXfwP8Nurza64pGF3y5VH3KwDMzUkBjo+sT0fNSsd1ZhbdHTmsMTtwaFQjiI6x95qjNgrGaYf2U4Kz6evYSF/HRuC1Bser7fmPx/MBe17XIk/ruMSvT9vSNXQwdtPBsGd9VNPhBqCsxlqbkb+vlOAUERE5MGhVbRERETnovB0cAcDLwbPjEr9lILbNizxmGQD9HaHVHdclHQ7AdqtFVHGsKBJkRamh2rd1Zlb42MfmYAC+M4+Iqt9otSsJ7WBduamRnXJTDwPgZ5s2tKnU3txe6/GBgcUAXOicHVU8vyulxrF4JTjDmmYTddK8OTZHDP1XxqD6lPuznXMBGOr9rt4IBUaazWMSERGRpqAKThEREZH9ROuyDdXuz0s/g1e3dqaYJGZFESeaBJlluMizUikkec+x8I7g8V2rMcWfF7fYjV2X18LKj+m8Le1O4iLv3yjHwycJ9wKx7MQeme6OUIIxzRdbAr7BbF4XtXNZaLOkPo7NtT7utvz1xrjJ8ygFBfmU4+FnW0cnIiIijUkJThERETnoTAhcwGvBMyi0kvljHOLHXoFXPS1X4soI7QgdrSg2GcprdRQDvC8DsKHi2MfBISwzu7HByuLq6HuPQvzSkFtaD6Zv+auYGPxqY1zTcNRaAWnFODEq4E5jodWrRrR46lD8S/2N4iHKNWXr08qf3eAYZUYS9tcPi4iISGNTglNEREQOOmc753KT60M+Dg4GfmN7fCPWXar3yv+0Duzgt87PyLNSiWpTlij6T/Tm8qL7aby4w3381vk5V7i+4kn/xcDvI+83WnEss0wv28pUz4PkWWnAhfHrqIFqy/nFq4KzUpGradbgtPsF9zv2Xntzr94i+D6wOecqIiIiTUQJThERETnopFBOe2M3LSiOUw+xJajykrtXu3900UzOd79ece+xyHuPonuX6eUM53xKrPhsyrMvpsMTt9huy8cRjg3stKLd1XzfzDoqNYOGM6Z4mbsXsCHxWgDeDR7Phc7Z/DM4mnExj7Buc80+DHasIM+TVX/jeIjxOarLluS+AHwfPJxhtXUXwffhnf6XOD/xM4qtRKD29VVFRERk/6dNhkREROSgc5JzCQAnOn+KS/xoEoxVFaZ0AQgn5Tp518QUx7CCEbdtURzqI8Xwho8NcISOjXAujan/SOWlhvZoX2J2r6dl9FqXhjZqamsU2Bq3zEiu9fgHyRcBoSRiNNLLtoRvj/XfRNfyt3gpcE7sA9yHoFWxKU+sFcYN7d9pbxLdqKP8cpXZEYDPPCPrjXF0MPQzINUot29gIiIi0uiU4BQREZGDznGO0KqM7Yx8W+N+HDwOgJ8SB8UWoCJhU1l5ZkZZ8TbP7E2JlcCGtIERn+MOltY41texEYCBjtVR9R+teE4PTvXnxiXuh4mh5OPs4OF7PVL9tYuYzRvv7EtLI1Sx7DC99bSMj+KUQwD7drZ31PH+2WG1CPVn1Nyhfm9WIz7/IiIiEj+aoi4iIiJik1v8t3KL32BYamuuiuH8BLMMgDZGYehAlMmX0b6/AnBdRuQbExlNmOAx4rkIZ5yua45nKEfs+g9+nNU2LzINN6VWAj4rul+vqz7/Qxy/MNixnJ/M7kS15mqEKhPXHUuW2x47EjktBzLc+zR+y8VcG+JlloeqdIc5q2+atNrqRJLpI5+0emNY8XwPioiISKNRglNERETENqFkiRnjDOCWZRv3Chdb8sWMZo68zesiRqMgtTs/md0otfa9WUxM4pTgNB0eiqg5Td1pWMw2+zHX7MvwKOIZjj3jnOx5BIAiKwn4awNHuo8+m2iKuuVKYrOVaVs8dx2VqN+b/SghkUAEk9UsTWgTERE5ICjBKSIiIgcd0zJwGPbvVH2/axLdjW186b0GGBz1+V5PSyC0JmV/ok++nO+YTapRRrLvoojPMeqa59sInAQ50rGeAqv2dS0bIl6VqSd7v+Zvno/4OtifqlWWWcFsRjoXUkRSdAFrGWeaUdawQdZjY3I/jo1rD7VL9W7nK8+fKMeDHRWqq1qdyOAdUymzPNWe9RGOJVzp+oqJgfrfV6rgFBEROTAowSkiIiIHnTzSaE2h7XGvc30KgFn6KXBN1OfXmLIdZZJuvOd5AObmFEGkdYRVKjgt08RwOPjJ7BZOPNq7B/nefVdsehPjrvP7YjniU5k6yD+fQY5VDHKsAv4vfDzm9UQdjVdBuN7MpJtjOzvdHRutz6paFa+hhyPbtngBZyiBmU9qtQRneKf7CCqZtQaniIjIgUGf6CIiInLQ+cQcAsCEwPlxid8hsKX+RrVwWX4A+hqhqeq5iaFd1UNTliNnmIGI2wYSQlWjm822mBX5oPeCxwMw0+wfVb/Ral0S2q09PQ4Vi6VJHQD4yYx8PdJItA3urPV4d39oQ6aLnLOjC+jwNHRIUbM/nRyZ1HL7kptAODnvoPqU+6tcMwAYHphTb4gyIw7LI4iIiEijUwWniIiIHHziuX03YBDbGocpvlDyzGMEAfi55Wm8tr4FBaQyI6pIkaewDIcDr+WmhERMwMmeCri9E0d2S/XuiFtsI06vsVVH3DQztorgvHbHMsZ3D6VWAtMSHmjI0OrVzbEdgAxfTlz7qZPN1ZJZpasAyDTya308kfJ6Yzyc9le25mRTYiWxyM7BiYiISKNSBaeIiEgje/755+nWrRuJiYkMHDiQ7777rs62v/3tbzEMo8bX4YcfHm4zceLEWtuUl9f/n/uD1X+scznd+ziTAiPj00E0m/xUtVcCqMzTigVWb1ZbnaILE8UmMkXtBtLL+1/O8D0R3pzoW/NIfucby4uBc6PqN2pxnB68o/VxDCx/gTG+cbbGrWtd1FinOgcTWvCdeSQLrV4NGVZUehfZsYd59Aybp+O39O67UjqSpQ/KnGlstjLZTbpdwxIREZEmoApOERGRRjR16lRuv/12nn/+eYYNG8ZLL73EqFGjWL58OYccckiN9s888wyPP/54+H4gEOCoo47ikksuqdYuPT2dlStXVjuWmKipl3UZYKzhVvdk5pm9gStsjx9z5eNeSbLkYCGjnd/gtdxEtSlLFAlOp+njKffzODCx/CeBK5nfOT/hctfX/Mt/Sf0BGiKOCU6PWcLznmcq7o22LW5dFZyxblYTr0rTfSl2xnVl1TrZvfGT5XDv83FHBN8HTfH8i4iIiP2U4BQREWlETz31FNdddx3XX389AOPHj+fzzz/nhRde4LHHHqvRPiMjg4yMPcmI999/n7y8PK65pvoGNoZhkJWVFd/BH0DSjDJ6GNlstDLjEj/WTXOKU7tWu39o0Y9c5K7cyKbm+6NOUVSQOrC4sGLdyNKgP/I+7BCnjYAAnJbJcY5fMS27E1h1JOliTN6lFq1nQ+LlAMwIHs1pzkVMCJzPrbEObx8+Dg7mbOdcdro7xCF6/eze0Cc/KfRHodnBwzm+lscj+T4cXfoW7ye+QbnlBnJtHZ+IiIg0Hk1RFxERaSQ+n4+FCxcycmT1adEjR47khx9+iCjGK6+8wqmnnkqXLl2qHS8uLqZLly506tSJs88+m8WLF9cZw+v1UlhYWO3rYDPUWBr61/FLXOJHM0W8qqK0HgDhpFzH0hVx7z+1cG34tmmGzjvMsRWAU5x1v4/s4E1oC8ASs4ftsTNK1gHgMCws0761RH2OhFqPz8i4GIB1ZnR/aEgt3hC+fYv/VrqWv8VTgUtjHt++mJVVpjG+PxvMsae2wo7XpK7iy7VmewAmO86uN0Z/X2jlzUSjkZP7IiIiYislOEVERBpJbm4uwWCQzMzqVYOZmZnk5NS/6Ud2djaffvppuPqzUu/evZk4cSIffvghkydPJjExkWHDhrF69epa4zz22GPhytCMjAw6d+4c+0U1U8ezBLA/qTGxYk3PH93HxBagImOzJykXXfVhaMo9rEnuH/E5bv+eBHdlgnOAEXrvDHCsiar/qFW5PCvWdUvrkFK+53vKztifpl4EwK9m9e+boBFK3kU9Vb3KupTx3tQpCR8ATisQ137q4ve0AEI728c6pb+quiLkWK0A2EnLemPUtaaqiIiINC+aoi4iItLI9l7zzbKsiNaBmzhxIi1atOD888+vdnzw4MEMHjw4fH/YsGEcffTR/Pvf/2bChAk14owbN46xY8eG7xcWFh50SU47kiu1eTRwBY8HLqNHRgsuj+F8l+kN37YsCyvKKdyjfX8F4IIWHbks0pOqJNgqq+rMOD0/ezOqJTht3ty+ynRo0wzicNozHX514uEcW/4cAZzVdt2OeS1HY8+4jjTWc7RjNeusLKJaczVCpzkXAtCtLD6Vy/XJaz2Q072PU46HrywLRwPfZ6n+0JTy453Vr2ej1Y6WZjFFjuR6Y9S1pqqIiIg0L0pwioiINJI2bdrgdDprVGvu2LGjRlXn3izL4tVXX2XMmDF4PJ59tnU4HBxzzDF1VnAmJCSQkFD7NNuDhUl81n70Edr0JBDjr1htCpaFb4d2NI+tusyMZg1Oo2qCMxj6FwcQjKnvaOS1GsDPZlfAwgwGcNSzaUxUqiU47auMNB0J7KilMjDZLOWD4FDmm714OIp4VXcWn+R5FI9R+bw/0LCB7qvPOFeK1iXoSWGlFVo307ShqLauStT3g8ezxWqL6ao/eakKThERkQODPtFFREQaicfjYeDAgcyYMaPa8RkzZjB06NB9njtr1izWrFnDddddV28/lmWxZMkS2rdv36DxHsjiVaF4t2syz7vH0yNQe3K5PqYzEQitSWniiHrjmjMcP3Kh41uS/PmRn1RLIrDRKjgdDo5wbKC/Y52tScjK2JVM075k7ZDSr5nkfpTrnZ9UO94hsJHznD9EPa2/6s7ie5Kb8bUi8ehG6Wdv7mA5H3v+wnTPOEx/eYPjbWwzotbjw5y/cJf7bYabC+oPogpOERGRA4IqOEVERBrR2LFjGTNmDIMGDWLIkCG8/PLLbNq0iRtvvBEITR/funUrr7/+erXzXnnlFY477jj69etXI+YDDzzA4MGDOeywwygsLGTChAksWbKE5557rlGuqTkqIxEosD3uH1wfAeDxJgL1J6P3VnWas2lZUSc4X/SMB2DejrXASVH3b1ZsPrOUwxhM/KcxG1WmZ9uZhAwFt3dDm0p9ypcy3LmM4c5lwPNVO4wpXtVEbLytNzPp5tjOBs9hjdZnVWklG+nn2ABAmQ2vt9+dCoDPclK1rr1yk65IKlXjVc0tIiIijUsJThERkUY0evRodu3axYMPPkh2djb9+vVj+vTp4V3Rs7Oz2bRpU7VzCgoKmDZtGs8880ytMfPz87nhhhvIyckhIyODAQMG8O2333LsscfG/Xqaqx8cR3Op+SkTAudzaxzi9wrGtjlP5SYz3Y1sLNOkzNMqpjhuy1t/o73stNKxEkP9TbNOYbDxC98HD2dYTCOITHrxnufJziQkgOVKAmCp2Z1DK27bId3Mr/V420A2ABc5v4syYuNXENq9oVOkUkr3/GyzI6FdWf3qoPr13OGeBsCJ1sJ6YwQMG5dFEBERkSajBKeIiEgju+mmm7jppptqfWzixIk1jmVkZFBaWlpnvKeffpqnn37aruEdFOKdUjKILYHktEK7uqcbpZT4SljT+iQmrnSyy0rnk3rOrSaGBFahlUJKxepFVh2JI7ullGWHb9tfwblXNax9gWs9mmSWxBSttGVPfu+7g2ISedPzWEMGVq9uju0AtA7k1NMyTqpV7DY8od26JJQgdxm1x0ql7p+blV5tPZZx69aRb6Uyr8EjEhERkaaiBKeIiEiMdu3axaRJk7j99tubeigSpamu83iraDA5Vqu4VHDGuomLsdd6mGWJmXxrHhV9HCvy/ovaHUO38jcA+L4iEfiT0ZMbfHeQa2XwbtS9RyGOU9Tz2x3L8d7x+C0XX9iY37TqXDYgtrR5ILE1n5vHxD6gGAwpngHc06h9wl5LMNiQ4GxZuj582zLNGtP9I/lDQ4mrZXjjIxEREWm+lOAUERGJgmVZfPHFF7zyyit88MEHpKenK8HZDLVjFze5X2O11RG4yvb4sVZw7p3gdJvlnOv4AbCAs6KIFEX/hsFfXZNIwAel/aFFZ37PNC7yfMW//JdE0Wf0DEe8qiwBVyIPu17DwMIqPxOSWtsTt45NaepOfO5/ShypTdKv4aiy3qVZ+w7o0QXcE6+2BKcjgj80OLTJkIiIyAGh+fwmJiIi0oQ2bNjAX//6V7p06cKZZ55JYmIin3zyCTk5TTTVUxok1Sijn2MD3Y3s+hvHwBFjsq40tUolmRmkfclyJnieZYInug2joqngBLjUOZPLXd+ANzTN2mispE+VBBVBGxJeVTgcBiOcSznR+RNWwGdbXKuuX59jTHC6y3LZkHg5GxIv52ezKwD/DZwW4+j2bWJgJAA5zo5xiV+fagltGyo4/Z4MAL4L9sOs5fmPZImFE4qmsyHxclYljGnweERERKTpKMEpIiJSB6/Xy+TJkznllFPo06cPy5Yt46mnnsLhcHDPPfdw6qmn4nRqB97m6GhzGQBHOdbFqYcYE5wteoVvm6ZJVuFPMcWJZop8Yv4aUozQpkSWFZomnkUuAKc669+kpSEqK/qWmD0IJra0NXZy4drwbTunv5tG7ROgvm99EQDlVnSb1iQVrA7fvtF3B13L3+JvgWtiH+A+WOFp9PZu6BS5KhXKdlTsVsnDm1XCrTXbA/Bc8IJ6QxxZFlp502PYvAasiIiINColOEVEROrQsWNHXnjhBUaPHs22bdt49913ufjii5t6WGKDYYEf4xL32cB5AMxz9I/p/KpTbE0zWG3KeiS7jM81+wDwa8IREffp9u6u0meoj57WBgD6xy0BXCFuGwFBUsnm8G0ryorWffmqzeVAaNf5qoKORADK8cQc21HHZjl2M6ymTeb9ZHYjaMOSAY5qCc49758cqxUA663MemM0p6UFREREpG5ag1NERKQOwWAQwzAwDEOVmgcY03DEWmS5T88FzuPVwCjSUlM5L4bznYHy8G3TMmGvhKfTse9kzG989wMwPK0No2Po36qodDQb6W/gVSfC274GZxWRJIcjlevpzInepwjiZHbVBxwN33m+u5HDyY4l7LBaEN2aq5G5xvU5AD19K2yPHYnCNkdzvvdByvDwug0vt8v0AzDcuYwyfzm4UwDIoSXrzUyKrcT6g2gNThERkQOCEpwiIiJ1yM7OZtq0abzyyivcdtttjBo1iiuvvLLx1ieUuLFi3PG6PmUkUkYiDhJiOr/Vjh/Cty1nUrV1HU0ziJPIpj/HmiusTATG6/nZ2+52Q1hi9gj1V7ob0jrEpR9bp6g7PWy0smocb+3bxnvBYSw0e/JwjLFfdD9NklG5XuiDMY+xPk1VwRnwpLPEOhSAoNnwDGfVzbyCQX/49n8CZzHYsTyi93Gda6qKiIhIs6JPdBERkTokJiZyxRVX8PXXX/Pzzz/Tp08fbr31VgKBAI888ggzZswgGNS6bc1RvJIat7ve4Un3CxxmNmxq92LzUIKe1BoJzvqMcCxmlGMeScGCmPqtnMrdWBWcpiuJPsZGBjjWYPnL4taPnRWc/Qtn8bL7Sa5yfl7teJZ3HRc4v2eAY03MsfckN+NrkeeYRumnNpPcj/I/z9+huOEbtOVknhi+XXXTokGOlfzNPYmLnbPqD6Ip6iIiIgcEfaKLiIhEoEePHjz88MNs3LiRTz75BK/Xy9lnn01mZv1rvMn+x29EtxFMpG53vctFzu+41pwW0/lVa9pCBW7RrcE50fNPXvA8w+/znoyt/4ok6ipH95jOj7o/9lSL2pmE3JsdO3ZXOqRsOSOdC3nQ/d9qx2P+pTp+M/Nr2GCGfl795D6y8TqtIqF4I8OdyzjGsQr83gbH81Xsog5gBfe8xpXvqUiWC9AanCIiIgcGTVEXERHZh3nz5vHhhx/i9/s59dRTGTlyJKNGjWLUqFHs3LmTSZMmNfUQJQa/unrTM7iGZwIXcFsc4h/Lzw06P8vYTSDgx3Tu2bCmrt27a5NslkTdZ4mVQFlGaPrwe+6zONE7j1/NzvSOOlLkUgrWkGiEphbbmYSsaqnZnZZpnW2Ll2wW13o8KVgEwEXO72zrK16sOK53ui8phXsqmy0bpskbjj1rI1tVKpwfdr8GwAjH0npjWIbWVxYRETkQKMEpIiJSh/fee49LLrmExMREXC4XTz75JE8++SS33347AG3btmXs2LFNO0iJSbxXmDQaWJbX3tjN1sKtZLcdyu+X3s5OqwWvOyKvOnXEkDzKsVrtSaIalRVw8d3VO6lkU/h2XCs4bUzo1VXx57Ziq0gsyziU23w3UUQyz7ifI82I31T9TCMPgLbmjrj1ESk7EtotStZWiVfzPR/JlP/p7a7n0R1DySWd/T81LSIiInVRglNERKQOjz76KL/97W958cUXcblcPPzwwzz88MPhBKc0X58kncPkoiPZYrWNSwWnw4aEmmUGKU3uxOfmsUB0SbpoEqxFbY/m8PJXMDF4u+K0jc4u/MF3G0Uk80ZUo46dZeNGQAD5bY9hpPcJyvEw0c6KxbqmNMc41dmf1JYPzOOB+G/uVJnwu6B0GnBvXPuqjx2vd0bBqvBt04otYVrkyWSx5a+/oYiIiOzXlOAUERGpw8qVK3nzzTdxuUIfl3/+85/5+9//Tm5uLm3atGni0UlDODG5w/UOuVYGcK3t8e2ofLSsIA4sTnMswMDC8o+AxMiqOI1okj0OF9c4P6OlUYyzsBeQwXW+NznDPYOnAhfHNPZY2DFluaqgO5XfOT8hzSjDKDoe2va0Ja5l1JWEbHhy0myk3etLjORG6WdfbK/YjTGeo3GechEREYkzraotIiJSh+LiYlq0aBG+n5CQQFJSEoWFhU03KLFFIl6OcaziCMf6uMSPdYp6eXL78G3TtEgv28z/eZ7iZc/TWN6iKCJF1/+lzplc5/oUZ+l2ILQ5i8torHRbiGnavy7kyc7FnOGcjyOq564+9VdwRpO8c5XvYkPi5WxIvJwyEgB4Pzi0QSOsy5P+UMJ6q6NDXOJHw4qx4rI23wX7EUhuF9O5hxf9wIbEy1mVMMa28YiIiEjjUwWniIjIPnz++edkZOzZqdc0Tb766iuWLVsWPnbuuec2xdCkAfoGlgPQyciNS/xIdm+uTXGLPuyy0mhtFIEZJHP3wvBjta0xWHf/kSePEgvWcYhjJwBWRZIx3QolBE91Loo4TkMsN7vgzuhma8ykwvWh55HYpy/Xqo6p6IuzLmZwzptAKMFpOCKrI0jOXxm+/XvfHfxk9QDg/IaNslZmRXLWaKJNhqqyc13UveOtNdvTw5HNi4FzuLGe83oXzQHAY9hbQSwiIiKNSwlOERGRfbj66qtrHPv9738fvm0YBsGg/mPc3Az1zo5L3Mf9v+Ee9xTmWIczIsYYlXWTpmWGN/uByDZl+SHYl6HO5axw9eHQCPtzlVdJ8lYkAjuY2QAMcKyJMErDeHHjtHliUXLxhvBtO6dDf99+DIN3/i8ctzKR6XOlhtuYlhnT1cSaGI/UnjU+47t5VH2Wmt1xt+hla8yqCc7tVkt6kM0ys2v9J9a55ICIiIg0J0pwioiI1MGOXX5l/2TFaZWeN4Kn8rE5BJ+RwI8xnG8EfaQT2kW7RlIugvfj5f77wA+Ht0rnnBj6r6x0rGun8Hiyu6KvKjs3MCpzt2SU9zEsDKZbe1beNAxnuE2sPzsyjd1c4phJsZUEnNXwwe7lLvdUAPoGf7U9diQKWx/JZb57KbESedTG13u4cxlbi3dAy64A5JHKdqsFXupfs7Yp3usiIiJiPyU4RURE5KBT90YxDVNMMsVWcsxrV7bJ+Y4EI7Sjs9+TXu2xaKaox7qcZWVSNd67eVfKa3ss3wX7kWT4cBZugvb9bItdNX9m53qPhsPFCqsLEKqDrEyPtS9ZzvvBoSwxD+UeI7Zfsf/hfpkMo7Ti3oMNHmtdHHZO2Y+CP6EVc8zDgeqvjz3BS8I3HwtczvGOZZFt2rTX2qmRLi0gIiIi+xclOEVEROrw7bffRtTuhBNOiPNIxH7xSWLc6PyQjkYuk4KnNSjOYvNQ3CnVN4KJpApxiOMXEvBTaB4dU7+VO5k3VlVb0J1Kb8c2Ohi7WVOeH7d+7Jyi3iv/O8a732eu2RfTGhU+nlmyihOcPxDAFXOCeE9yM75mu47lskbpqaYn3S/QlnzceeOh06AGxdrRblj4dtWq2SOM9Tzu/g/zzN7AX+uJUiXBaTVWal9ERETspgSniIhIHUaMGIFRUeln1VFupDU4myezynRiO93lmorDsGhn5EO925vs295TtiPZKGey5xEAFhcfCYzad+NaOw31scnZhcMCq6M/PwaVq1XamYTcm50VnFmlKzne+QPnO3+gPPAIuBKB6ks5xnO6fUNsNNvRxbGDWY4hTZLgTCzZykXO7wBY6S1scDxfQisKrGQyjNJqfwCorNw0IlnTtEoy3zSDOJzx+dkgIiIi8aU5GCIiInVo2bIlnTt35v7772f16tXk5eXV+Nq9e3dTD1NikOPuBMAzgQttjeswQgmV050LGhQng2LMoL/asaCnRcTnt7Lyou4zaBkUtBkAwIcpoedlp5W+r1MaLLlwXXgnezuTkFWtMDtT3PoI2+I5rUD4tlXlNXISSrBd7PwW01dS47z9iRXnzYzqklKwas8YbHq9a0uQ/839OgDHOlbWek5VVZerMPXHKhERkWZLCU4REZE6ZGdn88QTTzBnzhyOOOIIrrvuOn744QfS09PJyMgIf0Xr+eefp1u3biQmJjJw4EC+++67OtvOnDkTwzBqfP36a/VNQqZNm0bfvn1JSEigb9++vPfee1GPS/Yf3R05JO1cys5WA7nddxOX+e4l6Emt/8QKRgy7ZK+32hNwJlUECP2KGO9dvVOK1odvR7PGaDS8uO1dU7TaZkJ7xlytgjPgizhceXp3xvmv4ybfrWw029kyxLpkGKHEa1szN679RMSGit3UonW0NIqB6gnTDkbkf3halHUJl/nu5RTvPzGdngaPSURERJqGEpwiIiJ18Hg8jB49ms8//5yVK1dy5JFHcsstt9C5c2fuvfdeAoFA/UH2MnXqVG6//XbuvfdeFi9ezPDhwxk1ahSbNm3a53krV64kOzs7/HXYYYeFH5szZw6jR49mzJgxLF26lDFjxnDppZcyb968qMd3sJiVdjbX+f7EB8GhTT2UOlmmSXHKIbxvHs8c83CCUewcZEQxRbq4TX+OKX+eS31/DU+tzne2ZqzvRv7qvybqccfM5inqBW0Gcp73Qf7svzHmTZdqVW1Ks1nrcaJI1vqSs5gcPIXp5uDINsVpgBYVCc4/+l+Laz+RiGTJhfq0yP8lfDuSNWprU5jYgTnm4ay1Otq/8ZGIiIg0GiU4RUREItC5c2f++te/8uWXX9KzZ08ef/xxCgujX0Puqaee4rrrruP666+nT58+jB8/ns6dO/PCCy/s87x27dqRlZUV/nJWWSdu/PjxnHbaaYwbN47evXszbtw4TjnlFMaPHx/1+A4Wxa6WXO38gntdbzb1UOpUWZF2nLGC4x0/Y0Ux7dlB5Mkey+nhNOdCrnV9SlJ+aN3N3xRP4u/u/9LBaLxKP7unqAc86ZzuXMAfXB/i2W3jeqJ1JDiNKslJM8ZkrdlIv5qXktgo/eyL3WuumjFmsR1Vp6grwykiItJsKcEpIiJSD6/Xy1tvvcWpp55Kv379aNOmDZ988gmtWrWKKo7P52PhwoWMHDmy2vGRI0fyww8/7PPcAQMG0L59e0455RS++eabao/NmTOnRszTTz+9zpher5fCwsJqXwcbt+XjBOfPHO9Y1tRDqaYsac8UZcu0SCrdxtSEh3jD8xiuwi0Rx4loc5UqLnHO4hbXByQWbgTAY/lIN8pwE32VcjSqrgUZj02GTnUs5ELnbFxlO22LaVWbix6s9Xg0CU6nN5+FCb9nQ+LldDB2ATAzeFTDB1qLcf7rANhgdIxL/PpUzR9aVsOXJKgM933wcMpa9o4pRoein9mQeDmLE27Y79dOFRERkbopwSkiIlKHH3/8kT/84Q9kZWXxr3/9i3PPPZfNmzfz9ttvc8YZZ0QdLzc3l2AwSGZmZrXjmZmZ5OTk1HpO+/btefnll5k2bRrvvvsuvXr14pRTTuHbb78Nt8nJyYkq5mOPPVZtDdHOnTtHfS3NXTdfqKIvwfDX07JxFbXsxyozlHyyTJOs3Lnhx6KZ0hvN2pmJhesZ4FgT6rOijwS8AJzsXBJxnIZYa7ansGKDI7skFW+ip2Nr6I6d63vWUcH5a/vzw7ejqUZNyVtOa6MIgD/6/0j38je4xv/nho+zFpUVovFeWzUiNlZLBnFUW2d1dcX30BuBU+o999D80B+CWhrFmIH96+eBiIiIRM7V1AMQERHZXw0ePJhDDjmEW2+9lYEDBwIwe/bsGu3OPffcqOIaRvV19izLqnGsUq9evejVq1f4/pAhQ9i8eTP/+te/OOGEE2KKOW7cOMaOHRu+X1hYeNAlOYcUz4hL3Pv81/Cw+zWWmV3pF2OM8K7Qe1W4RVLhOCt4JCc6f2KFcShZEfbnLt1RtRMAMsx8AAY5VtVyhv0KSME07P21NLlwbfi2ZWMybUmnKxm6MbSkRNVNhrzuDPyWE7cRbFA1ajynqVeu8WnEacf6SC0xu1OUOcTWmFWnl+daGRzGVuaYh3NlfSfGuHaqiIiI7F+U4BQREdmHTZs28dBDD9X5uGEYBIOR/ae4TZs2OJ3OGpWVO3bsqFGBuS+DBw/mjTfeCN/PysqKKmZCQgIJCQkR93cgsoz4JJHeDw5jrtmHchKomQqPgGXiqlg/09prTcFINlG52n8P+KF9RiJzYum+IvEVr+dnX2zdCGgvsW5AUxvTmcCF3r9jYfBSQnr1xyoSiLHuCJ9OCec4fsCPCziroUOt4Z/ulwHoh41rkkahqNURXOf7E4VWCrfY+Hqf4PyZ5fnroPPRAJSSQKGVTABnPWdS96ZRIiIi0qwowSkiIlIHu/+z6/F4GDhwIDNmzOCCCy4IH58xYwbnnXdexHEWL15M+/btw/eHDBnCjBkzuOOOO8LHvvjiC4YO3X93CG9yVapbLdPEcNiT0CsmmTVWcsznt83+hkMd2wDwJrYG1ocfi2bac6ybpVQmVa1GWsUor80gPg8OooVRTGLeSqBNXPqxewOjRVbPUFyHJ3ysff5CppvHsczsxrXJ7eo6dZ/GuSfT1iiouPdAQ4dZJ1cUm1DZyZfYhq/MUDW83Rv6OMp3h2/f5b+BYY5lBCJ5H1ddUlUVnCIiIs2WEpwiIiIxCgaDfPTRR5x//vkRnzN27FjGjBnDoEGDGDJkCC+//DKbNm3ixhtvBELTx7du3crrr78OhHZI79q1K4cffjg+n4833niDadOmMW3atHDM2267jRNOOIEnnniC8847jw8++IAvv/yy1un0ElI1gWdZVVfva5hrnZ+SZexmanBEg+IsMg+lOKMnyZsXhI9FMu25v7EGD362m73qbVurymnxdSxvYLeAJ4MORi5HODbwU8m2+HVkY4Kzy67ZPOb6gPlmL0zr5PDxzIKfGez8noDlxIykcrAWe5Kb8fUlx3Jho/RU0z2uyXQzskndNQ44tUGxdrY9bs+dKt8fhzq2McHzHGvMDsBfI45ndyJcREREGo8SnCIiIlH69ddfefXVV/nvf/9LXl4ePp8v4nNHjx7Nrl27ePDBB8nOzqZfv35Mnz6dLl26AJCdnc2mTZvC7X0+H3feeSdbt24lKSmJww8/nE8++YQzzzwz3Gbo0KFMmTKF++67j/vvv58ePXowdepUjjvuuBr9S4Vq01KDOJyxJaT2drtrGulGKd2NbcANDYq1d4GbGax/R/P3E0LJnJ8DhwHnxNBnKMGz3d0Jyn6M+vxYhNecjGNyyc5qwTYlKznH9Q2X8Q3byv8EGUk12thcnGibTWZbDnHs5B3rlCZJcCaU5nCj6yMAlpQ2fGd7b2Jb1prt6eHIrrYJV+USC0aUmyk1ZO1UERERaVpKcIqIiESgpKSEqVOn8sorrzB37lxOOukkHnnkkaiqNyvddNNN3HTTTbU+NnHixGr377rrLu666656Y1588cVcfPHFUY/lYFXqDK2d+EzgQn6P07ZfiNKNUgBOdS5uUBwPAQKB6gnN8pSOEZ/fmeyY+s1uMwyA6S2uYGThu4C9U/j3llS8kaMc6wAwI1zLNmIVua31ZiY72g2zN3ZlFyW7gOrT0S9xfcuG4h3Qumtc+rRDMJ4Lnu5Dav6K8O1IEvaRqEyQm8E9O6Df7ZwCQA9HdN8HQe2iLiIi0mwpwSkiIrIPc+bM4T//+Q9vv/02hx12GFdccQXz5s1jwoQJ9O3bt6mHJzFyVF13bz8st+vn2IB/65dsa9mfv/ivY6vVhpsT20Z8voPoK9FWmx0pd4USvw7Hnl8Rg8EAriprTdoptWDPZjfxWv+wgFSCcfqV1zRrT9IZZbuArhHFKEvrykP+K8mzUrnM9TXHxHHn+kQjlMBra+XFrY+I1fHcRSOleCOHObYCYAX3vOf7GBsijrGy7UjeWJPIRqsdL6R0aPCYREREpGkowSkiIlKHvn37UlpayuWXX868efPCCc177rmniUcmDbWw1VlM2d6JVVYnrmmiarb6mMEgRS2781bwFABujGKcLivyZGFx66MY7n2agOXitoo+Au4k7vNfg4mDv5qN8wujZVNFX6WC1kdxme9eiq0kbojTa2zWUfEXTXWiL6UDrwRDS06MZqYdw6pTOyMfgAnOp4G/xbWv+tSVHI5Gq7yfwretKhWcwSg2ycpP6sIn5mAAAvvnjwIRERGJQONskSkiItIMrVmzhhNOOIGTTjqJPn36NPVwxEbbU3pxlnMed7r+R7C0sKmHUyvLDCVsehubGGT8CmX5EZ/rjKKC03Ql0sfYxAXO70jPWwbABbn/4VbXe3jwR5UsaojK67WLP6EVPY0tXOb8mvTcJbbGrlR1WnRVwUBsybuAtWctWNun7ANeK5Sq9uK2PXbUbE5oV02YmkZs79mg1uAUERFptpTgFBERqcP69evp1asXf/jDH+jUqRN33nknixcvxmikHaYlfgzD4AznfE5zLiToL2vq4YR5q0xDt4IBksq381nCPbyT8CApOyNf19NJdMmxc50/cJf7bVrnLQUgySqhnZFPMl4CjVThasUhoTfCsYTLXV+TXLTO9thQdyIzmgpOp6+Qye6HWZlwNcOcvwCw2Dw0Ls/7Df4/AbDWavqp2HatwQmwyDyUHe2OD98PRrGLfZviVfyUcB3fem6Dgs22jUlEREQalxKcIiIidejYsSP33nsva9asYdKkSeTk5DBs2DACgQATJ05k1ar4rZUn8dWhbE34thljtV1tTKthye/CVkfydbA/AJYZoP3O2XtiRzGl12VEXomWULSJs53zwn0CVF7FMMcygn5vxLFilW21YlPWKbbGTCzZwknOUMLW7unvlaom6Va2P6fK8cirUVN3/cwQ53ISDD+P+S+jX/l/uNT3V4INfC/VJlDxq3+0CfC4sGGKeqViK4lAlaTmTloD8HFwcL3n9tg9i3SjjEMcO6F0P1ibVERERGKiBKeIiEgETj75ZN544w2ys7N59tln+frrr+nduzdHHnlkUw9NYjBw90fh28GAz7a4NwfvAKDUSog5RmX1mbXXpjuRJOk+qkjorDQ7RdxfQsm2PXcqE5wVubVhzl8wS3dHHCtW2VYrfEairTFTC/b8AcKyMZn2U4ffhKd6V01klnlas9ZsX3E8tv78uCgmGT8uAnGYLl353nLFsAmVnX4xu7Cqw/m2xqxa8VpiJAPwafDYqGLYWVUqIiIijUsJThERkShkZGRw0003sWDBAhYtWsSIESPCj33//fd4vfGvdhN72bnW4RzjKM7zPshFvr/HHKOyym7vNQqtCKoC/+i/la7lb3G67x+xdV7LcxFspKRPMJ5T4W1McPpdKVzh+wuX+e6lNOPQao9VVhFGU8FZlYsApzgWMtIxH9NvX+K90hTPwwDhnccbW1HLvtzi+yOPBS7HxL4K1ROcP9Mid1H4vmU48FtOon1H2b0OrIiIiDQe7aIuIiISo/79+zNhwoTw/VGjRrFkyRK6d+/ehKOSSFhVUh9m0L5Ekt9IZKl1aP0N69Bm21cc7ZwPQFFCe9IDO8OP2bHrdL1qSfDUtVO4HfLaHM2UwAi6OXJok7sA6BKXfuxc39OyYIHVGyzwOtPCxzMLlvKT2Z1pweGc2Cryyu6qSbirXDPoZOQCsLvsd5CWYtew9wvexEw+NocAcHKw4Qltq0qIpKIN4dvjkv5Kl7w5OCKpVK0SQxWcIiIizZcqOEVERGxiWY2zGYvYy841OEc7vuQO1zt0NbJjC1DxHlpoHsbG1sOqV6BFkHzpY2zkCGMdSZTH1r9ZMxEYz6SPP6EVSYaP4xy/0qJwedz6wbLvGjrnzeWvrtc52zGnWtVpVv5iLnF9y2HGVvyOpJhiVyY3wd735d6+DR4Rt9j1ucz5FePdz9Jxx6wGx8ptMyh8u+oSDmmU8n+ep3jJMx4riqn+8XzORUREJL5UwSkiIiIHNTunYF/Nx3RxZXOM8StwfYNiBfdKzESyjuSnCeMA2GK1AS6KvtOKRGC+u92eccSxghOqTMmPZ4Wqja9xZtEyznd9xrV8xpyii4A2NbuzYbp9IMZp7vuyyWzLIY6dPBW4hBNsj14/T9kOxrneIt0oY07xoPpPqEdZUns+Dw7idOeCat8fhmPPf3FM08TpiKymI16bUYmIiEj8qYJTREREDlrPBs6jtEUv2+KlUAbAUGfDqxEDeyXJdqf1jvjcqpWA0VjU9nwAvmx3DblWOhDfCs6kks1c5AztFL/3pkp22W614Kf2F8cldlLeyhrHLnF9S0LeqlpaR8fOtWH3F+l5y0g3Qt8jtS2HEIvaEuRX+SbveTyKTcQ0RV1ERKT5UgWniIiIHLQCOAnYuLJA5S7VAJZpYkRYOba3gY7V+Nb/H7s6n8ZD/ivYbLXjxNSedg2zVqvNjuS7M8P3gxWJo2Acp+2m5ldJEMYpuZRttaasYldtu9WVEEsuWAMMjyhGeeoh/NN/KbtI53jHMs52zg3FjkPlrMMIvdlbGwW2x46aDQnt5JItnOH8EahefdknsOd9VV8F8urWJ/HxugAbrEyuazekwWMSERGRpqEEp4iIiE0Mw75dgSW+lrYcybvZbfjF7MrwKNboq0/QcIY3LYlmamytTJOC9J68EjwLgOPjtMt4cesjON37OD7cnFRl45cJgQtJxMdFiW3j0m8NNldwFrY6kmt9d1JoJTPUxte4mjqm1UezIZQ3tTPPBc8H4HjHsvDxeOxeX1nZ+4rnSeCvtsePig1LErTevWfn9Krvn6Cx5w8NgXoS9LtSDuXNivf9VVX+QCEiIiLNi6aoi4iI1KOsrIzS0tLw/Y0bNzJ+/Hi++OKLau20yVDzsTnlCLobOdzg+gT37jW2xTWrJEgavHZlxXqY7dlFX2MDrtLYpp3Xx3SnkISPEY4ldCkM7eB+Rs5L/M75CeV48Ca0iku/Ndi4ERCAN7ENBhZnOOfTZdd3tsauVOeajTYkJ804rMG51mxve8xYGXavuVolnlUlwWlF8TyacfojgoiIiMSfKjhFRETqcd5553HhhRdy4403kp+fz3HHHYfb7SY3N5ennnqKP/zhDwAUFRU18UglGic5FtPLsYVlpdtti1m1gjOWCjx/1WSiGSDRm8tkz8N0dWxnbvYdQMM3ZqnNiY6l3OGexrzdRcDVpAby6OrYTkawBLOxEvdx2GToOMevXO/6lLkF8UnS1pXgjGYtR6e/mPtckzjLOY/2xm4AVpidMeJQOXt14C/M9vwRr+UiwfboUbKxYneFeQhLO1zK4Ir7VpUajvoqOFuVruNtzwMk4Kcw91Fg/0kCi4iISORUwSkiIlKPRYsWMXx4aD29d955h8zMTDZu3Mjrr7/OhAkTmnh0Eot2Zevo5dgC2LtzctUKzkAMFZz5bY7mxcDZABhmkA47ZtHVUZGAjdMmPAnFW7jJ9UGoT6t6H0c7VmGVxX+9xnwrhbmZl9saM6E0m/Od34fuWPF57qru3L263SjyrNTQnSiStam5S7ne9Sntjd18FBzMMeXPcaHvAXyeFjaPFnCE3p8u9oMNjGx8TXZaGZSTuCd0xWohs4JHEnDte/3VnrlfcqxjJUc51pFUtMG2MYmIiEjjUoJTRESkHqWlpaSlpQHwxRdfcOGFF+JwOBg8eDAbN25s4tFJLI7LfTd8286dk/+R+uc9cWOcoh6sZVfoWu/X4j+BM6PuL6F4CwlGRey9kqinOheTmPtz1DGjtdbqQJEjw9aYafkraGfkh+7YmBz+uf0l4aneVXd+L0nMZJ7ZJ3Q8xvdUsZXETlpSRiLBOEyXtozQ5C2nYWHFa13SCKwzs/iy/e9tjRms5XqmBkcQcCZFHMOKQxWxiIiINA5NURcREanHoYceyvvvv88FF1zA559/zh133AHAjh07SE9Pb+LRSUPZWcG5ydmFy3z3ErCcvOBKiSlGoKIKtMYahREkX/5hXcXD5VcCsN6yot74yqhlHUw7n599qS1BZRsb1/f0ujO4038jrYxCzm51XLXHAnUlpyPkIsgAYzUpRjmU9QVaNnC01f3H8Wj4djAYwOXw2Bq/PkUZvfmz/wZ2W2m0x21b3BOcP5ObOxPoVeOxYDDyRLEV3A8qW0VERCQmSnCKiIjU469//SuXX345d9xxB6eccgpDhgwBQtWcAwYMaOLRSUPZWcFpOAzmmIcDEDSi/zWrTfZMbnO9B8COhENoV/XBCJJmDgdUzj42LXBGkN+02JMAMmqpdLTz+dlbQeujeDFwNkca6zgsbxbQLy791HZdDbHYOgwsODEhK3ysbeEv7LLSecL/Gzq1G8lx+zi/Lpe4vuUS17cA/LLrSKCbPQOu0N7Ys1FVIODH5W7cBKc3pQP/C44A4DKbK1Q7FC4N33641WM4N32PiyDB8iJg39PUK6mCU0REpPlSglNERKQeF198MccffzzZ2dkcddRR4eOnnHIKF1xwQROOTOxgZ4XiyeVfMcyZw3TzWAIxJHAcFQmWheZhfN/qQi7gqz0PRpB86e7YjtfwscVqS8A0cTqc9Z5Trf9GruD0JbalyEpmqGs5roIfgJvj0o+dO3Z3zF/Ana5P+cnsTiDYt8rx+QxxzeDtwIkUuBpeeRmPZJu/ompyldmRjk20Y/hwx0+McvyIM/dY4MgGxdrV6mi2Wq3paOyqtqZn0HDxnPvftDKK2Vh4BnTMjCygEpwiIiLNltbgFBERiUBWVhYDBgzA4djz0XnsscfSu3fvqGM9//zzdOvWjcTERAYOHMh3331XZ9t3332X0047jbZt25Kens6QIUP4/PPPq7WZOHEihmHU+CovL496bAcjOxNJ55Z/yDj3ZB50TcQszW9QrBoJ0giqEN807uOrhD8zN+EWgt7SqPus3GSo2LVn13HLjG0t0UiF1xy14jdFfe/NkxqifeESbnF9wAT3s6QXrq61TSzJ7b3Fo3K2MsH5Z//vCTgafx91d/kubnR+xOWur+lesqjB8UpTOvFuMLQB3N5J7GDFUg/BKJ7HxlqOQUREROynBKeIiEgjmjp1Krfffjv33nsvixcvZvjw4YwaNYpNmzbV2v7bb7/ltNNOY/r06SxcuJCTTjqJc845h8WLF1drl56eTnZ2drWvxMTEWmPKHq8ERrGl/am2xz3JuRRKc+tvuA/mXkmydWkDIzgrNCe9pVFMwO+Lus8PMq4C4LOsG5gb3jAnfusSJpZu47yKnc5rW//TDoVWMh+0vcH2uImGn065Nf84calrFu3yGp68i0uyrcqSBXu/vxpDxu6lDHP+AoDDpqRzbQnyi4repK1RAESZKLYxES4iIiKNS1PURUREGtFTTz3Fddddx/XXXw/A+PHj+fzzz3nhhRd47LHHarQfP358tfuPPvooH3zwAR999FG19T8NwyArKwuJTqGVTLoVn1+HYt1FHWCgYzX+rY+Rd8S1/Mt/Ceut9rRNG1zvecEqf7uOtv9VZkc2uves+RiwQrHMYPwqONPzltPHsRmwf53MSmutDuQ5WtXfMBZ1jLlD3o/AJRGF8KZ25LnAuey0WjDIsZKznfOA+FYTJhteAk29oY4Nr3dS6TZOcVQkk6tUcB7hW1Klm30/j2tbncjMdcVsttpydNaF1P9dJiIiIvsjJThFREQaic/nY+HChdxzzz3Vjo8cOZIffvghohimaVJUVESrVtUTNsXFxXTp0oVgMEj//v156KGH6twAyev14vV6w/cLCwujvJLm7+cWJzM9J4OlZg9+E6dKtlgSg1aVoXjMMnan9+HZYGid1zERjNOskuAMRJjgLGl1OBd4H6AcD20q+rAsmBY8gblmX/qnHRbFFUSn6vXWtv5nQxS1PJybfbeSTwppUeykHY06lzeIYtmDsrQu/DPwGwAGOVZWiR2/xPJkzyPsKLoE0u3dxKg+VV8FO5YNaJM7nyMcG0Lx6njO6/s+3JHai5eCoe+bwx1JDR6TiIiINA1NURcREWkkubm5BINBMjOrb3iRmZlJTk5ORDGefPJJSkpKuPTSS8PHevfuzcSJE/nwww+ZPHkyiYmJDBs2jNWra18f8LHHHiMjIyP81blz59gvqplan3o0flyMdn5D653z4tJHMNCwhF1lAiidYroa2SR5d0Z1fqRTc4OeNHaSwZGOdRxVMgeAkTte5QbXJ2ynJbtT45fgrMrOdTIBvEmZbLAyOc6xgmMKPq//hBhUT6pVSd/ZsK5rPNbg3E6b8O1gIPolDOxk9+tdLV7VlyKK5zEQp0S4iIiIxJ8SnCIiIo3MMIxq9y3LqnGsNpMnT+bvf/87U6dOpV27duHjgwcP5sorr+Soo45i+PDhvP322/Ts2ZN///vftcYZN24cBQUF4a/Nmzc37IKaqaGOZVzm+oa0OjaKaahYKjj9nozwbcMM4PHl85B7IjMT/sSp2S9HFSuaNTiPMNbzhPv/OLPofwBk+HfQx7GJNhQ2WtLHzp3OK/V1bORW1/sMKv7a9thQd5WlEcVr7wiUcYlzJp967g5PT99gZpKX2suOIVZzS8IjFFmhKsWgP76bR9XHYWOF6gYzk/fa3FjrY2Y9idwWZZt51PUfJrkf5ZDcWbaNSURERBqXEpwiIiKNpE2bNjidzhrVmjt27KhR1bm3qVOnct111/H2229z6qn73hTH4XBwzDHH1FnBmZCQQHp6erWvg00r7xb6O9aG7sRpKrAZwyY/eW2PYawvlKhxWAE6b/+S85yh5QuiTQhFWqHnKdnGb12hCkfnXtPE+zg24iqLrnI0Fl7Lxestb7I1ZkLZdk5zLATsn/5eqWoic03b0/jJrJjyHUWyNn3nQv7pfpk+js2sNzM5wfs05/geYXdyF7uHC0CgcnfxJq7gtPM12Whlku/IqHF8ntmb4pR9P499dn7K5a6vGe5cRlbBUtvGJCIiIo1LCU4REZFG4vF4GDhwIDNmzKh2fMaMGQwdOrTO8yZPnsxvf/tb3nrrLc4666x6+7EsiyVLltC+ffsGj/lAdfzOKXQyQrucWwFvPa0j9++UP4ZvB/zlMcXw4QbAaVZPQDnM+sf5nnPknv59kV1XYtFGjnP8GurTqp5EPdc5hy5bPoooTkP8bHVnG+3qbxiFtN0/M9IZSnA6bUxi/5J1Pl8GQ+vbGsE9r1FRUke+DIZ2ujfM2JKHhaSwycqkiGS8AbP+E2Lgq1iCP+CL7f1phxyrJU9l/MXWmL5anq+JgdMpSoh88zUjaN/PAhEREWlc2mRIRESkEY0dO5YxY8YwaNAghgwZwssvv8ymTZu48cZQ1d64cePYunUrr7/+OhBKbl511VU888wzDB48OFz9mZSUREZGqGLpgQceYPDgwRx22GEUFhYyYcIElixZwnPPPdc0F9nc2JjgXOM6lNHe+0k0fFyfFtsUY29FgtNVI8FZf5LuNeelPF5yNhYOPkw/NOq+3VbNxJzVSJV+8UroAbhqua5YlXra8GTgUj4MDuPQFv05rspjlclDR4zvqQT8dDJ20I583MWtAHurOP/he5hMIx8Av6/M1tiRKE4/jL/5rybXymC3mWxb3BOdP7E2/0PgmBqPeQORr/WpBKeIiEjzpQSniIhIIxo9ejS7du3iwQcfJDs7m379+jF9+nS6dAklMrKzs9m0aVO4/UsvvUQgEODmm2/m5ptvDh+/+uqrmThxIgD5+fnccMMN5OTkkJGRwYABA/j222859thjG/Xami2bE3jzrD5gwWXOmlNm69Mmexb/53kKgHXOrrSq8pgzwuSLVTFBp7aKtvrUluAkEL9Kv4JWR/Co/zKOdyzj5OJPgGFx6WfvZHFDrbC6sMLqwoXujuFjrYtWEjTKedJ/McWtzq8l1Va/3o7NzE64HYA5224Fhtgy3krdzT0/W4IRVvjaqTy1M/8Nng5Ab5sT2oNLvgnffrzlAxRuXkayUY6jeDvQIaIYDiU4RUREmi0lOEVERBrZTTfdxE031b7eYGXSstLMmTPrjff000/z9NNP2zCyg5OdVVvDvd8y0Lmdr4JHR1U5VslRkYhbYPbkyYSbeISF4cf2nj5em7bWLhyUsZMWMVVEumrpw4pj0seblMnPVnf+4pxMl/J84NG49FPbdcWqQ8FibnbO4BerK97AnmUgDtn9A6Nd7zM1MIKvjIYvD2HEMbG82WxLmatp1t7tZOzkt87PcJW2AE5oUKzdLY/iy+AATnUurrakQ7kjmZtdH3CacyE/bnMDAyKKV3XJAREREWlelOAUERGRg5qdCc6Ly6dxqHstgx0rcOR1BTrWd0qd9q7AdEWwBucr/rtpl7ibbVYrtm3/Pzh03xtS7c1DKMFT5kwLH4t3VZvXCk3Jr7V61CZ2xu5YsJCL3W+Ta6XzSlF74OgabXzBhlcn2rk27N5u8f+RW1IPi1v8uri9eYxyzON616dk+9o2OF5xalfeD57Oqc7FNZYh8Fb8N8eKIlHsjOB7TERERPZP2mRIREREDlpvBU7mo7Y32h73TOePtMqd36AYe1eAfuOOvNqtg7EbR3F21H3eZYY2Sfo462ae8l8cOhjHqraEsu2c6lwE2FtlWZXfcnKr6z7b47YxChmV/2aN46NdMxlQ+E0tZ0Qn3tWEsSxh0FAtchdxr/stANzY83r7KhLkVd8/55T8j7Od84DoEsUOm5cyEBERkcajCk4RERE5aOVYrSi0EuMS2/THXg02yLGK//luZkXaUzwfOJfVZkeWpp3B76PqP7opzivNTnwdODJ8P7xhThwTbRm7f+Im14eAfQmvvf1sdWNloOFTxmtTV8Xf6cXvA3dHFMOb3J6JgZHkWhn0dWzkTOePQHw3vHFg4fU3bTLPY8PrnVi+g2MdK4DqVboDy+ftaVTP98H6lkP5YV0euWRQ0P5Unm/wqERERKQpKMEpIiIiB53l6cOZmZPIfLMnbeJVydbAKcZtrDx2tTiCfwRC9ztFOc5IE5wlLftyme9eyqwEApZF0LQAWGQexguBc0hIHhjThjnRSrB5inpRiz782X8Du6x0fM74vMauOna2d0ZRCViW0YO/B34LwHOO8eHj8UxwvpfwN35cb8LAsXHroz5uGyp22+2cw1nud/YZz6onQZ+T1o9/BxMAGGS2aPCYREREpGloirqIiIgcdNakH8dssx9nOn9kWN67cemjoWsougllNp0EaUceLfzbo+s/wgrSYEIG88w+dDZ2cJHjW3xeLyfvfJ173JNZZXZiXtLwqMcei8rrtUt5cgc+Dg6mp7GFG6x3sCzL1vhQ98ZPdqz5GY/K2XwjI3w7nmt8RsKDH8u0L/FcuX7s3owortOOtVNFRESkaSjBKSIiIgelbkY217o+Y0DJ7Ph0EEMFXsCdylarNQBuI4jTV8CJjqX8mHgzbwb+FFWsiDdXscCByb89z/Kk50V8ZYW09m3jaMcaMo28Rlur0W0EMQP2Jjk9BLjHPYWxrncIBOyfAl9XIjOa9USNoJcO5DLJ/ShnVUxP3261YEHKibaMsarrE/7Ju8HjgaZPcDoNy7bXZIfVgt8EH671sfoqYdPLt3GR41v+7Z7A2cXTbBmPiIiIND4lOEVEROSg08KXQy/HZgCcdUwzbqhoKscq7W43hNO8/wzf77L5fV71/AsAtxVl8i/C/j2lOfzGuWdTHH95Wfj2IcZ20sq3RddvjC7wPoDPtK/K0lOey1DHL+H7vvJS22JXqrpz97q2J/PvwPlAdBWcGTvm80PirQx3LgPgCt84zvA+zoLEwbaOtZLPqlihqokTnAA+b1n9jSKw3OzCqmBWjePLzK4sSx22z3MP3/ERT3pe5BznXEZ5P7NlPCIiItL4lOAUERGRg84JOyZxc8XmNi4b1358MfkGfjK7AbGuoWjhxb3nXpV1NBPqmIJb1aeOPVV/kVboJRau42H3a+H7VZNOl7u+4abdT0QUJzahhOZ8syeLrcPw2ljAmbFrCS94ngnf95XblExrdzZ/818NVF/3sSC5Cx8Fh4SOR7GBzt4z59eZHcgjHW+cKmfD768mSHBaFa93oZXMcO/TeI2GbfBV9akLmhaBvaaYPxc4j1+Sjo44iB1LC4iIiEjT0CZDIiIiclBzRbEhTH2Wuw7nT/4/0MPYRq8WR3FcDDGCOAlaBk7DqpaEchoWfp8XtyehznOfd13JI4XnY2JwQ/ueDImhf7+3eqVjNBvmNJQ3EIQqCV47+bz2VHAWJ2TxfnAY5XgwPWlU1tta1p6d5z0N2ECnpVFEOiW0KyuEmN5BdXvI9w9Ods0J3Yl0CQMblaT14HH/b9hutWSzlYk3aE/F7gjnUu6w/oe3fASulJRqj0WTKK5rHU8RERHZ/ynBKSIiIgc1j2Vvome11YnVVic8zg5Rn9s6ZzbfeO7FaVgsMg+tUZFWVlq0zwQngK8iQVgWYwWgr7yk2n2PFb9Kv8IWffmz/wZGOJZwg/MjvIVHQPohcenLV1ZsW6wCUpkaPIkEvyOc4GxVspbBjhU8GziP2dZRTLYsDMOIOvY0z99JMnysyesBXGbbmAH6mGvCt42APRWt0ShN68qLwXPD98t8Qdti3+Z6j13FD5OSksKTLe9lw+YtZFBCv+I1QD1VnBUS4/heFxERkfjSFHURERE5qCVb9iV6BvvmcolzJpnspjiG+dbOYBndHNuZb/bkQt+D7DRaVXu8tDBvn+enW0W0pBAnQYrLY5vv7S3Jr3Y/ySypvaENylM68r/gCAY6VvMX92S8uzbZFnvv2sDy4gJb4mYWLeNa56cMdSzDGzDDmzB13TWLx93/oQ0FzA32ptwfW4I5yQhVESaa9q8ZWinXSmeLMz6J5Ehc7fycv7jexJu7rkFx8loczoP+MeH7ZUX5ABQ6WtDb2My7CX/nN7kTIo6XbHgJ2rzRlYiIiDQOVXCKiIjIQS3FKsWKsdpub5eXT+ZQ91qmGiNYn38icEyD4u09vbasOH+f7d/0j6Vd4m5WmR35JXsU8GTUffpLCvA79lSJpljxS7RVKraSwMjDa1MSsjZ7J25j1SVvDr9xT2KdmcUTgcsoLj6eVi0yarQrKveT5HHG3E9SHJ/3a31/pl3yUC6KWw+1c/kK6Wes437XJFyGybLc0cCRMccrSjuUV4Oj+J3rE9obuykr3vMHgCKSAEgIRpegLy7KI6Nl25jHJCIiIk1DFZwiIiJy0PooOJgTvE/j9ds3VRZgtGsmlxb+t8Fxqo5rYmAkRVZkm7L0dGzl0JKFUfd3s+9WslP68F77Ozi6/EUAUozyuFW1ecp3MsKxmEMdoZ3a/aX2JzgDloPzvA+Sk9rX1rjdHTm85Hmast3Vd5k/0zmPK50zKMnf0aD48U4sF3tjXyc0Vi13/sjHCffhMkKJe19poS1xi6xQMrMyiT2q5APGut4BIDHKCuSyon1XSYuIiMj+SRWcIiIictBabXYih9YU+4Ikeuz9tSixAQmqYxyr+CHhFhaXDee1wOn8ah3C1OBJTHRlRhwj2sq1X83OfGIO5lijNVBAcUUFHEBJcQHpLVpHFS8SLXctZqLnn+H7gTL7E5xLrR4stQ4lP9iwHbvrUl5cPSGWbpTxsPs1VuVeAIfUPw3cl5zJ5MBJFJFMd2MbpzoXA5Bo+PH7ynF74jPukvKm31An2MDXO8G7i4HGStobu4FQ9THA4PLZ9HWsBSC5nu/DTS2O4dv1ofVZvzAH8pyzNVkNGpWIiIg0BSU4RURE5KCzMm0I87YbzLd6AVBcHqBN6r4374lWitWwtSs7GLt5j/b8M3BC+Fg063omRLiGY2mL3lzn+xMlFQnNyj58uPlv4DTKSORcb5D0KMYeq4YmvKoqzujFX/1Xs9NqEbpfHp+KRW9J7WP2RTglvjTjMMYFfgfA8+7x1R8ryiejtf3ptg8T7mdLXnvgV9tjR8Ns4OudteM7piU8EL4fKKtZEZpilWKZJoaj9olrW9MH8EIwLXy/2N/wpSpERESk8WmKuoiIiBx0fs04nqcCl9LX2Mh9rkmU71xvex8pVhmWGdtGM5Wc/lBlmQc/bSigvGITlUgkRzg1N5DYiq/MgeywWjDKMY+U3J8ZkTuZN9yPsMDsxeOBy8JTgOPNLLdnyjJAWWpnXg+eTq6VwfXOT0jfPs+22FXVlcj0l9Z+PBolhQ2PUVWZsacaNLmBCXg72Pl6AwRrSXB6jCBeb+QbiRXFsDmYiIiIND0lOEVEROSgdalzJte7PsW/c7XtsV2GSXEUCUmAoCuZdeaeir0M/w7aksfz7vEsSPwDndZOjjhWulUcVYL1bMdcXvA8Q9/saWR6N3C88xc6GrkA5Jc2znRmoyzf9pinOhdyn/tNOmyfaXtsAH/xrjqO747ofMP0k0Yppzvmc6bzRwAKrWT+4R9NXtDequIxCRMYUv5vANKsEsygvWvPRssoz7clziazLWd7H2Zpxim1Pl6Ut7POc1N8O+lnrGOM8wv+5Hobx5b5toxJREREGpemqIuIiMhBJ9W/ix7GVvwVvwqV794al352Z28kLaNVxO13ZQ7jEt9TXO/8hPvcb3KZ8QWXJX6xp0FRdsSxEgw/BXk7yWi973U73aU7uNDxLUc4QlWsCWXb8SWE1ttMNHx0MXLYvXMbdLd/Dc5KBVYyN/lvo0fKAAbbFNPt3c1xxgraGKFp0O7SHJsiVxcoCG0ytKH1CUxZaXGj6yP6ODYTLIjstWqxfS4/J14fvr/LSuMM7xPspAUDfMkcbvN4d5KBaRm4jSC7crNpndnJ5h4i5y6x5zVZa3VgmdWdI8urr1e62uzIO8ETOKcU6toX/aicd/l9wivh+3O3HgKcZcu4REREpPGoglNEREQOOqdsf5WvEv5MP8cGAAL5W2yJ+2rSNfzBdxt5VioAhTs2xRRnu9Wy1uOe0u37PO8bx2CmBY8HIGgZ5G7fXG9fyQWrecrzIqc5Q7uup/r2VLvd7nqXWQljabn6nUiHHpNVVie+N4/g11L7VvpsmbuIqQkPcZFzNgDJ5Q3b1bzSr+1GcaVvHJ8FjwHAUZF03p1yKB+Yx/O5GTruLN5WZ4x92Wa1ZictAMgpLG/4gPcSwMWuihVV83I22B4/ElusNozyPsaEpJtsjZtTUP35ejJwCS8Fz2GrN4qNmqL4I4KIiIjsP1TBKSIiIgc9h01JjSXu/iw3Cwn4nTiwOMvVjSNiiJNt1V71meLdd4LzKdd1bC/18pj/CvJI5T/OQ+gRZd+tgrnUmFxd2DhJn+1xSOhVygjUPU05GoWJnZhtllJkJfGdeQTJnoEcV+XxbCtU6ZpQtu/Xqi5ZRh6pRhmd2Ik3xwN0afigK9zne4Zk924SCS05ULyz/gS4nUrTuvFM4AJyrFassLpQVOy2JW6mkc8Nzo/I3J4IHFPj8b0Tn/viiVOlr4iIiMSXKjhFREQa2fPPP0+3bt1ITExk4MCBfPfdd/tsP2vWLAYOHEhiYiLdu3fnxRdfrNFm2rRp9O3bl4SEBPr27ct7770Xr+EfULIrJq6mFtm7ydCKjOF8bh7DikJPVOe12j6HTz33cHfSB+yo2P0bYJvRDoD2gS0RrauZ0CKLIE7W7iiOuO+ciueiJUW4vXnAnucnuXBdxHGiUZjRm/v9v+XDxHM52zGHKwv/Q3lp5GOOROU1ZJo7KSspsi1ubsYRvBk8la+KQlO8M0o3MtIxn4TkDG723crD1vX1RKh9nG2NAp5NeJ7PEu7h6NUTbBsvwADzF050/kSRI7RreHn2Clvj16ckvQdPBy7h27SzAdiWX0aZr+HrgLZ0lPIX92QuK32LYCDAhBZ3cZL3STakDaSPsRHfhrn1xqh8/luVbWjweERERKTxKcEpIiLSiKZOncrtt9/Ovffey+LFixk+fDijRo1i06bapzKvX7+eM888k+HDh7N48WL+8pe/cOuttzJt2rRwmzlz5jB69GjGjBnD0qVLGTNmDJdeeinz5sVn1+gDSXZKbwAO8a6yZcOVAf5FnOWYy7DMUKyftxREdb47UEQfxybSnH7OdP+Hv/ivA2BnYle8lpt0Sti6bnmd5ydYXhLwcWSHUAJr2ZbINroBKHMks9noAECnsl+BPc9P5/KVDd4RvtY+Uw9hUnAkK1qczAOe1/md82M2LLf3fVvoak0uLXAaFhuXzWlwvLbFv/Ib59ec3yr0Pbs+t4Sicj89cr/iZc/TjEz8hU/MwczPT41qc6ZSZ1r4dn9WAtChZEVcnvf1qUfzdbA/y0pb2B47Eu3SE7gy5Ucedb7Mup9/iDlOfkYf/uG/lPdaXUeplUCy4WXz6iXscrZlvdWeSzJ+5dOEcZyw7ql6Y+Wk9AKgc3ALJVFuDiYiIiJNTwlOERGRRvTUU09x3XXXcf3119OnTx/Gjx9P586deeGFF2pt/+KLL3LIIYcwfvx4+vTpw/XXX8+1117Lv/71r3Cb8ePHc9pppzFu3Dh69+7NuHHjOOWUUxg/fnwjXVXz5WvZk0KSAZi/8McGx7u2bCLPeSYwosUOjjZWcf6mR9i5bUPUcSxgYJc963Cahpu1nlACZt0P79Z53jv+W1iZ+FvObLGRB12v8eeVv6GoIPIkZ3ZGfwDakI/XclHe+nBKrQRaUsgv338U9XVEynAYbEoJTebP/3GKrbEtDDalHgnApqXfNDhet93f8bj7P5zg/YYjW5v81vEpS754I/y4x+XgsHahNVg/XbQ2qtgr3KEthVb3H4fXcpPFTlYu/LrBY97bzt5Xcq3/Lp7ZdjgFZX7b49fF6S+mh7GVdsHtXJi0iN+4ZlI857WY4xWk9+L54Pn8mHYKaxP7ApD9/Zvhx5N7DAXgUP8qtq77ZZ+xfEnt2GZk4jQsfvlyUsxjEhERkaahNThFREQaic/nY+HChdxzzz3Vjo8cOZIffqi9imnOnDmMHDmy2rHTTz+dV155Bb/fj9vtZs6cOdxxxx012tSV4PR6vXi93vD9wsLCGK5mjz9OXsxlWx8lySyp9fGd7g680/rG8P0rdz5FWjC/1rZ5rrZMafPH8P3Ruc/SKlD75jBFzha80XZs+P5Fu16inb/23dDLHcm81m7P8/7yrg8AsJxu/tfzaZ78yY35UT5HLp7DdcUv0y5Y+zp8Jc50/tv2z1X6fJlM/54Nig4NZIMBnVom8VjKFHoFfiXv5eEsS+hOwJGIZYT+tlzgbM2bbW8Pn3dp7vO0CeSQUmWDn98ccwif/Rpq77AClBx+GR8v/Ii7VhxOr+e/p4u7gKvz/l1tfH2tIjCgT5csEhf/TEdrJzufPpoNCV0JOhOxMACYkzaSxSnDARi4c354p+6U4Tdx67TufG4OwouHu7v3xlmSw3G73qf7l7/j3iW7yU7rh9NhcETpXIYXflLr8wTwccsxbEroCUDvskWcXPB+jTaH+PK4w9WLLf6TcQy8Gr6dzeAdb7Pq4SWUuzIIOtx80Ooatnq6A9CvdB4nFH5cZ5+ftLySjQmhRPDQVR8yoOI33eDxd3L2ByNZtq47Rz47m5NYyIjSz+qM82HL37IlIbR66eGlP3JilT47lG8M3x6X+SNDSibhX/gWbmNPBfDoYzqz8rMXOHfGNayY1QOfMwXTUX29yTfb3EaBqw2ddm2lpxV67JBbp/PrrwsYNPBkFqyfxTEFX9D54yv4ZUZPAs4k3mx7B3mu0FTqY4u/YlDxzDqv4X+t/8BOd6gid0DJdwwpmkEfKz/0/mifQfc2JutyS3jkX48zxvVVtfdHVVPa3MJuVyYAxxR/zTH76HNa6xvY4Q5N2e9fMpshRV9Ue7yTL5evElbya0EffMPuhFnfclzuNFY//BNlrhYEK56jKa1vYbc71Oeg4m84trj2JG9Hv0l342KgLd4jr4D5ixmy5VX+x6v813UanVL+yM8JAzjCu5jU109jWcJh4e/D/2t3H35HAsdvL6Fzxbqpm7pcTIcNz/HiwiL+uf0HUhNcnFs4ma7eX3m31Q1cftYp9Glv30ZYIiIiYh8lOEVERBpJbm4uwWCQzMzMasczMzPJyak9oZaTk1Nr+0AgQG5uLu3bt6+zTV0xH3vsMR544IEGXEl1X63Yzt+MubQxak+U/mR244vtezZcud/zI50dtW/4strsyBc79rT9k2c+vRy173C+xWrDFzv3tL3Js4D+jtrXitxtpfJF7p62yz1d6OvYiCO1LZeecxHTC+azcGMeP67fzUOeH+vsc5vVihnV+lzIAMeaPQ0q8kPJLbNwXfwCOVMuJYudtPQuqRZnvZlZLc4dngX0dexJnJV7WjGiV1t+6n8awWX/obTNERx3zh+4y3c8pYu2snhTPqXGJgYk7JUYN8C0DNJatyf/rBfY/fHVtCWPthVralb6vOAQZgRDycdSRyo3eqDE3ZJ+A4fTbXcm3q9WA6FEbe8r/sWq55fTM7CKVdt2M98KJZzbO1cxwF339OJn8o9nppkBQAvnaga4v6+1XV/XchaV53LkiA+Zu/IrBm+fQs/AKgiEHv9H/knMMVMAyHSu3mefE/KH8Y3ZAoDOztC6pWWelgw67gSG7GrLsu/W89OWAgY7V+wzzj/zR/CDGarCbFfH2M3kNhx96TiWPPMj/cv2rPEYTG7L1YM7s2zOL6SUeunjXw61FEnesfoiNlhB0smkrWsUxydtJSWtBb2PORWA7pc/zdqXz6ZHcD2H+34CYOzqzay1QlPW+7lWMMBV9zXcn3cmyywnAIc6fw1dQ8X7M61VJuN/k8m1ExfQv3wRRwQX1xnnrtXns9oK3T7ctYIBrtpfR4C/5Z3BTxXJ2q6VfdaizNOS/ideyNyVXzM4500OC6wOv94A9+Sdy8qKPvs4f93na5XOmbROSWDgqOv4ce0sjt0dqjS+2jWDX903kDb6BbZMOp9OVg4ZVb4PZ/2aTQlJzONkklzZdE5uy9G/uY//vVjO1zlHwYbQ98zl7qUMcC7kgbwzyCuJfMkBERERaVyGZVlWUw9CRETkYLBt2zY6duzIDz/8wJAhQ8LHH3nkESZNmsSvv/5a45yePXtyzTXXMG7cuPCx77//nuOPP57s7GyysrLweDz897//5bLLLgu3efPNN7nuuusoL6+5e3BtFZydO3emoKCA9PToq5Penr+Zzps/wBH01vq419OSLVmnhu932TYdV6D2ak+/O41N7c8I3++c/Tkef+2J04ArmY0dzgrf75TzFQm+2qdjmw4P6zudF77fcftMUl1++p18GQmJyZimxc9bC9i4u5Q2G6fj8tXRpzORjR3P3hMn5ysS9+ozsU1XjjjhAgyHg/KyEtYs+pry3dswfWVQkZzyu1LZ1GHPdXbKnkGCPx8Aw+Gi29ALaZPVGYCCvFzSM1phOELVnGt3FvNrdhGBoh20z/6qxhhTO/ah75BRAJQWF7B20Uy8+dmY/jKo+LVvV4t+5KeH1tdM8O6m845v6DL4fNp17AbAlrxSdhZ5ObJTC5wOAzMYZM3S71gTaEuxkU7QskgvWkPbvCW1Pk8A2W2PpzQpC4C04nW0270QCA8hzOGsfr1b161g+6p5BMuLsQI+trU7gbLEULIy1GfdybhQn+0r+txAu7xFdB92IW2yDgFg8+5Slm0twLXzFzJ2/1RnnG3thlOWmFnR51ra5i2qPmZPMn1OuoyUtBZYpsn65fPJ2/gzAL1PuDh8fMOK+ezeuIygtwSCgWoxNrU/Hb87tO5m68JfGNC3D207dK3WJhgIsHrxTIq3r8PylbEx8xT87tD3aKv8X2hZWPd6rFsyT8Gb0AqAFoW/0iovNL7UDr05fFjo+6bUF2DVwlkEdq6u9v6oanPWafg8oUR1y4JfaFVQe5+WBVsyT8ab0Lqiz5W0zq/5HBsOZ7XXZNv6X8lZOTf8ekfTJ0BO+1MY3r8vLVNCG3ptXr2UHasX4UnJoN/w8zEcDnzectYs+obS3E3h78P1nc4LV9W2L17BsccOJjk1A8uyWJFdxNqdxZT5g7Td/j3JZdvY0u4khh3Vh6yMxDrHUpfCwkIyMjJi/hkrIiIi9VOCU0REpJH4fD6Sk5P53//+xwUXXBA+ftttt7FkyRJmzZpV45wTTjiBAQMG8Mwzz4SPvffee1x66aWUlpbidrs55JBDuOOOO6pNU3/66acZP348GzdurBFzb/rPt4hI/OhnrIiISPxpkyEREZFG4vF4GDhwIDNmzKh2fMaMGQwdOrTWc4YMGVKj/RdffMGgQYNwu937bFNXTBERERERkQOJ1uAUERFpRGPHjmXMmDEMGjSIIUOG8PLLL7Np0yZuvDG0Cc+4cePYunUrr7/+OgA33ngjzz77LGPHjuV3v/sdc+bM4ZVXXmHy5MnhmLfddhsnnHACTzzxBOeddx4ffPABX375JbNnz26SaxQREREREWlMSnCKiIg0otGjR7Nr1y4efPBBsrOz6devH9OnT6dLly4AZGdns2nTpnD7bt26MX36dO644w6ee+45OnTowIQJE7jooovCbYYOHcqUKVO47777uP/+++nRowdTp07luOOOa/TrExERERERaWxag1NEROQgV1BQQIsWLdi8ebPWhxMRsVnlRm75+flkZGQ09XBEREQOSKrgFBEROcgVFRUB0Llz5yYeiYjIgauoqEgJThERkThRBaeIiMhBzjRNtm3bRlpaGoZhRH1+ZXXSwVgBerBe+8F63aBr17VHf+2WZVFUVESHDh1wOLTHq4iISDyoglNEROQg53A46NSpU4PjpKenH3RJj0oH67UfrNcNunZde3RUuSkiIhJf+hOiiIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiINEhCQgJ/+9vfSEhIaOqhNLqD9doP1usGXbuu/eC7dhERkeZAmwyJiIiIiIiIiIhIs6UKThEREREREREREWm2lOAUERERERERERGRZksJThEREREREREREWm2lOAUERERERERERGRZksJThEREWmQ559/nm7dupGYmMjAgQP57rvvmnpIEXvsscc45phjSEtLo127dpx//vmsXLmyWhvLsvj73/9Ohw4dSEpKYsSIEfzyyy/V2ni9Xv74xz/Spk0bUlJSOPfcc9myZUu1Nnl5eYwZM4aMjAwyMjIYM2YM+fn58b7EiDz22GMYhsHtt98ePnYgX/fWrVu58sorad26NcnJyfTv35+FCxeGHz9Qrz0QCHDffffRrVs3kpKS6N69Ow8++CCmaYbbHCjX/u2333LOOefQoUMHDMPg/fffr/Z4Y17npk2bOOecc0hJSaFNmzbceuut+Hy+eFy2iIjIQUsJThEREYnZ1KlTuf3227n33ntZvHgxw4cPZ9SoUWzatKmphxaRWbNmcfPNNzN37lxmzJhBIBBg5MiRlJSUhNv84x//4KmnnuLZZ59l/vz5ZGVlcdppp1FUVBRuc/vtt/Pee+8xZcoUZs+eTXFxMWeffTbBYDDc5vLLL2fJkiV89tlnfPbZZyxZsoQxY8Y06vXWZv78+bz88ssceeSR1Y4fqNedl5fHsGHDcLvdfPrppyxfvpwnn3ySFi1ahNscqNf+xBNP8OKLL/Lss8+yYsUK/vGPf/DPf/6Tf//73+E2B8q1l5SUcNRRR/Hss8/W+nhjXWcwGOSss86ipKSE2bNnM2XKFKZNm8af/vSn+F28iIjIwcgSERERidGxxx5r3XjjjdWO9e7d27rnnnuaaEQNs2PHDguwZs2aZVmWZZmmaWVlZVmPP/54uE15ebmVkZFhvfjii5ZlWVZ+fr7ldrutKVOmhNts3brVcjgc1meffWZZlmUtX77cAqy5c+eG28yZM8cCrF9//bUxLq1WRUVF1mGHHWbNmDHDOvHEE63bbrvNsqwD+7rvvvtu6/jjj6/z8QP52s866yzr2muvrXbswgsvtK688krLsg7cawes9957L3y/Ma9z+vTplsPhsLZu3RpuM3nyZCshIcEqKCiIy/WKiIgcjFTBKSIiIjHx+XwsXLiQkSNHVjs+cuRIfvjhhyYaVcMUFBQA0KpVKwDWr19PTk5OtWtMSEjgxBNPDF/jwoUL8fv91dp06NCBfv36hdvMmTOHjIwMjjvuuHCbwYMHk5GR0aTP1c0338xZZ53FqaeeWu34gXzdH374IYMGDeKSSy6hXbt2DBgwgP/7v/8LP34gX/vxxx/PV199xapVqwBYunQps2fP5swzzwQO7GuvqjGvc86cOfTr148OHTqE25x++ul4vd5qyyKIiIhIw7iaegAiIiLSPOXm5hIMBsnMzKx2PDMzk5ycnCYaVewsy2Ls2LEcf/zx9OvXDyB8HbVd48aNG8NtPB4PLVu2rNGm8vycnBzatWtXo8927do12XM1ZcoUFi1axPz582s8diBf97p163jhhRcYO3Ysf/nLX/jxxx+59dZbSUhI4Kqrrjqgr/3uu++moKCA3r1743Q6CQaDPPLII1x22WXAgf26V9WY15mTk1Ojn5YtW+LxePaL50JERORAoQSniIiINIhhGNXuW5ZV41hzcMstt/DTTz8xe/bsGo/Fco17t6mtfVM9V5s3b+a2227jiy++IDExsc52B9p1A5imyaBBg3j00UcBGDBgAL/88gsvvPACV111VbjdgXjtU6dO5Y033uCtt97i8MMPZ8mSJdx+++106NCBq6++OtzuQLz22jTWdTaH50JERKS50xR1ERERiUmbNm1wOp01qpB27NhRo2Jpf/fHP/6RDz/8kG+++YZOnTqFj2dlZQHs8xqzsrLw+Xzk5eXts8327dtr9Ltz584mea4WLlzIjh07GDhwIC6XC5fLxaxZs5gwYQIulys8pgPtugHat29P3759qx3r06dPeGOsA/U1B/jzn//MPffcw29+8xuOOOIIxowZwx133MFjjz0GHNjXXlVjXmdWVlaNfvLy8vD7/fvFcyEiInKgUIJTREREYuLxeBg4cCAzZsyodnzGjBkMHTq0iUYVHcuyuOWWW3j33Xf5+uuv6datW7XHu3XrRlZWVrVr9Pl8zJo1K3yNAwcOxO12V2uTnZ3NsmXLwm2GDBlCQUEBP/74Y7jNvHnzKCgoaJLn6pRTTuHnn39myZIl4a9BgwZxxRVXsGTJErp3735AXjfAsGHDWLlyZbVjq1atokuXLsCB+5oDlJaW4nBU//Xf6XRimiZwYF97VY15nUOGDGHZsmVkZ2eH23zxxRckJCQwcODAuF6niIjIQaWRNzUSERGRA8iUKVMst9ttvfLKK9by5cut22+/3UpJSbE2bNjQ1EOLyB/+8AcrIyPDmjlzppWdnR3+Ki0tDbd5/PHHrYyMDOvdd9+1fv75Z+uyyy6z2rdvbxUWFobb3HjjjVanTp2sL7/80lq0aJF18sknW0cddZQVCATCbc444wzryCOPtObMmWPNmTPHOuKII6yzzz67Ua93X6ruom5ZB+51//jjj5bL5bIeeeQRa/Xq1dabb75pJScnW2+88Ua4zYF67VdffbXVsWNH6+OPP7bWr19vvfvuu1abNm2su+66K9zmQLn2oqIia/HixdbixYstwHrqqaesxYsXWxs3bmzU6wwEAla/fv2sU045xVq0aJH15ZdfWp06dbJuueWWRnsuREREDgZKcIqIiEiDPPfcc1aXLl0sj8djHX300dasWbOaekgRA2r9eu2118JtTNO0/va3v1lZWVlWQkKCdcIJJ1g///xztThlZWXWLbfcYrVq1cpKSkqyzj77bGvTpk3V2uzatcu64oorrLS0NCstLc264oorrLy8vEa4ysjsneA8kK/7o48+svr162clJCRYvXv3tl5++eVqjx+o115YWGjddttt1iGHHGIlJiZa3bt3t+69917L6/WG2xwo1/7NN9/U+r199dVXW5bVuNe5ceNG66yzzrKSkpKsVq1aWbfccotVXl4ez8sXERE56BiWZVlNUzsqIiIiIiIiIiIi0jBag1NERERERERERESaLSU4RUREREREREREpNlSglNERERERERERESaLSU4RUREREREREREpNlSglNERERERERERESaLSU4RUREREREREREpNlSglNERERERERERESaLSU4RUREREREREREpNlSglNEREREqpk5cyaGYZCfn98k/X/99df07t0b0zSbpH87ffzxxwwYMOCAuBYRERGR/ZUSnCIiIiIHsREjRnD77bdXOzZ06FCys7PJyMhokjHddddd3HvvvTgce35VnTVrFgMHDiQxMZHu3bvz4osv1hvntttuY+DAgSQkJNC/f/84jrhuZ599NoZh8NZbbzVJ/yIiIiIHAyU4RURERKQaj8dDVlYWhmE0et8//PADq1ev5pJLLgkfW79+PWeeeSbDhw9n8eLF/OUvf+HWW29l2rRp+4xlWRbXXnsto0ePjvew9+maa67h3//+d5OOQURERORApgSniIiIyEHqt7/9LbNmzeKZZ57BMAwMw2DDhg01pqhPnDiRFi1a8PHHH9OrVy+Sk5O5+OKLKSkp4b///S9du3alZcuW/PGPfyQYDIbj+3w+7rrrLjp27EhKSgrHHXccM2fO3OeYpkyZwsiRI0lMTAwfe/HFFznkkEMYP348ffr04frrr+faa6/lX//61z5jTZgwgZtvvpnu3btH/JwYhsFLL73E2WefTXJyMn369GHOnDmsWbOGESNGkJKSwpAhQ1i7dm34nKVLl3LSSSeRlpZGeno6AwcOZMGCBeHHzz33XH788UfWrVsX8ThEREREJHJKcIqIiIgcpJ555hmGDBnC7373O7Kzs8nOzqZz5861ti0tLWXChAlMmTKFzz77jJkzZ3LhhRcyffp0pk+fzqRJk3j55Zd55513wudcc801fP/990yZMoWffvqJSy65hDPOOIPVq1fXOaZvv/2WQYMGVTs2Z84cRo4cWe3Y6aefzoIFC/D7/Q14Bmr30EMPcdVVV7FkyRJ69+7N5Zdfzu9//3vGjRsXTlzecsst4fZXXHEFnTp1Yv78+SxcuJB77rkHt9sdfrxLly60a9eO7777zvaxioiIiAi4mnoAIiIiItI0MjIy8Hg8JCcnk5WVtc+2fr+fF154gR49egBw8cUXM2nSJLZv305qaip9+/blpJNO4ptvvmH06NGsXbuWyZMns2XLFjp06ADAnXfeyWeffcZrr73Go48+Wms/GzZsCLevlJOTQ2ZmZrVjmZmZBAIBcnNzad++faxPQa2uueYaLr30UgDuvvtuhgwZwv3338/pp58OhNb2vOaaa8LtN23axJ///Gd69+4NwGGHHVYjZseOHdmwYYOt4xQRERGRECU4RURERKReycnJ4eQmhBKMXbt2JTU1tdqxHTt2ALBo0SIsy6Jnz57V4ni9Xlq3bl1nP2VlZdWmp1faez1Qy7JqPW6HI488Mny7MrF6xBFHVDtWXl5OYWEh6enpjB07luuvv55JkyZx6qmncskll1R7rgCSkpIoLS21fawiIiIiogSniIiIiESg6pRrCCUWaztmmiYApmnidDpZuHAhTqezWruqSdG9tWnThry8vGrHsrKyyMnJqXZsx44duFyufSZLY1X1uioTqLUdq7zWv//971x++eV88sknfPrpp/ztb39jypQpXHDBBeFzdu/eTdu2bW0fq4iIiIgowSkiIiJyUPN4PNU2BrLLgAEDCAaD7Nixg+HDh0d13vLly6sdGzJkCB999FG1Y1988QWDBg2qkWRtKj179qRnz57ccccdXHbZZbz22mvhBGd5eTlr165lwIABTTxKERERkQOTNhkSEREROYh17dqVefPmsWHDBnJzc8NViQ3Vs2dPrrjiCq666ireffdd1q9fz/z583niiSeYPn16needfvrpzJ49u9qxG2+8kY0bNzJ27FhWrFjBq6++yiuvvMKdd94ZbvPee++F18CstGbNGpYsWUJOTg5lZWUsWbKEJUuW4PP5bLlGCE2pv+WWW5g5cyYbN27k+++/Z/78+fTp0yfcZu7cuSQkJDBkyBDb+hURERGRPZTgFBERETmI3XnnnTidTvr27Uvbtm3ZtGmTbbFfe+01rrrqKv70pz/Rq1cvzj33XObNm1fnTu0AV155JcuXL2flypXhY926dWP69OnMnDmT/v3789BDDzFhwgQuuuiicJuCgoJq5wBcf/31DBgwgJdeeolVq1YxYMAABgwYwLZt22y7RqfTya5du7jqqqvo2bMnl156KaNGjeKBBx4It5k8eTJXXHEFycnJtvUrIiIiInsYVuUK7SIiIiIi+4G77rqLgoICXnrppaYeSoPt3LmT3r17s2DBArp169bUwxERERE5IKmCU0RERET2K/feey9dunSJy9qgjW39+vU8//zzSm6KiIiIxJEqOEVERERERERERKTZUgWniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFuuph6AiIiINC3TNNm2bRtpaWkYhtHUwxEROaBYlkVRUREdOnTA4VB9iYiISDwowSkiInKQ27ZtG507d27qYYiIHNA2b95Mp06dmnoYIiIiByQlOEVERA5yaWlpQOg/3+np6U08GhGRA0thYSGdO3cO/6wVERER+ynBKSIicpCrnJaenp6uBKeISJxoCRAREZH40SIwIiIiIiIiIiIi0mwpwSkiIiIiIiIiIiLNlhKcIiIiIiL7gYXTX2PzA31Y+/Pcph6KiIiISLOiBKeIiIiIyH5g4I+309nahufda5p6KCIi/8/efcdHUed/HH/N1vRGgNB7lSooYu9dz977eWcvZ293ene/s93Ze+/KefaCBRsqgoAUC0gvARKSENKTbTO/PzZZEkjIbjKbEPJ+Ph55uDs7853v7Gwkeefz/X5FRDoUBZwiIiIiIjuAb0JjAZjq2LedeyIiIiLSsSjgFBERERHZAWwmBYBKy9vOPRERERHpWBRwioiIiIjsQEyrvXsgIiIi0rEo4BQRERER2QEc7pgDwF7WvHbuiYiIiEjH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ResI+asI+aqwzBADJx0b9ftfU1XBumULqC4pwF+5GTMYILfH4YQMJ6Zl0aVwDqmVqxs9NqXncHbZ66hGXwtfnsnG9SspXrcMf8XmcB/91RiWyYZu+1PjDYd8GWVLyCypXQSq3q8Tde/Zhm77UZ0QXo08vXw52ZvDq7QbDicD9zqh2XuytriKog2rSSyYF7knW77XwucozBxPVdogDhrRPeqQs77Cch9riyvxBUx2G5CF29n07F0by2ronpYQ8zkg/P/Y9PT0Fv8/VkRERJqngFNERKSD8/v9JCUl8b///Y/jjz8+sv2qq65iwYIFTJ8+fbvH65dvEZH40f9jRURE4k+LDImIiHRwHo+HCRMmMG3atAbbp02bxp577tlOvRIREREREWkbmoNTRERkJ3DNNddw9tlnM3HiRCZPnszTTz/N2rVrufjii5s/WEREREREpANTwCkiIrITOPXUU9m0aRP/+Mc/yMvLY9SoUUydOpV+/WKbU1FERERERKSj0RycIiIinVxpaSkZGRnk5uZqfjgREZvVLeRWUlJCenp6e3dHRERkp6QKThERkU6uvLwcgD59ol+1W0REYlNeXq6AU0REJE5UwSkiItLJmabJhg0bSE1NxTCMmI+vq07qjBWgnfXaO+t1g65d1x77tVuWRXl5OT179sTh0BqvIiIi8aAKThERkU7O4XDQu3fvVreTlpbW6UKPOp312jvrdYOuXdceG1VuioiIxJf+hCgiIiIiIiIiIiIdlgJOERERERERERER6bAUcIqIiEireL1ebr/9drxeb3t3pc111mvvrNcNunZde+e7dhERkY5AiwyJiIiIiIiIiIhIh6UKThEREREREREREemwFHCKiIiIiIiIiIhIh6WAU0RERERERERERDosBZwiIiIiIiIiIiLSYSngFBERkVZ5/PHHGTBgAAkJCUyYMIHvvvuuvbsUtbvuuovddtuN1NRUunXrxnHHHceSJUsa7GNZFnfccQc9e/YkMTGR/fffn99++63BPj6fjyuuuILs7GySk5M59thjWbduXYN9Nm/ezNlnn016ejrp6emcffbZlJSUxPsSo3LXXXdhGAZXX311ZNvOfN3r16/nrLPOokuXLiQlJTFu3Dh++umnyOs767UHg0Fuu+02BgwYQGJiIgMHDuQf//gHpmlG9tlZrv3bb7/lmGOOoWfPnhiGwXvvvdfg9ba8zrVr13LMMceQnJxMdnY2V155JX6/Px6XLSIi0mkp4BQREZEW++9//8vVV1/Nrbfeyvz589lnn3044ogjWLt2bXt3LSrTp0/nsssuY9asWUybNo1gMMihhx5KZWVlZJ97772X+++/n0cffZQ5c+aQk5PDIYccQnl5eWSfq6++mnfffZcpU6bw/fffU1FRwdFHH00oFIrsc8YZZ7BgwQI+/fRTPv30UxYsWMDZZ5/dptfbmDlz5vD0008zZsyYBtt31uvevHkze+21F263m08++YRFixZx3333kZGREdlnZ732e+65hyeffJJHH32UxYsXc++99/Lvf/+bRx55JLLPznLtlZWVjB07lkcffbTR19vqOkOhEEcddRSVlZV8//33TJkyhbfffptrr702fhcvIiLSGVkiIiIiLbT77rtbF198cYNtw4cPt2666aZ26lHrFBQUWIA1ffp0y7IsyzRNKycnx7r77rsj+9TU1Fjp6enWk08+aVmWZZWUlFhut9uaMmVKZJ/169dbDofD+vTTTy3LsqxFixZZgDVr1qzIPjNnzrQA6/fff2+LS2tUeXm5NWTIEGvatGnWfvvtZ1111VWWZe3c133jjTdae++9d5Ov78zXftRRR1kXXHBBg20nnHCCddZZZ1mWtfNeO2C9++67kedteZ1Tp061HA6HtX79+sg+b7zxhuX1eq3S0tK4XK+IiEhnpApOERERaRG/389PP/3EoYce2mD7oYceyg8//NBOvWqd0tJSALKysgBYtWoV+fn5Da7R6/Wy3377Ra7xp59+IhAINNinZ8+ejBo1KrLPzJkzSU9PZ9KkSZF99thjD9LT09v1vbrssss46qijOPjggxts35mv+4MPPmDixImcfPLJdOvWjfHjx/PMM89EXt+Zr33vvffmyy+/ZOnSpQAsXLiQ77//niOPPBLYua+9vra8zpkzZzJq1Ch69uwZ2eewww7D5/M1mBZBREREWsfV3h0QERGRjqmoqIhQKET37t0bbO/evTv5+fnt1KuWsyyLa665hr333ptRo0YBRK6jsWtcs2ZNZB+Px0NmZuY2+9Qdn5+fT7du3bY5Z7du3drtvZoyZQrz5s1jzpw527y2M1/3ypUreeKJJ7jmmmu45ZZbmD17NldeeSVer5dzzjlnp772G2+8kdLSUoYPH47T6SQUCvGvf/2L008/Hdi573t9bXmd+fn525wnMzMTj8ezQ7wXIiIiOwsFnCIiItIqhmE0eG5Z1jbbOoLLL7+cn3/+me+//36b11pyjVvv09j+7fVe5ebmctVVV/H555+TkJDQ5H4723UDmKbJxIkTufPOOwEYP348v/32G0888QTnnHNOZL+d8dr/+9//8uqrr/L666+zyy67sGDBAq6++mp69uzJueeeG9lvZ7z2xrTVdXaE90JERKSj0xB1ERERaZHs7GycTuc2VUgFBQXbVCzt6K644go++OADvv76a3r37h3ZnpOTA7Dda8zJycHv97N58+bt7rNx48ZtzltYWNgu79VPP/1EQUEBEyZMwOVy4XK5mD59Og8//DAulyvSp53tugF69OjByJEjG2wbMWJEZGGsnfWeA1x//fXcdNNNnHbaaYwePZqzzz6bv/zlL9x1113Azn3t9bXldebk5Gxzns2bNxMIBHaI90JERGRnoYBTREREWsTj8TBhwgSmTZvWYPu0adPYc88926lXsbEsi8svv5x33nmHr776igEDBjR4fcCAAeTk5DS4Rr/fz/Tp0yPXOGHCBNxud4N98vLy+PXXXyP7TJ48mdLSUmbPnh3Z58cff6S0tLRd3quDDjqIX375hQULFkS+Jk6cyJlnnsmCBQsYOHDgTnndAHvttRdLlixpsG3p0qX069cP2HnvOUBVVRUOR8Mf/51OJ6ZpAjv3tdfXltc5efJkfv31V/Ly8iL7fP7553i9XiZMmBDX6xQREelU2nhRIxEREdmJTJkyxXK73dZzzz1nLVq0yLr66qut5ORka/Xq1e3dtahccsklVnp6uvXNN99YeXl5ka+qqqrIPnfffbeVnp5uvfPOO9Yvv/xinX766VaPHj2ssrKyyD4XX3yx1bt3b+uLL76w5s2bZx144IHW2LFjrWAwGNnn8MMPt8aMGWPNnDnTmjlzpjV69Gjr6KOPbtPr3Z76q6hb1s573bNnz7ZcLpf1r3/9y1q2bJn12muvWUlJSdarr74a2WdnvfZzzz3X6tWrl/XRRx9Zq1atst555x0rOzvbuuGGGyL77CzXXl5ebs2fP9+aP3++BVj333+/NX/+fGvNmjVtep3BYNAaNWqUddBBB1nz5s2zvvjiC6t3797W5Zdf3mbvhYiISGeggFNERERa5bHHHrP69etneTwea9ddd7WmT5/e3l2KGtDo1wsvvBDZxzRN6/bbb7dycnIsr9dr7bvvvtYvv/zSoJ3q6mrr8ssvt7KysqzExETr6KOPttauXdtgn02bNllnnnmmlZqaaqWmplpnnnmmtXnz5ja4yuhsHXDuzNf94YcfWqNGjbK8Xq81fPhw6+mnn27w+s567WVlZdZVV11l9e3b10pISLAGDhxo3XrrrZbP54vss7Nc+9dff93o9/a5555rWVbbXueaNWuso446ykpMTLSysrKsyy+/3KqpqYnn5YuIiHQ6hmVZVvvUjoqIiIiIiIiIiIi0jubgFBERERERERERkQ5LAaeIiIiIiIiIiIh0WAo4RUREREREREREpMNSwCkiIiIiIiIiIiIdlgJOERERERERERER6bAUcIqIiIiIiIiIiEiHpYBTREREREREREREOiwFnCIiIiIiIiIiItJhKeAUERERkQa++eYbDMOgpKSkXc7/1VdfMXz4cEzTbJfz2+mjjz5i/PjxO8W1iIiIiOyoFHCKiIiIdGL7778/V199dYNte+65J3l5eaSnp7dLn2644QZuvfVWHI4tP6pOnz6dCRMmkJCQwMCBA3nyySebbeeqq65iwoQJeL1exo0bF8ceN+3oo4/GMAxef/31djm/iIiISGeggFNEREREGvB4POTk5GAYRpuf+4cffmDZsmWcfPLJkW2rVq3iyCOPZJ999mH+/PnccsstXHnllbz99tvbbcuyLC644AJOPfXUeHd7u84//3weeeSRdu2DiIiIyM5MAaeIiIhIJ3Xeeecxffp0HnroIQzDwDAMVq9evc0Q9RdffJGMjAw++ugjhg0bRlJSEieddBKVlZW89NJL9O/fn8zMTK644gpCoVCkfb/fzw033ECvXr1ITk5m0qRJfPPNN9vt05QpUzj00ENJSEiIbHvyySfp27cvDz74ICNGjODCCy/kggsu4D//+c9223r44Ye57LLLGDhwYNTviWEYPPXUUxx99NEkJSUxYsQIZs6cyfLly9l///1JTk5m8uTJrFixInLMwoULOeCAA0hNTSUtLY0JEyYwd+7cyOvHHnsss2fPZuXKlVH3Q0RERESip4BTREREpJN66KGHmDx5Mn/605/Iy8sjLy+PPn36NLpvVVUVDz/8MFOmTOHTTz/lm2++4YQTTmDq1KlMnTqVV155haeffpq33norcsz555/PjBkzmDJlCj///DMnn3wyhx9+OMuWLWuyT99++y0TJ05ssG3mzJkceuihDbYddthhzJ07l0Ag0Ip3oHH//Oc/Oeecc1iwYAHDhw/njDPO4KKLLuLmm2+OBJeXX355ZP8zzzyT3r17M2fOHH766Sduuukm3G535PV+/frRrVs3vvvuO9v7KiIiIiLgau8OiIiIiEj7SE9Px+PxkJSURE5Oznb3DQQCPPHEEwwaNAiAk046iVdeeYWNGzeSkpLCyJEjOeCAA/j666859dRTWbFiBW+88Qbr1q2jZ8+eAFx33XV8+umnvPDCC9x5552Nnmf16tWR/evk5+fTvXv3Btu6d+9OMBikqKiIHj16tPQtaNT555/PKaecAsCNN97I5MmT+etf/8phhx0GhOf2PP/88yP7r127luuvv57hw4cDMGTIkG3a7NWrF6tXr7a1nyIiIiISpoBTRERERJqVlJQUCTchHDD279+flJSUBtsKCgoAmDdvHpZlMXTo0Abt+Hw+unTp0uR5qqurGwxPr7P1fKCWZTW63Q5jxoyJPK4LVkePHt1gW01NDWVlZaSlpXHNNddw4YUX8sorr3DwwQdz8sknN3ivABITE6mqqrK9ryIiIiKigFNEREREolB/yDWEg8XGtpmmCYBpmjidTn766SecTmeD/eqHolvLzs5m8+bNDbbl5OSQn5/fYFtBQQEul2u7YWlL1b+uugC1sW1113rHHXdwxhln8PHHH/PJJ59w++23M2XKFI4//vjIMcXFxXTt2tX2voqIiIiIAk4RERGRTs3j8TRYGMgu48ePJxQKUVBQwD777BPTcYsWLWqwbfLkyXz44YcNtn3++edMnDhxm5C1vQwdOpShQ4fyl7/8hdNPP50XXnghEnDW1NSwYsUKxo8f3869FBEREdk5aZEhERERkU6sf//+/Pjjj6xevZqioqJIVWJrDR06lDPPPJNzzjmHd955h1WrVjFnzhzuuecepk6d2uRxhx12GN9//32DbRdffDFr1qzhmmuuYfHixTz//PM899xzXHfddZF93n333cgcmHWWL1/OggULyM/Pp7q6mgULFrBgwQL8fr8t1wjhIfWXX34533zzDWvWrGHGjBnMmTOHESNGRPaZNWsWXq+XyZMn23ZeEREREdlCAaeIiIhIJ3bdddfhdDoZOXIkXbt2Ze3atba1/cILL3DOOedw7bXXMmzYMI499lh+/PHHJldqBzjrrLNYtGgRS5YsiWwbMGAAU6dO5ZtvvmHcuHH885//5OGHH+bEE0+M7FNaWtrgGIALL7yQ8ePH89RTT7F06VLGjx/P+PHj2bBhg23X6HQ62bRpE+eccw5Dhw7llFNO4YgjjuDvf/97ZJ833niDM888k6SkJNvOKyIiIiJbGFbdDO0iIiIiIjuAG264gdLSUp566qn27kqrFRYWMnz4cObOncuAAQPauzsiIiIiOyVVcIqIiIjIDuXWW2+lX79+cZkbtK2tWrWKxx9/XOGmiIiISBypglNEREREREREREQ6LFVwioiIiIiIiIiISIelgFNEREREREREREQ6LAWcIiIiIiIiIiIi0mEp4BQREREREREREZEOSwGniIiIiIiIiIiIdFgKOEVERERERERERKTDUsApIiIiIiIiIiIiHZYCThEREREREREREemwFHCKiIiIiIiIiIhIh6WAU0RERERERERERDosBZwiIiIiIiIiIiLSYSngFBERERERERERkQ5LAaeIiIiIiIiIiIh0WAo4RUREREREREREpMNSwCkiIiIiIiIiIiIdlgJOERERERERERER6bAUcIqIiIiIiIiIiEiHpYBTREREREREREREOiwFnCIiIiIiIiIiItJhKeAUERERERERERGRDksBp4iIiIiIiIiIiHRYCjhFRERERERERESkw1LAKSIiIiIiIiIiIh2WAk4RERERERERERHpsBRwioiIiIiIiIiISIflau8OiIiISPsyTZMNGzaQmpqKYRjt3R0RkZ2KZVmUl5fTs2dPHA7Vl+xI9O+fiEj8tPW/fwo4RUREOrkNGzbQp0+f9u6GiMhOLTc3l969e7d3N6Qe/fsnIhJ/bfXvnwJOERGRTi41NRUI//CRlpbWzr0REdm5lJWV0adPn8j/a2XHoX//RETip63//VPAKSIi0snVDctLS0vTL3giInGiIdA7Hv37JyISf231758mgREREREREREREZEOSwGniIiIiIiIiIiIdFgKOEVEREREdgAfLtzAPvd+xa/rS9u7KyIiIiIdigJOEREREZEdwBVvzCe3uJoTHv+hvbsiIiIi0qEo4BQRERGRBvJKq3ns6+WUVgXauyudSoI7/KO5P2S2c09ERER2bhvLanjoi2V8v6yIkGm1d3fEBlpFXURE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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -240,8 +259,6 @@ } ], "source": [ - "# get spike times from membrane potential\n", - "# cannot use spike_recorder because we abuse exact spike timing\n", "V_m = mm1.get(\"events\", \"V_m\")\n", "times = mm1.get(\"events\", \"times\")\n", "spikes = sr.get(\"events\", \"times\") * nest.resolution\n", @@ -252,33 +269,38 @@ " isyn[useinds] = w * np.exp(-t[useinds] / tau)\n", " return isyn\n", "\n", - "fig, ax = plt.subplots(4,2)\n", - "fig.set_size_inches([12,10])\n", - "fig.subplots_adjust(hspace=0.5)\n", + "fig, ax = plt.subplots(4,3)\n", + "fig.set_size_inches([16,10])\n", + "fig.subplots_adjust(hspace=0.5, wspace=0.3)\n", "\n", "ax[0,0].plot(mm1.events[\"V_m\"])\n", - "ax[0,0].set_xlabel(\"time (ms)\")\n", + "ax[0,0].set_xlabel(\"time (0.1 ms)\")\n", "ax[0,0].set_ylabel(\"membrane potential V (mV)\")\n", "ax[0,0].set_title(\"Presynaptic neuron\")\n", "\n", "ax[0,1].plot(mm2.events[\"V_m\"], label=\"approximation\")\n", "ax[0,1].plot(mm3.events[\"V_m\"], \"--\", label=\"exact model\")\n", - "ax[0,1].set_xlabel(\"time (ms)\")\n", + "ax[0,1].set_xlabel(\"time (0.1 ms)\")\n", "ax[0,1].set_ylabel(\"membrane potential V (mV)\")\n", "ax[0,1].set_title(\"Postsynaptic neuron\")\n", "ax[0,1].legend()\n", "\n", - "\n", + "ax[0,2].plot(mm2.events[\"V_m\"], label=\"approximation\")\n", + "ax[0,2].plot(mm3.events[\"V_m\"], \"--\", label=\"exact model\")\n", + "ax[0,2].set_xlabel(\"time (0.1 ms)\")\n", + "ax[0,2].set_ylabel(\"membrane potential V (mV)\")\n", + "ax[0,2].set_title(\"Postsynaptic neuron\")\n", + "ax[0,2].set_xlim(3000, 4000)\n", "\n", "ax[1,1].plot(mm2.events[\"s_AMPA\"])\n", "ax[1,1].plot(mm3.events[\"s_AMPA\"], \"--\")\n", - "ax[1,1].set_xlabel(\"time (ms)\")\n", + "ax[1,1].set_xlabel(\"time (0.1 ms)\")\n", "ax[1,1].set_ylabel(\"s_AMPA\")\n", "\n", "\n", "ax[2,1].plot(mm2.events[\"s_GABA\"])\n", "ax[2,1].plot(mm3.events[\"s_GABA\"], \"--\")\n", - "ax[2,1].set_xlabel(\"time (ms)\")\n", + "ax[2,1].set_xlabel(\"time (0.1 ms)\")\n", "ax[2,1].set_ylabel(\"s_GABA\")\n", "\n", "\n", @@ -287,9 +309,19 @@ "ax[3,1].set_xlabel(\"time (ms)\")\n", "ax[3,1].set_ylabel(\"s_NMDA\")\n", "\n", + "ax[3,2].plot(mm2.events[\"s_NMDA\"])\n", + "ax[3,2].plot(mm3.events[\"s_NMDA\"], \"--\")\n", + "ax[3,2].set_xlabel(\"time (0.1 ms)\")\n", + "ax[3,2].set_ylabel(\"s_NMDA\")\n", + "ax[3,2].set_xlim(3000, 4000)\n", + "\n", + "\n", "ax[1,0].axis(\"off\")\n", "ax[2,0].axis(\"off\")\n", "ax[3,0].axis(\"off\")\n", + "ax[1,2].axis(\"off\")\n", + "ax[2,2].axis(\"off\")\n", + "\n", "\n", "plt.show();" ] @@ -301,6 +333,14 @@ "metadata": {}, "outputs": [], "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81310d85-eb37-4bc2-91d7-7cb5167708d7", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 9de4414dbac9e60d26a48822a1922dfa3178c85a Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 14:18:27 +0100 Subject: [PATCH 075/184] raise error if NMDA connection is made from other neuron types --- models/iaf_wang_2002.cpp | 1 + models/iaf_wang_2002.h | 22 +++++++++++++++++++++- testsuite/pytests/test_iaf_wang_2002.py | 24 +++++++++++++++++++++++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 26dde512ae..3550546053 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -45,6 +45,7 @@ // Includes from standard library #include #include +#include /* --------------------------------------------------------------------------- * Recordables map diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 903b58a096..fc4b385cfb 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -103,6 +103,10 @@ The specification of this model differs slightly from the one in [1]_. The param :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. +For more implementation details and a comparison to the exact version see: + +- `wong_approximate_implementation <../model_details/wong_approximate_implementation.ipynb>`_ + Parameters ++++++++++ @@ -145,6 +149,10 @@ The following values can be recorded. :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the variables is thus done by changing the weights. +.. note:: + For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_wang_2002. For AMPA/GABA synapses, any pre-synaptic neuron can be used. + + Sends +++++ @@ -167,6 +175,14 @@ See also iaf_wang_2002_exact + +Examples using this model ++++++++++++++++++++++++++ + +.. listexamples:: ht_neuron + + + EndUserDocs */ void register_iaf_wang_2002( const std::string& name ); @@ -398,13 +414,17 @@ iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bo } inline size_t -iaf_wang_2002::handles_test_event( SpikeEvent&, size_t receptor_type ) +iaf_wang_2002::handles_test_event( SpikeEvent& e, size_t receptor_type ) { if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) ) { throw UnknownReceptorType( receptor_type, get_name() ); } + if ( receptor_type == NMDA and typeid( e.get_sender() ) != typeid( *this ) ) + { + throw IllegalConnection( "For NMDA synapses in iaf_wang_2002, pre-synaptic neuron must also be of type iaf_wang_2002" ); + } return receptor_type; } diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index d646fffb7e..4cd100f5eb 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -20,12 +20,15 @@ # along with NEST. If not, see . """ -Tests synaptic dynamics of the approximate model iaf_wang_2002. +Tests synaptic dynamics and connections of the approximate model iaf_wang_2002. Since the neuron is conductance based, it is impossible to analytically confirm the membrane potential, but all the synaptic currents can be computed analytically (for the simplified implementation we use). The integration of the membrane potential is not tested here. + +Also tests that an error is correctly raised when an NMDA-connection +from neuron other than iaf_wang_2002 is made. """ @@ -146,3 +149,22 @@ def test_wang(): nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) nptest.assert_array_almost_equal(nmda_soln, mm2.events["s_NMDA"]) + +def test_illegal_connection_error(): + """ + Test that connecting with NMDA synapses from iaf_psc_exp throws error. + """ + nest.ResetKernel() + nrn1 = nest.Create("iaf_psc_exp") + nrn2 = nest.Create("iaf_wang_2002") + receptor_types = nrn2.get("receptor_types") + nmda_syn_spec = {"receptor_type": receptor_types["NMDA"]} + with pytest.raises(nest.kernel.NESTErrors.IllegalConnection): + nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + + + + + + + From 49235c71d54bd3945be9e277b23ec0f3661846ec Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 14:25:39 +0100 Subject: [PATCH 076/184] clang-format --- models/iaf_wang_2002.cpp | 7 +++---- models/iaf_wang_2002.h | 26 ++++++++++++++++++-------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 3550546053..bfe2608044 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -385,13 +385,12 @@ nest::iaf_wang_2002::pre_run_hook() // helper vars const double alpha_tau = P_.alpha * P_.tau_rise_NMDA; const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; - const double expint = boost::math::gamma_q(1 - tau_rise_tau_dec, alpha_tau) - * boost::math::tgamma(1 - tau_rise_tau_dec) * pow(alpha_tau, tau_rise_tau_dec - 1); + const double expint = boost::math::gamma_q( 1 - tau_rise_tau_dec, alpha_tau ) + * boost::math::tgamma( 1 - tau_rise_tau_dec ) * pow( alpha_tau, tau_rise_tau_dec - 1 ); V_.S_jump_1 = exp( -P_.alpha * P_.tau_rise_NMDA ) - 1; - V_.S_jump_0 = -expint * alpha_tau - + pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma( 1 - tau_rise_tau_dec ); + V_.S_jump_0 = -expint * alpha_tau + pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma( 1 - tau_rise_tau_dec ); } diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index fc4b385cfb..ca3377c3b0 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -84,10 +84,13 @@ The membrane potential and synaptic variables evolve according to C_\mathrm{m} \frac{dV(t)}{dt} &= -g_\mathrm{L} (V(t) - V_\mathrm{L}) - I_\mathrm{syn} (t) \\[3ex] I_\mathrm{syn}(t) &= I_\mathrm{AMPA}(t) + I_\mathrm{NMDA}(t) + I_\mathrm{GABA}(t) (t) \\[3ex] I_\mathrm{AMPA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{AMPA}}(t) \\[3ex] - I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] - I_\mathrm{GABA} &= (V(t) - V_I)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] \frac{dS_{j,\mathrm{AMPA}}}{dt} &= -\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}} + \sum_{k \in \Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] + I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in +\Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] I_\mathrm{GABA} &= (V(t) - V_I)\sum_{j \in +\Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] \frac{dS_{j,\mathrm{AMPA}}}{dt} &= +-\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t +- t_j^k) \\[3ex] \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}} + \sum_{k \in +\Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. @@ -95,9 +98,14 @@ neurons respectively, and :math:`\Delta_j` is an index set for the spike times o .. math:: k_0 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 \\[3ex] - k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} \Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] + k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} +\Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - +\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] -where :math:`\mathrm{E_N}` is the `generalized exponential integral `_, and :math:`\Gamma` is the `gamma function `_. For these values of :math:`k_0` and :math:`k_1`, the approximate model will approach the exact model for large t. +where :math:`\mathrm{E_N}` is the `generalized exponential integral +`_, and :math:`\Gamma` is the `gamma function +`_. For these values of :math:`k_0` and :math:`k_1`, the approximate model +will approach the exact model for large t. The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. @@ -150,7 +158,8 @@ The following values can be recorded. model, so setting the variables is thus done by changing the weights. .. note:: - For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_wang_2002. For AMPA/GABA synapses, any pre-synaptic neuron can be used. + For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_wang_2002. For +AMPA/GABA synapses, any pre-synaptic neuron can be used. Sends @@ -423,7 +432,8 @@ iaf_wang_2002::handles_test_event( SpikeEvent& e, size_t receptor_type ) if ( receptor_type == NMDA and typeid( e.get_sender() ) != typeid( *this ) ) { - throw IllegalConnection( "For NMDA synapses in iaf_wang_2002, pre-synaptic neuron must also be of type iaf_wang_2002" ); + throw IllegalConnection( + "For NMDA synapses in iaf_wang_2002, pre-synaptic neuron must also be of type iaf_wang_2002" ); } return receptor_type; } From 01ae1f616a6fc4413e6b64d0e3f7f6ec671e35c7 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 14:32:48 +0100 Subject: [PATCH 077/184] clang-format --- models/iaf_wang_2002_exact.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 42c993e57c..c848f52fc7 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -87,10 +87,11 @@ The membrane potential and synaptic variables evolve according to I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] I_\mathrm{GABA} &= (V(t) - V_I)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] - \frac{dS_{j,\mathrm{AMPA}}}{dt} &=-\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}}+ \alpha x_j (1 - S_{j,\mathrm{NMDA}})\\[3ex] - \frac{dx_j}{dt} &= - \frac{x_j}{\tau_\mathrm{NMDA,rise}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) + \frac{dS_{j,\mathrm{AMPA}}}{dt} &=-\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - +t_j^k) \\[3ex] \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in +\Delta_j} \delta (t - t_j^k) \\[3ex] \frac{dS_{j,\mathrm{NMDA}}}{dt} &= +-\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}}+ \alpha x_j (1 - S_{j,\mathrm{NMDA}})\\[3ex] \frac{dx_j}{dt} &= - +\frac{x_j}{\tau_\mathrm{NMDA,rise}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. @@ -282,7 +283,7 @@ class iaf_wang_2002_exact : public ArchivingNode */ struct State_ { - /** + /** * Symbolic indices to the elements of the state vector y * (x_NMDA_1, G_NMDA_1), (x_NMDA_2, G_NMDA_2), (x_NMDA_3, G_NMDA_3), ..., (x_NMDA_j, G_NMDA_j) */ From 9c443d14be65f9741fd8b529031657d3c38e03c4 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 14:33:25 +0100 Subject: [PATCH 078/184] G_NMDA -> s_NMDA --- models/iaf_wang_2002_exact.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index c848f52fc7..9f8d149a3c 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -285,7 +285,7 @@ class iaf_wang_2002_exact : public ArchivingNode { /** * Symbolic indices to the elements of the state vector y - * (x_NMDA_1, G_NMDA_1), (x_NMDA_2, G_NMDA_2), (x_NMDA_3, G_NMDA_3), ..., (x_NMDA_j, G_NMDA_j) + * (x_NMDA_1, s_NMDA_1), (x_NMDA_2, s_NMDA_2), (x_NMDA_3, s_NMDA_3), ..., (x_NMDA_j, s_NMDA_j) */ enum StateVecElems { From cd4bfc44685bdfb3520659d8b7329be490fb2e6d Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 14:35:17 +0100 Subject: [PATCH 079/184] black/flake8 --- testsuite/pytests/test_iaf_wang_2002.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 4cd100f5eb..28f37c9141 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -78,7 +78,7 @@ def spiketrain_response_nmda(t, spiketrain): at = alpha * tau_rise_NMDA expn = gammaincc(1 - tr, at) * gamma(1 - tr) * at ** (tr - 1) - k_0 = -expn * at + at**tr * gamma(1 - tr) + k_0 = -expn * at + at ** tr * gamma(1 - tr) k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 response = np.zeros_like(t) @@ -150,6 +150,7 @@ def test_wang(): nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) nptest.assert_array_almost_equal(nmda_soln, mm2.events["s_NMDA"]) + def test_illegal_connection_error(): """ Test that connecting with NMDA synapses from iaf_psc_exp throws error. @@ -161,10 +162,3 @@ def test_illegal_connection_error(): nmda_syn_spec = {"receptor_type": receptor_types["NMDA"]} with pytest.raises(nest.kernel.NESTErrors.IllegalConnection): nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) - - - - - - - From 33c808226e762cf8ee9ba3d246d89dad0fa3df02 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 15:52:20 +0100 Subject: [PATCH 080/184] black --- .../wong_approximate_implementation.ipynb | 162 +++++++++--------- pynest/examples/wang_decision_making.py | 2 + testsuite/pytests/test_iaf_wang_2002.py | 4 +- 3 files changed, 83 insertions(+), 85 deletions(-) diff --git a/doc/model_details/wong_approximate_implementation.ipynb b/doc/model_details/wong_approximate_implementation.ipynb index e172a542ca..f830da65d6 100644 --- a/doc/model_details/wong_approximate_implementation.ipynb +++ b/doc/model_details/wong_approximate_implementation.ipynb @@ -127,24 +127,26 @@ "metadata": {}, "outputs": [], "source": [ - "w_ext = 40.\n", - "w_ex = 1.\n", - "w_in = 15.\n", - "\n", - "params = {\"tau_AMPA\": 2.0,\n", - " \"tau_GABA\": 5.0,\n", - " \"tau_rise_NMDA\": 2.0,\n", - " \"tau_decay_NMDA\": 100.0,\n", - " \"conc_Mg2\": 1.0,\n", - " \"E_ex\": 0.0,\n", - " \"E_in\": -70.0,\n", - " \"E_L\": -70.0,\n", - " \"V_th\": -55.0,\n", - " \"C_m\": 500.0,\n", - " \"g_L\": 25.0,\n", - " \"V_reset\": -70.0,\n", - " \"alpha\": 0.5,\n", - " \"t_ref\": 2.0}" + "w_ext = 40.0\n", + "w_ex = 1.0\n", + "w_in = 15.0\n", + "\n", + "params = {\n", + " \"tau_AMPA\": 2.0,\n", + " \"tau_GABA\": 5.0,\n", + " \"tau_rise_NMDA\": 2.0,\n", + " \"tau_decay_NMDA\": 100.0,\n", + " \"conc_Mg2\": 1.0,\n", + " \"E_ex\": 0.0,\n", + " \"E_in\": -70.0,\n", + " \"E_L\": -70.0,\n", + " \"V_th\": -55.0,\n", + " \"C_m\": 500.0,\n", + " \"g_L\": 25.0,\n", + " \"V_reset\": -70.0,\n", + " \"alpha\": 0.5,\n", + " \"t_ref\": 2.0,\n", + "}" ] }, { @@ -201,7 +203,7 @@ "nrn2 = nest.Create(\"iaf_wang_2002\", params)\n", "nrn3 = nest.Create(\"iaf_wang_2002_exact\", params)\n", "\n", - "pg = nest.Create(\"poisson_generator\", {\"rate\": 50.})\n", + "pg = nest.Create(\"poisson_generator\", {\"rate\": 50.0})\n", "# since we're \"abusing\" spike offset, set time_in_steps to True and multiply by resolution after\n", "sr = nest.Create(\"spike_recorder\", {\"time_in_steps\": True})\n", "\n", @@ -209,21 +211,13 @@ "mm2 = nest.Create(\"multimeter\", {\"record_from\": [\"V_m\", \"s_AMPA\", \"s_NMDA\", \"s_GABA\"], \"interval\": 0.1})\n", "mm3 = nest.Create(\"multimeter\", {\"record_from\": [\"V_m\", \"s_AMPA\", \"s_NMDA\", \"s_GABA\"], \"interval\": 0.1})\n", "\n", - "ampa_ext_syn_spec = {\"synapse_model\": \"static_synapse\",\n", - " \"weight\": w_ext,\n", - " \"receptor_type\": 1}\n", + "ampa_ext_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_ext, \"receptor_type\": 1}\n", "\n", - "ampa_syn_spec = {\"synapse_model\": \"static_synapse\",\n", - " \"weight\": w_ex,\n", - " \"receptor_type\": 1}\n", + "ampa_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": 1}\n", "\n", - "nmda_syn_spec = {\"synapse_model\": \"static_synapse\",\n", - " \"weight\": w_ex,\n", - " \"receptor_type\": 3}\n", + "nmda_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": 3}\n", "\n", - "gaba_syn_spec = {\"synapse_model\": \"static_synapse\",\n", - " \"weight\": w_in,\n", - " \"receptor_type\": 2}\n", + "gaba_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_in, \"receptor_type\": 2}\n", "\n", "nest.Connect(pg, nrn1, syn_spec=ampa_ext_syn_spec)\n", "nest.Connect(nrn1, sr)\n", @@ -238,7 +232,7 @@ "nest.Connect(mm2, nrn2)\n", "nest.Connect(mm3, nrn3)\n", "\n", - "nest.Simulate(1000.)" + "nest.Simulate(1000.0)" ] }, { @@ -263,64 +257,66 @@ "times = mm1.get(\"events\", \"times\")\n", "spikes = sr.get(\"events\", \"times\") * nest.resolution\n", "\n", + "\n", "def s_soln(w, t, tau):\n", " isyn = np.zeros_like(t)\n", - " useinds = t >= 0.\n", + " useinds = t >= 0.0\n", " isyn[useinds] = w * np.exp(-t[useinds] / tau)\n", " return isyn\n", "\n", - "fig, ax = plt.subplots(4,3)\n", - "fig.set_size_inches([16,10])\n", + "\n", + "fig, ax = plt.subplots(4, 3)\n", + "fig.set_size_inches([16, 10])\n", "fig.subplots_adjust(hspace=0.5, wspace=0.3)\n", "\n", - "ax[0,0].plot(mm1.events[\"V_m\"])\n", - "ax[0,0].set_xlabel(\"time (0.1 ms)\")\n", - "ax[0,0].set_ylabel(\"membrane potential V (mV)\")\n", - "ax[0,0].set_title(\"Presynaptic neuron\")\n", - "\n", - "ax[0,1].plot(mm2.events[\"V_m\"], label=\"approximation\")\n", - "ax[0,1].plot(mm3.events[\"V_m\"], \"--\", label=\"exact model\")\n", - "ax[0,1].set_xlabel(\"time (0.1 ms)\")\n", - "ax[0,1].set_ylabel(\"membrane potential V (mV)\")\n", - "ax[0,1].set_title(\"Postsynaptic neuron\")\n", - "ax[0,1].legend()\n", - "\n", - "ax[0,2].plot(mm2.events[\"V_m\"], label=\"approximation\")\n", - "ax[0,2].plot(mm3.events[\"V_m\"], \"--\", label=\"exact model\")\n", - "ax[0,2].set_xlabel(\"time (0.1 ms)\")\n", - "ax[0,2].set_ylabel(\"membrane potential V (mV)\")\n", - "ax[0,2].set_title(\"Postsynaptic neuron\")\n", - "ax[0,2].set_xlim(3000, 4000)\n", - "\n", - "ax[1,1].plot(mm2.events[\"s_AMPA\"])\n", - "ax[1,1].plot(mm3.events[\"s_AMPA\"], \"--\")\n", - "ax[1,1].set_xlabel(\"time (0.1 ms)\")\n", - "ax[1,1].set_ylabel(\"s_AMPA\")\n", - "\n", - "\n", - "ax[2,1].plot(mm2.events[\"s_GABA\"])\n", - "ax[2,1].plot(mm3.events[\"s_GABA\"], \"--\")\n", - "ax[2,1].set_xlabel(\"time (0.1 ms)\")\n", - "ax[2,1].set_ylabel(\"s_GABA\")\n", - "\n", - "\n", - "ax[3,1].plot(mm2.events[\"s_NMDA\"])\n", - "ax[3,1].plot(mm3.events[\"s_NMDA\"], \"--\")\n", - "ax[3,1].set_xlabel(\"time (ms)\")\n", - "ax[3,1].set_ylabel(\"s_NMDA\")\n", - "\n", - "ax[3,2].plot(mm2.events[\"s_NMDA\"])\n", - "ax[3,2].plot(mm3.events[\"s_NMDA\"], \"--\")\n", - "ax[3,2].set_xlabel(\"time (0.1 ms)\")\n", - "ax[3,2].set_ylabel(\"s_NMDA\")\n", - "ax[3,2].set_xlim(3000, 4000)\n", - "\n", - "\n", - "ax[1,0].axis(\"off\")\n", - "ax[2,0].axis(\"off\")\n", - "ax[3,0].axis(\"off\")\n", - "ax[1,2].axis(\"off\")\n", - "ax[2,2].axis(\"off\")\n", + "ax[0, 0].plot(mm1.events[\"V_m\"])\n", + "ax[0, 0].set_xlabel(\"time (0.1 ms)\")\n", + "ax[0, 0].set_ylabel(\"membrane potential V (mV)\")\n", + "ax[0, 0].set_title(\"Presynaptic neuron\")\n", + "\n", + "ax[0, 1].plot(mm2.events[\"V_m\"], label=\"approximation\")\n", + "ax[0, 1].plot(mm3.events[\"V_m\"], \"--\", label=\"exact model\")\n", + "ax[0, 1].set_xlabel(\"time (0.1 ms)\")\n", + "ax[0, 1].set_ylabel(\"membrane potential V (mV)\")\n", + "ax[0, 1].set_title(\"Postsynaptic neuron\")\n", + "ax[0, 1].legend()\n", + "\n", + "ax[0, 2].plot(mm2.events[\"V_m\"], label=\"approximation\")\n", + "ax[0, 2].plot(mm3.events[\"V_m\"], \"--\", label=\"exact model\")\n", + "ax[0, 2].set_xlabel(\"time (0.1 ms)\")\n", + "ax[0, 2].set_ylabel(\"membrane potential V (mV)\")\n", + "ax[0, 2].set_title(\"Postsynaptic neuron\")\n", + "ax[0, 2].set_xlim(3000, 4000)\n", + "\n", + "ax[1, 1].plot(mm2.events[\"s_AMPA\"])\n", + "ax[1, 1].plot(mm3.events[\"s_AMPA\"], \"--\")\n", + "ax[1, 1].set_xlabel(\"time (0.1 ms)\")\n", + "ax[1, 1].set_ylabel(\"s_AMPA\")\n", + "\n", + "\n", + "ax[2, 1].plot(mm2.events[\"s_GABA\"])\n", + "ax[2, 1].plot(mm3.events[\"s_GABA\"], \"--\")\n", + "ax[2, 1].set_xlabel(\"time (0.1 ms)\")\n", + "ax[2, 1].set_ylabel(\"s_GABA\")\n", + "\n", + "\n", + "ax[3, 1].plot(mm2.events[\"s_NMDA\"])\n", + "ax[3, 1].plot(mm3.events[\"s_NMDA\"], \"--\")\n", + "ax[3, 1].set_xlabel(\"time (ms)\")\n", + "ax[3, 1].set_ylabel(\"s_NMDA\")\n", + "\n", + "ax[3, 2].plot(mm2.events[\"s_NMDA\"])\n", + "ax[3, 2].plot(mm3.events[\"s_NMDA\"], \"--\")\n", + "ax[3, 2].set_xlabel(\"time (0.1 ms)\")\n", + "ax[3, 2].set_ylabel(\"s_NMDA\")\n", + "ax[3, 2].set_xlim(3000, 4000)\n", + "\n", + "\n", + "ax[1, 0].axis(\"off\")\n", + "ax[2, 0].axis(\"off\")\n", + "ax[3, 0].axis(\"off\")\n", + "ax[1, 2].axis(\"off\")\n", + "ax[2, 2].axis(\"off\")\n", "\n", "\n", "plt.show();" diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 19bedf1956..43ddc7a26e 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -59,6 +59,7 @@ # Set parameter values, taken from [1]_. # conductances excitatory population +# fmt: off g_AMPA_ex = 0.05 # recurrent AMPA conductance g_AMPA_ext_ex = 2.1 # external AMPA conductance g_NMDA_ex = 0.165 # recurrent GABA conductance @@ -104,6 +105,7 @@ "C_m": 200.0, # membrane capacitance "t_ref": 1.0, # refreactory period } +# fmt: on # signals to the two different excitatory sub-populations # the signal is given by a time-inhomogeneous Poisson process, diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 28f37c9141..a837efd7a9 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -76,9 +76,9 @@ def spiketrain_response_nmda(t, spiketrain): """ tr = tau_rise_NMDA / tau_decay_NMDA at = alpha * tau_rise_NMDA - expn = gammaincc(1 - tr, at) * gamma(1 - tr) * at ** (tr - 1) + expn = gammaincc(1 - tr, at) * gamma(1 - tr) * at**(tr - 1) - k_0 = -expn * at + at ** tr * gamma(1 - tr) + k_0 = -expn * at + at **tr* gamma(1 - tr) k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 response = np.zeros_like(t) From 94abdc8ec467bc068ddd030770ad555e82e70e84 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 15:53:11 +0100 Subject: [PATCH 081/184] remove constant weight constraint --- models/iaf_wang_2002_exact.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index a3cb59e7de..dabca33ff3 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -547,14 +547,10 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) // so we store them { const size_t w_idx = rport - NMDA; - if ( B_.weights_[ w_idx ] == 0.0 ) + if ( B_.weights_[ w_idx ] != e.get_weight() ) { B_.weights_[ w_idx ] = e.get_weight(); } - else if ( B_.weights_[ w_idx ] != e.get_weight() ) - { - throw KernelException( "iaf_wang_2002_exact requires constant weights." ); - } } } From a04e2a7de7a605f57933bb12e0075b1b6453170e Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 15:56:13 +0100 Subject: [PATCH 082/184] black --- testsuite/pytests/test_iaf_wang_2002.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index a837efd7a9..c21a31c6ac 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -76,9 +76,9 @@ def spiketrain_response_nmda(t, spiketrain): """ tr = tau_rise_NMDA / tau_decay_NMDA at = alpha * tau_rise_NMDA - expn = gammaincc(1 - tr, at) * gamma(1 - tr) * at**(tr - 1) + expn = gammaincc(1 - tr, at) * gamma(1 - tr) * at ** (tr - 1) - k_0 = -expn * at + at **tr* gamma(1 - tr) + k_0 = -expn * at + at**tr* gamma(1 - tr) k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 response = np.zeros_like(t) From eff07679f1a5f55c3c7f004301cdb1747d703205 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 15:57:50 +0100 Subject: [PATCH 083/184] black --- testsuite/pytests/test_iaf_wang_2002.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index c21a31c6ac..757a63a256 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -78,7 +78,7 @@ def spiketrain_response_nmda(t, spiketrain): at = alpha * tau_rise_NMDA expn = gammaincc(1 - tr, at) * gamma(1 - tr) * at ** (tr - 1) - k_0 = -expn * at + at**tr* gamma(1 - tr) + k_0 = -expn * at + at**tr * gamma(1 - tr) k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 response = np.zeros_like(t) From cbe9b0a2a4aa80f6d7a32b6728f2be4dda511338 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 16:03:58 +0100 Subject: [PATCH 084/184] add conc_Mg2 --- nestkernel/nest_names.h | 1 + 1 file changed, 1 insertion(+) diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index 5303c0e8cd..128ab001b7 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -133,6 +133,7 @@ extern const Name continuous; extern const Name count_covariance; extern const Name count_histogram; extern const Name covariance; +extern const Name conc_Mg2; extern const Name Delta_T; extern const Name Delta_V; From 4e6d56ef59f8d964ba44e18afc277e31d21adce7 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 16:19:54 +0100 Subject: [PATCH 085/184] remove duplicates --- nestkernel/nest_names.cpp | 2 +- nestkernel/nest_names.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 01f89fcd3f..383d908ba0 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -96,6 +96,7 @@ const Name clear( "clear" ); const Name comp_idx( "comp_idx" ); const Name comparator( "comparator" ); const Name compartments( "compartments" ); +const Name conc_Mg2( "conc_Mg2" ); const Name configbit_0( "configbit_0" ); const Name configbit_1( "configbit_1" ); const Name connection_count( "connection_count" ); @@ -106,7 +107,6 @@ const Name continuous( "continuous" ); const Name count_covariance( "count_covariance" ); const Name count_histogram( "count_histogram" ); const Name covariance( "covariance" ); -const Name conc_Mg2( "conc_Mg2" ); const Name Delta_T( "Delta_T" ); const Name Delta_V( "Delta_V" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index 128ab001b7..5303c0e8cd 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -133,7 +133,6 @@ extern const Name continuous; extern const Name count_covariance; extern const Name count_histogram; extern const Name covariance; -extern const Name conc_Mg2; extern const Name Delta_T; extern const Name Delta_V; From 7928d827613dfb309cb4ae051b6e615728ae6a45 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 16:21:27 +0100 Subject: [PATCH 086/184] remove duplicates --- nestkernel/nest_names.h | 1 - 1 file changed, 1 deletion(-) diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index 5303c0e8cd..2f75450092 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -342,7 +342,6 @@ extern const Name NMDA; extern const Name N_channels; extern const Name N_NaP; extern const Name N_T; -extern const Name NMDA; extern const Name n; extern const Name n_events; extern const Name n_messages; From d7af047369b5d0c447f92307337fd3c17b76186d Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 16:23:18 +0100 Subject: [PATCH 087/184] removed unused names --- nestkernel/nest_names.cpp | 3 --- nestkernel/nest_names.h | 3 --- 2 files changed, 6 deletions(-) diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 383d908ba0..94f78e75ea 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -184,8 +184,6 @@ const Name GABA_A( "GABA_A" ); const Name GABA_B( "GABA_B" ); const Name g( "g" ); const Name g_AMPA( "g_AMPA" ); -const Name g_AMPA_ext( "g_AMPA_ext" ); -const Name g_GABA( "g_GABA" ); const Name g_ahp( "g_ahp" ); const Name g_C( "g_C" ); const Name g_ex( "g_ex" ); @@ -427,7 +425,6 @@ const Name S( "S" ); const Name S_act_NMDA( "S_act_NMDA" ); const Name s_NMDA( "s_NMDA" ); const Name s_AMPA( "s_AMPA" ); -const Name s_AMPA_ext( "s_AMPA_ext" ); const Name s_GABA( "s_GABA" ); const Name SIC_scale( "SIC_scale" ); const Name SIC_th( "SIC_th" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index 2f75450092..afaf184770 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -210,10 +210,8 @@ extern const Name GABA_A; extern const Name GABA_B; extern const Name g; extern const Name g_AMPA; -extern const Name g_AMPA_ext; extern const Name g_ahp; extern const Name g_C; -extern const Name g_GABA; extern const Name g_ex; extern const Name g_GABA_A; extern const Name g_GABA_B; @@ -453,7 +451,6 @@ extern const Name S; extern const Name S_act_NMDA; extern const Name s_GABA; extern const Name s_AMPA; -extern const Name s_AMPA_ext; extern const Name s_NMDA; extern const Name SIC_scale; extern const Name SIC_th; From af9fd6e99641164979e654854dbc7ffcf5f8f546 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 19 Feb 2024 17:11:37 +0100 Subject: [PATCH 088/184] let NMDA currents be recorded --- models/iaf_wang_2002.cpp | 14 +++++++++----- models/iaf_wang_2002.h | 12 +++++++++++- models/iaf_wang_2002_exact.cpp | 9 +++++---- models/iaf_wang_2002_exact.h | 9 +++++++++ nestkernel/nest_names.cpp | 1 + nestkernel/nest_names.h | 1 + 6 files changed, 36 insertions(+), 10 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index bfe2608044..1bab4b6451 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -72,6 +72,7 @@ RecordablesMap< iaf_wang_2002 >::create() insert_( names::s_AMPA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_AMPA > ); insert_( names::s_GABA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_GABA > ); insert_( names::s_NMDA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_NMDA > ); + insert_( names::I_NMDA, &iaf_wang_2002::get_I_NMDA_ ); } } @@ -83,19 +84,19 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode // get access to node so we can almost work as in a member function assert( pnode ); - const nest::iaf_wang_2002& node = *( reinterpret_cast< nest::iaf_wang_2002* >( pnode ) ); + nest::iaf_wang_2002& node = *( reinterpret_cast< nest::iaf_wang_2002* >( pnode ) ); // y[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.y[]. const double I_AMPA = ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ]; - const double I_rec_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; + const double I_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; - const double I_rec_NMDA = ( y[ S::V_m ] - node.P_.E_ex ) - / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * y[ S::s_NMDA ]; + node.S_.I_NMDA_ = ( y[ S::V_m ] - node.P_.E_ex ) / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) + * y[ S::s_NMDA ]; - const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA + node.B_.I_stim_; + const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_ + node.B_.I_stim_; f[ S::V_m ] = ( -node.P_.g_L * ( y[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; @@ -138,6 +139,7 @@ nest::iaf_wang_2002::State_::State_( const Parameters_& p ) y_[ s_GABA ] = 0.0; y_[ s_NMDA ] = 0.0; s_NMDA_pre = 0.0; + I_NMDA_ = 0.0; } nest::iaf_wang_2002::State_::State_( const State_& s ) @@ -148,6 +150,7 @@ nest::iaf_wang_2002::State_::State_( const State_& s ) y_[ s_GABA ] = s.y_[ s_GABA ]; y_[ s_NMDA ] = s.y_[ s_NMDA ]; s_NMDA_pre = s.s_NMDA_pre; + I_NMDA_ = s.I_NMDA_; } nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) @@ -252,6 +255,7 @@ nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const def< double >( d, names::s_AMPA, y_[ s_AMPA ] ); def< double >( d, names::s_GABA, y_[ s_GABA ] ); def< double >( d, names::s_NMDA, y_[ s_NMDA ] ); + def< double >( d, names::I_NMDA, I_NMDA_ ); } void diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index ca3377c3b0..ef33b8c53d 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -151,6 +151,7 @@ The following values can be recorded. s_AMPA sum of AMPA gating variables s_GABA sum of GABA gating variables s_NMDA sum of NMDA gating variables + I_NMDA NMDA current =========== =========================================================== .. note:: @@ -316,7 +317,10 @@ class iaf_wang_2002 : public ArchivingNode double y_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver double s_NMDA_pre; // for determining (unweighted) alpha * (1 - s_NMDA) term on // pre-synaptic side - int r_; //!< number of refractory steps remaining + + double I_NMDA_; // For recording NMDA currents + + int r_; //!< number of refractory steps remaining State_( const Parameters_& ); //!< Default initialization State_( const State_& ); @@ -400,6 +404,12 @@ class iaf_wang_2002 : public ArchivingNode { return S_.y_[ elem ]; } + double + get_I_NMDA_() const + { + return S_.I_NMDA_; + } + // Data members ----------------------------------------------------------- diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index dabca33ff3..e8441ca243 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -67,6 +67,7 @@ RecordablesMap< iaf_wang_2002_exact >::create() insert_( names::s_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_AMPA > ); insert_( names::s_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_GABA > ); insert_( names::s_NMDA, &iaf_wang_2002_exact::get_s_NMDA_ ); + insert_( names::I_NMDA, &iaf_wang_2002_exact::get_I_NMDA_ ); } } /* --------------------------------------------------------------------------- @@ -404,14 +405,14 @@ nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[] // get access to node so we can almost work as in a member function assert( pnode ); - const nest::iaf_wang_2002_exact& node = *( reinterpret_cast< nest::iaf_wang_2002_exact* >( pnode ) ); + nest::iaf_wang_2002_exact& node = *( reinterpret_cast< nest::iaf_wang_2002_exact* >( pnode ) ); // ode_state[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.ode_state[]. const double I_AMPA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) * ode_state[ State_::s_AMPA ]; - const double I_rec_GABA = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::s_GABA ]; + const double I_GABA = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::s_GABA ]; // The sum of s_NMDA double total_NMDA = 0; @@ -420,10 +421,10 @@ nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[] total_NMDA += ode_state[ i ] * node.B_.weights_.at( w_idx ); } - const double I_rec_NMDA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) + node.S_.I_NMDA_ = ( ode_state[ State_::V_m ] - node.P_.E_ex ) / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ State_::V_m ] ) / 3.57 ) * total_NMDA; - const double I_syn = I_AMPA + I_rec_GABA + I_rec_NMDA - node.B_.I_stim_; + const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_ - node.B_.I_stim_; f[ State_::V_m ] = ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 9f8d149a3c..7a056e66b8 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -142,6 +142,7 @@ The following values can be recorded. s_AMPA sum of AMPA gating variables s_GABA sum of GABA gating variables s_NMDA sum of NMDA gating variables + I_NMDA NMDA currents =========== =========================================================== .. note:: @@ -301,6 +302,8 @@ class iaf_wang_2002_exact : public ArchivingNode long num_ports_; //!< Number of ports int r_; //!< number of refractory steps remaining + double I_NMDA_; // For recording NMDA currents + State_( const Parameters_& ); //!< Default initialization State_( const State_& ); @@ -408,6 +411,11 @@ class iaf_wang_2002_exact : public ArchivingNode { return S_.get_s_NMDA(); } + double + get_I_NMDA_() const + { + return S_.I_NMDA_; + } // Data members ----------------------------------------------------------- @@ -420,6 +428,7 @@ class iaf_wang_2002_exact : public ArchivingNode //! Mapping of recordables names to access functions static RecordablesMap< iaf_wang_2002_exact > recordablesMap_; + }; /* neuron iaf_wang_2002_exact */ inline size_t diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 94f78e75ea..98197f8d13 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -236,6 +236,7 @@ const Name I_ahp( "I_ahp" ); const Name I_e( "I_e" ); const Name I_h( "I_h" ); const Name I_KNa( "I_KNa" ); +const Name I_NMDA( "I_NMDA" ); const Name I_NaP( "I_NaP" ); const Name I_SIC( "I_SIC" ); const Name I_sp( "I_sp" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index afaf184770..0f76f13daa 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -262,6 +262,7 @@ extern const Name I_ahp; extern const Name I_e; extern const Name I_h; extern const Name I_KNa; +extern const Name I_NMDA; extern const Name I_NaP; extern const Name I_SIC; extern const Name I_sp; From c59f6ad22eb378623b986644e60448a212fc1074 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 6 Mar 2024 16:57:13 +0100 Subject: [PATCH 089/184] fix handle ( SpikeEvent ) method --- models/iaf_wang_2002_exact.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index e8441ca243..49fe19a5ac 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -537,16 +537,17 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) assert( e.get_rport() <= static_cast< int >( B_.spikes_.size() ) ); const double steps = e.get_rel_delivery_steps( kernel().simulation_manager.get_slice_origin() ); - const auto rport = e.get_rport(); + if ( rport < NMDA ) + { B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); - - - if ( rport >= NMDA ) + } + else // we need to scale each individual S_j variable by its weight, // so we store them { + B_.spikes_[ rport - 1 ].add_value( steps, e.get_multiplicity() ); const size_t w_idx = rport - NMDA; if ( B_.weights_[ w_idx ] != e.get_weight() ) { From d66457be75af78a5be2cba4e99092dfe226a551f Mon Sep 17 00:00:00 2001 From: janskaar Date: Sat, 9 Mar 2024 17:10:37 +0100 Subject: [PATCH 090/184] Update models/iaf_wang_2002.h Co-authored-by: Hans Ekkehard Plesser --- models/iaf_wang_2002.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index ef33b8c53d..752aee4318 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -440,7 +440,8 @@ iaf_wang_2002::handles_test_event( SpikeEvent& e, size_t receptor_type ) throw UnknownReceptorType( receptor_type, get_name() ); } - if ( receptor_type == NMDA and typeid( e.get_sender() ) != typeid( *this ) ) + const Node& sender = e.get_sender(); + if ( receptor_type == NMDA and typeid( sender ) != typeid( *this ) ) { throw IllegalConnection( "For NMDA synapses in iaf_wang_2002, pre-synaptic neuron must also be of type iaf_wang_2002" ); From 8f17ac350034677d552596b376189be4cdd90bcd Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 9 Mar 2024 17:12:58 +0100 Subject: [PATCH 091/184] fix GABA sign --- pynest/examples/wang_decision_making.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 43ddc7a26e..47d676e3a6 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -114,7 +114,7 @@ # distributed, with means mu_a and mu_b, and standard deviation # sigma. signal_start = 1000.0 -signal_duration = 2000.0 +signal_duration = 1000.0 signal_update_interval = 50.0 f = 0.15 # proportion of neurons receiving signal inputs # compute expectations of the time-inhomogeneous Poisson processes @@ -222,14 +222,14 @@ ie_syn_spec = { "synapse_model": "static_synapse", - "weight": -1.0 * g_GABA_ex, + "weight": 1.0 * g_GABA_ex, "delay": delay, "receptor_type": receptor_types["GABA"], } ii_syn_spec = { "synapse_model": "static_synapse", - "weight": -1.0 * g_GABA_in, + "weight": 1.0 * g_GABA_in, "delay": delay, "receptor_type": receptor_types["GABA"], } From 1754ee5d10329ebc94e7db37f15d6e5f52cc60cd Mon Sep 17 00:00:00 2001 From: janskaar Date: Sat, 9 Mar 2024 17:27:15 +0100 Subject: [PATCH 092/184] Update models/iaf_wang_2002.cpp Co-authored-by: Hans Ekkehard Plesser --- models/iaf_wang_2002.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 1bab4b6451..9034f31ee8 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -96,9 +96,9 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode node.S_.I_NMDA_ = ( y[ S::V_m ] - node.P_.E_ex ) / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * y[ S::s_NMDA ]; - const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_ + node.B_.I_stim_; + const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_; - f[ S::V_m ] = ( -node.P_.g_L * ( y[ S::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; + f[ S::V_m ] = ( -node.P_.g_L * ( y[ S::V_m ] - node.P_.E_L ) - I_syn + node.B_.I_stim_ ) / node.P_.C_m; f[ S::s_AMPA ] = -y[ S::s_AMPA ] / node.P_.tau_AMPA; f[ S::s_NMDA ] = -y[ S::s_NMDA ] / node.P_.tau_decay_NMDA; From d12d33123f8047cce7db830cf540800ad2fb0d2a Mon Sep 17 00:00:00 2001 From: janskaar Date: Sat, 9 Mar 2024 17:29:19 +0100 Subject: [PATCH 093/184] Update models/iaf_wang_2002_exact.cpp Co-authored-by: Hans Ekkehard Plesser --- models/iaf_wang_2002_exact.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 49fe19a5ac..141ecdeae4 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -234,8 +234,7 @@ nest::iaf_wang_2002_exact::State_::get( DictionaryDatum& d ) const def< double >( d, names::s_GABA, ode_state_[ s_GABA ] ); // total NMDA sum - double s_NMDA = get_s_NMDA(); - def< double >( d, names::s_NMDA, s_NMDA ); + def< double >( d, names::s_NMDA, get_s_NMDA() ); } void From f9f058b06170ff21d2fec3acf60a4df79b0e8943 Mon Sep 17 00:00:00 2001 From: janskaar Date: Sat, 9 Mar 2024 17:29:43 +0100 Subject: [PATCH 094/184] Update models/iaf_wang_2002_exact.cpp Co-authored-by: Hans Ekkehard Plesser --- models/iaf_wang_2002_exact.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 141ecdeae4..c6e86ab9c8 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -423,9 +423,9 @@ nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[] node.S_.I_NMDA_ = ( ode_state[ State_::V_m ] - node.P_.E_ex ) / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ State_::V_m ] ) / 3.57 ) * total_NMDA; - const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_ - node.B_.I_stim_; + const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_; - f[ State_::V_m ] = ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn ) / node.P_.C_m; + f[ State_::V_m ] = ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn + node.B_.I_stim_ ) / node.P_.C_m; f[ State_::s_AMPA ] = -ode_state[ State_::s_AMPA ] / node.P_.tau_AMPA; f[ State_::s_GABA ] = -ode_state[ State_::s_GABA ] / node.P_.tau_GABA; From ef7ca53fe7f8fa7c6fe1990a30ca52d9decdf335 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sun, 10 Mar 2024 21:37:56 +0100 Subject: [PATCH 095/184] reintroduce constant weight requirement --- models/iaf_wang_2002_exact.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 49fe19a5ac..05f83a8275 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -541,18 +541,24 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) if ( rport < NMDA ) { - B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); + B_.spikes_[ rport - 1 ].add_value( steps, e.get_weight() * e.get_multiplicity() ); } else // we need to scale each individual S_j variable by its weight, // so we store them { B_.spikes_[ rport - 1 ].add_value( steps, e.get_multiplicity() ); + // since we scale entire S_j variable by the weight it also affects previous spikes. + // we therefore require them to be constant. const size_t w_idx = rport - NMDA; - if ( B_.weights_[ w_idx ] != e.get_weight() ) + if ( B_.weights_[ w_idx ] == 0 ) { B_.weights_[ w_idx ] = e.get_weight(); } + else if ( B_.weights_[ w_idx ] != e.get_weight() ) + { + throw KernelException( "iaf_wang_2002_exact requires constant weights." ); + } } } From 7a0bffc38f8f54c16bbf6ed098a57f1cdcdd566d Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sun, 10 Mar 2024 21:43:45 +0100 Subject: [PATCH 096/184] clang-format --- models/iaf_wang_2002_exact.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 707fa424bf..6c9d074e73 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -425,7 +425,8 @@ nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[] const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_; - f[ State_::V_m ] = ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn + node.B_.I_stim_ ) / node.P_.C_m; + f[ State_::V_m ] = + ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn + node.B_.I_stim_ ) / node.P_.C_m; f[ State_::s_AMPA ] = -ode_state[ State_::s_AMPA ] / node.P_.tau_AMPA; f[ State_::s_GABA ] = -ode_state[ State_::s_GABA ] / node.P_.tau_GABA; From 4be3dcafbf8b195e8aef8353a8122aba1ee9880e Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sun, 10 Mar 2024 23:32:50 +0100 Subject: [PATCH 097/184] ignore iaf_wang_2002 --- testsuite/regressiontests/ticket-618.sli | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/regressiontests/ticket-618.sli b/testsuite/regressiontests/ticket-618.sli index dd4d84d51f..4ffc745248 100644 --- a/testsuite/regressiontests/ticket-618.sli +++ b/testsuite/regressiontests/ticket-618.sli @@ -46,7 +46,7 @@ Author: Hans Ekkehard Plesser, 2012-12-11 M_ERROR setverbosity -/excluded_models [ /eprop_iaf_bsshslm_2020 /eprop_iaf_adapt_bsshslm_2020 /eprop_readout_bsshslm_2020 ] def +/excluded_models [ /eprop_iaf_bsshslm_2020 /eprop_iaf_adapt_bsshslm_2020 /eprop_readout_bsshslm_2020 /iaf_wang_2002 ] def { GetKernelStatus /node_models get From 1473fe7601bd34f87069948a44ed0fa40dc44cfe Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 11 Mar 2024 11:51:12 +0100 Subject: [PATCH 098/184] remove s_NMDA recording, update tests --- models/iaf_wang_2002.cpp | 1 - models/iaf_wang_2002.h | 1 - models/iaf_wang_2002_exact.cpp | 4 - models/iaf_wang_2002_exact.h | 20 +--- testsuite/pytests/test_iaf_wang_2002.py | 104 +++++++++++------ testsuite/pytests/test_iaf_wang_2002_exact.py | 110 +++++++++++++----- 6 files changed, 149 insertions(+), 91 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 9034f31ee8..45812b6595 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -71,7 +71,6 @@ RecordablesMap< iaf_wang_2002 >::create() insert_( names::V_m, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::V_m > ); insert_( names::s_AMPA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_AMPA > ); insert_( names::s_GABA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_GABA > ); - insert_( names::s_NMDA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_NMDA > ); insert_( names::I_NMDA, &iaf_wang_2002::get_I_NMDA_ ); } } diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 752aee4318..d924e9038d 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -150,7 +150,6 @@ The following values can be recorded. V_m Membrane potential s_AMPA sum of AMPA gating variables s_GABA sum of GABA gating variables - s_NMDA sum of NMDA gating variables I_NMDA NMDA current =========== =========================================================== diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 6c9d074e73..95eecb2454 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -66,7 +66,6 @@ RecordablesMap< iaf_wang_2002_exact >::create() insert_( names::V_m, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::V_m > ); insert_( names::s_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_AMPA > ); insert_( names::s_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_GABA > ); - insert_( names::s_NMDA, &iaf_wang_2002_exact::get_s_NMDA_ ); insert_( names::I_NMDA, &iaf_wang_2002_exact::get_I_NMDA_ ); } } @@ -232,9 +231,6 @@ nest::iaf_wang_2002_exact::State_::get( DictionaryDatum& d ) const def< double >( d, names::V_m, ode_state_[ V_m ] ); // Membrane potential def< double >( d, names::s_AMPA, ode_state_[ s_AMPA ] ); def< double >( d, names::s_GABA, ode_state_[ s_GABA ] ); - - // total NMDA sum - def< double >( d, names::s_NMDA, get_s_NMDA() ); } void diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 7a056e66b8..874a23f326 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -141,7 +141,6 @@ The following values can be recorded. V_m Membrane potential s_AMPA sum of AMPA gating variables s_GABA sum of GABA gating variables - s_NMDA sum of NMDA gating variables I_NMDA NMDA currents =========== =========================================================== @@ -309,18 +308,6 @@ class iaf_wang_2002_exact : public ArchivingNode void get( DictionaryDatum& ) const; void set( const DictionaryDatum&, const Parameters_&, Node* ); - - //! Get the sum of NMDA over all presynaptic neurons - double - get_s_NMDA() const - { - double NMDA_sum = 0.0; - for ( size_t i = s_NMDA_base + 1; i < state_vec_size; i += 2 ) - { - NMDA_sum += ode_state_[ i ]; - } - return NMDA_sum; - } }; private: @@ -405,12 +392,7 @@ class iaf_wang_2002_exact : public ArchivingNode return S_.ode_state_[ elem ]; } - //! Get the sum of NMDA from state, used by UniversalDataLogger - double - get_s_NMDA_() const - { - return S_.get_s_NMDA(); - } + //! Get NMDA current from state, used by UniversalDataLogger double get_I_NMDA_() const { diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 757a63a256..5fb94a86e3 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -20,18 +20,17 @@ # along with NEST. If not, see . """ -Tests synaptic dynamics and connections of the approximate model iaf_wang_2002. +Tests dynamics and connections of the approximate model iaf_wang_2002. Since the neuron is conductance based, it is impossible to analytically -confirm the membrane potential, but all the synaptic currents can be -computed analytically (for the simplified implementation we use). -The integration of the membrane potential is not tested here. - -Also tests that an error is correctly raised when an NMDA-connection +confirm the membrane potential. We therefore test that without the NMDA- +currents, we get the same results as from an iaf_cond_exp neuron, and +that with NMDA-currents, we get a larger V_m. +We then test the AMPA and GABA gating variables against analytical soluton. +We also test that an error is correctly raised when an NMDA-connection from neuron other than iaf_wang_2002 is made. """ - import nest import numpy as np import numpy.testing as nptest @@ -40,11 +39,6 @@ w_ex = 40.0 w_in = 15.0 -alpha = 0.5 -tau_AMPA = 2.0 -tau_GABA = 5.0 -tau_rise_NMDA = 1.8 -tau_decay_NMDA = 100.0 def s_soln(w, t, tau): @@ -93,48 +87,90 @@ def spiketrain_response_nmda(t, spiketrain): def test_wang(): - # Create 2 neurons, so that the Wang dynamics are present - nrn1 = nest.Create( - "iaf_wang_2002", - {"tau_AMPA": tau_AMPA, "tau_GABA": tau_GABA, "tau_decay_NMDA": tau_decay_NMDA, "tau_rise_NMDA": tau_rise_NMDA}, - ) + """ + Creates 4 neurons. + nrn1: pre-synaptic iaf_psc_wang + nrn2: post-synaptic iaf_psc_wang, will have AMPA, GABA and NMDA synapses + nrn3: post-synaptic iaf_psc_wang, will only have AMPA and GABA + nrn4: post-synaptic iaf_psc_exp, will only have AMPA and GABA + + We test that nrn3 and nrn4 have identical V_m. + We test that nrn2 has greater V_m compared to nrn3. + We test that s_AMPA and s_GABA have the correct analytical solution. + """ - nrn2 = nest.Create( - "iaf_wang_2002", - { - "tau_AMPA": tau_AMPA, - "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_decay_NMDA, - "tau_rise_NMDA": tau_rise_NMDA, - "t_ref": 0.0, - }, + cond_exp_params = { + "tau_syn_in": 5.0, # GABA decay time constant + "tau_syn_ex": 2.0, # AMPA decay time constant + "g_L": 25.0, # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold + "C_m": 500.0, # membrane capacitance + "t_ref": 0.0, # refreactory period + } + + wang_params = cond_exp_params.copy() + wang_params.pop("tau_syn_in") + wang_params.pop("tau_syn_ex") + wang_params.update( + tau_GABA=cond_exp_params["tau_syn_in"], # GABA decay time constant + tau_AMPA=cond_exp_params["tau_syn_ex"], # AMPA decay time constant + tau_decay_NMDA=100.0, # NMDA decay time constant + tau_rise_NMDA=2.0, # NMDA rise time constant + alpha=0.5, # NMDA parameter + conc_Mg2=1.0, # Magnesium concentration ) + nrn1 = nest.Create("iaf_wang_2002", wang_params) + nrn2 = nest.Create("iaf_wang_2002", wang_params) + nrn3 = nest.Create("iaf_wang_2002", wang_params) + nrn4 = nest.Create("iaf_cond_exp", cond_exp_params) + receptor_types = nrn1.get("receptor_types") pg = nest.Create("poisson_generator", {"rate": 50.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) mm1 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} ) mm2 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + ) + mm3 = nest.Create( + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} ) + mm4 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) + # for post-synaptic iaf_psc_wang ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} - gaba_syn_spec = {"weight": w_in, "receptor_type": receptor_types["GABA"]} - nmda_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["NMDA"]} + # for post-synaptic iaf_cond_exp + ex_syn_spec = {"weight": w_ex} + in_syn_spec = {"weight": -w_in} + nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) nest.Connect(nrn1, sr) + nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec) nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec) nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + + nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec) + nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec) + + nest.Connect(nrn1, nrn4, syn_spec=ex_syn_spec) + nest.Connect(nrn1, nrn4, syn_spec=in_syn_spec) + nest.Connect(mm1, nrn1) nest.Connect(mm2, nrn2) + nest.Connect(mm3, nrn3) + nest.Connect(mm4, nrn4) nest.Simulate(1000.0) @@ -142,13 +178,13 @@ def test_wang(): # compute analytical solutions times = mm1.get("events", "times") * nest.resolution - ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) - nmda_soln = spiketrain_response_nmda(times, spikes) - gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) + ampa_soln = spiketrain_response(times, wang_params["tau_AMPA"], spikes, w_ex) + gaba_soln = spiketrain_response(times, wang_params["tau_GABA"], spikes, np.abs(w_in)) + nptest.assert_array_equal(mm3.events["V_m"], mm4.events["V_m"]) + assert (mm2.events["V_m"] >= mm3.events["V_m"]).all() nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) - nptest.assert_array_almost_equal(nmda_soln, mm2.events["s_NMDA"]) def test_illegal_connection_error(): diff --git a/testsuite/pytests/test_iaf_wang_2002_exact.py b/testsuite/pytests/test_iaf_wang_2002_exact.py index 8582f61db2..a0e2d6da05 100644 --- a/testsuite/pytests/test_iaf_wang_2002_exact.py +++ b/testsuite/pytests/test_iaf_wang_2002_exact.py @@ -20,11 +20,13 @@ # along with NEST. If not, see . """ -Tests synaptic dynamics of the exact model iaf_wang_2002_exact. +Tests dynamics of the model iaf_wang_2002_exact. Since the neuron is conductance based, it is impossible to analytically -confirm the membrane potential. We can confirm the AMPA and GABA values -exactly, and upper and lower bounds on the NMDA values. +confirm the membrane potential. We therefore test that without the NMDA- +currents, we get the same results as from an iaf_cond_exp neuron, and +that with NMDA-currents, we get a larger V_m. +We then test the AMPA and GABA gating variables against analytical soluton. """ @@ -32,15 +34,9 @@ import numpy as np import numpy.testing as nptest import pytest -from scipy.special import expn, gamma w_ex = 40.0 w_in = 15.0 -alpha = 0.5 -tau_AMPA = 2.0 -tau_GABA = 5.0 -tau_rise_NMDA = 1.8 -tau_decay_NMDA = 100.0 def s_soln(w, t, tau): @@ -55,7 +51,15 @@ def s_soln(w, t, tau): def spiketrain_response(t, tau, spiketrain, w): """ - Response for AMPA/NMDA + Creates 4 neurons. + nrn1: pre-synaptic iaf_psc_wang + nrn2: post-synaptic iaf_psc_wang, will have AMPA, GABA and NMDA synapses + nrn3: post-synaptic iaf_psc_wang, will only have AMPA and GABA + nrn4: post-synaptic iaf_psc_exp, will only have AMPA and GABA + + We test that nrn3 and nrn4 have identical V_m. + We test that nrn2 has greater V_m compared to nrn3. + We test that s_AMPA and s_GABA have the correct analytical solution. """ response = np.zeros_like(t) @@ -67,47 +71,90 @@ def spiketrain_response(t, tau, spiketrain, w): def test_wang(): - # Create 2 neurons, so that the Wang dynamics are present - nrn1 = nest.Create( - "iaf_wang_2002_exact", - {"tau_AMPA": tau_AMPA, "tau_GABA": tau_GABA, "tau_decay_NMDA": tau_decay_NMDA, "tau_rise_NMDA": tau_rise_NMDA}, - ) + """ + Creates 4 neurons. + nrn1: pre-synaptic iaf_psc_wang + nrn2: post-synaptic iaf_psc_wang, will have AMPA, GABA and NMDA synapses + nrn3: post-synaptic iaf_psc_wang, will only have AMPA and GABA + nrn4: post-synaptic iaf_psc_exp, will only have AMPA and GABA + + We test that nrn3 and nrn4 have identical V_m. + We test that nrn2 has greater V_m compared to nrn3. + We test that s_AMPA and s_GABA have the correct analytical solution. + """ - nrn2 = nest.Create( - "iaf_wang_2002_exact", - { - "tau_AMPA": tau_AMPA, - "tau_GABA": tau_GABA, - "tau_decay_NMDA": tau_decay_NMDA, - "tau_rise_NMDA": tau_rise_NMDA, - "t_ref": 0.0, - }, + cond_exp_params = { + "tau_syn_in": 5.0, # GABA decay time constant + "tau_syn_ex": 2.0, # AMPA decay time constant + "g_L": 25.0, # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold + "C_m": 500.0, # membrane capacitance + "t_ref": 0.0, # refreactory period + } + + wang_params = cond_exp_params.copy() + wang_params.pop("tau_syn_in") + wang_params.pop("tau_syn_ex") + wang_params.update( + tau_GABA=cond_exp_params["tau_syn_in"], # GABA decay time constant + tau_AMPA=cond_exp_params["tau_syn_ex"], # AMPA decay time constant + tau_decay_NMDA=100.0, # NMDA decay time constant + tau_rise_NMDA=2.0, # NMDA rise time constant + alpha=0.5, # NMDA parameter + conc_Mg2=1.0, # Magnesium concentration ) + nrn1 = nest.Create("iaf_wang_2002", wang_params) + nrn2 = nest.Create("iaf_wang_2002", wang_params) + nrn3 = nest.Create("iaf_wang_2002", wang_params) + nrn4 = nest.Create("iaf_cond_exp", cond_exp_params) + receptor_types = nrn1.get("receptor_types") pg = nest.Create("poisson_generator", {"rate": 50.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) mm1 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} ) mm2 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_NMDA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + ) + mm3 = nest.Create( + "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} ) + mm4 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) + # for post-synaptic iaf_psc_wang ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} - gaba_syn_spec = {"weight": w_in, "receptor_type": receptor_types["GABA"]} nmda_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["NMDA"]} + # for post-synaptic iaf_cond_exp + ex_syn_spec = {"weight": w_ex} + in_syn_spec = {"weight": -w_in} + nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) nest.Connect(nrn1, sr) + nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec) nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec) nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + + nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec) + nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec) + + nest.Connect(nrn1, nrn4, syn_spec=ex_syn_spec) + nest.Connect(nrn1, nrn4, syn_spec=in_syn_spec) + nest.Connect(mm1, nrn1) nest.Connect(mm2, nrn2) + nest.Connect(mm3, nrn3) + nest.Connect(mm4, nrn4) nest.Simulate(1000.0) @@ -115,11 +162,10 @@ def test_wang(): # compute analytical solutions times = mm1.get("events", "times") * nest.resolution - ampa_soln = spiketrain_response(times, tau_AMPA, spikes, w_ex) - gaba_soln = spiketrain_response(times, tau_GABA, spikes, np.abs(w_in)) + ampa_soln = spiketrain_response(times, wang_params["tau_AMPA"], spikes, w_ex) + gaba_soln = spiketrain_response(times, wang_params["tau_GABA"], spikes, np.abs(w_in)) + nptest.assert_array_equal(mm3.events["V_m"], mm4.events["V_m"]) + assert (mm2.events["V_m"] >= mm3.events["V_m"]).all() nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) - - assert mm2.events["s_NMDA"].max() < w_ex - assert mm2.events["s_NMDA"].min() >= 0.0 From 5ef7c71f7fc282d265d9a4c0a2285342c2d808f1 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 11 Mar 2024 11:54:03 +0100 Subject: [PATCH 099/184] check that tau_NMDA_rise gte 0 --- models/iaf_wang_2002.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 45812b6595..d92f1b126b 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -229,7 +229,7 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) { throw BadProperty( "Refractory time cannot be negative." ); } - if ( tau_AMPA <= 0 or tau_GABA <= 0 or tau_decay_NMDA <= 0 ) + if ( tau_AMPA <= 0 or tau_GABA <= 0 or tau_decay_NMDA <= 0 or tau_rise_NMDA <= 0 ) { throw BadProperty( "All time constants must be strictly positive." ); } From 1f6b41df6338a5b5cf221860fa3ca4233eba14c6 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 11 Mar 2024 12:03:38 +0100 Subject: [PATCH 100/184] remove unused code --- testsuite/pytests/test_iaf_wang_2002.py | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 5fb94a86e3..5457711a3b 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -26,7 +26,8 @@ confirm the membrane potential. We therefore test that without the NMDA- currents, we get the same results as from an iaf_cond_exp neuron, and that with NMDA-currents, we get a larger V_m. -We then test the AMPA and GABA gating variables against analytical soluton. +We then test the AMPA and GABA gating variables against analytical solution, +and NMDA synamptic current against analytical solution. We also test that an error is correctly raised when an NMDA-connection from neuron other than iaf_wang_2002 is made. """ @@ -64,28 +65,6 @@ def spiketrain_response(t, tau, spiketrain, w): return response -def spiketrain_response_nmda(t, spiketrain): - """ - Response for NMDA - """ - tr = tau_rise_NMDA / tau_decay_NMDA - at = alpha * tau_rise_NMDA - expn = gammaincc(1 - tr, at) * gamma(1 - tr) * at ** (tr - 1) - - k_0 = -expn * at + at**tr * gamma(1 - tr) - k_1 = np.exp(-alpha * tau_rise_NMDA) - 1 - - response = np.zeros_like(t) - for sp in spiketrain: - t_ = t - 1.0 - sp - zero_arg = t_ == 0.0 - s0 = response[zero_arg] - w = k_0 + k_1 * s0 - response += s_soln(w, t_, tau_decay_NMDA) - response *= w_ex - return response - - def test_wang(): """ Creates 4 neurons. From 829a351f08d93f07776564ca306013aefc40369f Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 11 Mar 2024 12:42:17 +0100 Subject: [PATCH 101/184] add extra params for iaf_wang_2002* --- .../pytests/sli2py_neurons/test_neurons_handle_multiplicity.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py b/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py index 4490bc6485..b5e5e06eac 100644 --- a/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py +++ b/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py @@ -87,6 +87,8 @@ "receptor_type": 1, }, "ht_neuron": {"receptor_type": 1}, + "iaf_wang_2002": {"receptor_type": 1}, # cannot test NMDA port since pre-synaptic + "iaf_wang_2002_exact": {"receptor_type": 1}, # also must be of same neuron type in that case } From 338824c9023dc7e5b10963eed2e20d323de25808 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 11 Mar 2024 12:46:51 +0100 Subject: [PATCH 102/184] black --- .../sli2py_neurons/test_neurons_handle_multiplicity.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py b/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py index b5e5e06eac..a7e83d9666 100644 --- a/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py +++ b/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py @@ -87,8 +87,8 @@ "receptor_type": 1, }, "ht_neuron": {"receptor_type": 1}, - "iaf_wang_2002": {"receptor_type": 1}, # cannot test NMDA port since pre-synaptic - "iaf_wang_2002_exact": {"receptor_type": 1}, # also must be of same neuron type in that case + "iaf_wang_2002": {"receptor_type": 1}, # cannot test NMDA port since pre-synaptic + "iaf_wang_2002_exact": {"receptor_type": 1}, # also must be of same neuron type in that case } From 8afd569b2bb97990694a65145b14fd542ba8006f Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 11 Mar 2024 13:22:35 +0100 Subject: [PATCH 103/184] add extra params to iaf_wang_2002_* --- testsuite/pytests/sli2py_recording/test_multimeter_stepping.py | 2 ++ testsuite/pytests/sli2py_regressions/test_issue_77.py | 2 ++ testsuite/pytests/test_refractory.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/testsuite/pytests/sli2py_recording/test_multimeter_stepping.py b/testsuite/pytests/sli2py_recording/test_multimeter_stepping.py index 6eb1d76b6c..83cb4e2f92 100644 --- a/testsuite/pytests/sli2py_recording/test_multimeter_stepping.py +++ b/testsuite/pytests/sli2py_recording/test_multimeter_stepping.py @@ -72,6 +72,8 @@ "aeif_cond_alpha_multisynapse": {"receptor_type": 1}, "aeif_cond_beta_multisynapse": {"receptor_type": 1}, "pp_cond_exp_mc_urbanczik": {"receptor_type": 1}, + "iaf_wang_2002": {"receptor_type": 1}, + "iaf_wang_2002_exact": {"receptor_type": 1}, } # Obtain all models with non-empty recordables list diff --git a/testsuite/pytests/sli2py_regressions/test_issue_77.py b/testsuite/pytests/sli2py_regressions/test_issue_77.py index aad0849b88..43f7dfbce7 100644 --- a/testsuite/pytests/sli2py_regressions/test_issue_77.py +++ b/testsuite/pytests/sli2py_regressions/test_issue_77.py @@ -89,6 +89,8 @@ }, "ht_neuron": {"receptor_type": 1}, "pp_cond_exp_mc_urbanczik": {"receptor_type": 1}, + "iaf_wang_2002": {"receptor_type": 1}, + "iaf_wang_2002_exact": {"receptor_type": 1}, } models = [ diff --git a/testsuite/pytests/test_refractory.py b/testsuite/pytests/test_refractory.py index 3050d9950b..178f8f85fd 100644 --- a/testsuite/pytests/test_refractory.py +++ b/testsuite/pytests/test_refractory.py @@ -86,6 +86,8 @@ "step_rate_generator", # No regular neuron model "eprop_readout_bsshslm_2020", # This one does not spike "iaf_tum_2000", # Hijacks the offset field, see #2912 + "iaf_wang_2002", # Hijacks the offset field, see #2912 + "iaf_wang_2002_exact", # Hijacks the offset field, see #2912 ] tested_models = [ From 247f1e05b64e93659d106f6fd3b5dbe175eeb580 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 12 Mar 2024 10:41:54 +0100 Subject: [PATCH 104/184] expand decision making example --- pynest/examples/wang_decision_making.py | 777 ++++++++++++------------ 1 file changed, 387 insertions(+), 390 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 47d676e3a6..c499ffd0c9 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -53,400 +53,397 @@ model = "iaf_wang_2002" dt = 0.1 -nest.set(resolution=dt, print_time=True) - -################################################## -# Set parameter values, taken from [1]_. - -# conductances excitatory population -# fmt: off -g_AMPA_ex = 0.05 # recurrent AMPA conductance -g_AMPA_ext_ex = 2.1 # external AMPA conductance -g_NMDA_ex = 0.165 # recurrent GABA conductance -g_GABA_ex = 1.3 # recurrent GABA conductance - -# conductances inhibitory population -g_AMPA_in = 0.04 # recurrent AMPA conductance -g_AMPA_ext_in = 1.62 # external AMPA conductance -g_NMDA_in = 0.13 # recurrent GABA conductance -g_GABA_in = 1.0 # recurrent GABA conductance - -# neuron parameters -epop_params = { - "tau_GABA": 5.0, # GABA decay time constant - "tau_AMPA": 2.0, # AMPA decay time constant - "tau_decay_NMDA": 100.0, # NMDA decay time constant - "tau_rise_NMDA": 2.0, # NMDA rise time constant - "alpha": 0.5, # NMDA parameter - "conc_Mg2": 1.0, # Magnesium concentration - "g_L": 25.0, # leak conductance - "E_L": -70.0, # leak reversal potential - "E_ex": 0.0, # excitatory reversal potential - "E_in": -70.0, # inhibitory reversal potential - "V_reset": -55.0, # reset potential - "V_th": -50.0, # threshold - "C_m": 500.0, # membrane capacitance - "t_ref": 2.0, # refreactory period -} - -ipop_params = { - "tau_GABA": 5.0, # GABA decay time constant - "tau_AMPA": 2.0, # AMPA decay time constant - "tau_decay_NMDA": 100.0, # NMDA decay time constant - "tau_rise_NMDA": 2.0, # NMDA rise time constant - "alpha": 0.5, # NMDA parameter - "conc_Mg2": 1.0, # Magnesium concentration - "g_L": 20.0, # leak conductance - "E_L": -70.0, # leak reversal potential - "E_ex": 0.0, # excitatory reversal potential - "E_in": -70.0, # inhibitory reversal potential - "V_reset": -55.0, # reset potential - "V_th": -50.0, # threshold - "C_m": 200.0, # membrane capacitance - "t_ref": 1.0, # refreactory period -} -# fmt: on - -# signals to the two different excitatory sub-populations -# the signal is given by a time-inhomogeneous Poisson process, -# where the expectations are constant over intervals of 50ms, -# and then change. The values for each interval are normally -# distributed, with means mu_a and mu_b, and standard deviation -# sigma. -signal_start = 1000.0 -signal_duration = 1000.0 -signal_update_interval = 50.0 -f = 0.15 # proportion of neurons receiving signal inputs -# compute expectations of the time-inhomogeneous Poisson processes -mu_0 = 40.0 # base rate -rho_a = mu_0 / 100 # scaling factors coherence -rho_b = rho_a -c = 0.0 # coherence -sigma = 4.0 # standard deviation -mu_a = mu_0 + rho_a * c # expectation for pop A -mu_b = mu_0 - rho_b * c # expectation for pop B - -# sample values for the Poisson process -num_updates = int(signal_duration / signal_update_interval) -update_times = np.arange(0, signal_duration, signal_update_interval) -update_times[0] = 0.1 -rates_a = np.random.normal(mu_a, sigma, size=num_updates) -rates_b = np.random.normal(mu_b, sigma, size=num_updates) - -# synaptic weights -w_plus = 1.7 -w_minus = 1 - f * (w_plus - 1) / (1 - f) - - -delay = 0.5 # number of neurons in each population NE = 1600 NI = 400 -################################################## -# Create neurons and devices - -selective_pop1 = nest.Create(model, int(f * NE), params=epop_params) -selective_pop2 = nest.Create(model, int(f * NE), params=epop_params) -nonselective_pop = nest.Create(model, int((1 - 2 * f) * NE), params=epop_params) -inhibitory_pop = nest.Create(model, NI, params=ipop_params) - -poisson_a = nest.Create( - "inhomogeneous_poisson_generator", - params={ - "origin": signal_start - 0.1, - "start": 0.0, - "stop": signal_duration, - "rate_times": update_times, - "rate_values": rates_a, - }, -) - -poisson_b = nest.Create( - "inhomogeneous_poisson_generator", - params={ - "origin": signal_start - 0.1, - "start": 0.0, - "stop": signal_duration, - "rate_times": update_times, - "rate_values": rates_b, - }, -) - -poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.0}) - -sr_nonselective = nest.Create("spike_recorder") -sr_selective1 = nest.Create("spike_recorder") -sr_selective2 = nest.Create("spike_recorder") -sr_inhibitory = nest.Create("spike_recorder") - -mm_selective1 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) -mm_selective2 = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) -mm_nonselective = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) -mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_NMDA", "s_AMPA", "s_GABA"]}) - - -################################################## -# Define synapse specifications - -receptor_types = selective_pop1[0].get("receptor_types") - -syn_spec_pot_AMPA = { - "synapse_model": "static_synapse", - "weight": w_plus * g_AMPA_ex, - "delay": delay, - "receptor_type": receptor_types["AMPA"], -} -syn_spec_pot_NMDA = { - "synapse_model": "static_synapse", - "weight": w_plus * g_NMDA_ex, - "delay": delay, - "receptor_type": receptor_types["NMDA"], -} - -syn_spec_dep_AMPA = { - "synapse_model": "static_synapse", - "weight": w_minus * g_AMPA_ex, - "delay": delay, - "receptor_type": receptor_types["AMPA"], -} - -syn_spec_dep_NMDA = { - "synapse_model": "static_synapse", - "weight": w_minus * g_NMDA_ex, - "delay": delay, - "receptor_type": receptor_types["NMDA"], -} - -ie_syn_spec = { - "synapse_model": "static_synapse", - "weight": 1.0 * g_GABA_ex, - "delay": delay, - "receptor_type": receptor_types["GABA"], -} - -ii_syn_spec = { - "synapse_model": "static_synapse", - "weight": 1.0 * g_GABA_in, - "delay": delay, - "receptor_type": receptor_types["GABA"], -} - -ei_syn_spec_AMPA = { - "synapse_model": "static_synapse", - "weight": 1.0 * g_AMPA_in, - "delay": delay, - "receptor_type": receptor_types["AMPA"], -} - -ei_syn_spec_NMDA = { - "synapse_model": "static_synapse", - "weight": 1.0 * g_NMDA_in, - "delay": delay, - "receptor_type": receptor_types["NMDA"], -} - -ee_syn_spec_AMPA = { - "synapse_model": "static_synapse", - "weight": 1.0 * g_AMPA_ex, - "delay": delay, - "receptor_type": receptor_types["AMPA"], -} - -ee_syn_spec_NMDA = { - "synapse_model": "static_synapse", - "weight": 1.0 * g_NMDA_ex, - "delay": delay, - "receptor_type": receptor_types["NMDA"], -} - -exte_syn_spec = { - "synapse_model": "static_synapse", - "weight": g_AMPA_ext_ex, - "delay": 0.1, - "receptor_type": receptor_types["AMPA"], -} - -exti_syn_spec = { - "synapse_model": "static_synapse", - "weight": g_AMPA_ext_in, - "delay": 0.1, - "receptor_type": receptor_types["AMPA"], -} - - -################################################## -# Create connections - -# from external -nest.Connect( - poisson_0, nonselective_pop + selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec -) -nest.Connect(poisson_0, inhibitory_pop, conn_spec="all_to_all", syn_spec=exti_syn_spec) - -nest.Connect(poisson_a, selective_pop1, conn_spec="all_to_all", syn_spec=exte_syn_spec) -nest.Connect(poisson_b, selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec) - -# from nonselective pop -nest.Connect(nonselective_pop, selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_AMPA) -nest.Connect(nonselective_pop, selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_NMDA) - -nest.Connect(nonselective_pop, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_AMPA) -nest.Connect(nonselective_pop, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_NMDA) - -nest.Connect(nonselective_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_AMPA) -nest.Connect(nonselective_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_NMDA) - -nest.Connect(nonselective_pop, sr_nonselective) - -# from selective pops -nest.Connect(selective_pop1, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_pot_AMPA) -nest.Connect(selective_pop1, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_pot_NMDA) - -nest.Connect(selective_pop2, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_pot_AMPA) -nest.Connect(selective_pop2, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_pot_NMDA) - -nest.Connect(selective_pop1, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_AMPA) -nest.Connect(selective_pop1, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_NMDA) - -nest.Connect(selective_pop2, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_dep_AMPA) -nest.Connect(selective_pop2, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_dep_NMDA) - -nest.Connect(selective_pop1 + selective_pop2, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_AMPA) -nest.Connect(selective_pop1 + selective_pop2, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_NMDA) - -nest.Connect(selective_pop1 + selective_pop2, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_AMPA) -nest.Connect(selective_pop1 + selective_pop2, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_NMDA) - -nest.Connect(selective_pop1, sr_selective1) -nest.Connect(selective_pop2, sr_selective2) - -# from inhibitory pop -nest.Connect( - inhibitory_pop, selective_pop1 + selective_pop2 + nonselective_pop, conn_spec="all_to_all", syn_spec=ie_syn_spec -) -nest.Connect(inhibitory_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ii_syn_spec) - -nest.Connect(inhibitory_pop, sr_inhibitory) - -# multimeters record from single neuron from each population. -# since the network is fully connected, it's the same for all -# neurons in the same population. -nest.Connect(mm_selective1, selective_pop1[0]) -nest.Connect(mm_selective2, selective_pop2[0]) -nest.Connect(mm_nonselective, nonselective_pop[0]) -nest.Connect(mm_inhibitory, inhibitory_pop[0]) - -################################################## -# Run simulation -nest.Simulate(5000.0) - - -################################################## -# Collect data from simulation -spikes_nonselective = sr_nonselective.get("events", "times") -spikes_selective1 = sr_selective1.get("events", "times") -spikes_selective2 = sr_selective2.get("events", "times") -spikes_inhibitory = sr_inhibitory.get("events", "times") - -vm_nonselective = mm_nonselective.get("events", "V_m") -s_AMPA_nonselective = mm_nonselective.get("events", "s_AMPA") -s_GABA_nonselective = mm_nonselective.get("events", "s_GABA") -s_NMDA_nonselective = mm_nonselective.get("events", "s_NMDA") - -vm_selective1 = mm_selective1.get("events", "V_m") -s_AMPA_selective1 = mm_selective1.get("events", "s_AMPA") -s_GABA_selective1 = mm_selective1.get("events", "s_GABA") -s_NMDA_selective1 = mm_selective1.get("events", "s_NMDA") +def run_sim(coherence, seed=123): + nest.ResetKernel() + nest.set(resolution=dt, print_time=True, rng_seed=seed) + ################################################## + # Set parameter values, taken from [1]_. + + # conductances excitatory population + # fmt: off + g_AMPA_ex = 0.05 # recurrent AMPA conductance + g_AMPA_ext_ex = 2.1 # external AMPA conductance + g_NMDA_ex = 0.165 # recurrent GABA conductance + g_GABA_ex = 1.3 # recurrent GABA conductance + + # conductances inhibitory population + g_AMPA_in = 0.04 # recurrent AMPA conductance + g_AMPA_ext_in = 1.62 # external AMPA conductance + g_NMDA_in = 0.13 # recurrent GABA conductance + g_GABA_in = 1.0 # recurrent GABA conductance + + # neuron parameters + epop_params = { + "tau_GABA": 5.0, # GABA decay time constant + "tau_AMPA": 2.0, # AMPA decay time constant + "tau_decay_NMDA": 100.0, # NMDA decay time constant + "tau_rise_NMDA": 2.0, # NMDA rise time constant + "alpha": 0.5, # NMDA parameter + "conc_Mg2": 1.0, # Magnesium concentration + "g_L": 25.0, # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold + "C_m": 500.0, # membrane capacitance + "t_ref": 2.0, # refreactory period + } + + ipop_params = { + "tau_GABA": 5.0, # GABA decay time constant + "tau_AMPA": 2.0, # AMPA decay time constant + "tau_decay_NMDA": 100.0, # NMDA decay time constant + "tau_rise_NMDA": 2.0, # NMDA rise time constant + "alpha": 0.5, # NMDA parameter + "conc_Mg2": 1.0, # Magnesium concentration + "g_L": 20.0, # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold + "C_m": 200.0, # membrane capacitance + "t_ref": 1.0, # refreactory period + } + # fmt: on + + # signals to the two different excitatory sub-populations + # the signal is given by a time-inhomogeneous Poisson process, + # where the expectations are constant over intervals of 50ms, + # and then change. The values for each interval are normally + # distributed, with means mu_a and mu_b, and standard deviation + # sigma. + signal_start = 1000.0 + signal_duration = 1000.0 + signal_update_interval = 50.0 + f = 0.15 # proportion of neurons receiving signal inputs + # compute expectations of the time-inhomogeneous Poisson processes + mu_0 = 40.0 # base rate + rho_a = mu_0 / 100 # scaling factors coherence + rho_b = rho_a + sigma = 4.0 # standard deviation + mu_a = mu_0 + rho_a * coherence # expectation for pop A + mu_b = mu_0 - rho_b * coherence # expectation for pop B + + # sample values for the Poisson process + num_updates = int(signal_duration / signal_update_interval) + update_times = np.arange(0, signal_duration, signal_update_interval) + update_times[0] = 0.1 + rates_a = np.random.normal(mu_a, sigma, size=num_updates) + rates_b = np.random.normal(mu_b, sigma, size=num_updates) + + # synaptic weights + w_plus = 1.7 + w_minus = 1 - f * (w_plus - 1) / (1 - f) + + delay = 0.5 + + ################################################## + # Create neurons and devices + + selective_pop1 = nest.Create(model, int(f * NE), params=epop_params) + selective_pop2 = nest.Create(model, int(f * NE), params=epop_params) + nonselective_pop = nest.Create(model, int((1 - 2 * f) * NE), params=epop_params) + inhibitory_pop = nest.Create(model, NI, params=ipop_params) + + poisson_a = nest.Create( + "inhomogeneous_poisson_generator", + params={ + "origin": signal_start - 0.1, + "start": 0.0, + "stop": signal_duration, + "rate_times": update_times, + "rate_values": rates_a, + }, + ) + + poisson_b = nest.Create( + "inhomogeneous_poisson_generator", + params={ + "origin": signal_start - 0.1, + "start": 0.0, + "stop": signal_duration, + "rate_times": update_times, + "rate_values": rates_b, + }, + ) + + poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.0}) + + sr_nonselective = nest.Create("spike_recorder") + sr_selective1 = nest.Create("spike_recorder") + sr_selective2 = nest.Create("spike_recorder") + sr_inhibitory = nest.Create("spike_recorder") + + sr_selective1_raster = nest.Create("spike_recorder", 100) + sr_selective2_raster = nest.Create("spike_recorder", 100) + + mm_selective1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) + mm_selective2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) + mm_nonselective = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) + mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) + + + ################################################## + # Define synapse specifications + + receptor_types = selective_pop1[0].get("receptor_types") + + syn_spec_pot_AMPA = { + "synapse_model": "static_synapse", + "weight": w_plus * g_AMPA_ex, + "delay": delay, + "receptor_type": receptor_types["AMPA"], + } + syn_spec_pot_NMDA = { + "synapse_model": "static_synapse", + "weight": w_plus * g_NMDA_ex, + "delay": delay, + "receptor_type": receptor_types["NMDA"], + } + + syn_spec_dep_AMPA = { + "synapse_model": "static_synapse", + "weight": w_minus * g_AMPA_ex, + "delay": delay, + "receptor_type": receptor_types["AMPA"], + } + + syn_spec_dep_NMDA = { + "synapse_model": "static_synapse", + "weight": w_minus * g_NMDA_ex, + "delay": delay, + "receptor_type": receptor_types["NMDA"], + } + + ie_syn_spec = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_GABA_ex, + "delay": delay, + "receptor_type": receptor_types["GABA"], + } + + ii_syn_spec = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_GABA_in, + "delay": delay, + "receptor_type": receptor_types["GABA"], + } + + ei_syn_spec_AMPA = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_AMPA_in, + "delay": delay, + "receptor_type": receptor_types["AMPA"], + } + + ei_syn_spec_NMDA = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_NMDA_in, + "delay": delay, + "receptor_type": receptor_types["NMDA"], + } + + ee_syn_spec_AMPA = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_AMPA_ex, + "delay": delay, + "receptor_type": receptor_types["AMPA"], + } + + ee_syn_spec_NMDA = { + "synapse_model": "static_synapse", + "weight": 1.0 * g_NMDA_ex, + "delay": delay, + "receptor_type": receptor_types["NMDA"], + } + + exte_syn_spec = { + "synapse_model": "static_synapse", + "weight": g_AMPA_ext_ex, + "delay": 0.1, + "receptor_type": receptor_types["AMPA"], + } + + exti_syn_spec = { + "synapse_model": "static_synapse", + "weight": g_AMPA_ext_in, + "delay": 0.1, + "receptor_type": receptor_types["AMPA"], + } + + + ################################################## + # Create connections + + # from external + nest.Connect( + poisson_0, nonselective_pop + selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec + ) + nest.Connect(poisson_0, inhibitory_pop, conn_spec="all_to_all", syn_spec=exti_syn_spec) + + nest.Connect(poisson_a, selective_pop1, conn_spec="all_to_all", syn_spec=exte_syn_spec) + nest.Connect(poisson_b, selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec) + + # from nonselective pop + nest.Connect(nonselective_pop, selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_AMPA) + nest.Connect(nonselective_pop, selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_NMDA) + + nest.Connect(nonselective_pop, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_AMPA) + nest.Connect(nonselective_pop, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_NMDA) + + nest.Connect(nonselective_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_AMPA) + nest.Connect(nonselective_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_NMDA) + + nest.Connect(nonselective_pop, sr_nonselective) + + # from selective pops + nest.Connect(selective_pop1, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_pot_AMPA) + nest.Connect(selective_pop1, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_pot_NMDA) + + nest.Connect(selective_pop2, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_pot_AMPA) + nest.Connect(selective_pop2, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_pot_NMDA) + + nest.Connect(selective_pop1, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_AMPA) + nest.Connect(selective_pop1, selective_pop2, conn_spec="all_to_all", syn_spec=syn_spec_dep_NMDA) + + nest.Connect(selective_pop2, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_dep_AMPA) + nest.Connect(selective_pop2, selective_pop1, conn_spec="all_to_all", syn_spec=syn_spec_dep_NMDA) + + nest.Connect(selective_pop1 + selective_pop2, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_AMPA) + nest.Connect(selective_pop1 + selective_pop2, nonselective_pop, conn_spec="all_to_all", syn_spec=ee_syn_spec_NMDA) + + nest.Connect(selective_pop1 + selective_pop2, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_AMPA) + nest.Connect(selective_pop1 + selective_pop2, inhibitory_pop, conn_spec="all_to_all", syn_spec=ei_syn_spec_NMDA) + + nest.Connect(selective_pop1, sr_selective1) + nest.Connect(selective_pop1[:100], sr_selective1_raster, "one_to_one") + nest.Connect(selective_pop2, sr_selective2) + nest.Connect(selective_pop2[:100], sr_selective2_raster, "one_to_one") + + # from inhibitory pop + nest.Connect( + inhibitory_pop, selective_pop1 + selective_pop2 + nonselective_pop, conn_spec="all_to_all", syn_spec=ie_syn_spec + ) + nest.Connect(inhibitory_pop, inhibitory_pop, conn_spec="all_to_all", syn_spec=ii_syn_spec) + + nest.Connect(inhibitory_pop, sr_inhibitory) + + # multimeters record from single neuron from each population. + # since the network is fully connected, it's the same for all + # neurons in the same population. + nest.Connect(mm_selective1, selective_pop1[0]) + nest.Connect(mm_selective2, selective_pop2[0]) + nest.Connect(mm_nonselective, nonselective_pop[0]) + nest.Connect(mm_inhibitory, inhibitory_pop[0]) + + ################################################## + # Run simulation + nest.Simulate(4000.0) + + + ################################################## + # Collect data from simulation + spikes_nonselective = sr_nonselective.get("events", "times") + spikes_selective1 = sr_selective1.get("events", "times") + spikes_selective2 = sr_selective2.get("events", "times") + spikes_inhibitory = sr_inhibitory.get("events", "times") + + spikes_selective1_raster = sr_selective1_raster.get("events", "times") + spikes_selective2_raster = sr_selective2_raster.get("events", "times") + +# vm_nonselective = mm_nonselective.get("events", "V_m") +# s_AMPA_nonselective = mm_nonselective.get("events", "s_AMPA") +# s_GABA_nonselective = mm_nonselective.get("events", "s_GABA") +# s_NMDA_nonselective = mm_nonselective.get("events", "s_NMDA") +# +# vm_selective1 = mm_selective1.get("events", "V_m") +# s_AMPA_selective1 = mm_selective1.get("events", "s_AMPA") +# s_GABA_selective1 = mm_selective1.get("events", "s_GABA") +# s_NMDA_selective1 = mm_selective1.get("events", "s_NMDA") +# +# vm_selective2 = mm_selective2.get("events", "V_m") +# s_AMPA_selective2 = mm_selective2.get("events", "s_AMPA") +# s_GABA_selective2 = mm_selective2.get("events", "s_GABA") +# s_NMDA_selective2 = mm_selective2.get("events", "s_NMDA") +# +# vm_inhibitory = mm_inhibitory.get("events", "V_m") +# s_AMPA_inhibitory = mm_inhibitory.get("events", "s_AMPA") +# s_GABA_inhibitory = mm_inhibitory.get("events", "s_GABA") +# s_NMDA_inhibitory = mm_inhibitory.get("events", "s_NMDA") + + return {"nonselective": spikes_nonselective, + "selective1": spikes_selective1, + "selective2": spikes_selective2, + "inhibitory": spikes_inhibitory, + "selective1_raster": spikes_selective1_raster, + "selective2_raster": spikes_selective2_raster} + +for i, seed in enumerate(range(100,110,1)): + spikes = [] + for c in [51.2, 12.8, 0.]: + spikes.append(run_sim(c, seed=seed)) + + + ################################################## + # Plots + + # bins for histograms + res = 1.0 + bins = np.arange(0, 4001, res) - 0.001 + + fig, ax = plt.subplots(ncols=2, nrows=8, sharex=True, sharey=False, height_ratios=[1,0.7,0.3,1,0.7,0.3,1,0.7]) + fig.subplots_adjust(hspace=0.) + ax[0,0].set_xlim(0,800) + ax[0,0].set_xticks([]) + phi = np.arctan(1080 / 1920) + sz = (14 * np.cos(phi), 14 * np.sin(phi)) + fig.set_size_inches(sz) + + # selective populations + num = NE * 0.15 + + for j in range(3): + # compute firing rates as moving averages over 50 ms windows with 5 ms strides + hist1, _ = np.histogram(spikes[j]["selective1"], bins=bins) + hist1 = hist1.reshape((-1, 5)).sum(-1) + hist2, _ = np.histogram(spikes[j]["selective2"], bins=bins) + hist2 = hist2.reshape((-1, 5)).sum(-1) + + pop1_rate = np.convolve(hist1, np.ones(10) * 0.1, mode="valid") / num / 5 * 1000 + pop2_rate = np.convolve(hist2, np.ones(10) * 0.1, mode="valid") / num / 5 * 1000 + + ax[j*3+1,0].bar(np.arange(len(pop1_rate)), pop1_rate, width=1., color="black") + ax[j*3+1,1].bar(np.arange(len(pop2_rate)), pop2_rate, width=1., color="black") + ax[j*3+1,0].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) + ax[j*3+1,1].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) + ax[j*3+1,0].set_ylim(0, 40) + ax[j*3+1,1].set_ylim(0, 40) + for k in range(100): + sp = spikes[j]["selective1_raster"][k] / 5. + ax[j*3,0].scatter(sp, np.ones_like(sp) * k, s=1., marker="|", c="black") + ax[j*3,0].vlines([200, 400], 0, 100, colors="black", linewidths=1.) + ax[j*3,0].set_yticks([]) + ax[j*3,0].set_ylim(0,99) + sp = spikes[j]["selective2_raster"][k] / 5. + ax[j*3,1].scatter(sp, np.ones_like(sp) * k, s=1., marker="|", c="black") + ax[j*3,1].vlines([200, 400], 0, 100, colors="black", linewidths=1.) + ax[j*3,1].set_yticks([]) + ax[j*3,1].set_ylim(0,99) + + ax[0,0].set_title("Selective pop A") + ax[0,1].set_title("Selective pop B") + ax[2,0].axis("off") + ax[2,1].axis("off") + ax[5,0].axis("off") + ax[5,1].axis("off") + + fig.savefig(f"decision_making_{i}.png", dpi=1920 / sz[0]) -vm_selective2 = mm_selective2.get("events", "V_m") -s_AMPA_selective2 = mm_selective2.get("events", "s_AMPA") -s_GABA_selective2 = mm_selective2.get("events", "s_GABA") -s_NMDA_selective2 = mm_selective2.get("events", "s_NMDA") - -vm_inhibitory = mm_inhibitory.get("events", "V_m") -s_AMPA_inhibitory = mm_inhibitory.get("events", "s_AMPA") -s_GABA_inhibitory = mm_inhibitory.get("events", "s_GABA") -s_NMDA_inhibitory = mm_inhibitory.get("events", "s_NMDA") - - -################################################## -# Plots - -# bins for histograms -res = 1.0 -bins = np.arange(0, 4001, res) - 0.001 - -fig, ax = plt.subplots(ncols=2, nrows=2, sharex=True, sharey=True) -fig.tight_layout() - -# selective populations -num = NE * f * (res / 1000) -hist1, _ = np.histogram(spikes_selective1, bins=bins) -hist2, _ = np.histogram(spikes_selective2, bins=bins) -ax[0, 0].plot(hist1 / num) -ax[0, 0].set_title("Selective pop A") -ax[0, 1].plot(hist2 / num) -ax[0, 1].set_title("Selective pop B") - -# nonselective population -num = NE * (1 - 2 * f) * res / 1000 -hist, _ = np.histogram(spikes_nonselective, bins=bins) -ax[1, 0].plot(hist / num) -ax[1, 0].set_title("Nonselective pop") - -# inhibitory population -num = NI * res / 1000 -hist, _ = np.histogram(spikes_inhibitory, bins=bins) -ax[1, 1].plot(hist / num) -ax[1, 1].set_title("Inhibitory pop") - - -fig, ax = plt.subplots(ncols=4, nrows=4, sharex=True, sharey="row") -fig.tight_layout() - -# AMPA conductances -ax[0, 0].plot(s_AMPA_selective1) -ax[0, 1].plot(s_AMPA_selective2) -ax[0, 2].plot(s_AMPA_nonselective) -ax[0, 3].plot(s_AMPA_inhibitory) - -# NMDA conductances -ax[1, 0].plot(s_NMDA_selective1) -ax[1, 1].plot(s_NMDA_selective2) -ax[1, 2].plot(s_NMDA_nonselective) -ax[1, 3].plot(s_NMDA_inhibitory) - - -# GABA conductances -ax[2, 0].plot(s_GABA_selective1) -ax[2, 1].plot(s_GABA_selective2) -ax[2, 2].plot(s_GABA_nonselective) -ax[2, 3].plot(s_GABA_inhibitory) - -# Membrane potential -ax[3, 0].plot(vm_selective1) -ax[3, 1].plot(vm_selective2) -ax[3, 2].plot(vm_nonselective) -ax[3, 3].plot(vm_inhibitory) - - -ax[0, 0].set_ylabel("S_AMPA") -ax[1, 0].set_ylabel("S_NMDA") -ax[2, 0].set_ylabel("S_GABA") -ax[3, 0].set_ylabel("V_m") - -ax[0, 0].set_title("Selective pop1") -ax[0, 1].set_title("Selective pop2") -ax[0, 2].set_title("Nonselective pop") -ax[0, 3].set_title("Inhibitory pop") - -ax[0, 0].set_title("Selective pop1") -ax[0, 1].set_title("Selective pop2") -ax[0, 2].set_title("Nonselective pop") -ax[0, 3].set_title("Inhibitory pop") - - -plt.show() From f23430dd000d89222a755ee08a01fee6c5ef7db1 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 12 Mar 2024 11:01:27 +0100 Subject: [PATCH 105/184] black --- pynest/examples/wang_decision_making.py | 134 ++++++++++++------------ 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index c499ffd0c9..029fdb596c 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -147,7 +147,7 @@ def run_sim(coherence, seed=123): ################################################## # Create neurons and devices - + selective_pop1 = nest.Create(model, int(f * NE), params=epop_params) selective_pop2 = nest.Create(model, int(f * NE), params=epop_params) nonselective_pop = nest.Create(model, int((1 - 2 * f) * NE), params=epop_params) @@ -184,18 +184,17 @@ def run_sim(coherence, seed=123): sr_selective1_raster = nest.Create("spike_recorder", 100) sr_selective2_raster = nest.Create("spike_recorder", 100) - + mm_selective1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) mm_selective2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) mm_nonselective = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) - - + ################################################## # Define synapse specifications - + receptor_types = selective_pop1[0].get("receptor_types") - + syn_spec_pot_AMPA = { "synapse_model": "static_synapse", "weight": w_plus * g_AMPA_ex, @@ -279,10 +278,9 @@ def run_sim(coherence, seed=123): "receptor_type": receptor_types["AMPA"], } - ################################################## # Create connections - + # from external nest.Connect( poisson_0, nonselective_pop + selective_pop1 + selective_pop2, conn_spec="all_to_all", syn_spec=exte_syn_spec @@ -348,7 +346,6 @@ def run_sim(coherence, seed=123): # Run simulation nest.Simulate(4000.0) - ################################################## # Collect data from simulation spikes_nonselective = sr_nonselective.get("events", "times") @@ -359,39 +356,41 @@ def run_sim(coherence, seed=123): spikes_selective1_raster = sr_selective1_raster.get("events", "times") spikes_selective2_raster = sr_selective2_raster.get("events", "times") -# vm_nonselective = mm_nonselective.get("events", "V_m") -# s_AMPA_nonselective = mm_nonselective.get("events", "s_AMPA") -# s_GABA_nonselective = mm_nonselective.get("events", "s_GABA") -# s_NMDA_nonselective = mm_nonselective.get("events", "s_NMDA") -# -# vm_selective1 = mm_selective1.get("events", "V_m") -# s_AMPA_selective1 = mm_selective1.get("events", "s_AMPA") -# s_GABA_selective1 = mm_selective1.get("events", "s_GABA") -# s_NMDA_selective1 = mm_selective1.get("events", "s_NMDA") -# -# vm_selective2 = mm_selective2.get("events", "V_m") -# s_AMPA_selective2 = mm_selective2.get("events", "s_AMPA") -# s_GABA_selective2 = mm_selective2.get("events", "s_GABA") -# s_NMDA_selective2 = mm_selective2.get("events", "s_NMDA") -# -# vm_inhibitory = mm_inhibitory.get("events", "V_m") -# s_AMPA_inhibitory = mm_inhibitory.get("events", "s_AMPA") -# s_GABA_inhibitory = mm_inhibitory.get("events", "s_GABA") -# s_NMDA_inhibitory = mm_inhibitory.get("events", "s_NMDA") - - return {"nonselective": spikes_nonselective, - "selective1": spikes_selective1, - "selective2": spikes_selective2, - "inhibitory": spikes_inhibitory, - "selective1_raster": spikes_selective1_raster, - "selective2_raster": spikes_selective2_raster} - -for i, seed in enumerate(range(100,110,1)): + # vm_nonselective = mm_nonselective.get("events", "V_m") + # s_AMPA_nonselective = mm_nonselective.get("events", "s_AMPA") + # s_GABA_nonselective = mm_nonselective.get("events", "s_GABA") + # s_NMDA_nonselective = mm_nonselective.get("events", "s_NMDA") + # + # vm_selective1 = mm_selective1.get("events", "V_m") + # s_AMPA_selective1 = mm_selective1.get("events", "s_AMPA") + # s_GABA_selective1 = mm_selective1.get("events", "s_GABA") + # s_NMDA_selective1 = mm_selective1.get("events", "s_NMDA") + # + # vm_selective2 = mm_selective2.get("events", "V_m") + # s_AMPA_selective2 = mm_selective2.get("events", "s_AMPA") + # s_GABA_selective2 = mm_selective2.get("events", "s_GABA") + # s_NMDA_selective2 = mm_selective2.get("events", "s_NMDA") + # + # vm_inhibitory = mm_inhibitory.get("events", "V_m") + # s_AMPA_inhibitory = mm_inhibitory.get("events", "s_AMPA") + # s_GABA_inhibitory = mm_inhibitory.get("events", "s_GABA") + # s_NMDA_inhibitory = mm_inhibitory.get("events", "s_NMDA") + + return { + "nonselective": spikes_nonselective, + "selective1": spikes_selective1, + "selective2": spikes_selective2, + "inhibitory": spikes_inhibitory, + "selective1_raster": spikes_selective1_raster, + "selective2_raster": spikes_selective2_raster, + } + + +for i, seed in enumerate(range(100, 110, 1)): spikes = [] - for c in [51.2, 12.8, 0.]: + for c in [51.2, 12.8, 0.0]: spikes.append(run_sim(c, seed=seed)) - ################################################## # Plots @@ -399,10 +398,12 @@ def run_sim(coherence, seed=123): res = 1.0 bins = np.arange(0, 4001, res) - 0.001 - fig, ax = plt.subplots(ncols=2, nrows=8, sharex=True, sharey=False, height_ratios=[1,0.7,0.3,1,0.7,0.3,1,0.7]) - fig.subplots_adjust(hspace=0.) - ax[0,0].set_xlim(0,800) - ax[0,0].set_xticks([]) + fig, ax = plt.subplots( + ncols=2, nrows=8, sharex=True, sharey=False, height_ratios=[1, 0.7, 0.3, 1, 0.7, 0.3, 1, 0.7] + ) + fig.subplots_adjust(hspace=0.0) + ax[0, 0].set_xlim(0, 800) + ax[0, 0].set_xticks([]) phi = np.arctan(1080 / 1920) sz = (14 * np.cos(phi), 14 * np.sin(phi)) fig.set_size_inches(sz) @@ -420,30 +421,29 @@ def run_sim(coherence, seed=123): pop1_rate = np.convolve(hist1, np.ones(10) * 0.1, mode="valid") / num / 5 * 1000 pop2_rate = np.convolve(hist2, np.ones(10) * 0.1, mode="valid") / num / 5 * 1000 - ax[j*3+1,0].bar(np.arange(len(pop1_rate)), pop1_rate, width=1., color="black") - ax[j*3+1,1].bar(np.arange(len(pop2_rate)), pop2_rate, width=1., color="black") - ax[j*3+1,0].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) - ax[j*3+1,1].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) - ax[j*3+1,0].set_ylim(0, 40) - ax[j*3+1,1].set_ylim(0, 40) + ax[j * 3 + 1, 0].bar(np.arange(len(pop1_rate)), pop1_rate, width=1.0, color="black") + ax[j * 3 + 1, 1].bar(np.arange(len(pop2_rate)), pop2_rate, width=1.0, color="black") + ax[j * 3 + 1, 0].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) + ax[j * 3 + 1, 1].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) + ax[j * 3 + 1, 0].set_ylim(0, 40) + ax[j * 3 + 1, 1].set_ylim(0, 40) for k in range(100): - sp = spikes[j]["selective1_raster"][k] / 5. - ax[j*3,0].scatter(sp, np.ones_like(sp) * k, s=1., marker="|", c="black") - ax[j*3,0].vlines([200, 400], 0, 100, colors="black", linewidths=1.) - ax[j*3,0].set_yticks([]) - ax[j*3,0].set_ylim(0,99) - sp = spikes[j]["selective2_raster"][k] / 5. - ax[j*3,1].scatter(sp, np.ones_like(sp) * k, s=1., marker="|", c="black") - ax[j*3,1].vlines([200, 400], 0, 100, colors="black", linewidths=1.) - ax[j*3,1].set_yticks([]) - ax[j*3,1].set_ylim(0,99) - - ax[0,0].set_title("Selective pop A") - ax[0,1].set_title("Selective pop B") - ax[2,0].axis("off") - ax[2,1].axis("off") - ax[5,0].axis("off") - ax[5,1].axis("off") + sp = spikes[j]["selective1_raster"][k] / 5.0 + ax[j * 3, 0].scatter(sp, np.ones_like(sp) * k, s=1.0, marker="|", c="black") + ax[j * 3, 0].vlines([200, 400], 0, 100, colors="black", linewidths=1.0) + ax[j * 3, 0].set_yticks([]) + ax[j * 3, 0].set_ylim(0, 99) + sp = spikes[j]["selective2_raster"][k] / 5.0 + ax[j * 3, 1].scatter(sp, np.ones_like(sp) * k, s=1.0, marker="|", c="black") + ax[j * 3, 1].vlines([200, 400], 0, 100, colors="black", linewidths=1.0) + ax[j * 3, 1].set_yticks([]) + ax[j * 3, 1].set_ylim(0, 99) + + ax[0, 0].set_title("Selective pop A") + ax[0, 1].set_title("Selective pop B") + ax[2, 0].axis("off") + ax[2, 1].axis("off") + ax[5, 0].axis("off") + ax[5, 1].axis("off") fig.savefig(f"decision_making_{i}.png", dpi=1920 / sz[0]) - From 5e2b7cdc0dc7925d9b98cbbd7ae0478a08076a89 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Tue, 12 Mar 2024 12:09:30 +0100 Subject: [PATCH 106/184] move wong notebook to correct directory --- .../model_details/wong_approximate_implementation.ipynb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/{ => htmldoc}/model_details/wong_approximate_implementation.ipynb (100%) diff --git a/doc/model_details/wong_approximate_implementation.ipynb b/doc/htmldoc/model_details/wong_approximate_implementation.ipynb similarity index 100% rename from doc/model_details/wong_approximate_implementation.ipynb rename to doc/htmldoc/model_details/wong_approximate_implementation.ipynb From cd94b19c04aa7eac418b16f582cc79842f61ace7 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 14 Mar 2024 12:38:51 +0100 Subject: [PATCH 107/184] update wang_decision_making example --- pynest/examples/wang_decision_making.py | 127 ++++++++++++------------ 1 file changed, 66 insertions(+), 61 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 029fdb596c..7b1267a24e 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -386,64 +386,69 @@ def run_sim(coherence, seed=123): } -for i, seed in enumerate(range(100, 110, 1)): - spikes = [] - for c in [51.2, 12.8, 0.0]: - spikes.append(run_sim(c, seed=seed)) - - ################################################## - # Plots - - # bins for histograms - res = 1.0 - bins = np.arange(0, 4001, res) - 0.001 - - fig, ax = plt.subplots( - ncols=2, nrows=8, sharex=True, sharey=False, height_ratios=[1, 0.7, 0.3, 1, 0.7, 0.3, 1, 0.7] - ) - fig.subplots_adjust(hspace=0.0) - ax[0, 0].set_xlim(0, 800) - ax[0, 0].set_xticks([]) - phi = np.arctan(1080 / 1920) - sz = (14 * np.cos(phi), 14 * np.sin(phi)) - fig.set_size_inches(sz) - - # selective populations - num = NE * 0.15 - - for j in range(3): - # compute firing rates as moving averages over 50 ms windows with 5 ms strides - hist1, _ = np.histogram(spikes[j]["selective1"], bins=bins) - hist1 = hist1.reshape((-1, 5)).sum(-1) - hist2, _ = np.histogram(spikes[j]["selective2"], bins=bins) - hist2 = hist2.reshape((-1, 5)).sum(-1) - - pop1_rate = np.convolve(hist1, np.ones(10) * 0.1, mode="valid") / num / 5 * 1000 - pop2_rate = np.convolve(hist2, np.ones(10) * 0.1, mode="valid") / num / 5 * 1000 - - ax[j * 3 + 1, 0].bar(np.arange(len(pop1_rate)), pop1_rate, width=1.0, color="black") - ax[j * 3 + 1, 1].bar(np.arange(len(pop2_rate)), pop2_rate, width=1.0, color="black") - ax[j * 3 + 1, 0].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) - ax[j * 3 + 1, 1].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) - ax[j * 3 + 1, 0].set_ylim(0, 40) - ax[j * 3 + 1, 1].set_ylim(0, 40) - for k in range(100): - sp = spikes[j]["selective1_raster"][k] / 5.0 - ax[j * 3, 0].scatter(sp, np.ones_like(sp) * k, s=1.0, marker="|", c="black") - ax[j * 3, 0].vlines([200, 400], 0, 100, colors="black", linewidths=1.0) - ax[j * 3, 0].set_yticks([]) - ax[j * 3, 0].set_ylim(0, 99) - sp = spikes[j]["selective2_raster"][k] / 5.0 - ax[j * 3, 1].scatter(sp, np.ones_like(sp) * k, s=1.0, marker="|", c="black") - ax[j * 3, 1].vlines([200, 400], 0, 100, colors="black", linewidths=1.0) - ax[j * 3, 1].set_yticks([]) - ax[j * 3, 1].set_ylim(0, 99) - - ax[0, 0].set_title("Selective pop A") - ax[0, 1].set_title("Selective pop B") - ax[2, 0].axis("off") - ax[2, 1].axis("off") - ax[5, 0].axis("off") - ax[5, 1].axis("off") - - fig.savefig(f"decision_making_{i}.png", dpi=1920 / sz[0]) +coherences = [51.2, 12.8, 0.0] +spikes = [] +for c in coherences: + spikes.append(run_sim(c, seed=1234)) + +################################################## +# Plots + +# bins for histograms +res = 1.0 +bins = np.arange(0, 4001, res) - 0.001 +fig, ax = plt.subplots(ncols=2, nrows=8, sharex=True, sharey=False, height_ratios=[1, 0.7, 0.3, 1, 0.7, 0.3, 1, 0.7]) + +fig.subplots_adjust(hspace=0.0) +ax[0, 0].set_xlim(0, 800) +ax[0, 0].set_xticks([]) +phi = np.arctan(1080 / 1920) +sz = (14 * np.cos(phi), 14 * np.sin(phi)) +fig.set_size_inches(sz) + +# selective populations +num = NE * 0.15 + +for j in range(3): + # compute firing rates as moving averages over 50 ms windows with 5 ms strides + hist1, _ = np.histogram(spikes[j]["selective1"], bins=bins) + hist1 = hist1.reshape((-1, 5)).sum(-1) + hist2, _ = np.histogram(spikes[j]["selective2"], bins=bins) + hist2 = hist2.reshape((-1, 5)).sum(-1) + + pop1_rate = np.convolve(hist1, np.ones(10) * 0.1, mode="same") / num / 5 * 1000 + pop2_rate = np.convolve(hist2, np.ones(10) * 0.1, mode="same") / num / 5 * 1000 + + ax[j * 3 + 1, 0].bar(np.arange(len(pop1_rate)), pop1_rate, width=1.0, color="black") + ax[j * 3 + 1, 1].bar(np.arange(len(pop2_rate)), pop2_rate, width=1.0, color="black") + ax[j * 3 + 1, 0].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) + ax[j * 3 + 1, 1].vlines([200, 400], 0, 40, colors="black", linewidths=2.4) + ax[j * 3 + 1, 0].set_ylim(0, 40) + ax[j * 3 + 1, 1].set_ylim(0, 40) + for k in range(100): + sp = spikes[j]["selective1_raster"][k] / 5.0 + ax[j * 3, 0].scatter(sp, np.ones_like(sp) * k, s=1.0, marker="|", c="black") + ax[j * 3, 0].vlines([200, 400], 0, 100, colors="black", linewidths=1.0) + ax[j * 3, 0].set_yticks([]) + ax[j * 3, 0].set_ylim(0, 99) + sp = spikes[j]["selective2_raster"][k] / 5.0 + ax[j * 3, 1].scatter(sp, np.ones_like(sp) * k, s=1.0, marker="|", c="black") + ax[j * 3, 1].vlines([200, 400], 0, 100, colors="black", linewidths=1.0) + ax[j * 3, 1].set_yticks([]) + ax[j * 3, 1].set_ylim(0, 99) + ax[j * 3, 0].set_title(f"coherence = {coherences[j]}") + ax[j * 3, 1].set_title(f"coherence = {coherences[j]}") + +ax[-1, 0].set_xticks([0, 200, 400, 600, 800]) +ax[-1, 0].set_xticklabels(["0", "1000", "2000", "3000", "4000"]) +ax[-1, 1].set_xticks([0, 200, 400, 600, 800]) +ax[-1, 1].set_xticklabels(["0", "1000", "2000", "3000", "4000"]) +ax[-1, 0].set_xlabel("t (ms)") +ax[-1, 1].set_xlabel("t (ms)") +ax[0, 0].text(0.32, 1.5, "Selective pop A", transform=ax[0, 0].transAxes, fontsize=15) +ax[0, 1].text(0.32, 1.5, "Selective pop B", transform=ax[0, 1].transAxes, fontsize=15) +ax[2, 0].axis("off") +ax[2, 1].axis("off") +ax[5, 0].axis("off") +ax[5, 1].axis("off") +plt.show() From 51503382eb1b69ff07df7726b53e2e4fd93e40c6 Mon Sep 17 00:00:00 2001 From: Hans Ekkehard Plesser Date: Fri, 26 Apr 2024 15:09:07 +0200 Subject: [PATCH 108/184] Revised and renamed Wang example notebook --- .../Wang_2002_Model_Approximation.ipynb | 527 ++++++++++++++++++ .../wong_approximate_implementation.ipynb | 363 ------------ 2 files changed, 527 insertions(+), 363 deletions(-) create mode 100644 doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb delete mode 100644 doc/htmldoc/model_details/wong_approximate_implementation.ipynb diff --git a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb new file mode 100644 index 0000000000..bfaf7bd5a0 --- /dev/null +++ b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb @@ -0,0 +1,527 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d48013ba-af79-4804-aa7a-ed6720fd2e59", + "metadata": {}, + "source": [ + "# A flexible and precise approximation to the Wang (2002) NMDA Model\n", + "Jan-Eirik Welle Skaar and Hans Ekkehard Plesser, Spring 2024" + ] + }, + { + "cell_type": "markdown", + "id": "bca71cf0-a616-4077-9334-a72861e24e76", + "metadata": {}, + "source": [ + "This notebook briefly describes the approximation underlying the `iaf_wang_2002` model in NEST. The model itself was first published in\n", + "\n", + "Wang, X.-J. (2002). Probabilistic Decision Making by Slow Reverberation in Cortical Circuits. Neuron, 36(5), 955–968. https://doi.org/10.1016/S0896-6273(02)01092-9\n", + "\n", + "## Synaptic currents of the Wang (2002) model\n", + "\n", + "The synaptic input currents of the model are defined as follows (Wang 2002, p 966):\n", + "$$\\begin{align}\n", + " I_\\mathrm{syn}(t) &= \n", + " I_\\mathrm{rec, AMPA}(t) \n", + " + I_\\mathrm{rec, NMDA}(t) \n", + " + I_\\mathrm{rec, GABA}(t) \\mathrm{,}\\\\[1.5ex]\n", + " I_\\mathrm{ext,AMPA} &= g_\\mathrm{ext,AMPA}\\times (V(t) - V_E) \\times S_{j,\\mathrm{ext, AMPA}}(t)\\mathrm{,}\\\\\n", + " I_\\mathrm{rec,AMPA} &= g_\\mathrm{rec,AMPA}\\times (V(t) - V_E) \\times \\sum_{j=1}^{N_E}w_jS_{j,\\mathrm{rec,AMPA}}(t) \\mathrm{,}\\\\\n", + " I_\\mathrm{rec,NMDA} &= \\frac{g_\\mathrm{rec,NMDA}\\times (V(t) - V_E)}{1+[\\mathrm{Mg^{2+}}]\\mathrm{exp}(-0.062V(t))/3.57}\\times \\sum_{j=1}^{N_E}w_jS_{j,\\mathrm{NMDA}}(t) \\mathrm{,}\\\\\n", + " I_\\mathrm{rec,GABA} &= g_\\mathrm{rec,GABA}\\times(V(t) - V_I) \\times\\sum_{j=1}^{N_E}w_jS_{j,\\mathrm{GABA}}(t) \\;\\mathrm{.}\n", + "\\end{align}\n", + "$$\n", + "\n", + "Note that in contrast to common practice, $I_\\mathrm{syn}\\sim g (V-V_\\text{rev})$ is defined with positive sign and then entered into the membrane potential equation with negative sign as $\\dot{V} \\sim \\dots - I_\\mathrm{syn}$. For consistency with the model definition, the NEST implementaion follows this convention.\n", + "\n", + "The synaptic activations $S_{j,\\mathrm{ext,AMPA}},S_{j,\\mathrm{rec,AMPA}},S_{j,\\mathrm{NMDA}},\\ \\mathrm{ and }\\ S_{j,\\mathrm{GABA}}$\n", + "are governed by the equations\n", + "\n", + "$$\\begin{align}\n", + " \\frac{dS_{j,\\mathrm{AMPA}}}{dt} &= -\\frac{S_{j,\\mathrm{AMPA}}}{\\tau_\\mathrm{AMPA}}+\\sum_k \\delta (t - t_j^k) \\\\\n", + " \\frac{dS_{j,\\mathrm{GABA}}}{dt} &= -\\frac{S_{j,\\mathrm{GABA}}}{\\tau_\\mathrm{GABA}} + \\sum_k \\delta (t - t_j^k) \\\\\n", + " \\frac{dS_{j,\\mathrm{NMDA}}}{dt} &= -\\frac{S_{j,\\mathrm{NMDA}}}{\\tau_\\mathrm{NMDA,decay}}+ \\alpha x_j (1 - S_{j,\\mathrm{NMDA}}) \\\\\n", + " \\frac{dx_j}{dt} &= - \\frac{x_j}{\\tau_\\mathrm{NMDA,rise}} + \\sum_k \\delta (t - t_j^k) \\;\\mathrm{,}\n", + "\\end{align}\n", + "$$\n", + "where indices $j$ mark presynaptic neurons and $k$ spike times.\n", + "\n", + "This original model by Wang (2002) is implemented in NEST as `iaf_wang_2002_exact`. Due to the nonlinear term $x_j (1 - S_{j,\\mathrm{NMDA}})$, NMDA synapses cannot be combined together, so each incoming synapse to a neuron needs to be integrated individually, significantly impacting performance. Note that $S_{j,\\mathrm{NMDA}}(t)$ represents the input to a given neuron from presynaptic neuron $j$. Importantly, the same $S_j(t)$ describes input to all neurons postsynaptic to $j$, although shifted by possibly different delays and weighted by different input weights. This allows us to compute $S_j(t)$ only once in neuron $j$ and then distribute this value, for each simulation time step, to all post-synaptic neurons of $j$.\n", + "\n", + "Prior implementations of the model, such as the [Brian2 implementation by Wimmer and Stimberg](https://brian2.readthedocs.io/en/stable/examples/frompapers.Wang_2002.html) and presumably Wang's original implementation, circumvent this problem by investiagting a model with all-to-all connectivity with a single delay value and fixed-timestep forward Euler integration.\n", + "The NEST implementation supports arbitrary connectiviy and delays, and uses RKF45 adaptive stepsize integration. " + ] + }, + { + "cell_type": "markdown", + "id": "782bad70-7ae1-4bd9-9196-f3c58e792d37", + "metadata": {}, + "source": [ + "## Approximation of NMDA dynamics\n", + "\n", + "We will from now on only focus on the last two equations, which are the subjects of the approximation in the model. We drop the subscript NMDA in the following and abbreviate \"rise\" and \"decay\" as \"r\" and \"d\", respectively. \n", + "\n", + "Assume that neuron $j$ last spike at time zero and does not spike again until $t$. Then we obtain the following expression for time evolution of $S_j$ until $t$ by plugging in the solution for $x_j$ on the interval $(0, t]$:\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dS_{j}}{dt} + \\bigg(\\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}}\\bigg] \\bigg) S_{j,\\mathrm{NMDA}} &= \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}}\\bigg] \\;\\mathrm{.}\n", + "\\end{align}\n", + "$$\n", + "We obtain the formal solution by an integrating factor as\n", + "$$\n", + " S_{j}(t) = \\mathrm{exp}\\Bigg[-\\int_0^t \\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] dt' \\Bigg] \n", + " \\Bigg( S_{j}^0 +\\int_0^t \\mathrm{exp}\\Bigg[\\int_0^{t'} \\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t''}{\\tau_\\mathrm{r}} \\bigg] dt'' \\Bigg]\\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}}\\bigg] dt' \\Bigg) \\mathrm{.}\n", + "$$\n", + "\n", + "The first and innermost integrals can be solved in closed form, which gives\n", + "$$\n", + " S_{j}(t) \n", + " = \n", + " \\mathrm{exp}\\Bigg[-\\frac{t}{\\tau_\\mathrm{d}} - \\alpha x_j^{0} \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", + " \\Bigg(S_{j}^0+ \\int_0^{t} \\mathrm{exp}\\Bigg[\\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg)t' + \\alpha x_j^0 \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha x_j^0 dt' \\Bigg) \\mathrm{.}\n", + "$$\n", + "\n", + "Since we have two different time scales in the exponential inside the remaining integral, there is no exact solution for arbitrary limits of integration. We would like to approximate this function with an exponential function, such that we can integrate the sum of multiple such functions in a single variable. \n", + "\n", + "Our approximate function will then have the form \n", + "$$\n", + "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", + "$$\n", + "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit as $t \\to \\infty$, in the sense that the ratio $S_j(t)/\\hat{S}_j(t)\\to 1$. We additionally assume that $x_0 = 0$ immediately before every spikes, i.e., that the effect on $x_j$ of the previous spike has vanished by the time the next spike arrives. Since $\\tau_r$ is very small (e.g. $2 ms$), this is reasonable unless the neuron is firing very rapidly.\n", + "\n", + "Setting $x_0 = 1$ in the exact solution upon spiking, we get\n", + "$$\\begin{align}\n", + " S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", + " &=\n", + " \\mathrm{exp}\\Bigg[-\\frac{t}{\\tau_\\mathrm{d}} - \\alpha \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", + " \\Bigg(S_{j}^0 + \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha dt' \\Bigg) \\mathrm{,} \\\\\n", + " \\Leftrightarrow S_\\mathrm{jump}\n", + " &=\n", + " \\mathrm{exp}\\Bigg[- \\alpha \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", + " \\Bigg( S_{j}^0 + \\int_0^{t} \\mathrm{exp}\\Bigg[\\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) t' + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha dt' \\Bigg) \\;.\n", + "\\end{align}\n", + "$$\n", + "\n", + "Taking the limit $t\\to\\infty$, we get\n", + "$$\\begin{align}\n", + " S_\\mathrm{jump} = \n", + " \\mathrm{exp}\\Big[-\\alpha \\tau_\\mathrm{r}\\Big] S_j^0\n", + " - \n", + " \\alpha \\tau_\\mathrm{r} \\mathrm{ExpE}\\Big[\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}, \\alpha \\tau_\\mathrm{r} \\Big] \n", + " +\n", + " (\\alpha \\tau_\\mathrm{r})^\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\mathrm{Gamma}\\Big[1 - \\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\Big] \\mathrm{.}\n", + "\\end{align}\n", + "$$\n", + "\n", + "**Need some text here explaining ExpE and Gamma (with link to some online resource) and an explanation of how you get from the integral to the ExpE and Gamma expressions.**\n", + "\n", + "**The following needs a bit more detail: How is $S_0$ computed?**\n", + "After spiking, the new value of $S$ is then dependent only on the value of $S$ immediately before spiking. In pre-synaptic neurons, every time a spike arrives, the value of $S_0$ immediately before spiking is computed. $\\Delta S = S_\\mathrm{jump} - S_0$ is then computed, and sent to post-synaptic neurons as an offset in the SpikeEvent object. The post-synaptic neuron then adds the offset multiplied by weight and multiplicity to its $s_\\mathrm{NMDA}$ variable. Integration in the post-synaptic neuron is then done as a normal exponential synapse." + ] + }, + { + "cell_type": "markdown", + "id": "a6fa9697-6765-421e-ba8d-640e14f27399", + "metadata": {}, + "source": [ + "## Comparing exact solution and approximation\n", + "\n", + "### Single neuron\n", + "\n", + "The first case compares a single neuron simulated with the exact and the approximating models." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "524ec469-ba8d-4b0d-a9e9-1941828f16d5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -- N E S T --\n", + " Copyright (C) 2004 The NEST Initiative\n", + "\n", + " Version: 3.6.0-post0.dev0\n", + " Built: Apr 26 2024 11:13:19\n", + "\n", + " This program is provided AS IS and comes with\n", + " NO WARRANTY. See the file LICENSE for details.\n", + "\n", + " Problems or suggestions?\n", + " Visit https://www.nest-simulator.org\n", + "\n", + " Type 'nest.help()' to find out more about NEST.\n", + "\n" + ] + } + ], + "source": [ + "import nest\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3ec686e2-2ae2-4479-9b57-7d6151f7a1f1", + "metadata": {}, + "outputs": [], + "source": [ + "w_ext = 40.0\n", + "w_ex = 1.0\n", + "w_in = 15.0\n", + "\n", + "params = {\n", + " \"tau_AMPA\": 2.0,\n", + " \"tau_GABA\": 5.0,\n", + " \"tau_rise_NMDA\": 2.0,\n", + " \"tau_decay_NMDA\": 100.0,\n", + " \"conc_Mg2\": 1.0,\n", + " \"E_ex\": 0.0,\n", + " \"E_in\": -70.0,\n", + " \"E_L\": -70.0,\n", + " \"V_th\": -55.0,\n", + " \"C_m\": 500.0,\n", + " \"g_L\": 25.0,\n", + " \"V_reset\": -70.0,\n", + " \"alpha\": 0.5,\n", + " \"t_ref\": 2.0,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "ab7b922a-1ab7-4c40-8dd5-35c23c1b4fde", + "metadata": {}, + "source": [ + "We create 1 pre-synaptic approximate neuron, 1 post-synaptic approximate and 1 post-synaptic exact neuron. Stimulating the pre-synaptic neuron, we will compare the synaptic variables and membrane potential in the approximate and exact post-synaptic neurons." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "77c6bf6b-c422-46e3-a88e-4925e9bd7842", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Apr 26 14:40:01 NodeManager::add_node [Info]: \n", + " Neuron models emitting precisely timed spikes exist: the kernel property \n", + " off_grid_spiking has been set to true.\n", + " \n", + " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", + "\n", + "Apr 26 14:40:01 NodeManager::add_node [Info]: \n", + " Neuron models emitting precisely timed spikes exist: the kernel property \n", + " off_grid_spiking has been set to true.\n", + " \n", + " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", + "\n", + "Apr 26 14:40:01 NodeManager::prepare_nodes [Info]: \n", + " Preparing 8 nodes for simulation.\n", + "\n", + "Apr 26 14:40:01 SimulationManager::start_updating_ [Info]: \n", + " Number of local nodes: 8\n", + " Simulation time (ms): 1000\n", + " Number of OpenMP threads: 1\n", + " Number of MPI processes: 1\n", + "\n", + "Apr 26 14:40:01 SimulationManager::run [Info]: \n", + " Simulation finished.\n" + ] + } + ], + "source": [ + "nest.ResetKernel()\n", + "nest.rng_seed = 12345\n", + "\n", + "# pre-synaptic neuron, must be approximate model since the post-synaptic approximate model needs the offset\n", + "nrn_pre = nest.Create(\"iaf_wang_2002\", params)\n", + "nrn_post_approx = nest.Create(\"iaf_wang_2002\", params)\n", + "nrn_post_exact = nest.Create(\"iaf_wang_2002_exact\", params)\n", + "\n", + "pg = nest.Create(\"poisson_generator\", {\"rate\": 50.0})\n", + "\n", + "vm_pre = nest.Create(\"voltmeter\", {\"interval\": nest.resolution})\n", + "vm_post_approx = nest.Create(\"voltmeter\", {\"interval\": nest.resolution})\n", + "vm_post_exact = nest.Create(\"voltmeter\", {\"interval\": nest.resolution})\n", + "\n", + "receptors = nest.GetDefaults(\"iaf_wang_2002\")[\"receptor_types\"]\n", + "ampa_ext_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_ext, \"receptor_type\": receptors[\"AMPA\"]}\n", + "\n", + "rec_syn_specs = nest.CollocatedSynapses(\n", + " {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": receptors[\"AMPA\"]},\n", + " {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": receptors[\"NMDA\"]},\n", + " {\"synapse_model\": \"static_synapse\", \"weight\": w_in, \"receptor_type\": receptors[\"GABA\"]})\n", + "\n", + "nest.Connect(pg, nrn_pre, syn_spec=ampa_ext_syn_spec)\n", + "nest.Connect(nrn_pre, nrn_post_approx, syn_spec=rec_syn_specs)\n", + "nest.Connect(nrn_pre, nrn_post_exact, syn_spec=rec_syn_specs)\n", + "\n", + "nest.Connect(nrn_pre, sr)\n", + "nest.Connect(vm_pre, nrn_pre)\n", + "nest.Connect(vm_post_approx, nrn_post_approx)\n", + "nest.Connect(vm_post_exact, nrn_post_exact)\n", + "\n", + "nest.Simulate(1000.0)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9df3957c-7903-4e7f-a767-e98d121dbbd0", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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Zo+2cnJyGDRoEDfeeCNDhw7l008/5dFHH6Vz585ceeWVIfVJIBDUbNzHljvuuIMlS5bwv//9jwcffJCNGzcyc+ZMdu3axeeffw5Q7vhR3r15yJAh7Nixg/vuu4/mzZuTmZnJqlWrOHLkCM2bN2fkyJG89957rFy5kquvvtrZ15MnT7JmzRqmTp3qsg2//fYbK1as4O677yY+Pp5XX32VIUOGcOTIEed2bd68md9//51hw4bRuHFjDh06xPz58+nfvz87d+70CP269957SUpKYtq0ac776uHDh50PUC+//DL33XcfcXFxPP744wDUr1/f535etWoVV199NWlpaUyYMIEGDRqwa9cuvvnmGyZMmFDucbrvvvtITk5m6tSpHDp0iJdffpl7772XZcuWOed5//33GT16NAMHDuT555/HYDAwf/58+vTpw5YtW1weoIJh0aJFlJSUcOedd6LX60lJSWH16tVceeWVtGzZkmnTplFcXMxrr73GRRddxN9//+3R1tChQ2nRogUzZ87k77//5t1336VevXo8//zzIfVJIBDUHMQ4I8aZ8hDjjMArskBQw1i0aJEMyKtXr5azsrLko0ePyh9//LFcp04dOTo6Wj527Jgsy7I8evRoGZAnT57ssvyvv/4qA/IHH3zgMv2HH35wmf7555/LgLx582affdmzZ48MyPPnz3eZfu2118rNmzeXbTabLMuyvHbtWhmQ27dvLxuNRud8r7zyigzI//77r3OawWDwaGfmzJmyJEny4cOHndMc23ffffc5p9lsNnnw4MGyTqeTs7KyZFmW5aysLBmQp06d6rHeqVOnysrbwL59+2SVSiXfcMMNstVqdZnXsS2+cPRnxowZLtO7d+8u9+zZ0/k50P0vy7LPfjdr1kwePXq087PjnOjTp49ssVic0zMzM2WdTidfccUVLtszb948GZAXLlzonNavXz8ZkN977z3nNKPRKDdo0EAeMmSI320XCAQ1n0DGlq1bt8qAfMcdd7gs+9BDD8mAvGbNGlmWAxs/fN2bc3JyZECeM2eOz2WtVqvcuHFj+eabb3aZ/uKLL8qSJMkHDhxwTgNknU4n//fff85p27ZtkwH5tddec07zNvZs2LDB477o2E89e/aUTSaTc/rs2bNlQP7yyy+d0zp27Cj369fPY72OMXHt2rWyLMuyxWKRW7RoITdr1kzO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nrffftvnWyt3BgwYgE6n49VXX3Xp/4IFC8jLy2Pw4MGhbYRAIDgrcTxAuL+wefHFFwGc95RAxg9f92aDwUBJSYnLtFatWhEfH+8x9txyyy1IksSECRM4cOCARwX1YFCr1R59fu2113zeb99++22XPE3z58/HYrG4VP6OjY0NaOzp0aMHLVq04OWXX/aYP1xjz8CBA0lISOC5557zml8qKyvL+XerVq3YvXu3y7Rt27axfv36gNpKS0ujW7duLFmyxGV7tm/fzo8//ujyICoQCARKxDhThhhnfCPGGQEIZ57gLKRfv36MGzeOmTNnsnXrVq644gq0Wi379u1j+fLlvPLKK/zvf/9jyZIlvPHGG9xwww20atWKgoIC3nnnHRISEjxukIMHD6ZOnTosX76cK6+8knr16oXUt3bt2tGqVSseeughjh8/TkJCAp999pnPXAZRUVH88MMPjB49ml69evH999/z7bff8thjjznDVaOjo+nQoQPLli2jTZs2pKSk0KlTJ685I1q3bs3jjz/O008/zcUXX8yNN96IXq9n8+bNNGzYkJkzZ4a0XUoC3f8Ad9xxB+PHj2fIkCFcfvnlbNu2jZUrV1K3bt2A2kpNTWXKlClMnz6dQYMGce2117Jnzx7eeOMNzjvvvAr9IBEIBGcfXbt2ZfTo0bz99tvk5ubSr18/Nm3axJIlS7j++uudDoJAxg9f92aLxcJll13G0KFD6dChAxqNhs8//5xTp055vChKTU1l0KBBLF++nKSkpAq9oLj66qt5//33SUxMpEOHDmzYsIHVq1dTp04dr/ObTCZnPx331T59+nDttdc65+nZsyfz58/nmWeeoXXr1tSrV49LL73UY10qlYr58+dzzTXX0K1bN8aMGUNaWhq7d+9mx44drFy5MuTtcpCQkMD8+fMZOXIkPXr0YNiwYaSmpnLkyBG+/fZbLrroIufLsdtuu40XX3yRgQMHcvvtt5OZmcmbb75Jx44dA04UPmfOHK688kp69+7N7bffTnFxMa+99hqJiYlMmzatwtsjEAhqJ2KcKUOMM/4R44yASqycKxCEBUd5cH+l2GXZXto7NjbW5/dvv/223LNnTzk6OlqOj4+XO3fuLD/yyCPyiRMnZFmW5b///lu+5ZZb5KZNm8p6vV6uV6+efPXVV8t//vmn1/XdfffdMiB/+OGHHt85yqMv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RERE1EQwmBdhZrMZM2fOhNlsjvRUGlVzPW6g+R47j5vHTZHRnJ+L5nrsPG4ed3PRnI9dazyXDfGcuOL5cMXz0RDPiatwnw82wCAiIiIiIiIiImoimJlHRERERERERETURDCYR0RERERERERE1EQwmEdERERERERERNREMJhHRERERERERETURDCYF2Gvvvoq2rVrh7i4OAwdOhSrVq2K9JSCNmvWLAwePBjJycnIysrC2LFjsX37dpdtampqcPPNNyMjIwNJSUm4+OKLUVhY6LLN/v37cd555yEhIQFZWVm48847UV9f35iHEpInnngCgiBg2rRp8m2xfNyHDh3ChAkTkJGRgfj4ePTu3RurV6+W7xdFETNmzEBubi7i4+MxatQo7Ny502WM4uJiXHHFFUhJSUFaWhquvvpqVFRUNPah+M1qteLBBx9E+/btER8fj44dO+KRRx6Bsp9QLBz377//jvPPPx+tWrWCIAj45ptvXO7X6hg3btyIU045BXFxccjLy8NTTz0V7kNrVmLpOgPwWgPwOsPrjF2sHDevNeHz2muvoU+fPkhJSUFKSgqGDx+On376Sb4/ln9ueOLtnBQXF+PWW29F165dER8fj/z8fNx2220oLS11GSOWzomv14hEFEWcc845qu/R5nY+li9fjjPPPBOJiYlISUnBqaeeiurqavn+pvBzNxC+zklBQQEmTpyInJwcJCYmYsCAAfjyyy9dxoi1c6IU0c9kIkXM3LlzRZPJJL7zzjvili1bxGuvvVZMS0sTCwsLIz21oIwePVqcM2eOuHnzZnH9+vXiueeeK+bn54sVFRXyNjfccIOYl5cnLly4UFy9erU4bNgwccSIEfL99fX1Yq9evcRRo0aJ69atE+fNmydmZmaK9957byQOKWCrVq0S27VrJ/bp00ecOnWqfHusHndxcbHYtm1b8corrxRXrlwp7t69W/z555/FXbt2yds88cQTYmpqqvjNN9+IGzZsEC+44AKxffv2YnV1tbzNmDFjxL59+4orVqwQ//jjD7FTp07i+PHjI3FIfnnsscfEjIwM8YcffhD37Nkjfv7552JSUpL44osvytvEwnHPmzdPvP/++8WvvvpKBCB+/fXXLvdrcYylpaVidna2eMUVV4ibN28WP/nkEzE+Pl58/fXXG+swY1qsXWdEkdcaXmd4nZHEynHzWhM+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iPHx8WJmZqZ4xx13yO3gmwr3N3QsH/f3338v9urVSzSbzWK3bt3EN954w+V+m80mPvjgg2J2drZoNpvFkSNHitu3b3fZ5vjx4+L48ePFpKQkMSUlRZwyZYpYXl7emIcRkLKyMnHq1Klifn6+GBcXJ3bo0EG8//77XVqJx8JxL168WPU9PXnyZFEUtTvGDRs2iCeffLJoNpvF1q1bi0888URjHWKzEEvXGVHktUbC64xTLPy8dddcrjOiyGtNOF111VVi27ZtRZPJJLZs2VIcOXKkS5Amln9ueOLtnHh6LQIQ9+zZI48RS+fE12vEnXswTxSb3/mYNWuW2KZNGzEhIUEcPny4+Mcff7jc3xR+7gbC1znZsWOHeNFFF4lZWVliQkKC2KdPH/H99993GSPWzom7SH0mE0RRFP3P4yMiIiIiIiIiIqJI4Zp5RERERERERERETQSDeURERERERERERE0Eg3lERERERERERERNBIN5RERERERERERETQSDeURERERERERERE0Eg3lERERERERERERNBIN5RERERERERERETQSDeURERERERERERE0Eg3lEUeLKK6/E2LFjG32/7777LgRBgCAImDZtWtj2s3fvXnk//fr1C9t+iIiIiIiIiGKZIdITIGoOBEHwev/MmTPx4osvQhTFRpqRq5SUFGzfvh2JiYlh20deXh6OHDmCZ555Br/++mvY9kNEREREREQUyxjMI2oER44ckf/96aefYsaMGdi+fbt8W1JSEpKSkiIxNQD2YGNOTk5Y96HX65GTkxPR4yQiIiIiIiJq6lhmS9QIcnJy5K/U1FQ5eCZ9JSUlNSizPf3003Hrrbdi2rRpSE9PR3Z2Nt58801UVlZiypQpSE5ORqdOnfDTTz+57Gvz5s0455xzkJSUhOzsbEycOBHHjh0LeM7t2rXDo48+ikmTJiEpKQlt27bFd999h6NHj+LCCy9EUlIS+vTpg9WrV8uP2bdvH84//3ykp6cjMTERPXv2xLx584I+b0RERERERETkisE8oij23nvvITMzE6tWrcKtt96KG2+8EePGjcOIESOwdu1anH322Zg4cSKqqqoAACUlJTjzzDPRv39/rF69GvPnz0dhYSEuueSSoPb//PPP46STTsK6detw3nnnYeLEiZg0aRImTJiAtWvXomPHjpg0aZJcHnzzzTejtrYWv//+OzZt2oQnn3ySmXhEREREREREGmIwjyiK9e3bFw888AA6d+6Me++9F3FxccjMzMS1116Lzp07Y8aMGTh+/Dg2btwIAHjllVfQv39/PP744+jWrRv69++Pd955B4sXL8aOHTsC3v+5556L66+/Xt5XWVkZBg8ejHHjxqFLly64++67sXXrVhQWFgIA9u/fj5NOOgm9e/dGhw4d8K9//QunnnqqpueEiIiIiIiIqDljMI8oivXp00f+t16vR0ZGBnr37i3flp2dDQAoKioCAGzYsAGLFy+W1+BLSkpCt27dAAD//PNPSPuX9uVt/7fddhseffRRnHTSSZg5c6YcZCQiIiIiIiIibTCYRxTFjEajy/eCILjcJnXJtdlsAICKigqcf/75WL9+vcvXzp07g8qQU9uXt/1fc8012L17NyZOnIhNmzZh0KBBePnllwPeLxERERERERGpYzCPKIYMGDAAW7ZsQbt27dCpUyeXr8TExEaZQ15eHm644QZ89dVXuOOOO/Dmm282yn6JiIiIiIiImgMG84hiyM0334zi4mKMHz8ef/31F/755x/8/PPPmDJlCqxWa9j3P23aNPz888/Ys2cP1q5di8WLF6N79+5h3y8RERERERFRc8FgHlEMadWqFf78809YrVacffbZ6N27N6ZNm4a0tDTodOF/u1utVtx8883o3r07xowZgy5duuB///tf2PdLRERERERE1FwIoiiKkZ4EEUXOu+++i2nTpqGkpKRR9vfQQw/hm2++wfr16xtlf0SxwGaz4fDhw0hOTpbXqiQiouCJoojy8nK0atWqUf7gGe14nSEi0la4rzMGzUckoiantLQUSUlJuPnmm/Hkk0+GZR/79+9Hjx49UFdXhx49eoRlH0Sx6vDhw8jLy4v0NIiIYs6BAwfQpk2bSE8j4nidISIKj3BdZ5iZR9TMlZeXo7CwEACQlpaGzMzMsOynvr4ee/fuBQCYzWZ+YCQKQGlpKdLS0nDgwAGkpKREejpERE1eWVkZ8vLyUFJSgtTU1EhPJ+J4nSEi0la4rzPMzCNq5pKTk5GcnBz2/RgMBnTq1Cns+yGKRVLJU0pKCn/JIiLSEEtK7XidISIKj3BdZ7hABBERERERERERURPBYB4REREREREREVETwWAeERERERERERFRE8FgHhERERERERERURPBYB4RERERERER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c21uUfO22nf2m/1uKxrSdyEECgoKEBQU1EhX17L4+voCMOy2y3DToC1/b9WE42GJ41Edx8RSXl4eQkJCpPdXR2OYR0RE5OTkcjk6duzYoDa0Wm2b/cGqrfad/W5b2mq/Afv7ztDKTC43LKXu5eXVZl9HtWnL31s14XhY4nhUxzGxZHp/dXi7jdIqERERERERERERORzDPCIiIiIiIiIiohaCYR4REVErplar8eKLL0KtVjf3pTS5ttp39pv9bivact8djWNZHcfEEsfDEsejOo6JpcYeD5ngfuxEREREREREREQtAivziIiIiIiIiIiIWgiGeURERERERERERC0EwzwiIiIiIiIiIqIWgmEeERERERERERFRC8Ewj4iIqBX78MMP0blzZ7i6uiImJga7du1q7ktqkEWLFmHgwIHw9PSEv78/xo0bh7S0NItjiouLMXPmTLRr1w4ajQbjx49HVlaWxTEZGRkYM2YM3N3d4e/vj6effhrl5eVN2RW7LV68GDKZDHPmzJFua819Pn/+PO677z60a9cObm5uCA8Px549e6T7hRBYuHAhAgMD4ebmhoSEBKSnp1u0kZOTg8mTJ0Or1cLb2xsPPvggrl271tRdsVpFRQVeeOEFhIaGws3NDV27dsUrr7yCyvvWtZZ+b9u2DbfffjuCgoIgk8mwevVqi/sd1c+DBw/ixhtvhKurK4KDg/HGG280dtea3ccff4yIiAhotVpotVrExsbi119/le5vze8btalrTHJycvD444+jR48ecHNzQ0hICJ544gnk5eVZtNGaxqS+14iJEAKjR4+u8Xu0rY1HUlISbr75Znh4eECr1WLIkCG4fv26dH9LeN+1RX1jkpmZiSlTpiAgIAAeHh7o378//vvf/1q00drGpLJm/ZlMEBERUau0cuVKoVKpxPLly8Xhw4fFww8/LLy9vUVWVlZzX5rdRo4cKT7//HORmpoqUlJSxK233ipCQkLEtWvXpGMeffRRERwcLBITE8WePXvEDTfcIOLi4qT7y8vLRd++fUVCQoLYv3+/WLdunfDz8xPz589vji7ZZNeuXaJz584iIiJCzJ49W7q9tfY5JydHdOrUSdx///0iOTlZnDp1Svz222/ixIkT0jGLFy8WXl5eYvXq1eLAgQPib3/7mwgNDRXXr1+Xjhk1apTo16+f2Llzp9i+fbvo1q2b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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(2, 3)\n", + "fig.set_size_inches([15, 6])\n", + "#fig.subplots_adjust(hspace=0.5, wspace=0.3)\n", + "\n", + "ax[0, 0].plot((ev := vm_pre.events)[\"times\"], ev[\"V_m\"])\n", + "ax[0, 0].set_xlabel(\"Time [ms]\")\n", + "ax[0, 0].set_ylabel(\"Membrane potential [mV]\")\n", + "ax[0, 0].set_title(\"Presynaptic neuron\")\n", + "\n", + "ax[0, 1].plot((ev := vm_post_approx.events)[\"times\"], ev[\"V_m\"], label=\"Approximation\")\n", + "ax[0, 1].plot((ev := vm_post_exact.events)[\"times\"], ev[\"V_m\"], \"--\", label=\"Exact model\")\n", + "ax[0, 1].set_title(\"Postsynaptic neuron\")\n", + "\n", + "ax[0, 2].plot((ev := vm_post_approx.events)[\"times\"], ev[\"V_m\"], label=\"Approximation\")\n", + "ax[0, 2].plot((ev := vm_post_exact.events)[\"times\"], ev[\"V_m\"], \"--\", label=\"Exact model\")\n", + "ax[0, 2].set_title(\"Postsynaptic neuron\")\n", + "ax[0, 2].legend()\n", + "ax[0, 2].set_xlim(300, 400)\n", + "\n", + "ax[1, 0].axis(\"off\")\n", + "\n", + "ax[1, 1].plot((ev := vm_post_approx.events)[\"times\"], ev[\"V_m\"]-vm_post_exact.events[\"V_m\"], label=\"Approximation\")\n", + "ax[1, 1].set_xlabel(\"Time [ms]\")\n", + "ax[1, 1].set_ylabel(\"Error [mV]\")\n", + "\n", + "ax[1, 2].plot((ev := vm_post_approx.events)[\"times\"], ev[\"V_m\"]-vm_post_exact.events[\"V_m\"], label=\"Approximation\")\n", + "ax[1, 2].set_xlabel(\"Time [ms]\")\n", + "ax[1, 2].set_xlim(300, 400);" + ] + }, + { + "cell_type": "markdown", + "id": "026369ac-7b52-4a72-a059-42554754bac9", + "metadata": {}, + "source": [ + "### Systematic parameter scan\n", + "\n", + "- In the following, vary\n", + " - number of presynaptic neurons\n", + " - firing rate of the presynaptic neurons\n", + " - weight from pre- to postsynaptic neurons\n", + "- Technical aspects\n", + " - drive presynaptic neurons by poisson processes\n", + " - this requires some experimentation with poisson rates to get approximately the desired rates from the presynaptic neuron" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "7c373def-4f75-4d20-a692-d2e0b51c1a0f", + "metadata": {}, + "outputs": [], + "source": [ + "def do_sim(n_pre, r_pre, weight, t_sim=1000, show=False, seed=955):\n", + " nest.set_verbosity('M_ERROR')\n", + " nest.ResetKernel()\n", + " nest.rng_seed = seed\n", + " nest.local_num_threads = 4\n", + " sg = nest.Create('poisson_generator', params={'rate': r_pre})\n", + " \n", + " pp = params.copy()\n", + " pp['t_ref'] = 0\n", + " pre = nest.Create('iaf_wang_2002', n=n_pre, params=pp) # t_ref==0 to make \"parroting\" easier\n", + " post_app = nest.Create('iaf_wang_2002', params=params) \n", + " post_exa = nest.Create('iaf_wang_2002_exact', params=params)\n", + " rec_pre, rec_post_app, rec_post_exa = nest.Create('spike_recorder', n=3)\n", + " vm_app, vm_exa = nest.Create(\"voltmeter\", params={\"interval\": nest.resolution}, n=2)\n", + " \n", + " nest.Connect(sg, pre, syn_spec={'receptor_type': 1, 'weight': 76}) # gives approx one spike out for one in\n", + " nest.Connect(pre, post_app+post_exa, syn_spec={'receptor_type': 3, 'weight': weight})\n", + " nest.Connect(pre, rec_pre)\n", + " nest.Connect(post_app, rec_post_app)\n", + " nest.Connect(post_exa, rec_post_exa)\n", + " nest.Connect(vm_app, post_app)\n", + " nest.Connect(vm_exa, post_exa)\n", + " nest.Simulate(t_sim)\n", + "\n", + " rate_in = rec_pre.n_events / ( n_pre * t_sim ) * 1000\n", + " rate_post_app = rec_post_app.n_events / t_sim * 1000\n", + " rate_post_exa = rec_post_exa.n_events / t_sim * 1000\n", + " e_app = vm_app.events\n", + " e_exa = vm_exa.events\n", + " rms_Vm = np.mean( ( e_app['V_m'] - e_exa['V_m'] ) ** 2 ) ** 0.5\n", + " mean_Vm_exa = np.mean( e_exa['V_m'] )\n", + " mean_Vm_app = np.mean( e_app['V_m'] )\n", + " \n", + " if show:\n", + " plt.plot(e_app['times'], e_app['V_m'], label='approx');\n", + " plt.plot(e_exa['times'], e_exa['V_m'], label='exact');\n", + " plt.xlabel('Time [ms]');\n", + " plt.ylabel('Membrane potential [mV]');\n", + " plt.legend();\n", + " \n", + " return {'n_pre': n_pre, 'w': weight, 'r_pre': r_pre, 'r_in': rate_in, 'r_app': rate_post_app, 'r_exa': rate_post_exa,\n", + " 'rms_Vm': rms_Vm, 'mean_Vm_exa': mean_Vm_exa, 'mean_Vm_app': mean_Vm_app}" + ] + }, + { + "cell_type": "markdown", + "id": "23559c7b-5c3d-47b1-ac7e-d60a0ff81444", + "metadata": {}, + "source": [ + "#### Example run to show that we get behavior consistent with first example" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "70e0d8fe-0c06-4282-8513-2c45d84b134c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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WcPYdX5UqqcTSBWl+n9rU854//fHnD7v/O+feb0zz89KupkBDfgMQgghhKfTPKGaNWsWzz333HmP2bNnD126dHFuHz16lB9++IHPPvvM3eFdtNmzZzNjxgzndmlpKQkJCS6/T+9H6jfl2JSitA5ACCGEaGKaJ1QPPfTQBZ+WS0lJqbO9cOFCIiMjGTduXJ39sbGxHD9etwlGzXZs7NnnVGNjY9mwYcN5zznXdcPCws46OgWg1+vR6/Xn+1hCCCGE8BKaJ1TR0dFER9f/iTBVVVm4cKHzSbzaBg0axJw5c7BYLM73VqxYQefOnc863VdzzjPPPENBQQExMTHOc8LCwujWrZvzmO+++67OeStWrGDQoEH1jlsIIYQQ3kundQANlZ6eTnZ2NnffffcZ791yyy34+/szZcoUdu3axaeffsrLL79cZ+rtyy+/rDN9OGLECLp168akSZPYtm0bP/zwA48++ij333+/c4Rp6tSpHDx4kEceeYS9e/fy2muv8dlnnzF9+nT3f2AhhBBCNHsel1C98847DB48uE5SVCM8PJzly5eTnZ1NWloaDz30EI8//nidHlQlJSVkZmY6t318fPj222/x8fFh0KBB3Hbbbdx+++089dRTzmOSk5NZunQpK1asoFevXrzwwgu8/fbb0oNKCCGEEIAH96HyNO7qQyWEEEII96nvz2+PG6ESQgghhGhuJKESQgghhGgkSaiEEEIIIRpJEiohhBBCiEaShEoIIYQQopEkoRJCCCGEaCRJqIQQQgghGkkSKiGEEEKIRpKESgghhBCikTRfHLmlqGlIX1paqnEkQgghhKivmp/bF1pYRhKqJlJWVgZAQkKCxpEIIYQQoqHKysoIDw8/5/uyll8TsdvtHDt2jNDQUBRFcdl1S0tLSUhI4MiRI7JGoJvJd9005HtuGvI9Nw35npuOu75rVVUpKysjPj4ene7clVIyQtVEdDodbdu2ddv1w8LC5C9rE5HvumnI99w05HtuGvI9Nx13fNfnG5mqIUXpQgghhBCNJAmVEEIIIUQjSULl4fR6PXPnzkWv12sditeT77ppyPfcNOR7bhryPTcdrb9rKUoXQgghhGgkGaESQgghhGgkSaiEEEIIIRpJEiohhBBCiEaShEoIIYQQopEkofJwr776KklJSQQEBDBgwAA2bNigdUgeY968efTr14/Q0FBiYmIYP348mZmZdY6pqqri/vvvJzIykpCQECZMmMDx48frHJOTk8M111xDUFAQMTEx/PWvf8VqtTblR/Eo8+fPR1EU/vKXvzj3yffsOrm5udx2221ERkYSGBhIjx49+O2335zvq6rK448/TlxcHIGBgQwfPpz9+/fXuUZRURG33norYWFhREREMGXKFMrLy5v6ozRbNpuNxx57jOTkZAIDA2nfvj1PP/10nbXe5Hu+OKtWrWLs2LHEx8ejKApfffVVnfdd9b1u376dyy+/nICAABISEvjHP/7R+OBV4bE++eQT1d/fX3333XfVXbt2qffcc48aERGhHj9+XOvQPMLIkSPVhQsXqjt37lS3bt2qjhkzRm3Xrp1aXl7uPGbq1KlqQkKCunLlSvW3335TBw4cqA4ePNj5vtVqVbt3764OHz5c3bJli/rdd9+pUVFR6uzZs7X4SM3ehg0b1KSkJLVnz57qtGnTnPvle3aNoqIiNTExUZ08ebK6fv169eDBg+oPP/ygHjhwwHnM/Pnz1fDwcPWrr75St23bpo4bN05NTk5WKysrnceMGjVK7dWrl7pu3Tr1119/VTt06KDefPPNWnykZumZZ55RIyMj1W+//VbNzs5WFy9erIaEhKgvv/yy8xj5ni/Od999p86ZM0f94osvVED98ssv67zviu+1pKREbd26tXrrrbeqO3fuVBctWqQGBgaq//nPfxoVuyRUHqx///7q/fff79y22WxqfHy8Om/ePA2j8lwFBQUqoP7yyy+qqqpqcXGx6ufnpy5evNh5zJ49e1RAXbt2raqqjr/8Op1Ozc/Pdx7z+uuvq2FhYarJZGraD9DMlZWVqR07dlRXrFihXnHFFc6ESr5n15k5c6Z62WWXnfN9u92uxsbGqgsWLHDuKy4uVvV6vbpo0SJVVVV19+7dKqBu3LjRecyyZctURVHU3Nxc9wXvQa655hr1rrvuqrPvhhtuUG+99VZVVeV7dpXfJ1Su+l5fe+011WAw1Pm3Y+bMmWrnzp0bFa9M+Xkos9nMpk2bGD58uHOfTqdj+PDhrF27VsPI/r+9u41tquzDAH51Le0Yh62DyingxosMO6BooUhKDTFChhMJ+mFGgt1YAgqOlyqRV3n5ABMTo1GIEpfISMQMPiAgQcjcCmQGx8bWsaF2BBjzw14ELB3M6Gjv5wPuPJxnewas7cbY9UtOUs59b//7XAvtP+fsnPVdN2/eBAAMGTIEAHDu3Dm0tbWpMrZYLEhOTlYyPnPmDKxWK2RZVubMmTMHgUAAFy5c6MHVP/pycnIwd+5cVZ4Ac46kI0eOwG63IyMjA8OGDYPNZkNeXp4yfuXKFTQ2NqqyTkhIwPTp01VZG41G2O12Zc7s2bMRExOD0tLSnjuYR9iMGTNQVFSE2tpaAEBVVRVKSkqQnp4OgDlHS6RyPXPmDGbOnAm9Xq/MmTNnDnw+H/78889ur49/HLmPunbtGoLBoOoDBgBkWcZvv/3WS6vqu0KhENxuN5xOJyZNmgQAaGxshF6vh9FoVM2VZRmNjY3KnM5+Bu1jdFdBQQEqKipQVlbWYYw5R87ly5fx5Zdf4r333sOGDRtQVlaGlStXQq/XIysrS8mqsyzvzXrYsGGqcZ1OhyFDhjDrf61btw6BQAAWiwVarRbBYBDbt2/HwoULAYA5R0mkcm1sbMSYMWM6fI/2scTExG6tjw0VEe6ePampqUFJSUlvL+Wx8/vvv2PVqlUoLCxEbGxsby/nsRYKhWC325GbmwsAsNlsqKmpwe7du5GVldXLq3t8HDhwAPv27cO3336LiRMnwuv1wu12Y8SIEcy5H+Mlvz7KZDJBq9V2uBOqqakJZrO5l1bVNy1fvhxHjx6Fx+PBk08+qew3m834559/4Pf7VfPvzdhsNnf6M2gfo7uX9JqbmzFlyhTodDrodDqcOnUKn3/+OXQ6HWRZZs4RMnz4cEyYMEG1LzU1FfX19QD+m1VX7xtmsxnNzc2q8Tt37uDGjRvM+l/vv/8+1q1bhzfeeANWqxUulwvvvvsuPvzwQwDMOVoilWu03k/YUPVRer0eU6dORVFRkbIvFAqhqKgIDoejF1fWdwghsHz5cnz33XcoLi7ucAp46tSpGDBggCpjn8+H+vp6JWOHw4Hq6mrVf+DCwkLEx8d3+GDrr2bNmoXq6mp4vV5ls9vtWLhwofKaOUeG0+ns8OiP2tpajBo1CgAwZswYmM1mVdaBQAClpaWqrP1+P86dO6fMKS4uRigUwvTp03vgKB59ra2tiIlRf3xqtVqEQiEAzDlaIpWrw+HA6dOn0dbWpswpLCzE008/3e3LfQD42IS+rKCgQBgMBpGfny9++eUX8dZbbwmj0ai6E4r+v2XLlomEhARx8uRJ0dDQoGytra3KnKVLl4rk5GRRXFwsysvLhcPhEA6HQxlvv50/LS1NeL1ecfz4cfHEE0/wdv77uPcuPyGYc6ScPXtW6HQ6sX37dnHx4kWxb98+ERcXJ7755htlzo4dO4TRaBSHDx8W58+fF/Pnz+/0tnObzSZKS0tFSUmJSElJ6fe3898rKytLjBw5UnlswsGDB4XJZBJr1qxR5jDn7mlpaRGVlZWisrJSABCffPKJqKysFFevXhVCRCZXv98vZFkWLpdL1NTUiIKCAhEXF8fHJvR3O3fuFMnJyUKv14vnnntO/Pzzz729pD4DQKfbnj17lDl//fWXeOedd0RiYqKIi4sTr732mmhoaFB9n7q6OpGeni4GDhwoTCaTWL16tWhra+vho+lb/rehYs6R8/3334tJkyYJg8EgLBaL+Oqrr1TjoVBIbNq0SciyLAwGg5g1a5bw+XyqOdevXxcLFiwQkiSJ+Ph4kZ2dLVpaWnryMB5pgUBArFq1SiQnJ4vY2FgxduxYsXHjRtVt+My5ezweT6fvy1lZWUKIyOVaVVUlnn/+eWEwGMTIkSPFjh07wl67Roh7Hu1KRERERA+Nv0NFREREFCY2VERERERhYkNFREREFCY2VERERERhYkNFREREFCY2VERERERhYkNFREREFCY2VERERERhYkNFRI+1RYsW4dVXX+3xuvn5+dBoNNBoNHC73VGrU1dXp9R59tlno1aHiLqm6+0FEBF1l0aj6XJ8y5Yt+Oyzz9BbfxAiPj4ePp8PgwYNilqNpKQkNDQ04OOPP8aPP/4YtTpE1DU2VETUZzU0NCiv9+/fj82bN8Pn8yn7JEmCJEm9sTQAdxs+s9kc1RparRZms7lXj5OIeMmPiPows9msbAkJCUoD075JktThkt8LL7yAFStWwO12IzExEbIsIy8vD7dv30Z2djYGDx6McePG4YcfflDVqqmpQXp6OiRJgizLcLlcuHbt2kOvefTo0di2bRsyMzMhSRJGjRqFI0eO4I8//sD8+fMhSRImT56M8vJy5WuuXr2KefPmITExEYMGDcLEiRNx7NixbudGRJHHhoqI+p29e/fCZDLh7NmzWLFiBZYtW4aMjAzMmDEDFRUVSEtLg8vlQmtrKwDA7/fjxRdfhM1mQ3l5OY4fP46mpia8/vrr3ar/6aefwul0orKyEnPnzoXL5UJmZibefPNNVFRU4KmnnkJmZqZyqTInJwd///03Tp8+jerqanz00Uc8I0X0iGFDRUT9zjPPPIMPPvgAKSkpWL9+PWJjY2EymbBkyRKkpKRg8+bNuH79Os6fPw8A2LVrF2w2G3Jzc2GxWGCz2fD111/D4/Ggtrb2oeu//PLLePvtt5VagUAA06ZNQ0ZGBsaPH4+1a9fi119/RVNTEwCgvr4eTqcTVqsVY8eOxSuvvIKZM2dGNBMiCg8bKiLqdyZPnqy81mq1GDp0KKxWq7JPlmUAQHNzMwCgqqoKHo9H+Z0sSZJgsVgAAJcuXQqrfnutruqvXLkS27Ztg9PpxJYtW5RGj4geHWyoiKjfGTBggOrfGo1Gta/97sFQKAQAuHXrFubNmwev16vaLl682K0zRZ3V6qr+4sWLcfnyZbhcLlRXV8Nut2Pnzp0PXZeIoocNFRHRfUyZMgUXLlzA6NGjMW7cONUWzUci3CspKQlLly7FwYMHsXr1auTl5fVIXSJ6MGyoiIjuIycnBzdu3MCCBQtQVlaGS5cu4cSJE8jOzkYwGIx6fbfbjRMnTuDKlSuoqKiAx+NBampq1OsS0YNjQ0VEdB8jRozATz/9hGAwiLS0NFitVrjdbhiNRsTERP9tNBgMIicnB6mpqXjppZcwfvx4fPHFF1GvS0QPTiN66xHCRESPsfz8fLjdbvj9/h6pt3XrVhw6dAher7dH6hGRGs9QERFFyc2bNyFJEtauXRu1GvX19ZAkCbm5uVGrQUT3xzNURERR0NLSojxHymg0wmQyRaXOnTt3UFdXBwAwGAxISkqKSh0i6hobKiIiIqIw8ZIfERERUZjYUBERERGFiQ0VERERUZjYUBERERGFiQ0VERERUZjYUBERERGFiQ0VERERUZjYUBERERGF6T9bmJd9VgS7igAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "do_sim(1, 10, 1, show=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "4464fa0a-d5f0-4a78-81d6-fff64b2cbfef", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74efe493-f9a4-4c85-9e1b-b506d92f9026", + "metadata": {}, + "outputs": [], + "source": [ + "n_pre = [1, 10, 100, 1000, 1600, 3200]\n", + "weight = [0.1, 1, 10, 20, 50, 100]\n", + "r_pre = [4.5, 18, 54, 100] # chosen so that actual input rates to post neuron are 1, 10, 50, 100\n", + "\n", + "res = []\n", + "for npr in n_pre:\n", + " print(f\"{npr:6d}\", end=':')\n", + " for w in weight:\n", + " for rp in r_pre:\n", + " if npr * rp * w > 1e5:\n", + " continue # skip unrealistically high input regimes\n", + " print('.', end='')\n", + " res.append(do_sim(npr, rp, w))\n", + " print(':', end='')\n", + " print()\n", + "\n", + "d = pd.DataFrame.from_records(res)\n", + "d['Total input'] = d.n_pre * d.r_in * d.w " + ] + }, + { + "cell_type": "markdown", + "id": "f8f73c7d-0507-43aa-b241-e7d42b3d3de6", + "metadata": {}, + "source": [ + "### Errors in V_m and s_NMDA \n", + "\n", + "- Plot against total input, i.e., product of number of presynaptic neurons, input rate and weight\n", + "- For Fig 2 in Wang (2002), the total input is 1600 neurons * 25 spikes/neuron/s * 0.165 nS * 1.7 ≈ 11220 nS/s ≈ 10^4\n", + "- Color in plots indicates synaptic weight\n", + "- Plateau in membrane potential error related to start of spiking regime\n", + "- Scale on colorbars is log10(weight)\n", + "- Marker size is sqrt(number of presynaptic neurons)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "f0bea39d-ca88-42b8-b036-cce030a6c2e2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7twZbm5ucHV1RXFxMc6fP69XTL1799b8+9aQWX5+vtY5ERERmn/b2NggNDS0zniJiOrCycNEzVhsbCyuXLmCjz76CO3atYNCoUBERATKy8v1qtfW1lbrtSAIEEWx3tfLZDJIkqRVVlFRoVdMRNQ8sMeGyMK5urrCz88PO3bs0CrfsWMHAgMDAQB2dnYAALVaXe2cF198EUOHDkWPHj2gUChQUFDQJHHv2rVL8+/Kykrs27cP3bt3B1A1dFZUVISSkhLNOXcuVbezs6vWHiIi9tgQWYHp06dj1qxZ6NixI4KDg7F48WJkZmbiu+++AwB4eXnBwcEBqampaNOmDezt7eHm5obOnTvjm2++QWhoKFQqFaZPn95kc1WUSiU6d+6M7t2748MPP8S1a9cwadIkAEB4eDgcHR3x+uuv48UXX8Tu3burrXoKCAhAVlYWMjMz0aZNG7i4uEChUDRJ7ERkvthjQ2QFXnzxRSQkJGDq1Kno1asXUlNTsXr1anTu3BlA1RyWjz/+GJ9//jn8/Pzw4IMPAgC++uorXLt2DXfddReefPJJvPjii/Dy8mqSmN977z289957CAoKwvbt27F69Wp4enoCqNob59tvv8W6devQq1cvfP/999U2IHzooYfwwAMPIDIyEq1atcL333/fJHETkXkTpDsHsomIjOjs2bNo3749Dhw4wJ2Dicjg2GNDREREVoOJDREREVkNDkURERGR1WCPDREREVkNJjZERERkNZjYEBERkdVgYkNERERWg4kNERERWQ0mNkRERGQ1mNgQERGR1WBiQ0RERFbj/wETE0tpzSyZPwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "d.plot(x='Total input', y='rms_Vm', kind='scatter', c=np.log10(d.w), s=d.n_pre**0.5, \n", + " logx=True, logy=True, title='Error in membrane potential', colormap='viridis');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eda60a2a-f215-4aa5-b010-a0951674f6dd", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/htmldoc/model_details/wong_approximate_implementation.ipynb b/doc/htmldoc/model_details/wong_approximate_implementation.ipynb deleted file mode 100644 index f830da65d6..0000000000 --- a/doc/htmldoc/model_details/wong_approximate_implementation.ipynb +++ /dev/null @@ -1,363 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "0dd90717-10b0-47da-b891-eec7bf86a8a5", - "metadata": {}, - "source": [ - "# Approximate NMDA dynamics\n", - "\n", - "In this notebook, we will describe the approximation we employ, and compare the dynamics to the exact implementation. The full sub-threshold dynamics are given by the following equations\n", - "\n", - "$$\\begin{align}\n", - " I_\\mathrm{syn}(t) &= \n", - " + I_\\mathrm{rec, AMPA}(t) \n", - " + I_\\mathrm{rec, NMDA}(t) \n", - " + I_\\mathrm{rec, GABA}(t) \\mathrm{,}\\\\[1.5ex]\n", - " I_\\mathrm{ext,AMPA} &= g_\\mathrm{ext,AMPA}(V(t) - V_E)S_{j,\\mathrm{ext, AMPA}}(t)\\mathrm{,}\\\\\n", - " I_\\mathrm{rec,AMPA} &= g_\\mathrm{rec,AMPA}(V(t) - V_E)\\sum_{j=1}^{N_E}w_jS_{j,\\mathrm{rec,AMPA}}(t) \\mathrm{,}\\\\\n", - " I_\\mathrm{rec,NMDA} &= \\frac{g_\\mathrm{rec,NMDA}(V(t) - V_E)}{1+[\\mathrm{Mg^{2+}}]\\mathrm{exp}(-0.062V(t))/3.57}\\sum_{j=1}^{N_E}w_jS_{j,\\mathrm{NMDA}}(t) \\mathrm{,}\\\\\n", - " I_\\mathrm{rec,GABA} &= g_\\mathrm{rec,GABA}(V(t) - V_E)\\sum_{j=1}^{N_E}w_jS_{j,\\mathrm{GABA}}(t) \\mathrm{.}\n", - "\\end{align}\n", - "$$\n", - "\n", - "where the variables $S_{j,\\mathrm{ext,AMPA}},S_{j,\\mathrm{rec,AMPA}},S_{j,\\mathrm{NMDA}},\\ \\mathrm{ and }\\ S_{j,\\mathrm{GABA}}$\n", - "are governed by the equations\n", - "\n", - "$$\\begin{align}\n", - " \\frac{dS_{j,\\mathrm{AMPA}}}{dt} &= -\\frac{S_{j,\\mathrm{AMPA}}}{\\tau_\\mathrm{AMPA}}+\\sum_k \\delta (t - t_j^k) \\mathrm{,} \\\\\n", - " \\frac{dS_{j,\\mathrm{GABA}}}{dt} &= -\\frac{S_{j,\\mathrm{GABA}}}{\\tau_\\mathrm{GABA}} + \\sum_k \\delta (t - t_j^k) \\mathrm{,} \\\\\n", - " \\frac{dS_{j,\\mathrm{NMDA}}}{dt} &= -\\frac{S_{j,\\mathrm{NMDA}}}{\\tau_\\mathrm{NMDA,decay}}+ \\alpha x_j (1 - S_{j,\\mathrm{NMDA}})\\mathrm{,}\\\\\n", - " \\frac{dx_j}{dt} &= - \\frac{x_j}{\\tau_\\mathrm{NMDA,rise}} + \\sum_k \\delta (t - t_j^k) \\mathrm{.}\n", - "\\end{align}\n", - "$$\n", - "\n", - "We will from now on only focus on the last two equations, which are the subjects of the approximation in the model. We drop the subscript NMDA in the following. Between spikes, plugging in the solution for $x$ on the interval $[0, t]$, we get the following equation for $S_j$\n", - "$$\n", - "\\begin{align}\n", - " \\frac{dS_{j}}{dt} + \\bigg(\\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}}\\bigg] \\bigg) S_{j,\\mathrm{NMDA}} &= \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}}\\bigg] \\mathrm{,}\n", - "\\end{align}\n", - "$$\n", - "for which the formal solution can easily be found by an integrating factor:\n", - "$$\n", - " S_{j}(t) = \\mathrm{exp}\\Bigg[-\\int_0^t \\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] dt' \\Bigg] \n", - " \\Bigg( \\int_0^t \\mathrm{exp}\\Bigg[\\int_0^{t'} \\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t''}{\\tau_\\mathrm{r}} \\bigg] dt'' \\Bigg]\\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}}\\bigg] dt' + S_{j}^0 \\Bigg) \\mathrm{.}\n", - "$$\n", - "\n", - "The first and innermost integrals can be solved, which gives\n", - "$$\n", - " S_{j}(t) \n", - " = \n", - " \\mathrm{exp}\\Bigg[-\\frac{t}{\\tau_\\mathrm{d}} - \\alpha x_j^{k-1} \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", - " \\Bigg( \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha x_j^0 \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha x_j^0 dt' + S_{j}^0 \\Bigg) \\mathrm{.}\n", - "$$\n", - "\n", - "Since we have two different time scales in the exponential inside the remaining integral, there is no exact solution for arbitrary limits of integration. We would like to approximate this function with an exponential function, such that we can integrate the sum of multiple such functions in a single variable. Our approximate function will then have the form \n", - "$$\n", - "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", - "$$\n", - "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit as $t \\to \\infty$, in the sense that their ratio approaches unity. We additionally make the assumption that $x_0 = 0$ immediately before every spikes. Since $\\tau_r$ is very small (e.g. $2 ms$), this is reasonable unless the neuron is firing very rapidly.\n", - "\n", - "Setting $x_0 = 1$ in the exact solution upon spiking, we then get\n", - "$$\\begin{align}\n", - " S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", - " &=\n", - " \\mathrm{exp}\\Bigg[-\\frac{t}{\\tau_\\mathrm{d}} - \\alpha \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", - " \\Bigg( \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha dt' + S_{j}^0 \\Bigg) \\mathrm{,} \\\\\n", - " S_\\mathrm{jump}\n", - " &=\n", - " \\mathrm{exp}\\Bigg[- \\alpha x_j^{k-1} \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", - " \\Bigg( \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha dt' + S_{j}^0 \\Bigg)\n", - "\\end{align}\n", - "$$\n", - "and taking the limit, we get\n", - "$$\\begin{align}\n", - " S_\\mathrm{jump} = \n", - " \\mathrm{exp}\\Big[-\\alpha \\tau_\\mathrm{r}\\Big] S_0\n", - " - \n", - " \\alpha \\tau_\\mathrm{r} \\mathrm{ExpE}\\Big[\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}, \\alpha \\tau_\\mathrm{r} \\Big] \n", - " +\n", - " (\\alpha \\tau_\\mathrm{r})^\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\mathrm{Gamma}\\Big[1 - \\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\Big] \\mathrm{,}\n", - "\\end{align}\n", - "$$\n", - "where $S_0$ is the initial condition of $S$ in the exact solution.\n", - "\n", - "After spiking, the new value of $S$ is then dependent only on the value of $S$ immediately before spiking. In pre-synaptic neurons, every time a spike occurs, the value of $S_0$ immediately before spiking is computed. $\\Delta S = S_\\mathrm{jump} - S_0$ is then computed, and sent to post-synaptic neurons as an offset in the SpikeEvent object. The post-synaptic neuron then adds the offset multiplied by weight and multiplicity to its $s_\\mathrm{NMDA}$ variable. Integration in the post-synaptic neuron is then done as a normal exponential synapse." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "524ec469-ba8d-4b0d-a9e9-1941828f16d5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - " -- N E S T --\n", - " Copyright (C) 2004 The NEST Initiative\n", - "\n", - " Version: 3.6.0-post0.dev0\n", - " Built: Feb 15 2024 17:55:17\n", - "\n", - " This program is provided AS IS and comes with\n", - " NO WARRANTY. See the file LICENSE for details.\n", - "\n", - " Problems or suggestions?\n", - " Visit https://www.nest-simulator.org\n", - "\n", - " Type 'nest.help()' to find out more about NEST.\n", - "\n" - ] - } - ], - "source": [ - "import nest\n", - "import matplotlib.pyplot as plt\n", - "\n", - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "3ec686e2-2ae2-4479-9b57-7d6151f7a1f1", - "metadata": {}, - "outputs": [], - "source": [ - "w_ext = 40.0\n", - "w_ex = 1.0\n", - "w_in = 15.0\n", - "\n", - "params = {\n", - " \"tau_AMPA\": 2.0,\n", - " \"tau_GABA\": 5.0,\n", - " \"tau_rise_NMDA\": 2.0,\n", - " \"tau_decay_NMDA\": 100.0,\n", - " \"conc_Mg2\": 1.0,\n", - " \"E_ex\": 0.0,\n", - " \"E_in\": -70.0,\n", - " \"E_L\": -70.0,\n", - " \"V_th\": -55.0,\n", - " \"C_m\": 500.0,\n", - " \"g_L\": 25.0,\n", - " \"V_reset\": -70.0,\n", - " \"alpha\": 0.5,\n", - " \"t_ref\": 2.0,\n", - "}" - ] - }, - { - "cell_type": "markdown", - "id": "ab7b922a-1ab7-4c40-8dd5-35c23c1b4fde", - "metadata": {}, - "source": [ - "We create 1 pre-synaptic approximate neuron, 1 post-synaptic approximate and 1 post-synaptic exact neuron. Stimulating the pre-synaptic neuron, we will compare the synaptic variables and membrane potential in the approximate and exact post-synaptic neurons." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "77c6bf6b-c422-46e3-a88e-4925e9bd7842", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Feb 19 12:31:55 NodeManager::add_node [Info]: \n", - " Neuron models emitting precisely timed spikes exist: the kernel property \n", - " off_grid_spiking has been set to true.\n", - " \n", - " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", - "\n", - "Feb 19 12:31:55 NodeManager::add_node [Info]: \n", - " Neuron models emitting precisely timed spikes exist: the kernel property \n", - " off_grid_spiking has been set to true.\n", - " \n", - " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", - "\n", - "Feb 19 12:31:55 NodeManager::prepare_nodes [Info]: \n", - " Preparing 8 nodes for simulation.\n", - "\n", - "Feb 19 12:31:55 SimulationManager::start_updating_ [Info]: \n", - " Number of local nodes: 8\n", - " Simulation time (ms): 1000\n", - " Number of OpenMP threads: 1\n", - " Number of MPI processes: 1\n", - "\n", - "Feb 19 12:31:55 SimulationManager::run [Info]: \n", - " Simulation finished.\n" - ] - } - ], - "source": [ - "nest.ResetKernel()\n", - "nest.rng_seed = 12345\n", - "\n", - "# pre-synaptic neuron, must be approximate model since the post-synaptic approximate model needs the offset\n", - "nrn1 = nest.Create(\"iaf_wang_2002\", params)\n", - "nrn2 = nest.Create(\"iaf_wang_2002\", params)\n", - "nrn3 = nest.Create(\"iaf_wang_2002_exact\", params)\n", - "\n", - "pg = nest.Create(\"poisson_generator\", {\"rate\": 50.0})\n", - "# since we're \"abusing\" spike offset, set time_in_steps to True and multiply by resolution after\n", - "sr = nest.Create(\"spike_recorder\", {\"time_in_steps\": True})\n", - "\n", - "mm1 = nest.Create(\"multimeter\", {\"record_from\": [\"V_m\", \"s_AMPA\", \"s_NMDA\", \"s_GABA\"], \"interval\": 0.1})\n", - "mm2 = nest.Create(\"multimeter\", {\"record_from\": [\"V_m\", \"s_AMPA\", \"s_NMDA\", \"s_GABA\"], \"interval\": 0.1})\n", - "mm3 = nest.Create(\"multimeter\", {\"record_from\": [\"V_m\", \"s_AMPA\", \"s_NMDA\", \"s_GABA\"], \"interval\": 0.1})\n", - "\n", - "ampa_ext_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_ext, \"receptor_type\": 1}\n", - "\n", - "ampa_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": 1}\n", - "\n", - "nmda_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": 3}\n", - "\n", - "gaba_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_in, \"receptor_type\": 2}\n", - "\n", - "nest.Connect(pg, nrn1, syn_spec=ampa_ext_syn_spec)\n", - "nest.Connect(nrn1, sr)\n", - "nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec)\n", - "nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec)\n", - "nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec)\n", - "nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec)\n", - "nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec)\n", - "nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec)\n", - "nest.Connect(mm1, nrn1)\n", - "\n", - "nest.Connect(mm2, nrn2)\n", - "nest.Connect(mm3, nrn3)\n", - "\n", - "nest.Simulate(1000.0)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "9df3957c-7903-4e7f-a767-e98d121dbbd0", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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Qu7du0dkMhnp3r072bFjBzl8+DDZsGEDGTZsGMnLy+PWyTAMuXnzpokt3377LQFArly5Qggh5NChQwQASUxMJK+88grZvXs32bhxI6lduzZp0KAB0Wq13LLLly8n8+bNIzt37iR///03WbduHWnVqhVp1KgRUavV3HwzZ84kAEhCQgJ57733yL59+8jixYuJn58fadOmDTfvuXPnSN26dUmbNm3I8ePHyfHjx8m5c+e4bQRA1qxZw4174cIF4u/vTxITE8mKFSvIgQMHyE8//UQGDx5MCgsLbR4XdqzExETSq1cvsmPHDrJjxw7SokULEhISQvLz87l5Dx48SCQSCenYsSP55ZdfyN69e8nIkSMtbGG30dY5cO/ePW5aQkICiYmJIXXr1iWrV68mhw4dIqdOnSLXr18nAQEBpF69emT9+vVk9+7d5OWXXyYAyBdffMEt78oxolCoL6OUB874O71eT3r27ElEIhGZPn06+fPPP8nChQs5X6BUKgkhjn2aUqkke/fuJQDIqFGjOH9x+/ZtQgghPXv2JBEREeS7774jhw8fJjt27CAzZswgmzZtIoQQkpGRQaRSKfnoo49MbM3JySE+Pj7kvffe46YlJCSQWrVqkaZNm5L169eTffv2kUGDBhEA5O+//+bmu379OnnrrbfIpk2byOHDh8muXbvIqFGjiEAgIIcOHeLmY/1PfHw8eeqpp8i2bdvIli1byKOPPkrEYjE5duwYIYSQlJQU8s477xAAZPv27dw2FhQUEEII6dSpE+nUqRM3rkajIV26dCEikYhMmTKF7Nmzh+zcuZN8+OGHZOPGjXaPXadOnUhYWBhp0KABWbFiBdm/fz95++23CQCybt06br6SkhLSunVrEh4eThYvXkz++usv8tVXX5GgoCDStWtXotfrTbaR7yNZAJCZM2dyn/n3Bx988AHZv38/2bFjh9PniivHiFKzoL6PUl5Q/0f9H/V/lPKgTALnwYMHybBhw4ifnx8JCgoib775pqfsotQgWId34sQJotFoSFFREdm1axeJiIggAQEBJD09nRBiEDgBkNWrV5ssv3HjRgKAbNu2zWT66dOnCQCybNkyQgghW7duJQDIhQsXbNpSWFhIAgICyIQJE0ymN23alHTp0oX7zIpnffr0MZlv8+bNBAA5fvy41fH1ej3RaDTk/v37BAD57bffuO/Y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GIbp8GPv27cPFy9exPTp0/Wf5ebmYsKECbj22mtx7NgxPPvss1iwYAHWrFljtS9CCO69917MnDmzvYdtlXvuuQcffPBBp46BQqFQKLah9s+5UPtHoVAo3QNq/5wLtX+UDoVQKBQyd+5cAsDoLzc3l+zcuZMAINXV1YQQQlauXEl8fX3Jxo0bSUpKCnF3dye33noraWhoIF9//TWJjY0lfn5+ZP78+USlUun7VygU5KmnniIRERHEw8ODDB48mOzcudPqmB599FFy2223GX329NNPk9TUVKPPHnroITJ06FC75vn888+Tvn372tUWAPn000/JxIkTibu7O0lNTSX79u0jFy9eJCNHjiQeHh7k/9m77/ioqvSP4587LT2hJzRpShMVBJUiig3F3lkLupZ1XXUtrKuy6u7adXdVZO2/VVlRAVfsYsECigLSFUF6JwEC6WXavb8/JhkSkpCZyZ2EwPf9euXFzJ1zn3PuzCQTnjznnMGDB1tr1qwJn7NkyRJrxIgRVmpqqpWWlmYdffTR1vz588OPb9iwwQKstWvXRjQGERGJL33+1aTPPxGRA58+/2rS5580d6rgFAGeeeYZhgwZwu9+9zuys7PJzs6mc+fOtbYtLS1lwoQJTJkyhc8++4yZM2dy4YUXMn36dKZPn86kSZN4+eWXeeedd8LnXHPNNXz//fdMmTKFn376iUsuuYQzzjiD1atX1zmmb7/9lkGDBlU7NmfOHEaOHFnt2Omnn86CBQvw+/0NeAZq99BDD3HVVVexZMkSevfuzeWXX87vf/97xo0bx4IFCwC45ZZbwu2vuOIKOnXqxPz581m4cCH33HMPbrc7/HiXLl1o164d3333ne1jFRGR6Onzr3b6/BMRObDp8692+vyT5szV1AMQ2R9kZGTg8XhITk4mKytrn239fj8vvPACPXr0AODiiy9m0qRJbN++ndTUVPr27ctJJ53EN998w+jRo1m7di2TJ09my5YtdOjQAYA777yTzz77jNdee41HH3201n42bNgQbl8pJyeHzMzMascyMzMJBALk5ubSvn37WJ+CWl1zzTVceumlANx9990MGTKE+++/n9NPPx0Ire1yzTXXhNtv2rSJP//5z/Tu3RuAww47rEbMjh07smHDBlvHKSIisdHnX+30+ScicmDT51/t9PknzZkSnCJRSk5ODn+4QegDpmvXrqSmplY7tmPHDgAWLVqEZVn07NmzWhyv10vr1q3r7KesrIzExMQax/deD8ayrFqP2+HII48M3678YD3iiCOqHSsvL6ewsJD09HTGjh3L9ddfz6RJkzj11FO55JJLqj1XAElJSZSWlto+VhERiS99/unzT0TkYKTPP33+SfOgBKdIlKqW3EPog6W2Y6ZpAmCaJk6nk4ULF+J0Oqu1q/qhuLc2bdqQl5dX7VhWVhY5OTnVju3YsQOXy7XPD8tYVb2uyg/Q2o5VXuvf//53Lr/8cj755BM+/fRT/va3vzFlyhQuuOCC8Dm7d++mbdu2to9VRETiS59/+vwTETkY6fNPn3/SPCjBKVLB4/EQDAZtjztgwACCwSA7duxg+PDhUZ23fPnyaseGDBnCRx99VO3YF198waBBg2p8yDaVnj170rNnT+644w4uu+wyXnvttfAHXHl5OWvXrmXAgAFNPEoREamkzz976PNPRKR50eefPfT5J/sLbTIkUqFr167MmzePDRs2kJubG/6rVEP17NmTK664gquuuop3332X9evXM3/+fJ544gmmT59e53mnn346s2fPrnbsxhtvZOPGjYwdO5YVK1bw6quv8sorr3DnnXeG27z33nvhNVAqrVmzhiVLlpCTk0NZWRlLlixhyZIl+Hw+W64RQlMqbrnlFmbOnMnGjRv5/vvvmT9/Pn369Am3mTt3LgkJCQwZMsS2fkVEpGH0+dcw+vwTEWme9PnXMPr8k/2NEpwiFe68806cTid9+/albdu2bNq0ybbYr732GldddRV/+tOf6NWrF+eeey7z5s2rc6c+gCuvvJLly5ezcuXK8LFu3boxffp0Zs6cSf/+/XnooYeYMGECF110UbhNQUFBtXMArr/+egYMGMBLL73EqlWrGDBgAAMGDGDbtm22XaPT6WTXrl1cddVV9OzZk0svvZRRo0bxwAMPhNtMnjyZK664guTkZNv6FRGRhtHnX8Po809EpHnS51/D6PNP9jeGVblCrYjsd+666y4KCgp46aWXmnooDbZz50569+7NggUL6NatW1MPR0RE9mP6/BMRkYORPv9EYqcKTpH92L333kuXLl3isjZMY1u/fj3PP/+8PtxERKRe+vwTEZGDkT7/RGKnCk4RERERERERERFptlTBKSIiIiIiIiIiIs2WEpwiIiIiIiIiIiLSbCnBKSIi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/OhnrIiISPxpkyEREZFG4vF4GDhwIDNmzKh2fMaMGQwdOrTWc4YMGVKj/RdffMGgQYNwu937bFNXTBERERERkQOJ1uAUERFpRGPHjmXMmDEMGjSIIUOG8PLLL7Np0yZuvDG0Cc+4cePYunUrr7/+OgA33ngjzz77LGPHjuV3v/sdc+bM4ZVXXmHy5MnhmLfddhsnnHACTzzxBOeddx4ffPABX375JbNnz26SaxQREREREWlMSnCKiIg0otGjR7Nr1y4efPBBsrOz6devH9OnT6dLly4AZGdns2nTpnD7bt26MX36dO644w6ee+45OnTowIQJE7jooovCbYYOHcqUKVO47777uP/+++nRowdTp07luOOOa/TrExERERERaWxag1NEROQgV1BQQIsWLdi8ebPWhxMRsVnlRm75+flkZGQ09XBEREQOSKrgFBEROcgVFRUB0Llz5yYeiYjIgauoqEgJThERkThRBaeIiMhBzjRNtm3bRlpaGoZhRH1+ZXXSwVgBerBe+8F63aBr17VHf+2WZVFUVESHDh1wOLTHq4iISDyoglNEROQg53A46NSpU4PjpKenH3RJj0oH67UfrNcNunZde3RUuSkiIhJf+hOiiIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiINEhCQgJ/+9vfSEhIaOqhNLqD9doP1usGXbuu/eC7dhERkeZAmwyJiIiIiIiIiIhIs6UKThEREREREREREWm2lOAUERERERERERGRZksJThEREREREREREWm2lOAUERERERERERGRZksJThEREWmQ559/nm7dupGYmMjAgQP57rvvmnpIEXvsscc45phjSEtLo127dpx//vmsXLmyWhvLsvj73/9Ohw4dSEpKYsSIEfzyyy/V2ni9Xv74xz/Spk0bUlJSOPfcc9myZUu1Nnl5eYwZM4aMjAwyMjIYM2YM+fn58b7EiDz22GMYhsHtt98ePnYgX/fWrVu58sorad26NcnJyfTv35+FCxeGHz9Qrz0QCHDffffRrVs3kpKS6N69Ow8++CCmaYbbHCjX/u2333LOOefQoUMHDMPg/fffr/Z4Y17npk2bOOecc0hJSaFNmzbceuut+Hy+eFy2iIjIQUsJThEREYnZ1KlTuf3227n33ntZvHgxw4cPZ9SoUWzatKmphxaRWbNmcfPNNzN37lxmzJhBIBBg5MiRlJSUhNv84x//4KmnnuLZZ59l/vz5ZGVlcdppp1FUVBRuc/vtt/Pee+8xZcoUZs+eTXFxMWeffTbBYDDc5vLLL2fJkiV89tlnfPbZZyxZsoQxY8Y06vXWZv78+bz88ssceeSR1Y4fqNedl5fHsGHDcLvdfPrppyxfvpwnn3ySFi1ahNscqNf+xBNP8OKLL/Lss8+yYsUK/vGPf/DPf/6Tf//73+E2B8q1l5SUcNRRR/Hss8/W+nhjXWcwGOSss86ipKSE2bNnM2XKFKZNm8af/vSn+F28iIjIwcgSERERidGxxx5r3XjjjdWO9e7d27rnnnuaaEQNs2PHDguwZs2aZVmWZZmmaWVlZVmPP/54uE15ebmVkZFhvfjii5ZlWVZ+fr7ldrutKVOmhNts3brVcjgc1meffWZZlmUtX77cAqy5c+eG28yZM8cCrF9//bUxLq1WRUVF1mGHHWbNmDHDOvHEE63bbrvNsqwD+7rvvvtu6/jjj6/z8QP52s866yzr2muvrXbswgsvtK688krLsg7cawes9957L3y/Ma9z+vTplsPhsLZu3RpuM3nyZCshIcEqKCiIy/WKiIgcjFTBKSIiIjHx+XwsXLiQkSNHVjs+cuRIfvjhhyYaVcMUFBQA0KpVKwDWr19PTk5OtWtMSEjgxBNPDF/jwoUL8fv91dp06NCBfv36hdvMmTOHjIwMjjvuuHCbwYMHk5GR0aTP1c0338xZZ53FqaeeWu34gXzdH374IYMGDeKSSy6hXbt2DBgwgP/7v/8LP34gX/vxxx/PV199xapVqwBYunQps2fP5swzzwQO7GuvqjGvc86cOfTr148OHTqE25x++ul4vd5qyyKIiIhIw7iaegAiIiLSPOXm5hIMBsnMzKx2PDMzk5ycnCYaVewsy2Ls2LEcf/zx9OvXDyB8HbVd48aNG8NtPB4PLVu2rNGm8vycnBzatWtXo8927do12XM1ZcoUFi1axPz582s8diBf97p163jhhRcYO3Ysf/nLX/jxxx+59dZbSUhI4Kqrrjqgr/3uu++moKCA3r1743Q6CQaDPPLII1x22WXAgf26V9WY15mTk1Ojn5YtW+LxePaL50JERORAoQSniIiINIhhGNXuW5ZV41hzcMstt/DTTz8xe/bsGo/Fco17t6mtfVM9V5s3b+a2227jiy++IDExsc52B9p1A5imyaBBg3j00UcBGDBgAL/88gsvvPACV111VbjdgXjtU6dO5Y033uCtt97i8MMPZ8mSJdx+++106NCBq6++OtzuQLz22jTWdTaH50JERKS50xR1ERERiUmbNm1wOp01qpB27NhRo2Jpf/fHP/6RDz/8kG+++YZOnTqFj2dlZQHs8xqzsrLw+Xzk5eXts8327dtr9Ltz584mea4WLlzIjh07GDhwIC6XC5fLxaxZs5gwYQIulys8pgPtugHat29P3759qx3r06dPeGOsA/U1B/jzn//MPffcw29+8xuOOOIIxowZwx133MFjjz0GHNjXXlVjXmdWVlaNfvLy8vD7/fvFcyEiInKgUIJTREREYuLxeBg4cCAzZsyodnzGjBkMHTq0iUYVHcuyuOWWW3j33Xf5+uuv6datW7XHu3XrRlZWVrVr9Pl8zJo1K3yNAwcOxO12V2uTnZ3NsmXLwm2GDBlCQUEBP/74Y7jNvHnzKCgoaJLn6pRTTuHnn39myZIl4a9BgwZxxRVXsGTJErp3735AXjfAsGHDWLlyZbVjq1atokuXLsCB+5oDlJaW4nBU//Xf6XRimiZwYF97VY15nUOGDGHZsmVkZ2eH23zxxRckJCQwcODAuF6niIjIQaWRNzUSERGRA8iUKVMst9ttvfLKK9by5cut22+/3UpJSbE2bNjQ1EOLyB/+8AcrIyPDmjlzppWdnR3+Ki0tDbd5/PHHrYyMDOvdd9+1fv75Z+uyyy6z2rdvbxUWFobb3HjjjVanTp2sL7/80lq0aJF18sknW0cddZQVCATCbc444wzryCOPtObMmWPNmTPHOuKII6yzzz67Ua93X6ruom5ZB+51//jjj5bL5bIeeeQRa/Xq1dabb75pJScnW2+88Ua4zYF67VdffbXVsWNH6+OPP7bWr19vvfvuu1abNm2su+66K9zmQLn2oqIia/HixdbixYstwHrqqaesxYsXWxs3bmzU6wwEAla/fv2sU045xVq0aJH15ZdfWp06dbJuueWWRnsuREREDgZKcIqIiEiDPPfcc1aXLl0sj8djHX300dasWbOaekgRA2r9eu2118JtTNO0/va3v1lZWVlWQkKCdcIJJ1g///xztThlZWXWLbfcYrVq1cpKSkqyzj77bGvTpk3V2uzatcu64oorrLS0NCstLc264oorrLy8vEa4ysjsneA8kK/7o48+svr162clJCRYvXv3tl5++eVqjx+o115YWGjddttt1iGHHGIlJiZa3bt3t+69917L6/WG2xwo1/7NN9/U+r199dVXW5bVuNe5ceNG66yzzrKSkpKsVq1aWbfccotVXl4ez8sXERE56BiWZVlNUzsqIiIiIiIiIiIi0jBag1NERERERERERESaLSU4RUREREREREREpNlSglNERERERERERESaLSU4RUREREREREREpNlSglNERERERERERESaLSU4RUREREREREREpNlSglNERERERERERESaLSU4RUREREREREREpNlSglNEREREqpk5cyaGYZCfn98k/X/99df07t0b0zSbpH87ffzxxwwYMOCAuBYRERGR/ZUSnCIiIiIHsREjRnD77bdXOzZ06FCys7PJyMhokjHddddd3HvvvTgce35VnTVrFgMHDiQxMZHu3bvz4osv1hvntttuY+DAgSQkJNC/f/84jrhuZ599NoZh8NZbbzVJ/yIiIiIHAyU4RURERKQaj8dDVlYWhmE0et8//PADq1ev5pJLLgkfW79+PWeeeSbDhw9n8eLF/OUvf+HWW29l2rRp+4xlWRbXXnsto0ePjvew9+maa67h3//+d5OOQURERORApgSniIiIyEHqt7/9LbNmzeKZZ57BMAwMw2DDhg01pqhPnDiRFi1a8PHHH9OrVy+Sk5O5+OKLKSkp4b///S9du3alZcuW/PGPfyQYDIbj+3w+7rrrLjp27EhKSgrHHXccM2fO3OeYpkyZwsiRI0lMTAwfe/HFFznkkEMYP348ffr04frrr+faa6/lX//61z5jTZgwgZtvvpnu3btH/JwYhsFLL73E2WefTXJyMn369GHOnDmsWbOGESNGkJKSwpAhQ1i7dm34nKVLl3LSSSeRlpZGeno6AwcOZMGCBeHHzz33XH788UfWrVsX8ThEREREJHJKcIqIiIgcpJ555hmGDBnC7373O7Kzs8nOzqZz5861ti0tLWXChAlMmTKFzz77jJkzZ3LhhRcyffp0pk+fzqRJk3j55Zd55513wudcc801fP/990yZMoWffvqJSy65hDPOOIPVq1fXOaZvv/2WQYMGVTs2Z84cRo4cWe3Y6aefzoIFC/D7/Q14Bmr30EMPcdVVV7FkyRJ69+7N5Zdfzu9//3vGjRsXTlzecsst4fZXXHEFnTp1Yv78+SxcuJB77rkHt9sdfrxLly60a9eO7777zvaxioiIiAi4mnoAIiIiItI0MjIy8Hg8JCcnk5WVtc+2fr+fF154gR49egBw8cUXM2nSJLZv305qaip9+/blpJNO4ptvvmH06NGsXbuWyZMns2XLFjp06ADAnXfeyWeffcZrr73Go48+Wms/GzZsCLevlJOTQ2ZmZrVjmZmZBAIBcnNzad++faxPQa2uueYaLr30UgDuvvtuhgwZwv3338/pp58OhNb2vOaaa8LtN23axJ///Gd69+4NwGGHHVYjZseOHdmwYYOt4xQRERGRECU4RURERKReycnJ4eQmhBKMXbt2JTU1tdqxHTt2ALBo0SIsy6Jnz57V4ni9Xlq3bl1nP2VlZdWmp1faez1Qy7JqPW6HI488Mny7MrF6xBFHVDtWXl5OYWEh6enpjB07luuvv55JkyZx6qmncskll1R7rgCSkpIoLS21fawiIiIiogSniIiIiESg6pRrCCUWaztmmiYApmnidDpZuHAhTqezWruqSdG9tWnThry8vGrHsrKyyMnJqXZsx44duFyufSZLY1X1uioTqLUdq7zWv//971x++eV88sknfPrpp/ztb39jypQpXHDBBeFzdu/eTdu2bW0fq4iIiIgowSkiIiJyUPN4PNU2BrLLgAEDCAaD7Nixg+HDh0d13vLly6sdGzJkCB999FG1Y1988QWDBg2qkWRtKj179qRnz57ccccdXHbZZbz22mvhBGd5eTlr165lwIABTTxKERERkQOTNhkSEREROYh17dqVefPmsWHDBnJzc8NViQ3Vs2dPrrjiCq666ireffdd1q9fz/z583niiSeYPn16needfvrpzJ49u9qxG2+8kY0bNzJ27FhWrFjBq6++yiuvvMKdd94ZbvPee++F18CstGbNGpYsWUJOTg5lZWUsWbKEJUuW4PP5bLlGCE2pv+WWW5g5cyYbN27k+++/Z/78+fTp0yfcZu7cuSQkJDBkyBDb+hURERGRPZTgFBERETmI3XnnnTidTvr27Uvbtm3ZtGmTbbFfe+01rrrqKv70pz/Rq1cvzj33XObNm1fnTu0AV155JcuXL2flypXhY926dWP69OnMnDmT/v3789BDDzFhwgQuuuiicJuCgoJq5wBcf/31DBgwgJdeeolVq1YxYMAABgwYwLZt22y7RqfTya5du7jqqqvo2bMnl156KaNGjeKBBx4It5k8eTJXXHEFycnJtvUrIiIiInsYVuUK7SIiIiIi+4G77rqLgoICXnrppaYeSoPt3LmT3r17s2DBArp169bUwxERERE5IKmCU0RERET2K/feey9dunSJy9qgjW39+vU8//zzSm6KiIiIxJEqOEVERERERERERKTZUgWniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFtKcIqIiIiIiIiIiEizpQSniIiIiIiIiIiINFuuph6AiIiINC3TNNm2bRtpaWkYhtHUwxEROaBYlkVRUREdOnTA4VB9iYiISDwowSkiInKQ27ZtG507d27qYYiIHNA2b95Mp06dmnoYIiIiByQlOEVERA5yaWlpQOg/3+np6U08GhGRA0thYSGdO3cO/6wVERER+ynBKSIicpCrnJaenp6uBKeISJxoCRAREZH40SIwIiIiIiIiIiIi0mwpwSkiIiIiIiIiIiLNlhKcIiIiIiL7gYXTX2PzA31Y+/Pcph6KiIiISLOiBKeIiIiIyH5g4I+309nahufda5p6KCIi/8/efcdHUed/HH/N1vRGgNB7lSooYu9dz977eWcvZ293ene/s93Ze+/KefaCBRsqgoAUC0gvARKSENKTbTO/PzZZEkjIbjKbEPJ+Ph55uDs7853v7Gwkeefz/X5FRDoUBZwiIiIiIjuAb0JjAZjq2LedeyIiIiLSsSjgFBERERHZAWwmBYBKy9vOPRERERHpWBRwioiIiIjsQEyrvXsgIiIi0rEo4BQRERER2QEc7pgDwF7WvHbuiYiIiEjH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ResI+asI+aqwzBADJx0b9ftfU1XBumULqC4pwF+5GTMYILfH4YQMJ6Zl0aVwDqmVqxs9NqXncHbZ66hGXwtfnsnG9SspXrcMf8XmcB/91RiWyYZu+1PjDYd8GWVLyCypXQSq3q8Tde/Zhm77UZ0QXo08vXw52ZvDq7QbDicD9zqh2XuytriKog2rSSyYF7knW77XwucozBxPVdogDhrRPeqQs77Cch9riyvxBUx2G5CF29n07F0by2ronpYQ8zkg/P/Y9PT0Fv8/VkRERJqngFNERKSD8/v9JCUl8b///Y/jjz8+sv2qq65iwYIFTJ8+fbvH65dvEZH40f9jRURE4k+LDImIiHRwHo+HCRMmMG3atAbbp02bxp577tlOvRIREREREWkbmoNTRERkJ3DNNddw9tlnM3HiRCZPnszTTz/N2rVrufjii5s/WEREREREpANTwCkiIrITOPXUU9m0aRP/+Mc/yMvLY9SoUUydOpV+/WKbU1FERERERKSj0RycIiIinVxpaSkZGRnk5uZqfjgREZvVLeRWUlJCenp6e3dHRERkp6QKThERkU6uvLwcgD59ol+1W0REYlNeXq6AU0REJE5UwSkiItLJmabJhg0bSE1NxTCMmI+vq07qjBWgnfXaO+t1g65d1x77tVuWRXl5OT179sTh0BqvIiIi8aAKThERkU7O4XDQu3fvVreTlpbW6UKPOp312jvrdYOuXdceG1VuioiIxJf+hCgiIiIiIiIiIiIdlgJOERERERERERER6bAUcIqIiEireL1ebr/9drxeb3t3pc111mvvrNcNunZde+e7dhERkY5AiwyJiIiIiIiIiIhIh6UKThEREREREREREemwFHCKiIiIiIiIiIhIh6WAU0RERERERERERDosBZwiIiIiIiIiIiLSYSngFBERkVZ5/PHHGTBgAAkJCUyYMIHvvvuuvbsUtbvuuovddtuN1NRUunXrxnHHHceSJUsa7GNZFnfccQc9e/YkMTGR/fffn99++63BPj6fjyuuuILs7GySk5M59thjWbduXYN9Nm/ezNlnn016ejrp6emcffbZlJSUxPsSo3LXXXdhGAZXX311ZNvOfN3r16/nrLPOokuXLiQlJTFu3Dh++umnyOs767UHg0Fuu+02BgwYQGJiIgMHDuQf//gHpmlG9tlZrv3bb7/lmGOOoWfPnhiGwXvvvdfg9ba8zrVr13LMMceQnJxMdnY2V155JX6/Px6XLSIi0mkp4BQREZEW++9//8vVV1/Nrbfeyvz589lnn3044ogjWLt2bXt3LSrTp0/nsssuY9asWUybNo1gMMihhx5KZWVlZJ97772X+++/n0cffZQ5c+aQk5PDIYccQnl5eWSfq6++mnfffZcpU6bw/fffU1FRwdFHH00oFIrsc8YZZ7BgwQI+/fRTPv30UxYsWMDZZ5/dptfbmDlz5vD0008zZsyYBtt31uvevHkze+21F263m08++YRFixZx3333kZGREdlnZ732e+65hyeffJJHH32UxYsXc++99/Lvf/+bRx55JLLPznLtlZWVjB07lkcffbTR19vqOkOhEEcddRSVlZV8//33TJkyhbfffptrr702fhcvIiLSGVkiIiIiLbT77rtbF198cYNtw4cPt2666aZ26lHrFBQUWIA1ffp0y7IsyzRNKycnx7r77rsj+9TU1Fjp6enWk08+aVmWZZWUlFhut9uaMmVKZJ/169dbDofD+vTTTy3LsqxFixZZgDVr1qzIPjNnzrQA6/fff2+LS2tUeXm5NWTIEGvatGnWfvvtZ1111VWWZe3c133jjTdae++9d5Ov78zXftRRR1kXXHBBg20nnHCCddZZZ1mWtfNeO2C9++67kedteZ1Tp061HA6HtX79+sg+b7zxhuX1eq3S0tK4XK+IiEhnpApOERERaRG/389PP/3EoYce2mD7oYceyg8//NBOvWqd0tJSALKysgBYtWoV+fn5Da7R6/Wy3377Ra7xp59+IhAINNinZ8+ejBo1KrLPzJkzSU9PZ9KkSZF99thjD9LT09v1vbrssss46qijOPjggxts35mv+4MPPmDixImcfPLJdOvWjfHjx/PMM89EXt+Zr33vvffmyy+/ZOnSpQAsXLiQ77//niOPPBLYua+9vra8zpkzZzJq1Ch69uwZ2eewww7D5/M1mBZBREREWsfV3h0QERGRjqmoqIhQKET37t0bbO/evTv5+fnt1KuWsyyLa665hr333ptRo0YBRK6jsWtcs2ZNZB+Px0NmZuY2+9Qdn5+fT7du3bY5Z7du3drtvZoyZQrz5s1jzpw527y2M1/3ypUreeKJJ7jmmmu45ZZbmD17NldeeSVer5dzzjlnp772G2+8kdLSUoYPH47T6SQUCvGvf/2L008/Hdi573t9bXmd+fn525wnMzMTj8ezQ7wXIiIiOwsFnCIiItIqhmE0eG5Z1jbbOoLLL7+cn3/+me+//36b11pyjVvv09j+7fVe5ebmctVVV/H555+TkJDQ5H4723UDmKbJxIkTufPOOwEYP348v/32G0888QTnnHNOZL+d8dr/+9//8uqrr/L666+zyy67sGDBAq6++mp69uzJueeeG9lvZ7z2xrTVdXaE90JERKSj0xB1ERERaZHs7GycTuc2VUgFBQXbVCzt6K644go++OADvv76a3r37h3ZnpOTA7Dda8zJycHv97N58+bt7rNx48ZtzltYWNgu79VPP/1EQUEBEyZMwOVy4XK5mD59Og8//DAulyvSp53tugF69OjByJEjG2wbMWJEZGGsnfWeA1x//fXcdNNNnHbaaYwePZqzzz6bv/zlL9x1113Azn3t9bXldebk5Gxzns2bNxMIBHaI90JERGRnoYBTREREWsTj8TBhwgSmTZvWYPu0adPYc88926lXsbEsi8svv5x33nmHr776igEDBjR4fcCAAeTk5DS4Rr/fz/Tp0yPXOGHCBNxud4N98vLy+PXXXyP7TJ48mdLSUmbPnh3Z58cff6S0tLRd3quDDjqIX375hQULFkS+Jk6cyJlnnsmCBQsYOHDgTnndAHvttRdLlixpsG3p0qX069cP2HnvOUBVVRUOR8Mf/51OJ6ZpAjv3tdfXltc5efJkfv31V/Ly8iL7fP7553i9XiZMmBDX6xQREelU2nhRIxEREdmJTJkyxXK73dZzzz1nLVq0yLr66qut5ORka/Xq1e3dtahccsklVnp6uvXNN99YeXl5ka+qqqrIPnfffbeVnp5uvfPOO9Yvv/xinX766VaPHj2ssrKyyD4XX3yx1bt3b+uLL76w5s2bZx144IHW2LFjrWAwGNnn8MMPt8aMGWPNnDnTmjlzpjV69Gjr6KOPbtPr3Z76q6hb1s573bNnz7ZcLpf1r3/9y1q2bJn12muvWUlJSdarr74a2WdnvfZzzz3X6tWrl/XRRx9Zq1atst555x0rOzvbuuGGGyL77CzXXl5ebs2fP9+aP3++BVj333+/NX/+fGvNmjVtep3BYNAaNWqUddBBB1nz5s2zvvjiC6t3797W5Zdf3mbvhYiISGeggFNERERa5bHHHrP69etneTwea9ddd7WmT5/e3l2KGtDo1wsvvBDZxzRN6/bbb7dycnIsr9dr7bvvvtYvv/zSoJ3q6mrr8ssvt7KysqzExETr6KOPttauXdtgn02bNllnnnmmlZqaaqWmplpnnnmmtXnz5ja4yuhsHXDuzNf94YcfWqNGjbK8Xq81fPhw6+mnn27w+s567WVlZdZVV11l9e3b10pISLAGDhxo3XrrrZbP54vss7Nc+9dff93o9/a5555rWVbbXueaNWuso446ykpMTLSysrKsyy+/3KqpqYnn5YuIiHQ6hmVZVvvUjoqIiIiIiIiIiIi0jubgFBERERERERERkQ5LAaeIiIiIiIiIiIh0WAo4RUREREREREREpMNSwCkiIiIiIiIiIiIdlgJOERERERERERER6bAUcIqIiIiIiIiIiEiHpYBTREREREREREREOiwFnCIiIiIiIiIiItJhKeAUERERkQa++eYbDMOgpKSkXc7/1VdfMXz4cEzTbJfz2+mjjz5i/PjxO8W1iIiIiOyoFHCKiIiIdGL7778/V199dYNte+65J3l5eaSnp7dLn2644QZuvfVWHI4tP6pOnz6dCRMmkJCQwMCBA3nyySebbeeqq65iwoQJeL1exo0bF8ceN+3oo4/GMAxef/31djm/iIiISGeggFNEREREGvB4POTk5GAYRpuf+4cffmDZsmWcfPLJkW2rVq3iyCOPZJ999mH+/PnccsstXHnllbz99tvbbcuyLC644AJOPfXUeHd7u84//3weeeSRdu2DiIiIyM5MAaeIiIhIJ3Xeeecxffp0HnroIQzDwDAMVq9evc0Q9RdffJGMjAw++ugjhg0bRlJSEieddBKVlZW89NJL9O/fn8zMTK644gpCoVCkfb/fzw033ECvXr1ITk5m0qRJfPPNN9vt05QpUzj00ENJSEiIbHvyySfp27cvDz74ICNGjODCCy/kggsu4D//+c9223r44Ye57LLLGDhwYNTviWEYPPXUUxx99NEkJSUxYsQIZs6cyfLly9l///1JTk5m8uTJrFixInLMwoULOeCAA0hNTSUtLY0JEyYwd+7cyOvHHnsss2fPZuXKlVH3Q0RERESip4BTREREpJN66KGHmDx5Mn/605/Iy8sjLy+PPn36NLpvVVUVDz/8MFOmTOHTTz/lm2++4YQTTmDq1KlMnTqVV155haeffpq33norcsz555/PjBkzmDJlCj///DMnn3wyhx9+OMuWLWuyT99++y0TJ05ssG3mzJkceuihDbYddthhzJ07l0Ag0Ip3oHH//Oc/Oeecc1iwYAHDhw/njDPO4KKLLuLmm2+OBJeXX355ZP8zzzyT3r17M2fOHH766Sduuukm3G535PV+/frRrVs3vvvuO9v7KiIiIiLgau8OiIiIiEj7SE9Px+PxkJSURE5Oznb3DQQCPPHEEwwaNAiAk046iVdeeYWNGzeSkpLCyJEjOeCAA/j666859dRTWbFiBW+88Qbr1q2jZ8+eAFx33XV8+umnvPDCC9x5552Nnmf16tWR/evk5+fTvXv3Btu6d+9OMBikqKiIHj16tPQtaNT555/PKaecAsCNN97I5MmT+etf/8phhx0GhOf2PP/88yP7r127luuvv57hw4cDMGTIkG3a7NWrF6tXr7a1nyIiIiISpoBTRERERJqVlJQUCTchHDD279+flJSUBtsKCgoAmDdvHpZlMXTo0Abt+Hw+unTp0uR5qqurGwxPr7P1fKCWZTW63Q5jxoyJPK4LVkePHt1gW01NDWVlZaSlpXHNNddw4YUX8sorr3DwwQdz8sknN3ivABITE6mqqrK9ryIiIiKigFNEREREolB/yDWEg8XGtpmmCYBpmjidTn766SecTmeD/eqHolvLzs5m8+bNDbbl5OSQn5/fYFtBQQEul2u7YWlL1b+uugC1sW1113rHHXdwxhln8PHHH/PJJ59w++23M2XKFI4//vjIMcXFxXTt2tX2voqIiIiIAk4RERGRTs3j8TRYGMgu48ePJxQKUVBQwD777BPTcYsWLWqwbfLkyXz44YcNtn3++edMnDhxm5C1vQwdOpShQ4fyl7/8hdNPP50XXnghEnDW1NSwYsUKxo8f3869FBEREdk5aZEhERERkU6sf//+/Pjjj6xevZqioqJIVWJrDR06lDPPPJNzzjmHd955h1WrVjFnzhzuuecepk6d2uRxhx12GN9//32DbRdffDFr1qzhmmuuYfHixTz//PM899xzXHfddZF93n333cgcmHWWL1/OggULyM/Pp7q6mgULFrBgwQL8fr8t1wjhIfWXX34533zzDWvWrGHGjBnMmTOHESNGRPaZNWsWXq+XyZMn23ZeEREREdlCAaeIiIhIJ3bdddfhdDoZOXIkXbt2Ze3atba1/cILL3DOOedw7bXXMmzYMI499lh+/PHHJldqBzjrrLNYtGgRS5YsiWwbMGAAU6dO5ZtvvmHcuHH885//5OGHH+bEE0+M7FNaWtrgGIALL7yQ8ePH89RTT7F06VLGjx/P+PHj2bBhg23X6HQ62bRpE+eccw5Dhw7llFNO4YgjjuDvf/97ZJ833niDM888k6SkJNvOKyIiIiJbGFbdDO0iIiIiIjuAG264gdLSUp566qn27kqrFRYWMnz4cObOncuAAQPauzsiIiIiOyVVcIqIiIjIDuXWW2+lX79+cZkbtK2tWrWKxx9/XOGmiIiISBypglNEREREREREREQ6LFVwioiIiIiIiIiISIelgFNEREREREREREQ6LAWcIiIiIiIiIiIi0mEp4BQREREREREREZEOSwGniIiIiIiIiIiIdFgKOEVERERERERERKTDUsApIiIiIiIiIiIiHZYCThEREREREREREemwFHCKiIiIiIiIiIhIh6WAU0RERERERERERDosBZwiIiIiIiIiIiLSYSngFBERERERERERkQ5LAaeIiIiIiIiIiIh0WAo4RUREREREREREpMNSwCkiIiIiIiIiIiIdlgJOERERERERERER6bAUcIqIiIiIiIiIiEiHpYBTREREREREREREOiwFnCIiIiIiIiIiItJhKeAUERERERERERGRDksBp4iIiIiIiIiIiHRYCjhFRERERERERESkw1LAKSIiIiIiIiIiIh2WAk4RERERERERERHpsBRwioiIiIiIiIiISIflau8OiIiISPsyTZMNGzaQmpqKYRjt3R0RkZ2KZVmUl5fTs2dPHA7Vl+xI9O+fiEj8tPW/fwo4RUREOrkNGzbQp0+f9u6GiMhOLTc3l969e7d3N6Qe/fsnIhJ/bfXvnwJOERGRTi41NRUI//CRlpbWzr0REdm5lJWV0adPn8j/a2XHoX//RETip63//VPAKSIi0snVDctLS0vTL3giInGiIdA7Hv37JyISf231758mgREREREREREREZEOSwGniIiIiIiIiIiIdFgKOEVEREREdgAfLtzAPvd+xa/rS9u7KyIiIiIdigJOEREREZEdwBVvzCe3uJoTHv+hvbsiIiIi0qEo4BQRERGRBvJKq3ns6+WUVgXauyudSoI7/KO5P2S2c09ERER2bhvLanjoi2V8v6yIkGm1d3fEBlpFXURE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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "V_m = mm1.get(\"events\", \"V_m\")\n", - "times = mm1.get(\"events\", \"times\")\n", - "spikes = sr.get(\"events\", \"times\") * nest.resolution\n", - "\n", - "\n", - "def s_soln(w, t, tau):\n", - " isyn = np.zeros_like(t)\n", - " useinds = t >= 0.0\n", - " isyn[useinds] = w * np.exp(-t[useinds] / tau)\n", - " return isyn\n", - "\n", - "\n", - "fig, ax = plt.subplots(4, 3)\n", - "fig.set_size_inches([16, 10])\n", - "fig.subplots_adjust(hspace=0.5, wspace=0.3)\n", - "\n", - "ax[0, 0].plot(mm1.events[\"V_m\"])\n", - "ax[0, 0].set_xlabel(\"time (0.1 ms)\")\n", - "ax[0, 0].set_ylabel(\"membrane potential V (mV)\")\n", - "ax[0, 0].set_title(\"Presynaptic neuron\")\n", - "\n", - "ax[0, 1].plot(mm2.events[\"V_m\"], label=\"approximation\")\n", - "ax[0, 1].plot(mm3.events[\"V_m\"], \"--\", label=\"exact model\")\n", - "ax[0, 1].set_xlabel(\"time (0.1 ms)\")\n", - "ax[0, 1].set_ylabel(\"membrane potential V (mV)\")\n", - "ax[0, 1].set_title(\"Postsynaptic neuron\")\n", - "ax[0, 1].legend()\n", - "\n", - "ax[0, 2].plot(mm2.events[\"V_m\"], label=\"approximation\")\n", - "ax[0, 2].plot(mm3.events[\"V_m\"], \"--\", label=\"exact model\")\n", - "ax[0, 2].set_xlabel(\"time (0.1 ms)\")\n", - "ax[0, 2].set_ylabel(\"membrane potential V (mV)\")\n", - "ax[0, 2].set_title(\"Postsynaptic neuron\")\n", - "ax[0, 2].set_xlim(3000, 4000)\n", - "\n", - "ax[1, 1].plot(mm2.events[\"s_AMPA\"])\n", - "ax[1, 1].plot(mm3.events[\"s_AMPA\"], \"--\")\n", - "ax[1, 1].set_xlabel(\"time (0.1 ms)\")\n", - "ax[1, 1].set_ylabel(\"s_AMPA\")\n", - "\n", - "\n", - "ax[2, 1].plot(mm2.events[\"s_GABA\"])\n", - "ax[2, 1].plot(mm3.events[\"s_GABA\"], \"--\")\n", - "ax[2, 1].set_xlabel(\"time (0.1 ms)\")\n", - "ax[2, 1].set_ylabel(\"s_GABA\")\n", - "\n", - "\n", - "ax[3, 1].plot(mm2.events[\"s_NMDA\"])\n", - "ax[3, 1].plot(mm3.events[\"s_NMDA\"], \"--\")\n", - "ax[3, 1].set_xlabel(\"time (ms)\")\n", - "ax[3, 1].set_ylabel(\"s_NMDA\")\n", - "\n", - "ax[3, 2].plot(mm2.events[\"s_NMDA\"])\n", - "ax[3, 2].plot(mm3.events[\"s_NMDA\"], \"--\")\n", - "ax[3, 2].set_xlabel(\"time (0.1 ms)\")\n", - "ax[3, 2].set_ylabel(\"s_NMDA\")\n", - "ax[3, 2].set_xlim(3000, 4000)\n", - "\n", - "\n", - "ax[1, 0].axis(\"off\")\n", - "ax[2, 0].axis(\"off\")\n", - "ax[3, 0].axis(\"off\")\n", - "ax[1, 2].axis(\"off\")\n", - "ax[2, 2].axis(\"off\")\n", - "\n", - "\n", - "plt.show();" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aca0a5e1-e105-4def-adf7-cc353b3fc601", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "81310d85-eb37-4bc2-91d7-7cb5167708d7", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "nest", - "language": "python", - "name": "nest" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 1b7b62800c5619c0e36cdebe2dab5f4dbd3afa1b Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sun, 28 Apr 2024 17:22:10 +0200 Subject: [PATCH 109/184] record spikes in steps instead of time --- pynest/examples/wang_decision_making.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 7b1267a24e..2992b3fe7b 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -177,10 +177,10 @@ def run_sim(coherence, seed=123): poisson_0 = nest.Create("poisson_generator", params={"rate": 2400.0}) - sr_nonselective = nest.Create("spike_recorder") - sr_selective1 = nest.Create("spike_recorder") - sr_selective2 = nest.Create("spike_recorder") - sr_inhibitory = nest.Create("spike_recorder") + sr_nonselective = nest.Create("spike_recorder", {"time_in_steps": True}) + sr_selective1 = nest.Create("spike_recorder", {"time_in_steps": True}) + sr_selective2 = nest.Create("spike_recorder", {"time_in_steps": True}) + sr_inhibitory = nest.Create("spike_recorder", {"time_in_steps": True}) sr_selective1_raster = nest.Create("spike_recorder", 100) sr_selective2_raster = nest.Create("spike_recorder", 100) From c76834c1ea40c7ef9837e493884f8225d421c227 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sun, 28 Apr 2024 17:22:28 +0200 Subject: [PATCH 110/184] update notebook, wip --- .../Wang_2002_Model_Approximation.ipynb | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb index bfaf7bd5a0..a629f637f1 100644 --- a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb +++ b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "d48013ba-af79-4804-aa7a-ed6720fd2e59", @@ -33,7 +33,7 @@ "\\end{align}\n", "$$\n", "\n", - "Note that in contrast to common practice, $I_\\mathrm{syn}\\sim g (V-V_\\text{rev})$ is defined with positive sign and then entered into the membrane potential equation with negative sign as $\\dot{V} \\sim \\dots - I_\\mathrm{syn}$. For consistency with the model definition, the NEST implementaion follows this convention.\n", + "Note that in contrast to common practice, $I_\\mathrm{syn}\\sim g (V-V_\\text{rev})$ is defined with positive sign and then entered into the membrane potential equation with negative sign as $\\dot{V} \\sim \\dots - I_\\mathrm{syn}$. For consistency with the model definition, the NEST implementation follows this convention.\n", "\n", "The synaptic activations $S_{j,\\mathrm{ext,AMPA}},S_{j,\\mathrm{rec,AMPA}},S_{j,\\mathrm{NMDA}},\\ \\mathrm{ and }\\ S_{j,\\mathrm{GABA}}$\n", "are governed by the equations\n", @@ -50,13 +50,15 @@ "This original model by Wang (2002) is implemented in NEST as `iaf_wang_2002_exact`. Due to the nonlinear term $x_j (1 - S_{j,\\mathrm{NMDA}})$, NMDA synapses cannot be combined together, so each incoming synapse to a neuron needs to be integrated individually, significantly impacting performance. Note that $S_{j,\\mathrm{NMDA}}(t)$ represents the input to a given neuron from presynaptic neuron $j$. Importantly, the same $S_j(t)$ describes input to all neurons postsynaptic to $j$, although shifted by possibly different delays and weighted by different input weights. This allows us to compute $S_j(t)$ only once in neuron $j$ and then distribute this value, for each simulation time step, to all post-synaptic neurons of $j$.\n", "\n", "Prior implementations of the model, such as the [Brian2 implementation by Wimmer and Stimberg](https://brian2.readthedocs.io/en/stable/examples/frompapers.Wang_2002.html) and presumably Wang's original implementation, circumvent this problem by investiagting a model with all-to-all connectivity with a single delay value and fixed-timestep forward Euler integration.\n", - "The NEST implementation supports arbitrary connectiviy and delays, and uses RKF45 adaptive stepsize integration. " + "The NEST implementation supports arbitrary connectivity and delays, and uses RKF45 adaptive stepsize integration. " ] }, { "cell_type": "markdown", "id": "782bad70-7ae1-4bd9-9196-f3c58e792d37", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "## Approximation of NMDA dynamics\n", "\n", @@ -79,7 +81,7 @@ " S_{j}(t) \n", " = \n", " \\mathrm{exp}\\Bigg[-\\frac{t}{\\tau_\\mathrm{d}} - \\alpha x_j^{0} \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", - " \\Bigg(S_{j}^0+ \\int_0^{t} \\mathrm{exp}\\Bigg[\\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg)t' + \\alpha x_j^0 \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha x_j^0 dt' \\Bigg) \\mathrm{.}\n", + " \\Bigg(S_{j}^0+ \\alpha x_j^0 \\int_0^{t} \\mathrm{exp}\\Bigg[\\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg)t' + \\alpha x_j^0 \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg] dt' \\Bigg) \\mathrm{.}\n", "$$\n", "\n", "Since we have two different time scales in the exponential inside the remaining integral, there is no exact solution for arbitrary limits of integration. We would like to approximate this function with an exponential function, such that we can integrate the sum of multiple such functions in a single variable. \n", @@ -88,29 +90,40 @@ "$$\n", "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", "$$\n", - "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit as $t \\to \\infty$, in the sense that the ratio $S_j(t)/\\hat{S}_j(t)\\to 1$. We additionally assume that $x_0 = 0$ immediately before every spikes, i.e., that the effect on $x_j$ of the previous spike has vanished by the time the next spike arrives. Since $\\tau_r$ is very small (e.g. $2 ms$), this is reasonable unless the neuron is firing very rapidly.\n", + "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit as $t \\to \\infty$, in the sense that the ratio $S_j(t)/\\hat{S}_j(t)\\to 1$. We additionally assume that $x_0 = 0$ immediately before every spikes, i.e., that the effect on $x_j$ of the previous spike has vanished by the time the next spike arrives. Since $\\tau_r$ is very small (e.g. $2$ ms), this is reasonable unless the neuron is firing very rapidly.\n", "\n", "Setting $x_0 = 1$ in the exact solution upon spiking, we get\n", "$$\\begin{align}\n", " S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", " &=\n", " \\mathrm{exp}\\Bigg[-\\frac{t}{\\tau_\\mathrm{d}} - \\alpha \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", - " \\Bigg(S_{j}^0 + \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha dt' \\Bigg) \\mathrm{,} \\\\\n", + " \\Bigg(S_{j}^0 + \\alpha \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg] dt' \\Bigg) \\mathrm{,} \\\\\n", " \\Leftrightarrow S_\\mathrm{jump}\n", " &=\n", " \\mathrm{exp}\\Bigg[- \\alpha \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", - " \\Bigg( S_{j}^0 + \\int_0^{t} \\mathrm{exp}\\Bigg[\\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) t' + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\\alpha dt' \\Bigg) \\;.\n", + " \\Bigg( S_{j}^0 + \\alpha \\int_0^{t} \\mathrm{exp}\\Bigg[\\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) t' + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]dt' \\Bigg) \\;.\n", + "\\end{align}\n", + "$$\n", + "\n", + "Taking the limit $t\\to\\infty$, the remaining integral becomes\n", + "\n", + "$$\n", + "\\begin{align}\n", + "&\\ \\int_0^\\infty \\mathrm{exp}\\Bigg[\\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) t' + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg] dt' \\\\\n", + "&= -\\frac{1}{\\alpha}\\mathrm{exp}[\\alpha \\tau_r](\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\int_0^\\infty \\bigg(\\alpha \\tau_r \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}}\\bigg]\\bigg)^{-\\frac{\\tau_r}{\\tau_d}} \\mathrm{exp}\\Bigg[-\\alpha \\tau_r\\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\Bigg] \\bigg(-\\alpha \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_r}\\bigg] \\bigg) dt' \\\\\n", + "&= \\frac{1}{\\alpha}\\mathrm{exp}[\\alpha \\tau_r](\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\int_0^{\\alpha \\tau_r} u^{-\\frac{\\tau_r}{\\tau_d}} \\mathrm{exp}[-u]du \\\\\n", + "&= \\frac{1}{\\alpha}\\mathrm{exp}[\\alpha \\tau_r](\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big] \\mathrm{,}\n", "\\end{align}\n", "$$\n", + "where we make the substitution $u = \\alpha \\tau_r \\mathrm{exp}\\big[-\\frac{t'}{\\tau_r} \\big]$, and $\\gamma$ is the [lower incomplete gamma function](https://en.wikipedia.org/wiki/Incomplete_gamma_function).\n", + "\n", + "We then find that \n", "\n", - "Taking the limit $t\\to\\infty$, we get\n", "$$\\begin{align}\n", " S_\\mathrm{jump} = \n", - " \\mathrm{exp}\\Big[-\\alpha \\tau_\\mathrm{r}\\Big] S_j^0\n", - " - \n", - " \\alpha \\tau_\\mathrm{r} \\mathrm{ExpE}\\Big[\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}, \\alpha \\tau_\\mathrm{r} \\Big] \n", - " +\n", - " (\\alpha \\tau_\\mathrm{r})^\\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\mathrm{Gamma}\\Big[1 - \\frac{\\tau_\\mathrm{r}}{\\tau_\\mathrm{d}}\\Big] \\mathrm{.}\n", + " \\mathrm{exp}\\Big[-\\alpha \\tau_\\mathrm{r} \\Big] S_j^0\n", + " -\n", + " (\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big]\n", "\\end{align}\n", "$$\n", "\n", @@ -120,6 +133,12 @@ "After spiking, the new value of $S$ is then dependent only on the value of $S$ immediately before spiking. In pre-synaptic neurons, every time a spike arrives, the value of $S_0$ immediately before spiking is computed. $\\Delta S = S_\\mathrm{jump} - S_0$ is then computed, and sent to post-synaptic neurons as an offset in the SpikeEvent object. The post-synaptic neuron then adds the offset multiplied by weight and multiplicity to its $s_\\mathrm{NMDA}$ variable. Integration in the post-synaptic neuron is then done as a normal exponential synapse." ] }, + { + "cell_type": "markdown", + "id": "e4e092a2-73c5-4b15-be82-f5ff7e8f2c3c", + "metadata": {}, + "source": [] + }, { "cell_type": "markdown", "id": "a6fa9697-6765-421e-ba8d-640e14f27399", @@ -519,7 +538,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.2" + "version": "3.11.6" } }, "nbformat": 4, From 12480be6ddb73c6373eef3d93eff5a423a4f1c90 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sun, 28 Apr 2024 21:29:16 +0200 Subject: [PATCH 111/184] update notebook equations --- .../Wang_2002_Model_Approximation.ipynb | 88 +++++++++---------- 1 file changed, 41 insertions(+), 47 deletions(-) diff --git a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb index a629f637f1..fc673fc659 100644 --- a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb +++ b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb @@ -56,9 +56,7 @@ { "cell_type": "markdown", "id": "782bad70-7ae1-4bd9-9196-f3c58e792d37", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ "## Approximation of NMDA dynamics\n", "\n", @@ -88,7 +86,7 @@ "\n", "Our approximate function will then have the form \n", "$$\n", - "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", + "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big) \\tag{1}\n", "$$\n", "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit as $t \\to \\infty$, in the sense that the ratio $S_j(t)/\\hat{S}_j(t)\\to 1$. We additionally assume that $x_0 = 0$ immediately before every spikes, i.e., that the effect on $x_j$ of the previous spike has vanished by the time the next spike arrives. Since $\\tau_r$ is very small (e.g. $2$ ms), this is reasonable unless the neuron is firing very rapidly.\n", "\n", @@ -122,23 +120,14 @@ "$$\\begin{align}\n", " S_\\mathrm{jump} = \n", " \\mathrm{exp}\\Big[-\\alpha \\tau_\\mathrm{r} \\Big] S_j^0\n", - " -\n", - " (\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big]\n", + " +\n", + " (\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big] \\tag{2}\n", "\\end{align}\n", "$$\n", "\n", - "**Need some text here explaining ExpE and Gamma (with link to some online resource) and an explanation of how you get from the integral to the ExpE and Gamma expressions.**\n", - "\n", - "**The following needs a bit more detail: How is $S_0$ computed?**\n", - "After spiking, the new value of $S$ is then dependent only on the value of $S$ immediately before spiking. In pre-synaptic neurons, every time a spike arrives, the value of $S_0$ immediately before spiking is computed. $\\Delta S = S_\\mathrm{jump} - S_0$ is then computed, and sent to post-synaptic neurons as an offset in the SpikeEvent object. The post-synaptic neuron then adds the offset multiplied by weight and multiplicity to its $s_\\mathrm{NMDA}$ variable. Integration in the post-synaptic neuron is then done as a normal exponential synapse." + "After spiking, the new value of $S$ is then dependent only on the value of $S$ immediately before spiking. In pre-synaptic neurons, every time it spikes, the value of $S_0$ immediately before spiking is computed by Eq. 1. $\\Delta S = S_\\mathrm{jump} - S_0$ is then computed by Eq. 2, and sent to post-synaptic neurons as an offset in the SpikeEvent object. The The post-synaptic neuron then adds the offset multiplied by weight and multiplicity to its $s_\\mathrm{NMDA}$ variable. Integration in the post-synaptic neuron is then done as a normal exponential synapse. The coefficients in Eq. 2 are only dependent on the synaptic parameters, so only has to be computed once before the simulation." ] }, - { - "cell_type": "markdown", - "id": "e4e092a2-73c5-4b15-be82-f5ff7e8f2c3c", - "metadata": {}, - "source": [] - }, { "cell_type": "markdown", "id": "a6fa9697-6765-421e-ba8d-640e14f27399", @@ -166,7 +155,7 @@ " Copyright (C) 2004 The NEST Initiative\n", "\n", " Version: 3.6.0-post0.dev0\n", - " Built: Apr 26 2024 11:13:19\n", + " Built: Apr 28 2024 17:23:19\n", "\n", " This program is provided AS IS and comes with\n", " NO WARRANTY. See the file LICENSE for details.\n", @@ -225,7 +214,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 3, "id": "77c6bf6b-c422-46e3-a88e-4925e9bd7842", "metadata": {}, "outputs": [ @@ -234,28 +223,28 @@ "output_type": "stream", "text": [ "\n", - "Apr 26 14:40:01 NodeManager::add_node [Info]: \n", + "Apr 28 21:14:41 NodeManager::add_node [Info]: \n", " Neuron models emitting precisely timed spikes exist: the kernel property \n", " off_grid_spiking has been set to true.\n", " \n", " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", "\n", - "Apr 26 14:40:01 NodeManager::add_node [Info]: \n", + "Apr 28 21:14:41 NodeManager::add_node [Info]: \n", " Neuron models emitting precisely timed spikes exist: the kernel property \n", " off_grid_spiking has been set to true.\n", " \n", " NOTE: Mixing precise-spiking and normal neuron models may lead to inconsistent results.\n", "\n", - "Apr 26 14:40:01 NodeManager::prepare_nodes [Info]: \n", - " Preparing 8 nodes for simulation.\n", + "Apr 28 21:14:41 NodeManager::prepare_nodes [Info]: \n", + " Preparing 7 nodes for simulation.\n", "\n", - "Apr 26 14:40:01 SimulationManager::start_updating_ [Info]: \n", - " Number of local nodes: 8\n", + "Apr 28 21:14:41 SimulationManager::start_updating_ [Info]: \n", + " Number of local nodes: 7\n", " Simulation time (ms): 1000\n", " Number of OpenMP threads: 1\n", " Number of MPI processes: 1\n", "\n", - "Apr 26 14:40:01 SimulationManager::run [Info]: \n", + "Apr 28 21:14:41 SimulationManager::run [Info]: \n", " Simulation finished.\n" ] } @@ -287,7 +276,7 @@ "nest.Connect(nrn_pre, nrn_post_approx, syn_spec=rec_syn_specs)\n", "nest.Connect(nrn_pre, nrn_post_exact, syn_spec=rec_syn_specs)\n", "\n", - "nest.Connect(nrn_pre, sr)\n", + "#nest.Connect(nrn_pre, sr)\n", "nest.Connect(vm_pre, nrn_pre)\n", "nest.Connect(vm_post_approx, nrn_post_approx)\n", "nest.Connect(vm_post_exact, nrn_post_exact)\n", @@ -297,13 +286,13 @@ }, { "cell_type": "code", - "execution_count": 16, - "id": "9df3957c-7903-4e7f-a767-e98d121dbbd0", + "execution_count": 4, + "id": "4e734c3c-e9a7-476f-b262-2bfa215fabe9", "metadata": {}, "outputs": [ { "data": { - "image/png": "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Zo+2cnJyGDRoEDfeeCNDhw7l008/5dFHH6Vz585ceeWVIfVJIBDUbNzHljvuuIMlS5bwv//9jwcffJCNGzcyc+ZMdu3axeeffw5Q7vhR3r15yJAh7Nixg/vuu4/mzZuTmZnJqlWrOHLkCM2bN2fkyJG89957rFy5kquvvtrZ15MnT7JmzRqmTp3qsg2//fYbK1as4O677yY+Pp5XX32VIUOGcOTIEed2bd68md9//51hw4bRuHFjDh06xPz58+nfvz87d+70CP269957SUpKYtq0ac776uHDh50PUC+//DL33XcfcXFxPP744wDUr1/f535etWoVV199NWlpaUyYMIEGDRqwa9cuvvnmGyZMmFDucbrvvvtITk5m6tSpHDp0iJdffpl7772XZcuWOed5//33GT16NAMHDuT555/HYDAwf/58+vTpw5YtW1weoIJh0aJFlJSUcOedd6LX60lJSWH16tVceeWVtGzZkmnTplFcXMxrr73GRRddxN9//+3R1tChQ2nRogUzZ87k77//5t1336VevXo8//zzIfVJIBDUHMQ4I8aZ8hDjjMArskBQw1i0aJEMyKtXr5azsrLko0ePyh9//LFcp04dOTo6Wj527Jgsy7I8evRoGZAnT57ssvyvv/4qA/IHH3zgMv2HH35wmf7555/LgLx582affdmzZ48MyPPnz3eZfu2118rNmzeXbTabLMuyvHbtWhmQ27dvLxuNRud8r7zyigzI//77r3OawWDwaGfmzJmyJEny4cOHndMc23ffffc5p9lsNnnw4MGyTqeTs7KyZFmW5aysLBmQp06d6rHeqVOnysrbwL59+2SVSiXfcMMNstVqdZnXsS2+cPRnxowZLtO7d+8u9+zZ0/k50P0vy7LPfjdr1kwePXq087PjnOjTp49ssVic0zMzM2WdTidfccUVLtszb948GZAXLlzonNavXz8ZkN977z3nNKPRKDdo0EAeMmSI320XCAQ1n0DGlq1bt8qAfMcdd7gs+9BDD8mAvGbNGlmWAxs/fN2bc3JyZECeM2eOz2WtVqvcuHFj+eabb3aZ/uKLL8qSJMkHDhxwTgNknU4n//fff85p27ZtkwH5tddec07zNvZs2LDB477o2E89e/aUTSaTc/rs2bNlQP7yyy+d0zp27Cj369fPY72OMXHt2rWyLMuyxWKRW7RoITdr1kzO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nrffftvnWyt3BgwYgE6n49VXX3Xp/4IFC8jLy2Pw4MGhbYRAIDgrcTxAuL+wefHFFwGc95RAxg9f92aDwUBJSYnLtFatWhEfH+8x9txyyy1IksSECRM4cOCARwX1YFCr1R59fu2113zeb99++22XPE3z58/HYrG4VP6OjY0NaOzp0aMHLVq04OWXX/aYP1xjz8CBA0lISOC5557zml8qKyvL+XerVq3YvXu3y7Rt27axfv36gNpKS0ujW7duLFmyxGV7tm/fzo8//ujyICoQCARKxDhThhhnfCPGGQEIZ57gLKRfv36MGzeOmTNnsnXrVq644gq0Wi379u1j+fLlvPLKK/zvf/9jyZIlvPHGG9xwww20atWKgoIC3nnnHRISEjxukIMHD6ZOnTosX76cK6+8knr16oXUt3bt2tGqVSseeughjh8/TkJCAp999pnPXAZRUVH88MMPjB49ml69evH999/z7bff8thjjznDVaOjo+nQoQPLli2jTZs2pKSk0KlTJ685I1q3bs3jjz/O008/zcUXX8yNN96IXq9n8+bNNGzYkJkzZ4a0XUoC3f8Ad9xxB+PHj2fIkCFcfvnlbNu2jZUrV1K3bt2A2kpNTWXKlClMnz6dQYMGce2117Jnzx7eeOMNzjvvvAr9IBEIBGcfXbt2ZfTo0bz99tvk5ubSr18/Nm3axJIlS7j++uudDoJAxg9f92aLxcJll13G0KFD6dChAxqNhs8//5xTp055vChKTU1l0KBBLF++nKSkpAq9oLj66qt5//33SUxMpEOHDmzYsIHVq1dTp04dr/ObTCZnPx331T59+nDttdc65+nZsyfz58/nmWeeoXXr1tSrV49LL73UY10qlYr58+dzzTXX0K1bN8aMGUNaWhq7d+9mx44drFy5MuTtcpCQkMD8+fMZOXIkPXr0YNiwYaSmpnLkyBG+/fZbLrroIufLsdtuu40XX3yRgQMHcvvtt5OZmcmbb75Jx44dA04UPmfOHK688kp69+7N7bffTnFxMa+99hqJiYlMmzatwtsjEAhqJ2KcKUOMM/4R44yASqycKxCEBUd5cH+l2GXZXto7NjbW5/dvv/223LNnTzk6OlqOj4+XO3fuLD/yyCPyiRMnZFmW5b///lu+5ZZb5KZNm8p6vV6uV6+efPXVV8t//vmn1/XdfffdMiB/+OGHHt85yqMv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RERE1EQwmBdhZrMZM2fOhNlsjvRUGlVzPW6g+R47j5vHTZHRnJ+L5nrsPG4ed3PRnI9dazyXDfGcuOL5cMXz0RDPiatwnw82wCAiIiIiIiIiImoimJlHRERERERERETURDCYR0RERERERERE1EQwmEdERERERERERNREMJhHRERERERERETURDCYF2Gvvvoq2rVrh7i4OAwdOhSrVq2K9JSCNmvWLAwePBjJycnIysrC2LFjsX37dpdtampqcPPNNyMjIwNJSUm4+OKLUVhY6LLN/v37cd555yEhIQFZWVm48847UV9f35iHEpInnngCgiBg2rRp8m2xfNyHDh3ChAkTkJGRgfj4ePTu3RurV6+W7xdFETNmzEBubi7i4+MxatQo7Ny502WM4uJiXHHFFUhJSUFaWhquvvpqVFRUNPah+M1qteLBBx9E+/btER8fj44dO+KRRx6Bsp9QLBz377//jvPPPx+tWrWCIAj45ptvXO7X6hg3btyIU045BXFxccjLy8NTTz0V7kNrVmLpOgPwWgPwOsPrjF2sHDevNeHz2muvoU+fPkhJSUFKSgqGDx+On376Sb4/ln9ueOLtnBQXF+PWW29F165dER8fj/z8fNx2220oLS11GSOWzomv14hEFEWcc845qu/R5nY+li9fjjPPPBOJiYlISUnBqaeeiurqavn+pvBzNxC+zklBQQEmTpyInJwcJCYmYsCAAfjyyy9dxoi1c6IU0c9kIkXM3LlzRZPJJL7zzjvili1bxGuvvVZMS0sTCwsLIz21oIwePVqcM2eOuHnzZnH9+vXiueeeK+bn54sVFRXyNjfccIOYl5cnLly4UFy9erU4bNgwccSIEfL99fX1Yq9evcRRo0aJ69atE+fNmydmZmaK9957byQOKWCrVq0S27VrJ/bp00ecOnWqfHusHndxcbHYtm1b8corrxRXrlwp7t69W/z555/FXbt2yds88cQTYmpqqvjNN9+IGzZsEC+44AKxffv2YnV1tbzNmDFjxL59+4orVqwQ//jjD7FTp07i+PHjI3FIfnnsscfEjIwM8YcffhD37Nkjfv7552JSUpL44osvytvEwnHPmzdPvP/++8WvvvpKBCB+/fXXLvdrcYylpaVidna2eMUVV4ibN28WP/nkEzE+Pl58/fXXG+swY1qsXWdEkdcaXmd4nZHEynHzWhM+3333nfjjjz+KO3bsELdv3y7ed999otFoFDdv3iyKYuz+3PDG2znZtGmTeNFFF4nfffeduGvXLnHhwoVi586dxYsvvlh+fKydE1+vEclzzz0nnnPOOQ3eo83tfCxbtkxMSUkRZ82aJW7evFnctm2b+Omnn4o1NTXyGE3h524gfJ2Ts846Sxw8eLC4cuVK8Z9//hEfeeQRUafTiWvXrpXHiLVzIon0ZzIG8yJoyJAh4s033yx/b7VaxVatWomzZs2K4Ky0U1RUJAIQlyxZIoqiKJaUlIhGo1H8/PPP5W22bt0qAhCXL18uiqL9A51OpxMLCgrkbV577TUxJSVFrK2tbdwDCFB5ebnYuXNnccGCBeJpp50mv6Fj+bjvvvtu8eSTT/Z4v81mE3NycsSnn35avq2kpEQ0m83iJ598IoqiKP79998iAPGvv/6St/npp59EQRDEQ4cOhW/yITjvvPPEq666yuW2iy66SLziiitEUYzN43b/8KbVMf7vf/8T09PTXV7nd999t9i1a9cwH1HzEOvXGVFsXtcaXmcaisWft6LYPK8zoshrTWNIT08X33rrrZj+uREo6Zyo+eyzz0STySRaLBZRFJvHOXE/H+vWrRNbt24tHjlypMF7tLmdj6FDh4oPPPCAx22b4s/dYCjPSWJiovj++++73N+iRQvxzTffFEUxds9JNHwmY5lthNTV1WHNmjUYNWqUfJtOp8OoUaOwfPnyCM5MO1JKeosWLQAAa9asgcVicTnmbt26IT8/Xz7m5cuXo3fv3sjOzpa3GT16NMrKyrBly5ZGnH3gbr75Zpx33nkuxwfE9nF/9913GDRoEMaNG4esrCz0798fb775pnz/nj17UFBQ4HLsqampGDp0qMuxp6WlYdCgQfI2o0aNgk6nw8qVKxvvYAIwYsQILFy4EDt27AAAbNiwAUuXLsU555wDIHaPW0mrY1y+fDlOPfVUmEwmeZvRo0dj+/btOHHiRCMdTWxqDtcZoHlda3id4XWmOV1nAF5rtGS1WjF37lxUVlZi+PDhMf1zw1/u50RNaWkpUlJSYDAYAMT2OVE7H1VVVbj88svx6quvIicnp8FjmtP5KCoqwsqVK5GVlYURI0YgOzsbp512GpYuXSo/JhZ+7nqj9hoZMWIEPv30UxQXF8Nms2Hu3LmoqanB6aefDiB2z0k0fCYzhHgMFKRjx47BarW6PIEAkJ2djW3btkVoVtqx2WyYNm0aTjrpJPTq1QuAvZ7eZDIhLS3NZdvs7GwUFBTI26idE+m+aDV37lysXbsWf/31V4P7Yvm4d+/ejddeew3Tp0/Hfffdh7/++gu33XYbTCYTJk+eLM9d7diUx56VleVyv8FgQIsWLaL22O+55x6UlZWhW7du0Ov1sFqteOyxx3DFFVcAQMwet5JWx1hQUID27ds3GEO6Lz09PSzzbw5i/ToDNK9rDa8zvM40t+sMwGuNFjZt2oThw4ejpqYGSUlJ+Prrr9GjRw+sX78+Zn9u+OLpnLg7duwYHnnkEVx33XXybbF4Trydj9tvvx0jRozAhRdeqPrY5nQ+VqxYAQB46KGH8Mwzz6Bfv354//33MXLkSGzevBmdO3eOiZ+7ary9Rj777DNceumlyMjIgMFgQEJCAr7++mt06tQJQGxci9xFy2cyBvMoLG6++WZs3rzZ5S8VserAgQOYOnUqFixYgLi4uEhPp1HZbDYMGjQIjz/+OACgf//+2Lx5M2bPno3JkydHeHbh89lnn+Gjjz7Cxx9/jJ49e2L9+vWYNm0aWrVqFdPHTRRtmsu1htcZXmd4naFgde3aFevXr0dpaSm++OILTJ48GUuWLIn0tCLK0zlRBvTKyspw3nnnoUePHnjooYciN9lG4Ol87Nq1C4sWLcK6desiPcVG5el82Gw2AMD111+PKVOmALBfkxYuXIh33nkHs2bNiuS0w8rbe+bBBx9ESUkJfv31V2RmZuKbb77BJZdcgj/++AO9e/eO9NQ1F02fyVhmGyGZmZnQ6/UNupoUFhaqpjA3Jbfccgt++OEHLF68GG3atJFvz8nJQV1dHUpKSly2Vx5zTk6O6jmR7otGa9asQVFREQYMGACDwQCDwYAlS5bgpZdegsFgQHZ2dkweNwDk5uY2+Etm9+7dsX//fgDOuXt7nefk5KCoqMjl/vr6ehQXF0ftsd9555245557cNlll6F3796YOHEibr/9dvkiHqvHraTVMTbV135TEMvXGaB5XWt4neF1pjleZwBea7RgMpnQqVMnDBw4ELNmzULfvn3x4osvxuTPSn95OieS8vJyjBkzBsnJyfj6669hNBrl+2LxnHg6H4sWLcI///yDtLQ0+doDABdffLFcQtmczkdubi4A+LwmNfWfu2o8nZN//vkHr7zyCt555x2MHDkSffv2xcyZMzFo0CC8+uqrAGLvnETTZzIG8yLEZDJh4MCBWLhwoXybzWbDwoULPa7ZEO1EUcQtt9yCr7/+GosWLWpQzjBw4EAYjUaXY96+fTv2798vH/Pw4cOxadMmlzf8ggULkJKSopr+Hg1GjhyJTZs2Yf369fLXoEGDcMUVV8j/jsXjBoCTTjoJ27dvd7ltx44daNu2LQCgffv2yMnJcTn2srIyrFy50uXYS0pKsGbNGnmbRYsWwWazYejQoY1wFIGrqqqCTuf641Ov18t/sYvV41bS6hiHDx+O33//HRaLRd5mwYIF6Nq1a0yXPTWGWLzOAM3zWsPrDK8zQPO7zgC81oSDzWZDbW1tTP6sDJZ0TgD76+vss8+GyWTCd9991yDzpjmcE+l83HPPPdi4caPLtQcAnn/+ecyZMwdA8zof7dq1Q6tWrbxek2Lh564/pHNSVVUFAF6vV7F2TqLqM5kWnTwoOHPnzhXNZrP47rvvin///bd43XXXiWlpaS5dTZqSG2+8UUxNTRV/++038ciRI/JXVVWVvM0NN9wg5ufni4sWLRJXr14tDh8+XBw+fLh8v9Sm+eyzzxbXr18vzp8/X2zZsmWTa2+u7GgjirF73KtWrRINBoP42GOPiTt37hQ/+ugjMSEhQfzwww/lbZ544gkxLS1N/Pbbb8WNGzeKF154odi+fXuxurpa3mbMmDFi//79xZUrV4pLly4VO3fuHNXtyidPniy2bt1a/OGHH8Q9e/aIX331lZiZmSnedddd8jaxcNzl5eXiunXrxHXr1okAxOeee05ct26duG/fPlEUtTnGkpISMTs7W5w4caK4efNmce7cuWJCQoL4+uuvN/rxxqJYu86IIq81El5neJ2JlePmtSZ87rnnHnHJkiXinj17xI0bN4r33HOPKAiC+Msvv4iiGLs/N7zxdk5KS0vFoUOHir179xZ37drlco2pr68XRTH2zomv14g7uHWzbW7n4/nnnxdTUlLEzz//XNy5c6f4wAMPiHFxceKuXbvkMZrCz91AeDsndXV1YqdOncRTTjlFXLlypbhr1y7xmWeeEQVBEH/88Ud5jFg7J+4i9ZmMwbwIe/nll8X8/HzRZDKJQ4YMEVesWBHpKQUNgOrXnDlz5G2qq6vFm266SUxPTxcTEhLEf//73+KRI0dcxtm7d694zjnniPHx8WJmZqZ4xx13yO3gmwr3N3QsH/f3338v9urVSzSbzWK3bt3EN954w+V+m80mPvjgg2J2drZoNpvFkSNHitu3b3fZ5vjx4+L48ePFpKQkMSUlRZwyZYpYXl7emIcRkLKyMnHq1Klifn6+GBcXJ3bo0EG8//77XVqJx8JxL168WPU9PXnyZFEUtTvGDRs2iCeffLJoNpvF1q1bi0888URjHWKzEEvXGVHktUbC64xTLPy8dddcrjOiyGtNOF111VVi27ZtRZPJJLZs2VIcOXKkS5Amln9ueOLtnHh6LQIQ9+zZI48RS+fE12vEnXswTxSb3/mYNWuW2KZNGzEhIUEcPny4+Mcff7jc3xR+7gbC1znZsWOHeNFFF4lZWVliQkKC2KdPH/H99993GSPWzom7SH0mE0RRFP3P4yMiIiIiIiIiIqJI4Zp5RERERERERERETQSDeURERERERERERE0Eg3lERERERERERERNBIN5RERERERERERETQSDeURERERERERERE0Eg3lERERERERERERNBIN5RERERERERERETQSDeURERERERERERE0Eg3lEUeLKK6/E2LFjG32/7777LgRBgCAImDZtWtj2s3fvXnk//fr1C9t+iIiIiIiIiGKZIdITIGoOBEHwev/MmTPx4osvQhTFRpqRq5SUFGzfvh2JiYlh20deXh6OHDmCZ555Br/++mvY9kNEREREREQUyxjMI2oER44ckf/96aefYsaMGdi+fbt8W1JSEpKSkiIxNQD2YGNOTk5Y96HX65GTkxPR4yQiIiIiIiJq6lhmS9QIcnJy5K/U1FQ5eCZ9JSUlNSizPf3003Hrrbdi2rRpSE9PR3Z2Nt58801UVlZiypQpSE5ORqdOnfDTTz+57Gvz5s0455xzkJSUhOzsbEycOBHHjh0LeM7t2rXDo48+ikmTJiEpKQlt27bFd999h6NHj+LCCy9EUlIS+vTpg9WrV8uP2bdvH84//3ykp6cjMTERPXv2xLx584I+b0RERERERETkisE8oij23nvvITMzE6tWrcKtt96KG2+8EePGjcOIESOwdu1anH322Zg4cSKqqqoAACUlJTjzzDPRv39/rF69GvPnz0dhYSEuueSSoPb//PPP46STTsK6detw3nnnYeLEiZg0aRImTJiAtWvXomPHjpg0aZJcHnzzzTejtrYWv//+OzZt2oQnn3ySmXhEREREREREGmIwjyiK9e3bFw888AA6d+6Me++9F3FxccjMzMS1116Lzp07Y8aMGTh+/Dg2btwIAHjllVfQv39/PP744+jWrRv69++Pd955B4sXL8aOHTsC3v+5556L66+/Xt5XWVkZBg8ejHHjxqFLly64++67sXXrVhQWFgIA9u/fj5NOOgm9e/dGhw4d8K9//QunnnqqpueEiIiIiIiIqDljMI8oivXp00f+t16vR0ZGBnr37i3flp2dDQAoKioCAGzYsAGLFy+W1+BLSkpCt27dAAD//PNPSPuX9uVt/7fddhseffRRnHTSSZg5c6YcZCQiIiIiIiIibTCYRxTFjEajy/eCILjcJnXJtdlsAICKigqcf/75WL9+vcvXzp07g8qQU9uXt/1fc8012L17NyZOnIhNmzZh0KBBePnllwPeLxERERERERGpYzCPKIYMGDAAW7ZsQbt27dCpUyeXr8TExEaZQ15eHm644QZ89dVXuOOOO/Dmm282yn6JiIiIiIiImgMG84hiyM0334zi4mKMHz8ef/31F/755x/8/PPPmDJlCqxWa9j3P23aNPz888/Ys2cP1q5di8WLF6N79+5h3y8RERERERFRc8FgHlEMadWqFf78809YrVacffbZ6N27N6ZNm4a0tDTodOF/u1utVtx8883o3r07xowZgy5duuB///tf2PdLRERERERE1FwIoiiKkZ4EEUXOu+++i2nTpqGkpKRR9vfQQw/hm2++wfr16xtlf0SxwGaz4fDhw0hOTpbXqiQiouCJoojy8nK0atWqUf7gGe14nSEi0la4rzMGzUckoiantLQUSUlJuPnmm/Hkk0+GZR/79+9Hjx49UFdXhx49eoRlH0Sx6vDhw8jLy4v0NIiIYs6BAwfQpk2bSE8j4nidISIKj3BdZ5iZR9TMlZeXo7CwEACQlpaGzMzMsOynvr4ee/fuBQCYzWZ+YCQKQGlpKdLS0nDgwAGkpKREejpERE1eWVkZ8vLyUFJSgtTU1EhPJ+J4nSEi0la4rzPMzCNq5pKTk5GcnBz2/RgMBnTq1Cns+yGKRVLJU0pKCn/JIiLSEEtK7XidISIKj3BdZ7hABBERERERERERURPBYB4REREREREREVETwWAeERERERERERFRE8FgHhERERERERERURPBYB4RERERERER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c21uUfO22nf2m/1uKxrSdyEECgoKEBQU1EhX17L4+voCMOy2y3DToC1/b9WE42GJ41Edx8RSXl4eQkJCpPdXR2OYR0RE5OTkcjk6duzYoDa0Wm2b/cGqrfad/W5b2mq/Afv7ztDKTC43LKXu5eXVZl9HtWnL31s14XhY4nhUxzGxZHp/dXi7jdIqERERERERERERORzDPCIiIiIiIiIiohaCYR4REVErplar8eKLL0KtVjf3pTS5ttp39pv9bivact8djWNZHcfEEsfDEsejOo6JpcYeD5ngfuxEREREREREREQtAivziIiIiIiIiIiIWgiGeURERERERERERC0EwzwiIiIiIiIiIqIWgmEeERERERERERFRC8Ewj4iIqBX78MMP0blzZ7i6uiImJga7du1q7ktqkEWLFmHgwIHw9PSEv78/xo0bh7S0NItjiouLMXPmTLRr1w4ajQbjx49HVlaWxTEZGRkYM2YM3N3d4e/vj6effhrl5eVN2RW7LV68GDKZDHPmzJFua819Pn/+PO677z60a9cObm5uCA8Px549e6T7hRBYuHAhAgMD4ebmhoSEBKSnp1u0kZOTg8mTJ0Or1cLb2xsPPvggrl271tRdsVpFRQVeeOEFhIaGws3NDV27dsUrr7yCyvvWtZZ+b9u2DbfffjuCgoIgk8mwevVqi/sd1c+DBw/ixhtvhKurK4KDg/HGG280dtea3ccff4yIiAhotVpotVrExsbi119/le5vze8btalrTHJycvD444+jR48ecHNzQ0hICJ544gnk5eVZtNGaxqS+14iJEAKjR4+u8Xu0rY1HUlISbr75Znh4eECr1WLIkCG4fv26dH9LeN+1RX1jkpmZiSlTpiAgIAAeHh7o378//vvf/1q00drGpLJm/ZlMEBERUau0cuVKoVKpxPLly8Xhw4fFww8/LLy9vUVWVlZzX5rdRo4cKT7//HORmpoqUlJSxK233ipCQkLEtWvXpGMeffRRERwcLBITE8WePXvEDTfcIOLi4qT7y8vLRd++fUVCQoLYv3+/WLdunfDz8xPz589vji7ZZNeuXaJz584iIiJCzJ49W7q9tfY5JydHdOrUSdx///0iOTlZnDp1Svz222/ixIkT0jGLFy8WXl5eYvXq1eLAgQPib3/7mwgNDRXXr1+Xjhk1apTo16+f2Llzp9i+fbvo1q2b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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABPMAAAIhCAYAAAArRv+wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydd3gU1duG79meXimhdxDpoAiogIiAvaL+FAERxUqzYaHYUBH7Z6WJDVFRsWEBxUKV3gWkt4SQvsnW+f7Y7Ga2l+ymwLmvK1eS2ZkzZ+rZeeZ531eSZVlGIBAIBAKBQCAQCAQCgUAgENR4VNXdAYFAIBAIBAKBQCAQCAQCgUAQGkLMEwgEAoFAIBAIBAKBQCAQCGoJQswTCAQCgUAgEAgEAoFAIBAIaglCzBMIBAKBQCAQCAQCgUAgEAhqCULMEwgEAoFAIBAIBAKBQCAQCGoJQswTCAQCgUAgEAgEAoFAIBAIaglCzBMIBAKBQCAQCAQCgUAgEAhqCULMEwgEAoFAIBAIBAKBQCAQCGoJQswTCAQCgUAgEAgEAoFAIBAIaglCzBPUOubNm4ckSa4fjUZDo0aNGDlyJEeOHKnu7tVI3nrrLebNm+c1ff/+/UiS5PMzgUAgOJOo6rHFaDQydepUfv/996i3XVNYsWIFU6dOJT8/3+uzfv360a9fvyrvk0AgEFQXYpyJPmKcEZzJaKq7AwJBpMydO5d27dpRWlrKH3/8wfTp01m+fDlbtmwhISGhurtXo3jrrbfIzMxkxIgRbtOzsrJYuXIlLVu2rJ6OCQQCQQ2jqsYWo9HItGnTAE7bh40VK1Ywbdo0RowYQWpqqttnb731VvV0SiAQCKoZMc5EDzHOCM5khJgnqLV06NCBHj16ANC/f39sNhtPP/00X3/9NbfccovPZYxGI/Hx8VXZzRqNXq/nvPPOq+5uxIzS0lLi4uKquxsCgaAWEcnYIgif9u3bV3cXYob4riEQCAIhxpmqQYwzgtMdEWYrOG1wilIHDhwAYMSIESQmJrJlyxYuueQSkpKSGDBgAABms5lnnnmGdu3aodfrqVOnDiNHjiQnJ8etzWXLltGvXz8yMjKIi4ujSZMmXHfddRiNRmRZpnXr1gwaNMirL8XFxaSkpHDvvfcC8PvvvyNJEp9++imPP/44DRo0IDk5mYsvvphdu3a5LfvLL79w1VVX0ahRIwwGA61ateKuu+7i5MmTbvNNnToVSZLYsGED1157LcnJyaSkpHDrrbe6bUezZs3Ytm0by5cvd9n6mzVrBvgPs925cyc333wz9erVQ6/X06RJE2677TZMJpPf/e9s66WXXuLll1+mefPmJCYm0qtXL1atWuU1/z///MOVV15Jeno6BoOBrl27snDhQp/b6IkzTGH//v1u23n55ZezaNEiunbtisFgcL2N3Lp1K1dddRVpaWkYDAa6dOnCBx984NZmOMdIIBCcOXiOLWVlZUyaNInmzZuj0+lo2LAh9957r1eIT6DxY//+/dSpUweAadOmue7NTvd0Tk4Od955J40bN3aNUX369OHXX38F4Omnn0aj0XDo0CGv/t5+++1kZGRQVlYGVNwblyxZQrdu3YiLi6Ndu3bMmTPHbbmcnBzuuece2rdvT2JiInXr1uWiiy7izz//dJvPea9/8cUXefbZZ2nSpAkGg4EePXqwdOlS13xTp07loYceAqB58+aubXSGe/kKfzKZTDz11FOcddZZGAwGMjIy6N+/PytWrAh4jPr160eHDh1Yu3YtF1xwAfHx8bRo0YLnn38eu93uNm9hYSEPPvig2/EbN24cJSUlXtvoKwWFJElMnTrVbTslSWL9+vVcf/31pKWludzuoZ4roR4jgUBweiLGGTHOKBHjjCBUhDNPcNqwZ88eANfABQ7R7sorr+Suu+7i0UcfxWq1Yrfbueqqq/jzzz95+OGH6d27NwcOHGDKlCn069ePf/75h7i4OPbv389ll13GBRdcwJw5c0hNTeXIkSMsWbIEs9lMfHw8999/P+PGjWP37t20bt3atd758+dTWFjoEvOcPPbYY/Tp04dZs2ZRWFjII488whVXXMGOHTtQq9UA7N27l169enHHHXeQkpLC/v37efnllzn//PPZsmULWq3Wrc1rrrmGoUOHMmbMGLZt28aTTz7J9u3bWb16NVqtlq+++orrr7+elJQUl91cr9f73Y+bNm3i/PPPJzMzk6eeeorWrVtz7NgxFi9ejNlsDrgswP/93//Rrl07Xn31VQCefPJJLr30Uvbt20dKSgoAv/32G4MHD6Znz5688847pKSksGDBAm688UaMRqNXOHCorF+/nh07dvDEE0/QvHlzEhIS2LVrF71796Zu3bq8/vrrZGRk8NFHHzFixAhOnDjBww8/7NZGKMdIIBCcOSjHFlmWufrqq1m6dCmTJk3iggsuYPPmzUyZMoWVK1eycuVK9Hp90PEjKyuLJUuWMHjwYEaNGsUdd9zhWgfAsGHDWL9+Pc8++yxt2rQhPz+f9evXk5ubC8Bdd93Fs88+y7vvvsszzzzj6uupU6dYsGAB9913HwaDwTV906ZNTJw4kUcffZR69eoxa9YsRo0aRatWrbjwwgtdywJMmTKF+vXrU1xczFdffUW/fv1YunSp1wPRm2++SdOmTXn11Vex2+28+OKLDBkyhOXLl7vGsFOnTvHGG2+waNEisrKyAP9OCavVypAhQ/jzzz8ZN24cF110EVarlVWrVnHw4EF69+4d8DgdP36cW265hYkTJzJlyhS++uorJk2aRIMGDbjtttsAh5Ohb9++HD58mMcee4xOnTqxbds2Jk+ezJYtW/j11199vkAKhWuvvZabbrqJMWPGUFJSEvK5Es4xEggEpydinBHjTCiIcUbghSwQ1DLmzp0rA/KqVatki8UiFxUVyd99951cp04dOSkpST5+/Lgsy7I8fPhwGZDnzJnjtvynn34qA/KXX37pNn3t2rUyIL/11luyLMvyF198IQPyxo0b/falsLBQTkpKkseOHes2vX379nL//v1d///2228yIF966aVu8y1cuFAG5JUrV/ps3263yxaLRT5w4IAMyN98843rsylTpsiAPH78eLdlPv74YxmQP/roI9e0s88+W+7bt69X+/v27ZMBee7cua5pF110kZyamipnZ2f73W5fONvq2LGjbLVaXdPXrFkjA/Knn37qmtauXTu5a9eussVicWvj8ssvl7OysmSbzea2jZ44z4F9+/a5pjVt2lRWq9Xyrl273Oa96aabZL1eLx88eNBt+pAhQ+T4+Hg5Pz9fluXIj5FAIDg9CGVsWbJkiQzIL774otuyn332mQzI7733nizLoY0fOTk5MiBPmTLF67PExER53LhxAfs7fPhwuW7durLJZHJNe+GFF2SVSuV1bzQYDPKBAwdc00pLS+X09HT5rrvu8tu+1WqVLRaLPGDAAPmaa65xTXfe6xs0aCCXlpa6phcWFsrp6enyxRdf7Jo2Y8YMr3u1k759+7qNS/Pnz5cB+f333w+43b7o27evDMirV692m96+fXt50KBBrv+nT58uq1Qqee3atW7zOY/XDz/84LaNyrHR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zOvWrRurVgVOPj948GAGDx4ccJ5mzZp53QwNBgNvvPEGb7zxRqX7Wd1YbHYuf/0vTFYbP42/EL0mtoJkNMW8aIpgKkmK2JkXTpytr3G16px5sVtPrL8w+DsekYZsGsIU844XlHHz+6u4olMWEy5pG9E6q5Ko58zzc+5M/mYbAF9vOMINPRqH1FY07wECgUBQ02lu2YtesgBQWpxXzb0RCAThMGfOHO6//35mzZrFwYMHXdFdscJisaDVaivdTkpKShR6ExlqtZr69etX2/oFAkFgakWYrcA3e3OKmfnzLkrKE/PvPlHMrhNF7M81svtEbFxVSmqqM0/CXewKp5/hbJGvLlfBizMgumHJnlRXaQ11hJWs4rThidbzV+5n38kSXq8llVijfTyCnaMlYRT6EGKeQCA4k5hW5sinPM0yjBxtw2rujUBQvciyjNFsrZafcF88l5SUsHDhQu6++24uv/xy5s2b5/rs999/R5Ikvv/+ezp37ozBYKBnz55s2bLFNc+8efNITU3l66+/pk2bNhgMBgYOHMihQ4dc80ydOpUuXbowZ84cWrRogV6vR5ZlDh48yFVXXUViYiLJyckMHTqUEydOALBz507i4+P55JNPXO0sWrQIg8HgWr9nmG2/fv24//77GTduHGlpadSrV4/33nuPkpISRo4cSVJSEi1btuTHH390LWOz2Rg1ahTNmzcnLi6Otm3b8tprr7n1/YMPPuCbb75BkiQkSeL333/3GWa7fPlyzj33XPR6PVlZWTz66KNYrVa3/j3wwAM8/PDDpKenU79+faZOnRrW8RIIBKERkjOvsLAw7IaTk5PDXkYQHnfO/4e9OSXklph57pqO5BvNrs+O5JfSoWFs3+SooxhiF1VnnsozBDZGYbY+ZBZbFal5VlvscubFehP87eNwc+Y5MWjDEwGVYpXRbCVeV7MNytF0StrtclDhXBXGcRA58wQCwZmEGsf4sd7emvaWmj12CASxptRio/3kn6pl3dufGhTW97fPPvuMtm3b0rZtW2699Vbuv/9+nnzySbeK1A899BCvvfYa9evX57HHHuPKK6/k33//dbnrjEYjzz77LB988AE6nY577rmHm266ib///tvVxp49e1i4cCFffvmlK2XT1VdfTUJCAsuXL8dqtXLPPfdw44038vvvv9OuXTteeukl7rnnHvr06YNWq2X0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c7f0vBlaVVIqdVOpe3t7t8hrqC4t9euqNuyPmtgnxtgfxgzfX23eboO0SkRERERERERERDbHMI+IiIiIiIiIiKiZYJhHRETk4JydnfHGG2/A2dm5qQ+lUfG8ed4tRUs995Z63g2BfVkT+8QY+6Mm9okx9oexhu4PheB67ERERERERERERM0CK/OIiIiIiIiIiIiaCYZ5REREREREREREzQTDPCIiIiIiIiIiomaCYR4REREREREREVEzwTCPiIjIgS1duhQRERFwcXFBbGwsdu/e3dSHZJWFCxeiT58+8PT0RGBgICZOnIiUlBSjbYQQePPNNxESEgJXV1cMHToUJ0+eNNqmpKQEzz//PAICAuDu7o7x48fj6tWrjXkqVlm4cCEUCgVmzZolPeao552eno7HHnsM/v7+cHNzQ8+ePXHo0CHpeUc87/LycixYsAARERFwdXVF+/bt8fbbb0Or1UrbOMp579q1C+PGjUNISAgUCgV++OEHo+dtdZ45OTlITEyEt7c3vL29kZiYiNzc3AY+u6a1bNkydO/eHV5eXvDy8kJ8fDw2bdokPe8o15AcdfVJWVkZXn75ZXTr1g3u7u4ICQnBlClTcO3aNaM2HKlP6rtGqvrzn/8MhUKBxYsXGz3e0vrj9OnTGD9+PLy9veHp6Yn+/fsjLS1Net6R+gOov09u376NGTNmIDQ0FK6uroiOjsayZcuM2nC0PqmqSX8eE0REROSQ1qxZI5ycnMTnn38uTp06JWbOnCnc3d3F5cuXm/rQLDZq1CixatUqceLECZGcnCzuvfdeERYWJm7fvi1t8/777wtPT0+xbt06cfz4cTFp0iTRunVrkZ+fL20zffp00aZNG7FlyxZx+PBhMWzYMNGjRw9RXl7eFKcly4EDB0S7du1E9+7dxcyZM6XHHfG8b926JcLDw8XUqVPF/v37RWpqqti6das4f/68tI0jnvc777wj/P39xU8//SRSU1PFf//7X+Hh4SEWL14sbeMo571x40bx6quvinXr1gkA4vvvvzd63lbnOXr0aBETEyP27t0r9u7dK2JiYsTYsWMb6zSbxIYNG8TPP/8sUlJSREpKipg/f75wcnISJ06cEEI4zjUkR119kpubK0aMGCHWrl0rzpw5I5KSkkS/fv1EbGysURuO1Cf1XSMG33//vejRo4cICQkR//jHP4yea0n9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", "text/plain": [ "
" ] @@ -361,7 +350,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 5, "id": "7c373def-4f75-4d20-a692-d2e0b51c1a0f", "metadata": {}, "outputs": [], @@ -420,13 +409,13 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 6, "id": "70e0d8fe-0c06-4282-8513-2c45d84b134c", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAAGwCAYAAABvpfsgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACOwElEQVR4nOzdd3hUZfbA8e+dlElPhhSSQEihIzWhq4iCNAVRfuJaUBRdcdVlQVdgUbGsgouuZdeyNtaKytpQREGiIqFKrwFCIBASEgipk0y9vz8mGRJpCZnJzUzO53nmWe6dW86MCzl533PPq6iqqiKEEEIIIS6aTusAhBBCCCE8nSRUQgghhBCNJAmVEEIIIUQjSUIlhBBCCNFIklAJIYQQQjSSJFRCCCGEEI0kCZUQQgghRCP5ah1AS2G32zl27BihoaEoiqJ1OEIIIYSoB1VVKSsrIz4+Hp3u3ONQklA1kWPHjpGQkKB1GEIIIYS4CEeOHKFt27bnfF8SqiYSGhoKOP6DhIWFaRyNEEIIIeqjtLSUhIQE58/xc5GEqonUTPOFhYVJQiWEEEJ4mAuV60hRuhBCCCFEI0lCJYQQQgjRSJJQCSGEEEI0ktRQCSGEEBqz2+2YzWatw2iR/Pz88PHxafR1JKESQgghNGQ2m8nOzsZut2sdSosVERFBbGxso/pESkIlhBBCaERVVfLy8vDx8SEhIeG8jSOF66mqitFopKCgAIC4uLiLvpYkVEIIIYRGrFYrRqOR+Ph4goKCtA6nRQoMDASgoKCAmJiYi57+86hUeOnSpQwYMIDAwEAMBgPjx4+v8/7KlSsZPHgwoaGhxMbGMnPmTKxW63mvmZWVxfXXX090dDRhYWFMnDiR48eP1zmmqKiIW2+9lbCwMCIiIpgyZQrl5eWu/nhCCCFaGJvNBoC/v7/GkbRsNcmsxWK56Gt4TEL1+eefM2nSJO688062bdtGRkYGt9xyi/P9bdu2MWbMGEaNGsWWLVv49NNPWbJkCbNmzTrnNSsqKhgxYgSKopCenk5GRgZms5mxY8fWmcu+9dZb2bVrFytWrODbb79l1apV/PGPf3Tr5xVCCNFyyBqv2nLF96+oqqq6IBa3slqtJCUl8eSTTzJlypSzHvO3v/2NFStWsHHjRue+b775hokTJ1JQUHDWlvHLly9n9OjRnDp1ytm9vKSkBIPBwPLlyxk+fDh79uyhW7dubNy4kb59+wLw/fffM2bMGI4ePUp8fPxZ4zGZTJhMJud2Tev6kpIS6ZQuhBACgKqqKrKzs0lOTiYgIEDrcFqs8/13KC0tJTw8/II/vz1ihGrz5s3k5uai0+no06cPcXFxjB49mp07dzqPMZlMZ3wJgYGBVFVVsWnTprNe12QyoSgKer3euS8gIACdTsfq1asBWLt2LREREc5kCmD48OHodDrWr19/zpjnzZtHeHi48yULIwshhBDeyyMSqoMHDwLwxBNP8Oijj/Ltt99iMBgYOnQoRUVFAIwcOZI1a9awaNEibDYbubm5PPXUUwDk5eWd9boDBw4kODiYmTNnYjQaqaio4OGHH8ZmsznPyc/PJyYmps55vr6+tGrVivz8/HPGPHv2bEpKSpyvI0eONPp7EEIIIUTzpGlCNWvWLBRFOe9r7969znqmOXPmMGHCBNLS0li4cCGKorB48WIARowYwYIFC5g6dSp6vZ5OnToxZswYgHM+hhodHc3ixYv55ptvCAkJITw8nOLiYlJTUxv96Kper3cuhCwLIjdPVRYbpVUXX4AohBBC1NC0bcJDDz3E5MmTz3tMSkqKc7SoW7duzv16vZ6UlBRycnKc+2bMmMH06dPJy8vDYDBw6NAhZs+eTUpKyjmvP2LECLKysjhx4gS+vr7O5l4158TGxjr7U9SwWq0UFRURGxvb0I8smokP1h1m3nd7MJptjOkRy3MTehIa4Kd1WEIIIc7DZrOhKEqz7NelaUTR0dF06dLlvC9/f3/S0tLQ6/VkZmY6z7VYLBw6dIjExMQ611QUhfj4eAIDA1m0aBEJCQmkpqZeMJaoqCgiIiJIT0+noKCAcePGATBo0CCKi4vr1GGlp6djt9sZMGCAi74J0ZR+3H2cx77aidHseFz5ux35/Omjzdjszf75DCGEl1NVFaPZqsmroc+off/991x22WVEREQQGRnJtddeS1ZWFgCHDh1CURQ++eQTBg8eTEBAAN27d+eXX35xnv/zzz+jKApLly6lZ8+eBAQEMHDgwDr10f/973+JiIhgyZIldOvWDb1eT05ODqdOneL222/HYDAQFBTE6NGj2b9/PwCFhYXExsby7LPPOq+zZs0a/P39WblyZWP+85yXRzT2DAsLY+rUqcydO5eEhAQSExNZsGABADfeeKPzuAULFjBq1Ch0Oh1ffPEF8+fP57PPPnM26crNzWXYsGG8//779O/fH4CFCxfStWtXoqOjWbt2LdOmTWP69Ol07twZgK5duzJq1Cjuuece3njjDSwWCw888AB/+MMfzvmEn2i+LDY7T367C4DbByUyvk8bbnlrHb/uP8GiDTncNjDxAlcQQgj3qbTY6Pb4D5rce/dTIwnyr39aUFFRwYwZM+jZsyfl5eU8/vjjXH/99WzdutV5zF//+ldeeuklunXrxj//+U/Gjh1LdnY2kZGRdY55+eWXiY2N5W9/+xtjx45l3759+Pk5Zg2MRiPPPfccb7/9NpGRkcTExHDzzTezf/9+lixZQlhYGDNnzmTMmDHs3r2b6Oho3n33XcaPH8+IESPo3LkzkyZN4oEHHmDYsGEu+75+zyMSKnAkS76+vkyaNInKykoGDBhAeno6BoPBecyyZct45plnMJlM9OrVi6+//prRo0c737dYLGRmZmI0Gp37MjMzmT17NkVFRSQlJTFnzhymT59e594fffSR8z+ETqdjwoQJvPLKK+7/0MLlVu45zpGiSiKD/Zk1ugtB/r7MHNWFJ7/ZzT9X7OP6Pm0I1nvMXwshhNDMhAkT6my/++67REdHs3v3bkJCQgB44IEHnMe9/vrrfP/997zzzjs88sgjzvPmzp3L1VdfDcB7771H27Zt+fLLL5k4cSLg+Nn92muv0atXLwBnIpWRkcHgwYMBx8/phIQEvvrqK2688UbGjBnDPffcw6233krfvn0JDg5m3rx5bv0+POYnh5+fH88//zzPP//8OY9JT08/7zWSkpLOGNKcP38+8+fPP+95rVq14uOPP65/sEITqqpiV8FHd+4GbZ9sdDxtObFfgvM3sdsGJvLemkMcOmnkf5uOcsfgpKYIVwghzhDo58Pup0Zqdu+G2L9/P48//jjr16/nxIkTzgfIcnJynDXPgwYNch7v6+tL37592bNnT53r1D6mVatWdO7cuc4x/v7+9OzZ07m9Z88efH1965TdREZGnnHe888/T/fu3Vm8eDGbNm2q0yLJHTwmoRLifL7emsvT3+6mpNLCDX3a8uR1lxDwu38cKkxW1hw4CcCE1LagqpC/Az9fPVMuS+axr3fxbkY2tw1MPG9SJoQQ7qIoSoOm3bQ0duxYEhMTeeutt4iPj8dut9O9e3fMZrNL7xMYGHhRncyzsrI4duwYdrudQ4cO0aNHD5fG9XvNr0xeiAbKOHCCaZ9s5US5GYtN5dPfjvDAx5vPGI3MOHACs81OYmQQ7cPs8P44+M/l8Gp/bs6eTUyAjcMnjaw/eFKjTyKEEJ7h5MmTZGZm8uijjzJs2DC6du3KqVOnzjhu3bp1zj9brVY2bdpE165dz3nMqVOn2Ldv3xnH1Na1a1esVmud5to18dSMjJnNZm677TZuuukmnn76ae6+++4znth3NUmohEez2VUe+8rxRMiE1La8O7kv/r46ftxT4Jzeq/HzvkIAruwcg7L0IcheBTpfUHzw3fcdb4X/F1D5cktuE38KIYTwLAaDgcjISN58800OHDhAeno6M2bMOOO4V199lS+//JK9e/dy//33c+rUKe666646xzz11FOsXLmSnTt3MnnyZKKiohg/fvw5792xY0euu+467rnnHlavXs22bdu47bbbaNOmDddddx3g6FtZUlLCK6+8wsyZM+nUqdMZ93U1SaiER1uxO5+DJyoID/Tjyesu4aourXlkpOMJzX+u2IfRbHUeu/mw47enURE5sOMzQIHJ38EdS0DnS6+SlQzTbWbZznwqq1sqCCGEOJNOp+OTTz5h06ZNdO/enenTpzufvq+tpk65V69erF69miVLlhAVFXXGMdOmTSMtLY38/Hy++eYb/P39z3v/hQsXkpaWxrXXXsugQYNQVZXvvvsOPz8/fv75Z1566SU++OADwsLC0Ol0fPDBB/z666+8/vrrLv0eavOMiVohzuHzzY7RpFsGtCOk+um82wcl8f7aw+QUGVm04QhTLkum3GQl83gZAL1zFzlO7n0rtKsuahz0AGS8xFz9IoZW9uHnzAJG94hr8s8jhBCeYvjw4ezevbvOvppSi0OHDgGO6bnzrXsLcNlll9XpPVXb5MmTz9oA3GAw8P7775/1nKFDh2Kx1F0FIykpiZKSkvPG0VgyQiU8VrnJyi/V03jX9Y6HsnxY8y/8N73NA4McvwF9sPYQdrvK9qPFqCp0C7cQsH+p4wID7j19sSEPQ0A47dRjXK3bxIo9x5v64wghhPBgklAJj7VqXyFmq52UqGA663Lh9Uth+aOw7K/832830zXgBIdOGlm1v5AtOcUA/J9hP9itEHMJxJ1+DBd9KPS7B4Apvt/x094CrDa7Bp9KCCGEJ5KESnisddVP4w3taED54h4wnoDIjhCRiK7kCP8NeBl/LHy5JZe9+Y7pvkvZ5ji5w1VnXrDf3aiKjv66TMIrc9hcnYQJIYRomJq+j7179z7nMUOHDkVVVSIiIposLneShEp4rA3ZRQCM810P+TsgIALuXAZ3/QDB0bSuyuIun2Ws2H2c7UeLAZWk4uq5/PZnWX4gLA6lev8En1/5Uab9hBBC1JMkVMIjFRvNzlGnS45+4tg56H4IiYawOLj6aQAe8FuCzlzG4ZNGOitH0FcVgG8gtBt09gv3uRWAG3x+ZVWme3uWCCGE8B6SUAmPtOVIMQCXtyrBL2+To59U2uTTB/S8CaI6E4KRm30cSxJd5Vf9FEnSpeAXcPYLdxqN6hdEG+Uk/gXbKCwzue9DCCGE8BqSUAmPtCevFIAbgqtropIuh5CY0wfodDD4AQAm+/6ADjvDaxKqs0331fALQOnoWKRzpM9G1mSdcHnsQgghvI8kVMIj7clzTPcNNK117OhyzZkH9ZiIGhBOG+UkV+q20N22y7G/w3kSKoAuYwEYqfuNjAOSUAkhhLgwSaiER9qTV0oQVbQuqx516jTqzIP8AlC6TwBgvt9b6LFAWBuI6nT+i3cagV3nRwfdMY5kbj1jTUAhhBDi9yShEs2e3V43oamy2DhYWE4vXRY61QZhbSEi4ewn97oFgGjFMUVI+6vgQquWB4SjJl4KQFfjRrJPVDQqfiGEEK6nKApfffWV1mE4SUIlmq1Nh4sY9sLPdJjzHZMXbuB4aRUABwrKsaswWH/QcWBC/3NfpG3fuiNSnUfX694+HYcDMES3nXUHiy4qfiGEEC2HJFSiWTp0ooJJ72wgq7ACuwo/ZxbyhzfXUVJpcY4YDfbLchx8voRKUaDvFMefg6IcI1T1UX3cAN0ethzMu9iPIYQQXstutzNv3jySk5MJDAykV69e/O9//0NVVYYPH87IkSOdJRNFRUW0bduWxx9/HACbzcaUKVOc53bu3JmXX375jHu8++67XHLJJej1euLi4njgAcfDRklJSQBcf/31KIri3NaSLI4smqUnvtmF0Wyjf1IrZo7uwp8XbSH7RAVPfbObpMggQKWLba/j4LbnSagA+t/jWFqmTRr4BdYvgJhumAJjCKwswJy9FhjQmI8jhBD1o6pgMWpzb7+gC5dE1DJv3jw+/PBD3njjDTp27MiqVau47bbbiI6O5r333qNHjx688sorTJs2jalTp9KmTRtnQmW322nbti2LFy8mMjKSNWvW8Mc//pG4uDgmTpwIwOuvv86MGTOYP38+o0ePpqSkhIyMDAA2btxITEwMCxcuZNSoUfj4+Lj++2ggSahEs5OZX8bPmYXoFPjH//UkKSqYf93ShxteW8Pnm4/SPjqYFCWPYFsp+AZAbI/zX1Dn42zYWW+Kgq7DVbDjE7oafyOvpJK48HomY0IIcbEsRng2Xpt7/+0Y+AfX61CTycSzzz7Ljz/+yKBBjkbJKSkprF69mv/85z98/PHH/Oc//+H2228nPz+f7777ji1btuDr60g7/Pz8ePLJJ53XS05OZu3atXz22WfOhOrvf/87Dz30ENOmTXMe169fPwCio6MBiIiIIDY2tvGf3QVkyk80O4s25AAw8pJYkqKCwVJFaowPN6S2ASCrsIJU3X7HwfF9wNffLXH41aqjqlnmRgghBBw4cACj0cjVV19NSEiI8/X++++TleUox7jxxhu5/vrrmT9/Ps8//zwdO3asc41XX32VtLQ0oqOjCQkJ4c033yQnx/Hvf0FBAceOHWPYsAu0uWlGZIRKNCuqqvLDrnwAbkxrA6tfgp/ng7WSp9qP4UflBkrVIFKVfY4Tzlc/1VgpVwDQRcnhywOHuK53G/fdSwghwDHt9rdj2t27nsrLywFYunQpbdrU/bdRr9cDYDQa2bRpEz4+Puzfv7/OMZ988gkPP/wwL7zwAoMGDSI0NJQFCxawfr1jvdXAQM+bEZCESjQr24+WkFdSRbC/D5dXrIAf5zrfC8n6jk9Dc7i2dCapugOOnReqn2qMkBjKQ1MIKTuI+eAa4FL33UsIIcBRw1TPaTctdevWDb1eT05ODldcccVZj3nooYfQ6XQsW7aMMWPGcM0113DVVY4HfjIyMhg8eDB/+tOfnMfXjGwBhIaGkpSUxMqVK7nyyivPen0/Pz9sNpsLP1XjSEIlmpXV1Z3Jh7cPxu/Hex07r5jpaNz5/nV0Ne3kEd9P6KQcdbznzhEqwCf5Uth+kDalWygxWggP8nPr/YQQwhOEhoby8MMPM336dOx2O5dddpmzaDwsLIyoqCjeffdd1q5dS2pqKn/961+544472L59OwaDgY4dO/L+++/zww8/kJyczAcffMDGjRtJTk523uOJJ55g6tSpxMTEMHr0aMrKysjIyODBBx8EcCZcl156KXq9HoPBoNXXAUgNlWhmamqVbvVNh6piiOzgSKjapMKY5wG413cpOkV1vFd7/T43COzg+M1rgG4Pvx2WOiohhKjx9NNP89hjjzFv3jy6du3KqFGjWLp0KUlJSUyZMoUnnniC1NRUAJ588klat27N1KlTAbj33nu54YYbuOmmmxgwYAAnT56sM1oFcMcdd/DSSy/x2muvcckll3DttdfWmTp84YUXWLFiBQkJCfTp06fpPvg5KKqsq9EkSktLCQ8Pp6SkhLCwMK3DaZZsdpXeTy6nzGRlb9yTBJzKhLEvQ9pkxwGqCu9cDUc3Orb73AbXvereoEpy4cVu2FSFfw9IZ9qYVPfeTwjRolRVVZGdnU1ycjIBAQFah9Nine+/Q31/fssIlWg29uaXUmay0lOf70imdH7QbfzpAxQFRjxzervrOPcHFd6GssC2+CgqpoNr3H8/IYQQHklqqESzsSvXsd7ereHboRRHt/LAiLoHtRsA177kmA7sOKJJ4rIlDIJ9izEUbsRuV9Hp6t/4TgghRMsgI1Si2did50io+qm7HDs6Xn32A/veCZdNb1BH38YI7TIUgD7qbrIKy5vknkIIITyLJFSi2dibX4ofVtpV7HDsSLpM24Cq+SQNBqCHcpBt2QUaRyOEEKI5koRKNAuqqrI3v4yeSha+9ioIioToLlqH5WBIpsLXgF6xUrh/g9bRCCG8kDwfpi1XfP+SUIlmIb+0imKjhTSf6oad7QY12ZTeBSkK5dGOR3J9cjdqHIwQwpvULOprNps1jqRlMxodC1L7+V18r0EpShfNwoECR21S/4CjYAXiemsaz+8FtR8Eeem0rdhBhclKsF7+6gghGs/X15egoCAKCwvx8/NDp5NxjqakqipGo5GCggIiIiKcCe7FkJ8Kolk4dNLx20FX5bBjR1xPDaM5U2iHwbAaUnX72X6kmEEdorQOSQjhBRRFIS4ujuzsbA4fPqx1OC1WREQEsbGxjbqGJFSiWTh8ogI9ZuIsRxw7YntoG9DvxffBho5Y5RTLD+xhUIfLtY5ICOEl/P396dixo0z7acTPz69RI1M1JKESzcKhkxV0UXLQYYOgKAiN0zqkuvyDKQrtTHTZHqoOrgMkoRJCuI5Op5NO6R5OJmtFs3DopJGOulzHRutLmk9Bei32Nn0BCD2xRZ7IEUIIUYckVEJzNrtKzkkjyUqeY0dUR20DOgdDZ0dfrK7WveSXVmkcjRBCiOZEEiqhufzSKsw2O+11+Y4dkR20Degc/BMHANBNOcTOw9LgUwghxGmSUAnNHT5ZAUBH3+OOHc00ocKQRJmPAX/FRmHmOq2jEUII0YxIQiU0l1dchYKdBHv1lF9ke20DOhdFoTiyt+OPR6XBpxBCiNMkoRKayyupJI4i/DGDzhfC22kd0jn5tusHQKuSnVKYLoQQwkkSKqG5YyVVJOuqR6cMyeDTfLt5RHYeBEA3+wGOFFVqHI0QQojmQhIqobm84koSlELHRqtkbYO5AP+2qQAk6ArZe/CgxtEIIYRoLiShEprLK6kiXjnh2AhP0DaYCwmMoFDvmJIs3r9e42CEEEI0F5JQCc3llVTRRjnp2Ahvq20w9VAR5VhnUMnbrHEkQgghmgtJqISmjGYrJZUW4qlJqJr5CBUQkNQfgNalu7DbpTBdCCGEJFRCY8eKHR3H2+o8Z4QqqtNAALqRRfaJco2jEUII0RxIQiU0lV/i6EEV60FTfr7xvbDiQ5RSStb+PVqHI4QQohmQhEpo6nhpFVGU4IcVFB2Exmkd0oX5BVAQ5FhvsCRLCtOFEEJIQiU0dqLcRHzN6FRofLPuQVVbVXQvAPzzt2gciRBCiOZAEiqhqToJlQdM99UITnEUpsdV7MFqs2scjRBCCK1JQiU0daLcfDqhCovXNpgGiK7umH4JWRw4XqJxNEIIIbQmCZXQ1IlyE9FKdUISGqttMA2gi+lClRJAsGLiUOZWrcMRQgihMUmohKYKy0xEK8WOjZAYTWNpEJ0Px0O6AGA8uEHjYIQQQmhNEiqhqRPlZqIpdmyEtNY0loaytHas6xdQuFXbQIQQQmhOEiqhGbtdpajCRJRS6tjhSSNUQHgHR2F6gnEvZqsUpgshREsmCZXQzCmjGbtKrSk/zxqhiqouTO+sHGZ/bqHG0QghhNCSRyVUS5cuZcCAAQQGBmIwGBg/fnyd91euXMngwYMJDQ0lNjaWmTNnYrVaz3vNrKwsrr/+eqKjowkLC2PixIkcP37c+f6hQ4eYMmUKycnJBAYG0r59e+bOnYvZbHbHR2xRTpSb0WGnVc0IVbBnjVApEYmU6MLxV2wc3btR63CEEEJoyGMSqs8//5xJkyZx5513sm3bNjIyMrjllluc72/bto0xY8YwatQotmzZwqeffsqSJUuYNWvWOa9ZUVHBiBEjUBSF9PR0MjIyMJvNjB07FrvdMYWzd+9e7HY7//nPf9i1axcvvvgib7zxBn/729/c/pm93YlyE5GU4oPq6JIeHKV1SA2jKJwI6waA6bAkVEII0ZJ5RFtqq9XKtGnTWLBgAVOmTHHu79atm/PPn376KT179uTxxx8HoEOHDvzjH/9g4sSJzJ07l9DQ0DOum5GRwaFDh9iyZQthYWEAvPfeexgMBtLT0xk+fDijRo1i1KhRznNSUlLIzMzk9ddf5/nnnz9nzCaTCZPJ5NwuLS29+C/ASzlaJhQ7NoKiQOejaTwXQ41LheK1BJ3YrnUoQgghNOQRI1SbN28mNzcXnU5Hnz59iIuLY/To0ezcudN5jMlkIiAgoM55gYGBVFVVsWnTprNe12QyoSgKer3euS8gIACdTsfq1avPGU9JSQmtWrU6b8zz5s0jPDzc+UpISKjPR21RTpSbT/eg8rD6qRoRnQYCkGTKpMpi0zgaIYQQWvGIhOrgwYMAPPHEEzz66KN8++23GAwGhg4dSlFREQAjR45kzZo1LFq0CJvNRm5uLk899RQAeXl5Z73uwIEDCQ4OZubMmRiNRioqKnj44Yex2WznPOfAgQP861//4t577z1vzLNnz6akpMT5OnLkyMV+fK91qsLsmT2oaons6EioUjhGZs4xjaMRQgihFU0TqlmzZqEoynlfNTVMAHPmzGHChAmkpaWxcOFCFEVh8eLFAIwYMYIFCxYwdepU9Ho9nTp1YsyYMQDodGf/mNHR0SxevJhvvvmGkJAQwsPDKS4uJjU19azn5ObmMmrUKG688Ubuueee8342vV5PWFhYnZeoq7jSTDSePUKlhMRwwicGnaKSv3edy69fUFbFnrxSWS9QCCGaOU1rqB566CEmT5583mNSUlKco0W1a6b0ej0pKSnk5OQ4982YMYPp06eTl5eHwWDg0KFDzJ49m5SUlHNef8SIEWRlZXHixAl8fX2JiIggNjb2jHOOHTvGlVdeyeDBg3nzzTcv4tOK3ztltJDsnPKL1jaYRigK705UUTqWnE3AjS65pt2u8twPe3lr1UHsKrQ1BPLyH3qTlnj+qWYhhBDa0DShio6OJjr6wj9I09LS0Ov1ZGZmctlllwFgsVg4dOgQiYmJdY5VFIX4eMciu4sWLSIhIYHU1NQL3iMqyvGEWXp6OgUFBYwbN875Xm5uLldeeaVzZOxcI16iYUqMFgxKmWMjKFLbYBpBaZMKRemEnXRdYfp/Vh3kP784prr1vjqOnqrk9nc28Om9g+jeJtxl9xFCCOEaHpEZhIWFMXXqVObOncvy5cvJzMzkvvvuA+DGG0+PCCxYsIAdO3awa9cunn76aebPn88rr7yCj4/j6bHc3Fy6dOnChg2n115buHAh69atIysriw8//JAbb7yR6dOn07lzZ+c5Q4cOpV27djz//PMUFhaSn59Pfn5+E34D3umU0YyB6oQq0HNHXiI7V9dRWTIxms/f96w+cosrefHHfQA8fd0lbH7saga3j6TCbOMvn26V4nchhGiGPKJtAjiSJV9fXyZNmkRlZSUDBgwgPT0dg8HgPGbZsmU888wzmEwmevXqxddff83o0aOd71ssFjIzMzEajc59mZmZzJ49m6KiIpKSkpgzZw7Tp093vr9ixQoOHDjAgQMHaNu2bZ2YVFV14yf2fsV1Rqg8N6FqVb0ETVvlBFsPZtO7S8dGXe/d1dmYrXYGJLfitoGJKIrCq7ekMuKlVRwoKOetVQd5cFjj7iGEEMK1FFWygiZRWlpKeHg4JSUlUqBe7ZLHv+c7HiRRVwB3/QDtBmod0kXLe6Y7cZYjLO/9L0aMv/2ir1NlsdH37z9SbrLy3l39uSLsOGxaCHYbq4JHcPtylVC9L6seuRJDsL8LP4EQQoizqe/Pb4+Y8hPex2y1U2G2YVDKHTs8eMoPoNjQAwD70c2Nus4v+wopN1lpExHIELbAW1fCxrdh00IuX3ULfzWsosxk5d2MbFeELYQQwkUkoRKaKK4044uVMKV6+tWDp/wAfBLSAIg4taNR11m2w/FE64TOepQv/wg2M6RcCZfcgILK/ZVvMFS3lY/X50gtlRBCNCOSUAlNlBgtRFBRvaVAQISW4TRaTOdBAHSw7qOs8uIWzrbbVX7eVwjALZb/QeUpaN0Dbl0M//cu9L0LgBf838RcUcySbdJIVAghmgtJqIQmThktRNQUpAeEg4/HPB9xVhHJaVjxIUopZd/+vRd1jczjZRQbLcT4m2h94DPHzuFPgI8fKAqMfBYiOxJJMVN9l/Dx+pzzXk8IIUTTkYRKaKLYaKYVnv+En5NfAMf8kwEo2ndxHdPXHzwJwL2R21DM5RDVGToMq3WPQLjasZzSFJ9l5B45RFZheePiFkII4RKSUAlNOFomVCcDHtzUs7ayyJ4AqLkXV5i+PtuxLuVw1jt29JzoGJmqrfNoaNuPAMXCJN/lfLk596LjFUII4TqSUAlNFFeaifCSJ/xq+LVzFKZHley8qPO3HSkmjAoSijc6dnS77syDFAUGPwjAbT4/snRTFna7dD4RQgitSUIlNHHKaPGuKT8gtutgADrYDlBSYWrQuacqzBwrqWKAbg861QqRHSDqHM07u1yLPSKJVko5/SrS2ZxzqrGhCyGEaKR6JVSlpaUNfglxPsW1i9K9ZIQqLKEnVfgTplRyYM/WBp2765jj78zVQQccO5IuP/fBOh90fScDcKPPLyzbKcsgCSGE1uqVUEVERGAwGOr9atWqFQcPHnR37MKDlVZaMFBTQ+UdCRU+vuQGOEaVTh1oWGH6rmMlAAz02ePYkXTZ+U/o+QdUdPTT7WPX9k2yDJIQQmis3s+q/+9//6NVqwv/4FNVlTFjxjQqKOH9Squ8Yx2/3zNG94Iju/DJ29Kg83bnlRKCkbamLMeOxEvPf0JYHPb2w/DJWsEQ43J25o6jR9vwi4xaCCFEY9UroUpMTGTIkCFERtbvaayUlBT8/PwaFZjwbmVVVsKV6saegYbzH+xBAhL7wZGPiS7d1aDzMvPLuEQ5jA47hCdAWNwFz/FJvQ2yVnCdTwYf7TgmCZUQQmioXlN+2dnZ9U6mAHbu3ElCQsJFByW8X1mVhTCql50J8J5EIK5bdWG6PZuTJfXrEWW3q2SfqOAS3SHHjtie9btZp5FYfYNoo5zk0I5VFxGtEEIIV6n3U37//ve/KS4udmMooiUpq7ISqnhfQhUS15kygglQLBzcvbFe5xwrqcRktdPd55BjR1w9Eyq/QNSOIwHoXfoLh09WXOAEIYQQ7lLvhGrOnDnEx8dzyy23kJ6e7s6YRAtQWmeEKkLTWFxKUTgW1AWA0qwN9Tol+4QjEertW72UTH1HqAC/HjcAMMZnPT/tOd6AQIUQQrhSvROq/Px83njjDfLy8rj66qtJTk7m6aef5siRI+6MT3ghi82O2WIlVKl07PCiESqAypheAPjlb63X8dknKtBjpp39qGNHfUeoADpejcUnkLbKCQ7tyGhgpEIIIVyl3glVYGAgt99+Oz/99BP79+9n0qRJvPPOOyQnJzNq1CgWL16MxWJxZ6zCS5RVWQmpGZ0C0IdpF4wbBCf3ByCuon6F6QcLK0hS8vHF5kguw9rU/2Z+gVQlDQcgPm85lWZbg+MVQgjReBfVKT0lJYWnnnqK7Oxsli1bRmRkJJMnT6ZNmwb8IBAtVlmVhbCa+infQPD11zYgF2t7iaMwPdl+hOMniy54/METFaQoeY6NyI5nrt93ASG9HEvUXMFm1h480bBghRBCuESjlp5RFAVfX18URUFVVRmhEvVSVmUl3Auf8KsRGNmOk4oBX8VOzq4LN/g8fLKC5JqE6lzLzZyH0mEYNnzorDvKlm3bGny+EEKIxruohOrIkSM89dRTpKSkcPXVV3Ps2DHeeust8vLyXB2f8EKlVRbCanpQeWFChaKQF9INgPLs8xem2+0qecVVtNfVjFC1b/j9glpRGp3quPX+5dI1XQghNFDvhMpsNvPJJ58wYsQIkpOTeeutt7jlllvYt28f6enp3HrrrQQEBLgzVuElyqqshHrxCBWApXVvAAKOn3/E6ES5CbPNfnqEKrLhI1QAwT2uASDNtJ6DJ6R9ghBCNLV6J1SxsbFMnjyZsLAwvvnmGw4fPszf//53UlJS3Bmf8EJlVdbTNVQB3lWQXiM0xVGYHm/cc94Ro9ziSkClg656gePIDhd1P/+ujuWeBup2s35vzkVdQwghxMWrd0L16KOPcuTIEf73v/8xevRodLpGlV+JFsxbu6TX1vYSx1p8ieSRd/zc/aFyiysxUEYY5YBycVN+AFGdKAlog16xUrxz+cVdQwghxEWrd1Y0Y8YMoqOj6+wrLy+ntLS0zkuIC3GMUHlxDRUQEB5Nni4WgNxd5+4Pday4kkSlwLER1gb8Ai/uhoqCOWUEAK3zf8Fqs1/cdYQQQlyUBg8zZWdnc8011xAcHEx4eDgGgwGDwUBERAQGg/cscivcp6zKQije2dSztoJQR2G68dC5l6DJPVVJnHLSsRHetlH3a9X7WgAGso3tR4sbdS0hhBAN49vQE2677TZUVeXdd9+ldevWKA3smSNEWZWVTnj3CBWANa4PlKQTdGL7OY/JLa4i0ZlQNa6Pm0/SYCyKH204Sfr2TaQmXt2o6wkhhKi/BidU27ZtY9OmTXTu3Nkd8YgWoE5Rupd1Sa/N0GEg7IWEyr2oqnrWXz5yiysZWJNQhcU37ob+QZxolUbcyXVY9/8ISEIlhBBNpcFTfv369ZP1+0SjlLaAonSAtt0GYlMVYjlJ7pFDZz0mr6TWlF9Y46b8AAK6OJahSSpeT4XJ2ujrCSGEqJ8Gj1C9/fbbTJ06ldzcXLp3746fn1+d93v2bMDCrqJFKquyEupsmxChaSzu5B8UxmHfdiTaDpO3O4O27ZLrvG+y2ig2Wojzr16eppFTfgAR3UdAxt/pr+xm44F8hl7S+CRNCCHEhTU4oSosLCQrK4s777zTua9m6RlFUbDZZHFWcX4VJithLaCGCuBE+CUkFh3GnPMbcFvd98rNAMQr1QlVY6f8AKV1D8p8DYRaT3F4+89wyW0XPEcIIUTjNTihuuuuu+jTpw+LFi2SonRxUSpMtRt7endCRXwqFH1H8MkzC9MLSqvwwUa0UuzY4YIpP3Q6SuIuI/TIN/gf+pnfJ3FCCCHco8EJ1eHDh1myZAkdOlxcR2chKky1l57x3qJ0gMhOg2AnJFVlYrPZ8fE5XbZYUGaiNafwwQ46PwiOPs+V6i+i+0g48g3dKjdRWGYiOlTvkusKIYQ4twYXpV911VVskxXtxUVSVRWb2YiPUr0ci3+ItgG5WULXfphVXyKUcrIP7KrzXmGZiVjndF8cuGj1gZBujqf7eijZbN57wCXXFEIIcX4NHqEaO3Ys06dPZ8eOHfTo0eOMovRx48a5LDjhfcw2OwF2R1NPFQXFP1jjiNzLx0/PIf8U2lv2kb9nLR0693C+V1BmIt6FT/g5hcZyPCCF1lUHObVjBfS7xHXXFkIIcVYNTqimTp0KwFNPPXXGe1KULi6kwmQjWKnuku4fAi2gBq+0VQ84vg/bkd+APzr3F5ZV1eqS3vgn/GqrbHcF7DtIaN6vwF9cem0hhBBnavAcg91uP+dLkilxIRUmK8FUAXj96FQNv3b9ADAU76yzv7DOCJVrE6roHo51/bqbtnO8tMql1xZCCHEm1xRtCFFPRrPNmVCh9+76qRrx3QYD0N56gFLj6eSmoE4NlWsTquBOl2NDR6KugG07zr30jRBCCNeoV0L1yiuvUFVV/99y33jjDcrKyi46KOG9yk3WWlN+LWOEqlVidyoIJFgxcWDnb879BaUmt035oQ/lWLBjceaS3Stde20hhBBnqFdCNX369AYlSI888giFhYUXHZTwXkazlWBMjg3/UG2DaSo6H44GdQWgZN9qAOx2lRPlplpNPV2cUAHWxMsBCM9f6/JrCyGEqKteRemqqjJs2DB8fetXw15ZWdmooIT3qqg9QtVCpvwAjK3TIHsz/vmbAMd6hordQhQljgPckFDF9Lwadr9OL+s2jp0yEm8Icvk9hBBCONQrQ5o7d26DLnrdddfRqlWriwpIeLcKk42QmhqqFjLlBxDaYTBkv0Wb8p2oqkpRhZnWyil0igo+egiOcvk9g9sPxowfrZVilm//jfgrhrj8HkIIIRzcklAJcS5Gs5UgZ0LVckao2vYYAisgiWPkHsvllDWIOGqe8It3T/sIv0COhfUiqfQ3yvemgyRUQgjhNvKUn2hS5SYbIUrNU34tpIYKCAiL4qiPo3lnzo5VFFVYTheku2G6r4Y9yVFHZTi+zm33EEIIIQmVaGJ1R6hazpQfQGF4TwAsh9ZzqsJ8ugeVq5/wqyW210gAett2cORkudvuI4QQLZ0kVKJJ1W2b0HKm/ACUBEeDz/CTWykymt3Wg6q2oKS+VCqBGJRy9myVp/2EEMJdJKESTcpYuyi9BT3lBxDTzTH91t68l+PFFU0yQoWPH8fC+wBQmZnuvvsIIUQLJwmVaFIVLbQoHSCuQx/KCSREqSJ33+YmqaECUFIcxejRJ9ahqqpb7yWEEC1VvZ7ymzFjRr0v+M9//vOigxHer8JkPV2U3sISKsXHl5yALnSr2kJk8XbifN0/5QcQ33sUbJ5PT9tucgpLSIyJcOv9hBCiJapXQrVly5Z6XUxxx6PfwqtUmG0E07KWnqmtPDoVjmxhsG4XUUqpY2dEglvvGdC2F2VKKKGUsXbLKhJHjnPr/YQQoiWqV0L1008/uTsO0UJUmKwEKdVLz7SwGiqAoPaD4Mg7XKNbD4DNNxifgAj33lSnI8/Qj9CidEz7fwZJqIQQwuWkhko0KaPZRohzhKrl9KGqkdjLUc+kUxy1TNawtu5p6vk7vh2uAKD1yQ1SRyWEEG5Qv8X5fue3337js88+IycnB7PZXOe9L774wiWBCe9UUWUhuIX2oQIINbTmiBJPgnoMACXcvdN9Ndr0GQkb5tLTvpfs/BOkxEU3yX2FEKKlaPAI1SeffMLgwYPZs2cPX375JRaLhV27dpGenk54eLg7YhRexGyuwk+xOTZa4JQfwJHg7s4/+0YmNck99bFdKNK1Qq9YOLhZ2icIIYSrNTihevbZZ3nxxRf55ptv8Pf35+WXX2bv3r1MnDiRdu3auSNG4SXsdhWdpVa37hb2lF+Nkqg+zj/rWndtmpsqCgWRAwCwHFjVNPcUQogWpMEJVVZWFtdccw0A/v7+VFRUoCgK06dP580333R5gMJ7VFpszh5Uqm8g6Hw0jkgbfS8ffXqjTVqT3Vff6UrHLU9twG6XOiohhHClBidUBoOBsrIyANq0acPOnTsBKC4uxmg0ujY64VUqzNbT9VMtdLoPILp9H0zDnsE2/GmI691k923Tx7GuXzf1AAeOHmuy+wohREvQ4IRqyJAhrFixAoAbb7yRadOmcc8993DzzTczbNgwlwcovIfRZHMmVEoLne6rob/8AXwu+3OTPOFXwz8qieO+8fgqdg5v/rHJ7iuEEC1BgxOqf//73/zhD38AYM6cOcyYMYPjx48zYcIE3nnnHZcHWNvSpUsZMGAAgYGBGAwGxo8fX+f9lStXMnjwYEJDQ4mNjWXmzJlYrdbzXjMrK4vrr7+e6OhowsLCmDhxIsePHz/rsSaTid69e6MoClu3bnXRp2o5yk1WQlrowsjNxcloRx0VB3/RNhAhhPAyDU6oWrVqRXx8vONknY5Zs2axZMkSXnjhBQwGg8sDrPH5558zadIk7rzzTrZt20ZGRga33HKL8/1t27YxZswYRo0axZYtW/j0009ZsmQJs2bNOuc1KyoqGDFiBIqikJ6eTkZGBmazmbFjx2K32884/pFHHnF+dtFwRrONIFpuU8/mIKiLYxS5Xelv2KSOSgghXKZefahKS0sJCwtz/vl8ao5zJavVyrRp01iwYAFTpkxx7u/WrZvzz59++ik9e/bk8ccfB6BDhw784x//YOLEicydO5fQ0DObSGZkZHDo0CG2bNnijPu9997DYDCQnp7O8OHDnccuW7aM5cuX8/nnn7Ns2bILxmwymTCZTM7tC31vLUGFufYIVcvrQdUctO0zAn6Czhxmd9ZBunVsr3VIQgjhFeo1QmUwGCgoKAAgIiICg8Fwxqtmvzts3ryZ3NxcdDodffr0IS4ujtGjRzsL4sGRwAQEBNQ5LzAwkKqqKjZt2nTW65pMJhRFQa/XO/cFBASg0+lYvXq1c9/x48e55557+OCDDwgKCqpXzPPmzSM8PNz5SkhomgaOzZnRdPopP5ny04ZvWGuO+iUDkLt1ucbRCCGE96hXQpWenk6rVq0Ax7p+6enpZ7xq9rvDwYMHAXjiiSd49NFH+fbbbzEYDAwdOpSioiIARo4cyZo1a1i0aBE2m43c3FyeeuopAPLy8s563YEDBxIcHMzMmTMxGo1UVFTw8MMPY7PZnOeoqsrkyZOZOnUqffv2rXfMs2fPpqSkxPk6cuRIY74Cr1BhshIiT/lp7lTsYAB8D/+qcSRCCOE96pVQXXHFFfj6OmYHk5OTGTJkCFdccUWd15AhQ0hOTm7QzWfNmoWiKOd97d2711nPNGfOHCZMmEBaWhoLFy5EURQWL14MwIgRI1iwYAFTp05Fr9fTqVMnxowZ4/iQurN/zOjoaBYvXsw333xDSEgI4eHhFBcXk5qa6jznX//6F2VlZcyePbtBn02v1xMWFlbn1dJVmK0ES1G65sK7OeqoUso2YbGdWSsohBCi4Rq8ll9ycjJ5eXnExMTU2V9UVERycjI2m63e13rooYeYPHnyeY9JSUlxjhbVrpnS6/WkpKSQk5Pj3DdjxgymT59OXl4eBoOBQ4cOMXv2bFJSUs55/REjRpCVlcWJEyfw9fUlIiKC2NhY5znp6emsXbu2zrQgQN++fbn11lt577336v15W7o6RemSUGmmbe/hWH/Qkajks33vbnpe0v3CJwkhhDivBidUqqqinKV3Tnl5+Rk1TBcSHR1NdPSFF2lNS0tDr9eTmZnJZZddBoDFYuHQoUMkJibWOVZRFOeTeIsWLSIhIYHU1NQL3iMqKgpwJFAFBQWMGzcOgFdeeYW///3vzuOOHTvGyJEj+fTTTxkwYED9PqgAHG0TYqgeoZIpP83oAsM5rO9MsmkPBduWgyRUQgjRaPVOqGbMmAE4EpbHHnusTnG2zWZj/fr19O7d2+UBguPJwalTpzJ37lwSEhJITExkwYIFgKO5aI0FCxYwatQodDodX3zxBfPnz+ezzz7Dx8exxElubi7Dhg3j/fffp3///gAsXLiQrl27Eh0dzdq1a5k2bRrTp0+nc+fOAGesTxgS4kgE2rdvT9u2bd3yeb2V0WQlWJGi9OagrM2lcHAPAUdXAzO0DkcIITxevROqLVu2AI4Rqh07duDv7+98z9/fn169evHwww+7PsJqCxYswNfXl0mTJlFZWcmAAQNIT0+v82ThsmXLeOaZZzCZTPTq1Yuvv/6a0aNPr5tmsVjIzMyss0ROZmYms2fPpqioiKSkJObMmcP06dPd9jlasgrz6U7pklBpK7L71XDwbTpVbKbKbCXAv8GD1UIIIWpRVFVtUHe/O++8k5dfflmKrBuotLSU8PBwSkpKWux3d9+Hm5iybyp9dfvgpg+h61itQ2qxVLMR87Pt0GNhy7gV9Entr3VIQgjRLNX353eDO6UvXLiwxSYEonEcI1TS2LM5UPyDOBTUA4CindKPSgghGqvB4/wVFRXMnz+flStXUlBQcMYSLTU9o4T4PaPJWmvK78zO9aJpmdpeCvs2E5y7RutQxFkcLCxn6fY8TFY7V3aJJi2xldYhCSHOo8EJ1d13380vv/zCpEmTiIuLO+sTf0KcTXmdonQZodJadK8RsO9fdKnairHKRFCA/sIniSbx+aajzP5iB+bqPmH//ukA/5fWlmev74G/b4MnFoQQTaDBCdWyZctYunQpl156qTviEV7MaLZJp/RmJLbLICoIJEKpYPPWNaQOvFLrkASw7uBJHvl8Oza7yqCUSKJD9Xy7/Rj/23SU0koLb9yWhk4nv8gK0dw0+Fcdg8HgXIZGiIYwmarQKxbHhjzlpznFx49DIX0AKNn9o8bRCACLzc6jX+3EZlcZ3zuej2/twCt9jvHlaCtBvnaW7z7OSyv3ax2mEOIsGpxQPf300zz++ON1Wg8IUR+qufz0hiRUzYI18XIAwvLWahyJAPhycy4HCsppFezPs8nbUF7qAZ/cQq/02/kt9K8M0u3i3+n72X60WOtQhRC/0+ApvxdeeIGsrCxat25NUlISfn5+dd7fvHmzy4IT3sNmV/GxVIIPqD7+KL7+Fz5JuF1c75Gw6zm6mndSWlFBWLDUtmlFVVX+u+YQAM91OUDQslmONyI7QFUJQRV5fOD/HH80/4VH/hfK0j9fjo9M/QnRbDQ4oRo/frwbwhDezigLIzdLMe37cIpwDEoJv236mb5DrtE6pBZr29ESdueVEudbxrCs5xw7+98Lo58DixG+ug/f3V/zqv+/GHs8hs83JzOxb4K2QQshnBqcUM2dO9cdcQgvV2GqVZAuT/g1HzodR8LTMJSkU74nHSSh0sx3OxyLwD8d/RO6U6egdQ8Y+QwoiuPvzIR3oWoCgQd/5jW/l7l7eSLjesUT4OejceRCCLiIGiqA4uJi3n77beeSLeCY6svNzXVpcMJ7VJitBFW3TFD00oOqWUm5AoBWBVJHpRVVVflhVz5hVDC0bIlj57DHwKdWSYWPL9zwNmpwNJ10uYyt+JwP1x3WJmAhxBkanFBt376dTp068dxzz/H8889TXFwMwBdffMHs2bNdHZ/wEkaTjRBkyq85SkxzrHfZxbqX4ydPahxNy7S/oJzDJ42M89uAr9UI0V2g44gzDwyJRhn5LAAP+n7J0l/XY7bazzxOCNHkGpxQzZgxg8mTJ7N//34CAgKc+8eMGcOqVatcGpzwHuV1uqTLlF9zEt6mEwW6aPwVG/s3yDI0Wlhz4AQAtwWtc+zodbNjqu9setyIPfEyAhQLNxsX8fVWmRkQojlocEK1ceNG7r333jP2t2nThvz8fJcEJbyPoyhdmno2S4pCfuQgAKz7VmocTMu0PruIGE7RxbTDsaPH/537YEVBd/WTAEzwWcXSn1ZhtzdojXshhBs0OKHS6/WUlpaesX/fvn1ER0e7JCjhfRwLI9eMUElC1dzouzqmlxJOrUNV5YdzU1JVlQ3ZRQzx2e7YEZ8K4W3Pf1Lbvlg7jMRHUbm+9ENWV49wCSG00+CEaty4cTz11FNYLI6O14qikJOTw8yZM5kwYYLLAxTeocIkbROas6R+o7GpCu05woED+7QOp0XJKiznZIWZoT7Vo1Ptr6rXeb7D5gBwrW4t3/263l3hCSHqqcEJ1QsvvEB5eTkxMTFUVlZyxRVX0KFDB0JDQ3nmmWfcEaPwAhUmK8GYHBsy5dfs6EOjOKTvDMCxTd9pHE3LsvVICQp2hvjucuzoMKx+J8b1wtj2cnwUlU7ZH5JbXOm+IIUQF9TgPlTh4eGsWLGCjIwMtm3bRnl5OampqQwfPtwd8QkvYTTbiHE+5SdF6c1RSfzlcGgv/jk/A9O1DqfF2HWshI5KLmH2EvALhrb96n1u0NC/wIe/cpNPOu9k7ODP1/R3X6BCiPNq8AjV+++/j8lk4tJLL+VPf/oTjzzyCMOHD8dsNvP++++7I0bhBSrMVkJqitL9pQ9VcxTVu7p9QsUmqkxmjaNpOXblltJbd8Cx0Sa1bu+pC2k/jNKwTgQrJtTf3sNktbknSCHEBTU4obrzzjspKSk5Y39ZWRl33nmnS4IS3qfCZCUIecqvOUvofjnlBGFQysjculrrcFoEu11ld14pvZWahCqtYRdQFIKu+DMA19t+YOVuedJaCK00OKFSVRXlLP1Rjh49Snh4uEuCEt7HaLKdbpsgU37NkuLrT3ZoKgDFO77XOJqWIafISLnJSqpPlmNHA6b7avj2mECVTyjtdIXsWf2VawMUQtRbvWuo+vTpg6IoKIrCsGHD8PU9farNZiM7O5tRo0a5JUjh+SrM1lqd0mXKr7myJl8F21fTKj9D61BahN15pQRRRUflqGNH274Nv4h/EKZLJhKw/R26531BQekUYsICLnyeEMKl6p1QjR8/HoCtW7cycuRIQkJOT9v4+/uTlJQkbRPEOVWYbDLl5wES+l0D25+ii2UPRSdP0CoySuuQvFpWQTmdlSP4YIfQOAiNvajrhF9+L2x/h2G6zSxau5lJIwe7OFIhxIXUO6GaO3cuAElJSdx00011lp0R4kLqFqXLlF9zFZXQhVxdHG3seezfsIwBoydpHZJXyyosp5OuenQqpuvFXyi6MwWt+hJT9Bu2Te+jjhh01tIMIYT7NLiG6o477iAgIIBNmzbx4Ycf8uGHH7JlyxZ3xCa8iLH2CJU09mzW8qKql6HZL8vQuNvBExV0UXIcGzHdGnWt0Mv+CMAI0w9sOSyLXAvR1BqcUBUUFHDVVVfRr18//vznP/PnP/+ZtLQ0hg0bRmFhoTtiFF6gospMsFLd2FMSqmYtsMvVALQrWivL0LiRqqocLKygk+KCESogsMd1GHWhxCtFbP5liQsiFEI0RIMTqgcffJCysjJ27dpFUVERRUVF7Ny5k9LSUv785z+7I0bhDczlp/8sNVTNWvv+o7GoPiSQz4HMnVqH47UKykyUm6x01h1x7GhkQoVfACUdrgMgNvtzqizSk0qIptTghOr777/ntddeo2vX03/5u3XrxquvvsqyZctcGpzwIpYKAFTFB3yl/q45CwgxkB3gmH7K3bRU42i8V1ZhOZGUEKVULzYf3aXR12x9uaMX4DB1A6t3ZjX6ekKI+mtwQmW32/HzO7OTr5+fH3a73SVBCe9isdnxtxkdG/7BIMWyzV5Fu6EAhOSkaxuIFztYWEF75ZhjI6KdSx7W0LVN40RAEoGKmbw1nzT6ekKI+mtwQnXVVVcxbdo0jh075tyXm5vL9OnTGTasnot6ihbFaLIRLC0TPEpc33EAdKvaSklpmcbReKecIiOJuuOOjVbtXXNRRcHW8xYAuh3/lpJKi2uuK4S4oAYnVP/+978pLS0lKSmJ9u3b0759e5KTkyktLeVf//qXO2IUHq7CbHV2SVekqadHiO3Uj0IlkiDFxN5132kdjlfKPVVJolKTUKW47Loxl03Cho40XSar169z2XWFEOdX7z5UNRISEti8eTM//vgje/fuBaBr164MHz7c5cEJ71BhshLs7JIuPag8gqJwNOoyogu/xrz3Bxhxk9YReZ2jp4yMdiZUyS67rhIWz9FWg0gsysD028cw9HKXXVsIcW4NTqgAFEXh6quv5uqrr3Z1PMILVZhlys8TBXQbDb98TXLRauw2OzqfBg9oi/PILa6knRtGqACC+98O32cwoOwH8ouNxEYEufT6QogzXdS/kCtXruTaa691Tvlde+21/Pjjj66OTXgJo8laa2FkmfLzFCkDxmBWfWnLcQ7slea9rlRptnGi3ERSTUJlcN0IFUBU2ngqlCDaKCfZ8Mu3Lr22EOLsGpxQvfbaa4waNYrQ0FCmTZvGtGnTCAsLY8yYMbz66qvuiFF4uHKT9fQIlUz5eQx9UDj7g3oDUPCbNIp0pdxiIxGUE6ZUP/1qSHLtDfwCyIsf4fjj7s9de20hxFk1OKF69tlnefHFF1m0aJGzU/rHH3/Miy++yLPPPuuOGIWHM5pthCjVNVQy5edRKpMctZHhR6V9gisdrV2QHhoH/q6fkou59HYABlet4kDeCZdfXwhRV4MTquLiYkaNGnXG/hEjRlBSUuKSoIR3qTBbCaJm2RkZofIkCQMcnbe7mHdxqkh+KLvK0VOVtFMKHBuuHp2qFtZlKKd8IglXjOz8WUaphHC3BidU48aN48svvzxj/9dff821117rkqCEdzGabIQ4n/KTGipP0jqpG0d1bfBTbOxfK9N+rpJbXEmcUr2AcXiCe26i8+FksqOfWPj+L2VdRiHcrMFP+XXr1o1nnnmGn3/+mUGDHKvSr1u3joyMDB566CFeeeUV57Gytp8AxwhVtCJP+XmqYzGX0zb/E+z7lsM1d2kdjlfIPVVJH6XIsRHexm33aTvkDjiwkMG239h64DB9Oia57V5CtHQNTqjeeecdDAYDu3fvZvfu3c79ERERvPPOO85tRVEkoRKAo4ZKitI9V1jPayH/EzqUrMFiteLne1HdVkQtx0uriK8ZoQpzX0IVkNCbfP8kYs2HOPTrJ/TpOMtt9xKipWvwv4zZ2dnuiEN4sQqTlRBnQiUjVJ6mY78RlC8PJIoStm1eRa/+V2kdkscrKDOdnvJzY0KFomDscgNs/ydtcr7BYnsEP+knJoRbyN8s4XaVZhtBzik/qaHyND5+eg6G9QegZIvUUblCQWkVcU0w5QfQ7oo7AOir7mLDtp1uvZcQLZkkVMLtKszWWkXpMuXnkTqPAaBNfroUNzdSucmKxVxFtFL9VHRYW7fezzcyiZzgnugUlcK1H7v1XkK0ZJJQCbczmm21OqXLlJ8n6nDZBKyqjvbqYbL3yShHYxwvraJ1zeiUbwAEtXL/TXtNBKBzwTKMZqv77ydECyQJlXA7o9lGEDLl58mCwqPZF9gLgGPr/6dxNJ6toNREPNUJVVg8KIrb75lw6S1Y8aGrcoh16zLcfj8hWiJJqITbVVRZ5Ck/L2BMGQmAIWeFxpF4toKyqqYpSK9FCY7ksGEwAMZNnzTJPYVoaS4qofr111+57bbbGDRoELm5uQB88MEHrF692qXBCe9gNxvxUarrbmTKz2MlDb4RgC6W3RTkH9U4Gs91vE5Bunvrp2oL7nszAL2Ll1NUXtVk9xWipWhwQvX5558zcuRIAgMD2bJlCyaTY0mRkpISWctPnJ254vSf/Vy/ZploGlFtO5Dl2x4fRSUrQ5YyuVgFpSZilFOOjdDYJrtvbL/rMSqBtFVOsOHXZU12XyFaigYnVH//+9954403eOutt/Dz83Puv/TSS9m8ebNLgxPeQWcpB8DuFww6mWX2ZCfaOBZLDjggP5Av1vEy0+kn/EJaN92N/YM42trx30/Z/lnT3VeIFqLBP90yMzMZMmTIGfvDw8MpLi52RUzCi9jtKorF6NiQ+imP13rABAC6Gn+jokwWQ78Yx0uriFaKHRvB0U1676jBkwDob1zFkcLiJr23EN6uwQlVbGwsBw4cOGP/6tWrSUlJcUlQwntUWWs94ScJlcdL7NKPY0prAhQLe1Z/rXU4HulEmYkoNBihAlp1H84pXSsMSjk7fl7cpPcWwts1OKG65557mDZtGuvXr0dRFI4dO8ZHH33Eww8/zH333eeOGIUHqzDZCFIcdXaKv9RPeTpFp+NozJUA2PZ8o3E0nulkhbnWlF9M095c58PxxLEAhGZ+Lk1ahXChBq/lN2vWLOx2O8OGDcNoNDJkyBD0ej0PP/wwDz74oDtiFB7MaLYSRHVC5ScjVN7AkHY9fPcJXUoyqKqqIiAgQOuQPIbFZqeqsoKwgOpp8KZOqIA2Q++E7Pfob9nIvsNH6JzUrsljEMIbNXiESlEU5syZQ1FRETt37mTdunUUFhby9NNPuyM+4eGMZhuB1QkVMkLlFTqkDeMUYYQrFezM+FbrcDzKKaOZSEoBUH38ISCiyWMITezDUf9k9IqVgz9/2OT3F8JbXfQjV/7+/nTr1o3+/fsTEiK9hcTZGc1W55QfMkLlFRQfPw5GXwWAdfsXGkfjWYoqzM6CdCU4pkm6pJ9Neaf/AyD+8NfY7TLtJ4QrNDihqqio4LHHHmPw4MF06NCBlJSUOi8haqsw2QiUonSvE5pa3eSz+BdMJmkSWV9F5WainPVTTfuEX21JV96BXVXope5l+46tmsUhhDdpcA3V3XffzS+//MKkSZOIi4tD0eg3LOEZjGYbwTLl53U69BtJ0Q9htFJK2bpmKb2vnKB1SB6hbkF60z7hV1tAZAL7QtLoVPEbhWs+gF59NItFCG/R4IRq2bJlLF26lEsvvdQd8QgvI1N+3knn60dW1DBanfgS07bPQRKqeimqMJ9umdDEPajO0OsmWPMbnY4vxWxZgL+fj7bxCOHhGjzlZzAYaNWqlTtiuaClS5cyYMAAAgMDMRgMjB8/vs77K1euZPDgwYSGhhIbG8vMmTOxWq3nvWZWVhbXX3890dHRhIWFMXHiRI4fP97ge4uzqzDXnvKTESpvEtLHkUR1Lv4Fc/USVOL8TtaqodJyhAqg/ZCbqURPIvlsXfejprEI4Q0anFA9/fTTPP744xiNRnfEc06ff/45kyZN4s4772Tbtm1kZGRwyy23ON/ftm0bY8aMYdSoUWzZsoVPP/2UJUuWMGvWrHNes6KighEjRqAoCunp6WRkZGA2mxk7dix2u73e9xbnVlmrbYKs4+ddOg0YxUnCiaCcvWvlab/6KKow1aqhavqWCbX5BIRyoNVQAKp++0jTWITwBg2e8nvhhRfIysqidevWJCUl1VnPD3DLen5Wq5Vp06axYMECpkyZ4tzfrVs3558//fRTevbsyeOPPw5Ahw4d+Mc//sHEiROZO3cuoaGhZ1w3IyODQ4cOsWXLFsLCwgB47733MBgMpKenM3z48Hrd+2xMJpNz4WiA0tLSi/vwHq7CZCO+ZspPitK9io+vHwciryTy5FdUbfschsq034UUVZiJUqr/LQiO0jYYIKT/bfD9D/QsXkm50UhIkPzSI8TFanBCpcVU1+bNm8nNzUWn09GnTx/y8/Pp3bs3CxYsoHv37oAjgfl9g8HAwECqqqrYtGkTQ4cOPeO6JpMJRVHQ6/XOfQEBAeh0OlavXs3w4cPrde+zmTdvHk8++aRrvgAPVruxpyRU3ie4z//Bj1/R6ZRj2s+/1t8lcaaT5WYicCwWTlCktsEASf1Gc/IHA5GcYs1P/2PwNbdrHZIQHqvBCdXcuXPdEcd5HTx4EIAnnniCf/7znyQlJfHCCy8wdOhQ9u3bR6tWrRg5ciQvvfQSixYtYuLEieTn5/PUU08BkJeXd9brDhw4kODgYGbOnMmzzz6LqqrMmjULm83mPKc+9z6b2bNnM2PGDOd2aWkpCQkJLvtOPIXRbCNYqa6hkik/r9N14GhO/hhOJCVszviG1Kv+T+uQmrWiCjOtlDLHRjNIqBQfPw7HjSHy2Ef47vwUJKES4qJddGNPV5g1axaKopz3tXfvXmc905w5c5gwYQJpaWksXLgQRVFYvNixwOeIESNYsGABU6dORa/X06lTJ8aMGQOATnf2jxkdHc3ixYv55ptvCAkJITw8nOLiYlJTU53n1OfeZ6PX6wkLC6vzaonqdkqXESpv4+Pry8HoYQCYt8piuxdSVG46PUIVqM3DPb8XN2QyAL2M68jLP/svn0KIC2vwCJXNZuPFF1/ks88+IycnB7PZXOf9oqKiel/roYceYvLkyec9JiUlxTlaVLtuSa/Xk5KSQk5OjnPfjBkzmD59Onl5eRgMBg4dOsTs2bPP23B0xIgRZGVlceLECXx9fYmIiCA2NtZ5TlxcXL3uLc6uwiRF6d7O0P9mWPoF3Ut+oaK8jOCQM+sVBdjsKpbKEvz0NseOoGaSUHXuR45vEu2sh9i78n3ibp2pdUhCeKQGj1A9+eST/POf/+Smm26ipKSEGTNmcMMNN6DT6XjiiScadK3o6Gi6dOly3pe/vz9paWno9XoyMzOd51osFg4dOkRiYmKdayqKQnx8PIGBgSxatIiEhARSU1MvGEtUVBQRERGkp6dTUFDAuHHjABp0b3GmSouNQEUae3qz9mnDyFeiCVEq2fXzp1qH02yVVloIqx6dUn0DwS9Q44iqKQrFHR0PFERlfYGqylI0QlyMBidUH330EW+99RYPPfQQvr6+3Hzzzbz99ts8/vjjrFu3zh0xEhYWxtSpU5k7dy7Lly8nMzOT++67D4Abb7zRedyCBQvYsWMHu3bt4umnn2b+/Pm88sor+Pg4Gtbl5ubSpUsXNmzY4Dxn4cKFrFu3jqysLD788ENuvPFGpk+fTufOnRt0b3F2lWZbrREqmfLzRorOh8NtrgHAb9f/NI6m+SqptNAKR/2U0gzqp2rrMPwurKqOHva97Ny2UetwhPBIDZ7yy8/Pp0ePHgCEhIRQUuLoqXLttdfy2GOPuTa6WhYsWICvry+TJk2isrKSAQMGkJ6ejsFgcB6zbNkynnnmGUwmE7169eLrr79m9OjRzvctFguZmZl1emhlZmYye/ZsioqKSEpKYs6cOUyfPr3B9xZnV2mxyVN+LUDsZXfAJ/+lu3EDRYV5tIqO0zqkZqek0oJBqXnCr3n92xEU2ZZdYQO5pGwNJ1e/C737ax2SEB6nwQlV27ZtycvLo127drRv357ly5eTmprKxo0b67QfcDU/Pz+ef/55nn/++XMek56eft5rJCUlnTGcPX/+fObPn9/oe4uzM5vN6BWLY0MSKq+V2CWVLJ8U2tsOsu+nDxk48a9ah9TsFFdaiKgeoWouBem1+fW9A35aQ/fC7zBWVhIU2EymJIXwEA2e8rv++utZuXIlAA8++CCPPfYYHTt25Pbbb+euu+5yeYDCsymWWh31pSjdqxUmXwdAxP4vNI6keSqptNRqmdD8EqqOl95AEeFEKSVsTZcnNoVoqAaPUNUezbnppptITExkzZo1dOzYkbFjx7o0OOEFqhMqVdGh+ErTR2+WfOXt2Pe/RBfLbvIOZxKX2FnrkJqVkkoLEUrzaer5e4qvP4fajKNV7gf47/hIelIJ0UANGqGyWCzcddddZGdnO/cNHDiQGTNmSDIlzsrHWp1Q+QaBomgcjXCn1m1S2K3vBcCh9P9qG0wzVGI0Y2hmPah+r82wewDoXbmB3CPZFzhaCFFbgxIqPz8/Pv/8c3fFIryMqqooNQmV1E+1CFVdHY/fx+UsQa21wLioKUpvvlN+AK1TerHPvxu+ip2DK9/ROhwhPEqDa6jGjx/PV1995YZQhLcx2+wEqtKDqiXpNuw2qlQ/ktSj7P7tZ63DaVZKKi0YmnFReo2KbjcD0O7wF9htkhQLUV8NrqHq2LEjTz31FBkZGaSlpREcXHfk4c9//rPLghOercpsd67jp5MRqhYhKKwVmyOGklqygrK1C6H/VVqH1GwUG2u3TWh+NVQ1ug6/ncqtfydRzWXruuX0vnSU1iEJ4REanFC98847REREsGnTJjZt2lTnPUVRJKESTpWW0+v4KZJQtRiBAybD8hVcUrQCY0UpQcEtcx3L36tblN68+lDVFhASwZZWw+hT9B0V6/4LklAJUS8NTqhqF6QLcT5VtZt6SsuEFqPLwNEcW9GaeI6z4ceP6H/dfVqH1CzU7pTenKf8ACIvvxu+/o4+pekUFhYQHR2jdUhCNHsNrqGqTVVVWfdJnFOlxUaQIl3SWxpF50NOu+sBCNq1SONomo9KYwWBSvVi8oERmsZyIe16X8URn3YEKSb2/PCW1uEI4REuKqF655136N69OwEBAQQEBNC9e3fefvttV8cmPFztKT8ZoWpZkobdjV1V6G7exrHsPVqH0yzYqxzLdKkooA/XOJoLUBROdr0NgISsRVKcLkQ9NDihevzxx5k2bRpjx45l8eLFLF68mLFjxzJ9+nQef/xxd8QoPFRVnYRKlrFoSWLbdWRnQCoAOSvf1Dga7Zmtdvws1dN9+lDQNWpyoEl0GflHKtGTrB5h+9rvtQ5HiGavwX+rX3/9dd566y3mzZvHuHHjGDduHPPmzePNN9/ktddec0eMwkNVWWwE1ExxyAhVi2PqcQsAyUe/xmqxaByNtkoqLYRRvQxTQDMfnaoWEGpgd+QIAMzrZNpPiAtpcEJlsVjo27fvGfvT0tKwWq0uCUp4h0qznUBqEqoAbYMRTa7HsJspIZjWnGTHqq+0DkdTJZUWQhVHQqUERGgbTANEX+l4oKB32S8U5B/ROBohmrcGJ1STJk3i9ddfP2P/m2++ya233uqSoIR3qLLYCKhJqHxlyq+lCQgMZl/MGADsvy3UOBpteeIIFUC77pdywK8T/oqNA9+/oXU4QjRr9WqbMGPGDOefFUXh7bffZvny5QwcOBCA9evXk5OTw+23y2Ka4rRKi+30U01SQ9UixQ77EyxaTG/jGvJyDhDXroPWIWmipNJMmFLh2PCghAqg5JLbYeujJB3+DKvlCXz9/LQOSYhmqV4jVFu2bHG+duzYQVpaGtHR0WRlZZGVlUVUVBSpqans2rXL3fEKD+IoSpeEqiVL6JzKbv+e+Cgqh35ouTWWZVVWjxyhArhkxGRKCSZeLWDrz19oHY4QzVa9Rqh++uknd8chvFCdKT9JqFosU+/JsGEGHXK/wGKeh5+/XuuQmlxZldVjR6gCgkLZGXstffM/RfntHbj6Jq1DEqJZav7P7gqPVVmnhkqK0luq7sNv5QQRRHOKnSs/1jocTZSbPHeECqDdyAcB6FO1gQN7t2kcjRDNU4MTqqqqKhYsWMCYMWPo27cvqampdV5C1Kg026WGSuDnH8D+No7O6f5bW2ZxelmVhTDFcxOqmOQe7AwegE5ROb7iZa3DEaJZavBaflOmTGH58uX83//9H/3790dRFHfEJbxAlVWm/IRD4og/YXv3v1xi2kbOvq2069Rb65CaVHmVlTA8c8qvhv+l98Py9fQ+8S3FJwuJiIzWOiQhmpUGJ1Tffvst3333HZdeeqk74hFepMpsQy9tEwQQn9iJLcED6WNcS+6Kf9OuU8taqqrMZPXoESqAjgPHcnhlOxJtOaz57jUGT5qrdUhCNCsNnvJr06YNoaGh7ohFeJm6bROkhqql8x/4RwC6F3xLSXGRxtE0LU9+yq+GotNR2O0uAJIOftjiu98L8XsNTqheeOEFZs6cyeHDh90Rj/AidZ/yk6VnWrpul13HEV0bQpVKdi1tWS0Uyj34Kb/auo++h1OEEq8WsH3lIq3DEaJZaXBC1bdvX6qqqkhJSSE0NJRWrVrVeQlRQ57yE7UpOh/yuzpGOBIPvN+iRjg8/Sm/GgFBIWS2mQCAftN/NI5GiOalwTVUN998M7m5uTz77LO0bt1aitLFOVWapVO6qKvHNfdSvOtF2qjH2Zy+iNSRLWN1hcpK4+m/CwFh2gbTSB3G/AXLmx9wiWUnuzetolvaEK1DEqJZaHBCtWbNGtauXUuvXr3cEY/wIqql8vSGJFQCR5PILW3+j0G5/yXwtzeghSRUmEpP/1nv2QlVVJtktkRcRZ+SFZSlvwiSUAkBXMSUX5cuXaisrLzwgaLFs9dOqOQpP1Gt/ZjpmFUfulp2cWDrKq3DaRJKdUJl9w8FnY/G0TRe5MiHAehb/hOH9suSY0LARSRU8+fP56GHHuLnn3/m5MmTlJaW1nkJUUOpTqhUxRd8GjwYKrxUTJsktoVfBUBxuvc3iTRZbQTayh0bHlw/VVu7bgPZGdgPH0Ulb9k/tA5HiGahwQnVqFGjWLt2LcOGDSMmJgaDwYDBYCAiIgKDweCOGIWHqpnys8t0n/gdw7C/ANCr5CeOHd6vbTBuVmGyOXtQKYHekVAB+A2ZAUCfk0spzMvROBohtNfgYQNZKFnUl2KpAj/kCT9xhg69LmP3d73oZtrGoW//Qfz9b2kdktuUVVkIrX7CT9F7T0LVeeBo9qV3ppMlky3fvED0H71/tFGI82lwQnXFFVe4Iw7hZWx2FV97lWNDRqjEWaiXTYeVk+ld8DUnC54gMqaN1iG5RVmVlRClup5QH6JtMK6kKFT0+zOsuZ9Ljn1GWclcQsOldY5ouRo85Qfw66+/cttttzF48GByc3MB+OCDD1i9erVLgxOey2S1EVD9mLgiCZU4i26XXscB3w4EKSb2LXle63DcptxkJYTqhMrfixIqoNewmzmsa0sYRnZ8/ZLW4QihqQYnVJ9//jkjR44kMDCQzZs3YzKZACgpKeHZZ591eYDCM5ksdmdTT0moxNkoOh1l/f4MwCVHP6G81DuXoymrshJM9Wit3ruW7dL5+FDYcyoAHQ++R0VFucYRCaGdBidUf//733njjTd466238PPzc+6/9NJL2bx5s0uDE57LZJWESlxYr+G3OUc4dn/9otbhuEW5yUKI4p0JFUDvMfdwXIkimmK2fCV1VKLlanBClZmZyZAhZzZyCw8Pp7i42BUxCS9gstZex08SKnF2Oh8f8nvcB0D7rPeoMnrfCEd5lZWQmmVnvGzKD8DXP4Cj3R3/DTvvf4tKGaUSLVSDE6rY2FgOHDhwxv7Vq1eTkpLikqCE56uy2E8vtSFNPcV59BlzD3lEE0kJW5b8S+twXK60ykqwF49QAfQc+0D1KNUptkotlWihGpxQ3XPPPUybNo3169ejKArHjh3jo48+4uGHH+a+++5zR4zCA8kIlagvf72eo93uASBl75tUVVZoHJFrOYrSaxIq7xuhAvDzDyDnEse//x33veWVI41CXEiDE6pZs2Zxyy23MGzYMMrLyxkyZAh333039957Lw8++KA7YhQeqHYNFX7Sh0qcX69xD3KcSFpTxJYvvauWyjHl551P+dXWa+wD5BFNFMVsk1Eq0QI1OKFSFIU5c+ZQVFTEzp07WbduHYWFhTz99NPuiE94KJPFToDieAJUpvzEhfgHBJHT/U+AY4SjsqJM44hcp8JsJdjZh8o7p/wA/PUBHK6upWqf+RZGL/pvKER9XFQfKgB/f3+6detG//79CQnx3t+6xMVxTPlZHBsy5Sfqofe4BzimtCaKYrZ/4T19qYwmm9e2Tfi91LEPcEyJIYpiNn/+gtbhCNGk6t0p/a677qrXce++++5FByO8R90pP0moxIX5+QdwtMeDxG9/lM5Z72As+wtBoZ6/PmiF2Uqo4v1TfuCohzve60Hitz7GJQffpvjUA0QYorQOS4gmUe8Rqv/+97/89NNPFBcXc+rUqXO+hADHCFUgNVN+UkMl6qfP2HvJUeKJoIztnz+ndTguUWm2EYwXLj1zDr2uvY8cXVsMlLFr8d+1DkeIJlPvEar77ruPRYsWkZ2dzZ133sltt91Gq1aybpM4O5PFTnBN2wS/IG2DER7Dz8+f46nTabfpr3TLfo9TJ6ZjiGqtdViNUmkyE1xTT6gP0zaYJqDz9ePUoNm0y7if1NyPKMidTkybRK3DEsLt6j1C9eqrr5KXl8cjjzzCN998Q0JCAhMnTuSHH35AVVV3xig8kGPKr6aGSkaoRP2ljZlCtk8SYYqRvZ89rnU4jaaaa7UQ8PIpvxo9h93CXr9uBCpmDn3+qNbhCNEkGlSUrtfrufnmm1mxYgW7d+/mkksu4U9/+hNJSUmUl0vfEXGaoyhdnvITDafz8aFiyGMApB3/H7kH92ocUSOZHH21VJ0v+Oo1DqZpKDod6vAnAEg9+S1H9m3VNB4hmsJFP+Wn0+lQFAVVVbHZbK6MSXgBR9sEKUoXF6f7kAns1PfBX7GS/+VsrcNpFJ3F0T7A7hcCiqJxNE2n64CRbAkchK9ip/CrOVqHI4TbNSihMplMLFq0iKuvvppOnTqxY8cO/v3vf5OTkyOtE0Qd8pSfaBRFIeCaZ7GrCmll6RzY/IvWEV0Uu13Fx1Ld+d3LWyacTavrnsWmKqQaV7M9Y5nW4QjhVvVOqP70pz8RFxfH/Pnzufbaazly5AiLFy9mzJgx6HQXPdAlvJTjKb+atfykhko0XIeeg/ktYiQAlu//hmq3axxRw1VabIRUt0xQWsATfr+X2CWVLdHXARC08m9YLRaNIxLCfer9lN8bb7xBu3btSElJ4ZdffuGXX87+G+MXX3zhsuCE5zJZa0/5yVN+4uIkTHiGqndW0tW8k03LPyRt1O1ah9QgFebT6/gpLXCECqDjH+ZR9u/ldLAfZN1XrzDwxoe0DkkIt6j30NLtt9/OlVdeSUREBOHh4ed8CQGOGiq9rOUnGimuXQe2JUxy/Hn901RWeNbDL44u6TUjVC0zoQqPimdP5wcA6LzrJUpOFWockRDuUe8Rqv/+979uDEN4G5nyE67S8w9Pcvz5r4lXC1jzyZMMnrJA65DqrcJsdU75tYSmnufSZ8LDHJq/iCT7EdYv+hsD/vSW1iEJ4XJS/CTcwmS1o5e1/IQLBIaEkTvA0csoNWchx7I9p42C0WxzTvnh3zJHqAD8/PWUDHkKcLTCOLj7N40jEsL1JKESbmGxWPBTqttpyAiVaKQ+Iyez0783AYqFgsUztA6n3oxmG8EyQgVAr6E3sDVoML6KnYovZ2C3ed5DBkKcjyRUwi3slsrTG5JQiUZSdDqCxr+ARfWhtzGD7T8t1jqkejGarIQ41/FruSNUNeJuepFK1Z8elm1sXPKq1uEI4VKSUAn3kIRKuFhKt778FjsRgFarHsVYUaZxRBdWYbYRotRM+bXsESqA1old2NFhKgCdtj3HqcI8jSMSwnUkoRLuYXH8ELHr/ED6lAkX6XnrsxTSirZqPls//JvW4VyQ0WwluKaGqoVP+dXoc9OjZOuSMFBG1kd/0TocIVzGo37SLV26lAEDBhAYGIjBYGD8+PF13l+5ciWDBw8mNDSU2NhYZs6cidVqPe81s7KyuP7664mOjiYsLIyJEydy/PjxOsfs27eP6667jqioKMLCwrjsssv46aefXP3xvIpqrU6ofGR0SrhOcFgr8i57GoD+xz7kwLYMjSM6vwqTjRCMjg19mLbBNBN+/npMo/+JXVXoW/w9uzK+1TokIVzCYxKqzz//nEmTJnHnnXeybds2MjIyuOWWW5zvb9u2jTFjxjBq1Ci2bNnCp59+ypIlS5g1a9Y5r1lRUcGIESNQFIX09HQyMjIwm82MHTsWe62uzNdeey1Wq5X09HQ2bdpEr169uPbaa8nPz3frZ/ZkSnVCpcp0n3CxnsNvY3PIFfgqdljyIDZr8+2+bTRbZcrvLLr0G8b6qPEAhP34V4xGz+ovJsRZqR7AYrGobdq0Ud9+++1zHjN79my1b9++dfYtWbJEDQgIUEtLS896zg8//KDqdDq1pKTEua+4uFhVFEVdsWKFqqqqWlhYqALqqlWrnMeUlpaqgPOY+igpKVGBOvfyZnc9/Zqqzg1TTQsu0ToU4YUK8w6rxXPjVHVumLrug8e1DuecnlyyS933WFdVnRumqgd/0TqcZqX01Am1YG6Sqs4NUzNem6p1OEKcU31/fnvECNXmzZvJzc1Fp9PRp08f4uLiGD16NDt37nQeYzKZCAioOxoSGBhIVVUVmzZtOut1TSYTiqKg1+ud+wICAtDpdKxevRqAyMhIOnfuzPvvv09FRQVWq5X//Oc/xMTEkJaWds6YTSYTpaWldV4tiWKr/q1cuqQLN4iKbceeHjMB6LX/VQ7v36FxRGdnNFtPt02QEao6QiMiyb9iPgAD8xexe/1yjSMSonE8IqE6ePAgAE888QSPPvoo3377LQaDgaFDh1JUVATAyJEjWbNmDYsWLcJms5Gbm8tTTzkayeXlnf1JkoEDBxIcHMzMmTMxGo1UVFTw8MMPY7PZnOcoisKPP/7Ili1bCA0NJSAggH/+8598//33GAyGc8Y8b968OkvyJCQkuPIrafZ8ahIqX/35DxTiIg24/kF26vsQoFgwfnpPs1x4t6J2Y09pm3CGHlfexMaIMegUlfDvH6SyvGX94im8i6YJ1axZs1AU5byvvXv3OuuZ5syZw4QJE0hLS2PhwoUoisLixY5+NCNGjGDBggVMnToVvV5Pp06dGDNmDAC6czxlFh0dzeLFi/nmm28ICQkhPDyc4uJiUlNTneeoqsr9999PTEwMv/76Kxs2bGD8+PGMHTv2nIkawOzZsykpKXG+jhw54sqvrtnT2WrW8ZMu6cI9FJ2OmNvepJxAulr3sPHjuVqHdAZjlYUgZ6f0YG2DaaY6T/43+UTRRs1nx3vTtQ5HiIumaUL10EMPsWfPnvO+UlJSiIuLA6Bbt27Oc/V6PSkpKeTk5Dj3zZgxg+LiYnJycjhx4gTXXXcdACkpKeeMYcSIEWRlZVFQUMCJEyf44IMPyM3NdZ6Tnp7Ot99+yyeffMKll15Kamoqr732GoGBgbz33nvnvK5erycsLKzOq6Ww2uz4qSYAdJJQCTeKSejE3j6PAdD34Bsc3L5G44jqMpsrHcXzIFN+5xAWEUn+UMf6jP0L/8f2VV9rHJEQF6feiyO7Q3R0NNHR0Rc8Li0tDb1eT2ZmJpdddhngWNrk0KFDJCYm1jlWURTi4+MBWLRoEQkJCaSmpl7wHlFRUYAjgSooKGDcuHEAGI2OR55/P8ql0+nqPAkoTjNZ7egVx/SLIjVUws3Sxt7H5n3LSK34FZ+v/oip4zr0gc0jeVFNtZ5ekxGqc+o99AbW7/iaASe/onX6dIq69qdVdJzWYQnRIB5RQxUWFsbUqVOZO3cuy5cvJzMzk/vuuw+AG2+80XncggUL2LFjB7t27eLpp59m/vz5vPLKK/j4+ACQm5tLly5d2LBhg/OchQsXsm7dOrKysvjwww+58cYbmT59Op07dwZg0KBBGAwG7rjjDrZt28a+ffv461//SnZ2Ntdcc00Tfguew2S1E4Bjyk9GqIS7KTodSXe8yQkiSLQfYcu7zWjayOxIqGw+gaDz0TiY5q3nna9wRNeG1pzk8MI7UeUXVuFhPCKhAkey9Ic//IFJkybRr18/Dh8+THp6ep3C8GXLlnH55ZfTt29fli5dytdff12n+afFYiEzM9M56gSQmZnJ+PHj6dq1K0899RRz5szh+eefd74fFRXF999/T3l5OVdddRV9+/Zl9erVfP311/Tq1atJPrunMVltzoRKRqhEU2gVE0/uEMe00cDCz9i8YpHGEVUzVQBg95PRqQsJDAnHMv5tzKovfYxr2fjZc1qHJESDKKqqqloH0RKUlpYSHh5OSUmJ19dTZZ+o4PMXp/Gw32JIvQPGvaJ1SKKF2PDaPfQv+IwSgqm86xdi23XUNJ7JT/6L/6qPYg5LxH/Gdk1j8RRrP36GQfv+gUn1I+/GpSR1H6B1SKKFq+/Pb48ZoRKew2S1EaBUP+UnndJFE+o95V/s8+1EOBWUfHAbFrNJ03h8rI4RKilIr78BN81mS+BA9IoF3ed3UlZ6SuuQhKgXSaiEy5ksdvRU9wSSKT/RhPz1AQTf8gGlahCdLXvZsvAvmsVit6v42RxNPRW9TPnVl85HR+KdCymgFe3UXPa+KfVUwjNIQiVcrnZROr5SlC6aVpuULuwb6Ki/6Z/3MZuXf6hJHCarneDqHlSKNPVskFYx8RRf8yYW1Yd+5T+x/uOntQ5JiAuShEq4nMlqOz1CJZ3ShQb6jr6ddTE3AdAp42EO7Tn78lPuVGmxEVS9MLKPXqb8GqpTv6vZ3O0RAPruf4k9a77VOCIhzk8SKuFyJov9dA2VtE0QGul797/Y7d+TEKUS389upeRUYZPev9JyetkZRRKqi9L/xkfYGD4SX8VO7PL7yD9yQOuQhDgnSaiEy9Wd8pMRKqENX389cfd8Sh7RtFXzOPKfm7BZm269v0rz6REqKUq/OIpOxyV/fIcDPikYKKX0vzdRIev9iWZKEirhclWW2lN+MkIltGOIjqfihvcxqnq6V21i41sPNtm9qyw2Zw2VdEm/eEHBoQTf/gnFhNLJdoDM127GbrNpHZYQZ5CESricyVp7yk+e8hPa6tBzMLv6zwNg4PFFrPvs+Quc4RqVtRMqmfJrlLjEzhwf8y5m1ZdU42o2vN10ibEQ9SUJlXC5uiNUklAJ7fW7ZgrrE//o+POuv7Nt5Sduv2eVxUawTPm5TOf+I9je91kABuZ9xMbPX9A4IiHqkoRKuFyV1YYeaewpmpf+dzzHxogx+CgqHVf9maytq9x6v0qzjWAcfahkys81+o69l4yEewHos/3vbFm5WOOIhDhNEirhciZL7aJ0SahE86DodPT+03/Zrk8jSDER8dVt5B7c7bb7OdomVHdqlxEqlxl853znk3+dV93P7g0/ah2SEIAkVMINqqw29Ip0ShfNj5+/nqQ//Y8DPilEUoL6wfUU5B5yy73qFqVLQuUqik5H7/vfZ0dgP4IUE22/u53sXeu1DksISaiE69UdoZKn/ETzEhbeiogpX3FMaU1bNZ/Kd66lqCDX5fepM+UnReku5ecfQIf7v2CvXzfCqCB08USOuXG0UYj6kIRKuFzdonTpQyWan6j4RLh9CQW0ItF+hFP/uZbSYtc2/qy02Al2TvlJDZWrBYaEEXff12TpkoiiGPWD8Rw7LI0/hXYkoRIuZ7LYTo9QSad00UzFJ3eh8uYvOUk47W0HyX/1GspKilx2/UqLjSDpQ+VW4a1iCL/nG3KVWNqox7H/9xrppi40IwmVcDmLxYSPojo2ZIRKNGOJnXtTdMNnlBBMJ0smuf8aQ0nxSZdcu8psIcTZNkEWR3aXqLh2+N211DmFa3t3DMdz9msdlmiBJKESLmczV57ekBoq0cx17DmQwvGfUEowXax7KPjXCEpO5jf6uraqitMbMkLlVjEJHfCZ8h1Ha0aqFo4h73Cm1mGJFkYSKuFyqqXq9IaMUAkP0KH3EE5M+JxThNHRdoCiV0dQdPxIo65pN5U7/hedTH03gdZtO+Bz13ccUeKIUwtg4RgO79umdViiBZGESricanGMUNl0elAUjaMRon5Segyi5KavKMRAsv0wFW+M4Njhi586Us2OhMrqGyR/D5pIXEJ7/O/+jiO6NsRxgrCPr2H/Fvc2cBWihiRUwuVqRqjs0tRTeJikrmkYb/2GfKJJUI/hu3AEWTsurseRUj1CZfUJcmWI4gJat0khZOoK9vt2wEAZ8V/dyK5fv9I6LNECSEIlXM/qSKhUH5nuE54nsWMPdFO+57AugRiKaP2/69j169cNvo5icdRQ2fykfqqpGWLaEPfnH9nh35tgpYqOP97Fxm/e0jos4eUkoRKuV5NQyQiV8FAxCR2IePAndvn3IESppNOPd7Lx69cadA0fSxkAdnnCTxMhYQY6Tl/GbyFX4q/Y6LfpYTLenYlqt2sdmvBSklAJl9NVJ1Syjp/wZOGGaNpPX87GkCvxU2z02zKbNf/5MzartV7n+1tKAUmotBQQGETq9M/ZEPsHAC7NeYPNL/0fpspyjSMT3kgSKuFyiq26O7QkVMLDBQQGkTb9c9bHTwJgcN577HxhDGX16FXlb3VM+akB4W6NUZyfzseH/lP/w4buc7GoPqSVruTwC1dSeOyw1qEJLyMJlXC5mhEqRR4VF15A5+PDgD/+m01pz1Gl+tGrcj3Fr1zOkX1bz3tegM0x5Yc+zP1Bigvq/38z2Hv1+xQTQifrPtQ3h7Jr7fdahyW8iCRUwqWsNjv+qmOEShIq4U3Sxk7lyPVfcpxIEuy5RHw0io3fvXvO4/U2x7SSIiNUzUaPy66l/LYfnA8cdP7+ZtZ/+ITUVQmXkIRKuFSV1U5Q9YKwOr083SS8S8fel6O792f2+HcnVKmk34bprP/XHVQZz6zJCbI7pvx8giKaOEpxPm07dCdmRga/hQ3HV7Ez4MCLbHvhWkqKTmgdmvBwklAJl6qy2AhEEirhvaLj2tHx4XTWx98BwICTX5H3wqUcydziPMZmVwlSaxIqGaFqbgJDwkn7y2LWdZuDWfWld0UGFa8MkilA0SiSUAmXqrLYCKpOqBR/aWgovJOvv54Bf3yF7Vcu5CThJNsOEfnxSNZ9+g/sNhtVFhthGAHwkxGqZknR6Rg48RGyx3/FMaU18RTQ5fs/sO6tP2MxV134AkL8jiRUwqWqLDbnlB/S0FB4uZ5X3IDtj6vZoe9DkGJi4J5n2P2PYRw5mEm0UgKAb2iMxlGK8+nc53LCp69jY8RofBSVgbnvceS5QWTv/k3r0ISHkYRKuFSVxU4g1b/d+UtCJbxfTHw7LnlkJRu6PEKl6k930xbafDKMrrocAHRhsRpHKC4kOKwV/f7yCZsGvMIpQkmxHST+01FkLJyF2SSjVaJ+JKESLlV7yg+Z8hMthM7Hh/5/mMOJ235kj29XQpXK02+GxmsXmGiQtNF3YLkng+2BA9ArFi49/DrHnuvH/t9Wah2a8ACSUAmXqrLYCZQpP9FCJXTsRceZv5LR/i9Uqv7s1veC4EitwxINENMmkR5//Z7NfRdQRBhJ9hzafzOB9f++k+JT8iSgODdJqIRLyQiVaOl8/fy4dNKTqLOP0Omv6VqHIy6CotOReu0fUR7YyPrwUegUlQEnvsD+ch/WL36h3ssPiZZFEirhUpUWG8FKdc2BnyRUouUKCgjA19dX6zBEIxiiYhkw/VN2Dv+AI7o2tKKUAbue4vC8vuxd+53W4YlmRhIq4VK1+1BJUboQwht0v2wcsbO2sL7zXyklmBRbNl1+uJnN/7iG7N2btA5PNBOSUAmXqrLaT0/5yQiVEMJL+PnrGXDzo1j+9BtrI6/HpiqkGleT+OkwNr54I3nZu7UOUWhMEirhUiaL7XRRutRQCSG8TGRMPIMe/C+5N69ka/Dl6BSVfiXLifrvZWx4ZRLHDu/TOkShEUmohEvVLUoP0TYYIYRwk3Zd0uj912/ZN+4btunT8FNs9C9aQvS7A9nw4k0c3itTgS2NJFTCpSprJ1Qy5SeE8HKdUofQa3Y6e0Z+wm59b0diVfI9iZ9cxbZ/jGb3hh9RVVXrMEUTkIRKuJTJbEGvWBwbUpQuhGghug4aTbfZv7B/3NdsDrocu6rQy7iGbt9NYN8z/dn41WuYqiq0DlO4kSRUwqXsplr/YMgIlRCihemYOpTUR77l0M0/s8FwDWbVl87WffTbOhvj/C5seOvP5B3O1DpM4QbSJEW4VE1CZUeHzlevcTRCCKGNlC69SenyMacKctn83askHfqUWE7QP/c9bO++z7aANCw9b6b7VTcTECij+d5ARqiEa1mMAFh9AkFRNA5GCCG0ZYhpw8DJzxI5Zw8bB/6Lnfre+CgqvUy/0XfjQ5if68jGf93O3t9WotrtWocrGkFGqIRrmcoBsPkGahyIEEI0H35+/vQbdTuMup28gzs5nP4OSUeXEMsJ+p38Gr79miNL4zgSezUxA2+ifY/BKDoZ8/AkklAJl1KsjhEqm6/UTwkhxNnEpXQnLuVFbLbn2Z6xlKrfPqB7yS8kkEdC3vvw5fvkfhXL0birCe97I516XY7OR5Kr5k4SKuFSSvWUn10SKiGEOC8fHx96DhkHQ8ZRVVHCll/+h7r7K7qWraMN+bQ59gEs+YDCJQYORgzGv9toOg+6lqBQg9ahi7OQhEq4lK56hEqVJ/yEEKLeAoLD6TNmCoyZQnlZCRtX/Q+fPV/TpWwd0copoouXwpqlmDOmsTOgJ6VtryS650hSuvfDx8dH6/AFklAJF/NxJlTy1IoQQlyMkNBw+l0zBa6ZgrnKyK4NP1C24zvanPiVBPLobtoCWVsg65+c+jKU7OA+WNtdRmzvq0no2FtqrzQiCZVwKX+ro22CGhCmcSRCCOH5/AOCuGTI9TDkelRVJXvfdo5v+obgIz/T3rgdg1KGoWIV7FkFe57lBBEcCuqBJS6NiE6DSe5xKQFBsgxYU5CESriU3uZIqBR9qMaRCCGEd1EUheTOvUju3At4FIvZxN5tv1K0cyWheWvoaNpFlFJMlPFXyPoVsl7C8p0P+/1SKDL0Qmnbj+hO/Uno0ANfPz+tP47XkYRKuJTeXgEKKHoZoRJCCHfy89fTpd9w6DccAHNVJZnbV1GcmYF//iYSKnYSpRTT0bofCvdD4f9gC1Sq/mT5JVMS3gVdXE8iUlKJ65hGcGi4xp/Is0lCJVwqwG4EH/AJlIRKCCGakn9AIJ37j4T+IwFQ7XZyD+8nd9cq7DkbMZzaToL5IEGKic7WTDiZCSe/hp1gUxWO6lpzIiCJqvD2+LTuQkS77sR36EVweKTGn8wzSEIlXMZisxOCoyhdEiohhNCWotPRJrkzbZI7A/cAYLdaOZq9i/x9GzEf3UZw0S7amg4QqZTQVs2nbWU+VK6DfGCb4zoniCDfP5Hy4HbYI5LQR6cQHt+RmKQuhEVEa/b5mhtJqITLVFlshFAJgK8kVEII0ezofH1p27EXbTv2qrP/1PEj5B/YSunR3VCYSVBpFq3NOcRQRBTFRJmLwbwNTgHZp88rJZgCn1hKAtpgCmmLEt4Gf0MCITHtaBWbRGTrBHS+LSPVaBmfUjSJSouNUKU6oQqSuXghhPAUhtYJGFonAGPr7D9VdILCQzspP7oLS2E2PqWHCDHmEmU5RhTFhFFBmC0LKrKgAjhe97pWVUehzkCJbzTl+hhMga2xB7fGNzQG//DWBLeKIywqHkN0HPpAz34aURIq4TImi905QiVF6UII4fkMraIwtBoKqUPPeK+8vJT8w5mUHjuA5cRBlOIcfI35BFcdJ9xSSJRahK9ip7V6ktaWk2DZC+VA4dnvVU4gJUo45b4GKvxaYda3wq6PgMAIfIIM+Ia0IiCkFYHhUQSHRxFmiCEwNAIUxX1fQAN4TEL1888/c+WVV571vQ0bNtCvXz8Atm/fzv3338/GjRuJjo7mwQcf5JFHHjnvtXNycrjvvvv46aefCAkJ4Y477mDevHn41hqm/Pnnn5kxYwa7du0iISGBRx99lMmTJ7vs83mDKouNCMWxODIBMkIlhBDeLCQkjA6X9INL+p31favFwvGCXIrysqkoPIKtJBdKj+FjLMDfVESgpYhQazGt1GL8FSshVBKiVoIlHyxQXZJ7XjZVoUwJoVwJwegTiu3qp+k6YJRrP2g9eUxCNXjwYPLy8urse+yxx1i5ciV9+/YFoLS0lBEjRjB8+HDeeOMNduzYwV133UVERAR//OMfz3pdm83GNddcQ2xsLGvWrCEvL4/bb78dPz8/nn32WQCys7O55pprmDp1Kh999BErV67k7rvvJi4ujpEjR7r3g3uQKrONtpQ6NkKkUFEIIVoyXz8/WrdJonWbpPMep9rtFJcUUVyQS1lRHpaS41jLClHLC1CqStCZivE1l6C3lBJoKyXYXk6YWo5eseCjqERQRoRaBtY8dlrMTfPhzkJRVVXV7O6NYLFYaNOmDQ8++CCPPfYYAK+//jpz5swhPz8ff39/AGbNmsVXX33F3r17z3qdZcuWce2113Ls2DFat24NwBtvvMHMmTMpLCzE39+fmTNnsnTpUnbu3Ok87w9/+APFxcV8//339Yq3tLSU8PBwSkpKCAtz3XTYieNHsVRV1N1Z5z+pes59ytmOu8A5nOv/LqpKdm4+g36+2bH9t2PgL8vPCCGEcD1VVSkvL6O85CSVJYVUlZ7EUl5EYp9hRETFuvRe9f357TEjVL+3ZMkSTp48yZ133unct3btWoYMGeJMpgBGjhzJc889x6lTpzAYzlyhe+3atfTo0cOZTNWcc99997Fr1y769OnD2rVrGT58eJ3zRo4cyV/+8pdzxmcymTCZTM7t0tLSi/mYF3Rs4R30rPrNLdduqJr/C5cpwYRKMiWEEMJNFEUhNDSM0NAwaJusdTiABydU77zzDiNHjqRt27bOffn5+SQn1/1iaxKl/Pz8syZU+fn5dZKp359zvmNKS0uprKwkMDDwjOvOmzePJ5988iI+WcPYdX5UqqcTSBWl+n9rU854//fHnD7v/O+feb0zz89KupkBDfgMQgghhKfTPKGaNWsWzz333HmP2bNnD126dHFuHz16lB9++IHPPvvM3eFdtNmzZzNjxgzndmlpKQkJCS6/T+9H6jfl2JSitA5ACCGEaGKaJ1QPPfTQBZ+WS0lJqbO9cOFCIiMjGTduXJ39sbGxHD9etwlGzXZs7NnnVGNjY9mwYcN5zznXdcPCws46OgWg1+vR6/Xn+1hCCCGE8BKaJ1TR0dFER9f/iTBVVVm4cKHzSbzaBg0axJw5c7BYLM73VqxYQefOnc863VdzzjPPPENBQQExMTHOc8LCwujWrZvzmO+++67OeStWrGDQoEH1jlsIIYQQ3kundQANlZ6eTnZ2NnffffcZ791yyy34+/szZcoUdu3axaeffsrLL79cZ+rtyy+/rDN9OGLECLp168akSZPYtm0bP/zwA48++ij333+/c4Rp6tSpHDx4kEceeYS9e/fy2muv8dlnnzF9+nT3f2AhhBBCNHsel1C98847DB48uE5SVCM8PJzly5eTnZ1NWloaDz30EI8//nidHlQlJSVkZmY6t318fPj222/x8fFh0KBB3Hbbbdx+++089dRTzmOSk5NZunQpK1asoFevXrzwwgu8/fbb0oNKCCGEEIAH96HyNO7qQyWEEEII96nvz2+PG6ESQgghhGhuJKESQgghhGgkSaiEEEIIIRpJEiohhBBCiEaShEoIIYQQopEkoRJCCCGEaCRJqIQQQgghGkkSKiGEEEKIRpKESgghhBCikTRfHLmlqGlIX1paqnEkQgghhKivmp/bF1pYRhKqJlJWVgZAQkKCxpEIIYQQoqHKysoIDw8/5/uyll8TsdvtHDt2jNDQUBRFcdl1S0tLSUhI4MiRI7JGoJvJd9005HtuGvI9Nw35npuOu75rVVUpKysjPj4ene7clVIyQtVEdDodbdu2ddv1w8LC5C9rE5HvumnI99w05HtuGvI9Nx13fNfnG5mqIUXpQgghhBCNJAmVEEIIIUQjSULl4fR6PXPnzkWv12sditeT77ppyPfcNOR7bhryPTcdrb9rKUoXQgghhGgkGaESQgghhGgkSaiEEEIIIRpJEiohhBBCiEaShEoIIYQQopEkofJwr776KklJSQQEBDBgwAA2bNigdUgeY968efTr14/Q0FBi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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAAGwCAYAAABvpfsgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACNrklEQVR4nOzdd3hUZfbA8e+dlEnvCSQQktB7SeioqGDo2FZsYGNdWdeVhVWRtYAV/KGrq7vq2ti1LKwsKiCiILHRe4cAIbQUkpA+k0y9vz8mGRJpCZnkZibn8zzzLPfOLWeGxZy877nnVVRVVRFCCCGEEFdMp3UAQgghhBDuThIqIYQQQogGkoRKCCGEEKKBJKESQgghhGggSaiEEEIIIRpIEiohhBBCiAaShEoIIYQQooG8tQ6gpbDb7WRnZxMcHIyiKFqHI4QQQog6UFWVsrIy4uLi0OkuPg4lCVUTyc7OJj4+XuswhBBCCHEFTp06Rdu2bS/6viRUTSQ4OBhw/IWEhIRoHI0QQggh6qK0tJT4+Hjnz/GLkYSqiVRP84WEhEhCJYQQQriZy5XrSFG6EEIIIUQDSUIlhBBCCNFAklAJIYQQQjSQ1FAJIYQQGrPb7ZjNZq3DaJF8fHzw8vJq8HUkoRJCCCE0ZDabyczMxG63ax1KixUWFkbr1q0b1CdSEiohhBBCI6qqkpOTg5eXF/Hx8ZdsHClcT1VVjEYjeXl5AMTGxl7xtSShEkIIITRitVoxGo3ExcUREBCgdTgtkr+/PwB5eXnExMRc8fSfW6XCK1euZNCgQfj7+xMVFcUtt9xS6/21a9cydOhQgoODiY2NZdasWVit1kteMyMjg5tvvpno6GhCQkKYNGkSZ86cqXVMUVERU6ZMITQ0lNDQUKZMmUJxcbGrP54QQogWxmazAeDr66txJC1bdTJrsViu+Bpuk1AtXbqUKVOmcP/997N7927Wr1/PXXfd5Xx/z549jB07ltGjR7Nz504WL17M8uXLefLJJy96TYPBQGpqKoqikJaWxvr16zGbzUyYMKHWXPZdd93Frl27+Pbbb/n222/ZtWsXU6ZMadTPK4QQouWQNV615YrvX1FVVXVBLI3KarWSmJjIc889x9SpUy94zF/+8hfWrFnD1q1bnfu++uor7rzzTvLy8i7YMn716tWMGTOGoqIiZ/fyoqIiIiIiWLNmDSNHjuTgwYN0796dTZs2MWjQIAA2bdrEkCFDOHToEF26dLlgPCaTCZPJ5Nyubl1fUlIindKFEEIAUFlZSWZmJklJSfj5+WkdTot1qb+H0tJSQkNDL/vz2y1GqHbs2EFWVhY6nY5+/foRGxvLmDFj2L9/v/MYk8l03pfg7+9PZWUl27dvv+B1TSYTiqKg1+ud+/z8/NDpdKxbtw6AjRs3Ehoa6kymAAYPHkxoaCgbNmy4aMzz5s1zThGGhobKwshCCCGEB3OLhOrYsWMAzJ07l6effpqvv/6a8PBwhg8fTmFhIQCjRo1iw4YNLFq0CJvNRlZWFi+++CIAOTk5F7zu4MGDCQwMZNasWRiNRgwGA48//jh2u915Tm5uLjExMeedGxMTQ25u7kVjnj17NiUlJc7XqVOnGvQdCCGEEKL50jShmjt3LoqiXPK1bds2Zz3TU089xa233kpKSgoLFy5EURSWLFkCQGpqKgsWLGDatGno9Xo6d+7MuHHjAC5asR8dHc2SJUtYsWIFQUFBziG95OTkWudcaG5VVdVLzrnq9XrnQsiyIHLzVGmxUVp55QWIQgghRDVN2yY88sgj3HHHHZc8JjExkbKyMgC6d+/u3K/X62nfvj0nT5507ps5cyYzZswgJyeH8PBwjh8/zuzZs0lKSrro9VNTU8nIyKCgoABvb29nc6/qc1q3bn3eU38A+fn5tGrVql6fVzQfn2w6wbxvDmI02xjbqzWv3NqbYD8frcMSQghxCTabDUVRmmW/Lk0jioqKomvXrpd8+fn5kZKSgl6vJz093XmuxWLh+PHjJCQk1LqmoijExcXh7+/PokWLiI+PJzk5uU6xhIWFkZaWRl5eHhMnTgRgyJAhlJSUsGXLFuexmzdvpqSkhKFDh7romxBN6fsDZ3jmq30YzY7Hlb/Zm8vDn+3AZm/2z2cIITycqqoYzVZNXvV9Ru3bb7/lqquuIiwsjMjISMaPH09GRgYAx48fR1EUFi9ezNChQ/Hz86NHjx78+OOPzvN//PFHFEVh5cqV9OnTBz8/PwYNGsTevXudx/zrX/8iLCyMr7/+mu7du6PX6zlx4gRFRUXcc889hIeHExAQwJgxYzhy5AjgGPBo3bo1L7/8svM6mzdvxtfXl9WrVzfgb+fS3KKxZ0hICNOmTWPOnDnEx8eTkJDAggULALjtttucxy1YsIDRo0ej0+n44osvmD9/Pp9//rlz+i4rK4sRI0bw8ccfM3DgQAAWLlxIt27diI6OZuPGjUyfPp0ZM2Y4n97r1q0bo0eP5sEHH+Sf//wnAL/73e8YP378RZ/wE82XxWbnua8dDzPcMySBm/q14a73N/HLkQIWbTnJ5MEJl7mCEEI0ngqLje7PfqfJvQ88P4oA37qnBQaDgZkzZ9KrVy8MBgPPPvssN998M7t27XIe8/jjj/PGG2/QvXt3/vrXvzJx4kQyMzOJjIysdczf/vY3WrduzV/+8hcmTpzI4cOH8fFxzBoYjUbmzZvHBx98QGRkJDExMdx1110cOXKE5cuXExISwqxZsxg7diwHDhwgOjqajz76iJtuuonU1FS6du3K5MmTefjhh0lNTXXZ9/VrbpFQgSNZ8vb2ZsqUKVRUVDBo0CDS0tIIDw93HrNq1SpeeuklTCYTffr0YdmyZYwZM8b5vsViIT09HaPR6NyXnp7O7NmzKSwsJDExkaeeeooZM2bUuvdnn33Go48+6vyLmDhxIn//+98b+ROLxrD24BlOFVYQGejLk2O6EuDrzazRXXluxQH+uuYwN/drQ6Debf5ZCCGEZm699dZa2x9++CExMTEcOHCAoKAgwFHaU33cO++8w7fffsuHH37IE0884Txvzpw53HDDDQD8+9//pm3btnz55ZdMmjQJcPzsfvvtt+nTpw+AM5Fav369c6bos88+Iz4+nq+++orbbruNsWPH8uCDD3L33XczYMAA/Pz8mD9/fqN+H27zk8PHx4dXX32VV1999aLHpKWlXfIaiYmJ5w1pzp8//7JfckREBJ9++mndgxWaUFUVuwpeuos/LLB4q+Npy0kD4p2/iU0enMC/Nxzn+Fkj/9t+mnuHJjZFuEIIcR5/Hy8OPD9Ks3vXR0ZGBs888wybNm2ioKDA+QDZyZMnnTXPQ4YMcR7v7e1N//79OXjwYK3r1DwmIiKCLl261DrG19eX3r17O7cPHjyIt7d3rXZGkZGR55336quv0rNnTz7//HO2bdvW6H2+3CahEuJSlu3K4oWvD1BSYeGWfm157sYe+P3qPw4Gk5UNR88CcGtyW1BVyN2Lj7eeqVcl8cyy/Xy0PpPJgxMumZQJIURjURSlXtNuWpowYQLx8fG8//77xMXFYbfb6dmzJ2az+ZLn1aUrec1j/P39a21frNbr10/fHzt2jOzsbOx2OydOnKiVlDWG5lcmL0Q9rT9awPTFuygoN2Oxqfx32yke+c+O8/7RrT9agNlmJyEygA4hdvh4IvzzavjHQO7MnE2Mn40TZ41sPnZWo08ihBDu4ezZsxw8eJCnn36aESNG0K1bN4qKis47btOmTc4/W61Wtm/fTteuXS96TFFREYcPHz7vmJq6d++O1Wpl8+bNteI5fPgw3bp1A8BsNnP33Xdz++238+KLLzJ16tQLPrHvSpJQCbdms6s889U+wDHq9NF9/fH11vH9wTzn9F61Hw/nA3BdlxiUlX+GzJ9B5w2KF96Hv+H90H8BKl/uzGriTyGEEO4lPDycyMhI3nvvPY4ePUpaWhozZ84877h//OMffPnllxw6dIg//OEPFBUV8cADD9Q65vnnn2ft2rXs27eP++67j6ioKG666aaL3rtTp07ceOONPPjgg6xbt47du3czefJk2rRpw4033gg4+laWlJTw5ptv8sQTT9CtW7eLLl3nKpJQCbe25kAuxwoMhPr78NyNPbi+ayueGOV4+vKvaw5jNFudx+444fjtaXTYSdj7OaDAfd/AvctB502fkrWM0O1g1b5cKqpaKgghhDifTqdj8eLFbN++nZ49ezJjxgzn0/c1zZ8/n1deeYU+ffrwyy+/sGzZMqKios47Zvr06aSkpJCTk8Py5cvx9fW95P0XLlxISkoK48ePZ8iQIaiqyjfffIOPjw8//vgjb7zxBp988gkhISHodDo++eQT1q1bxzvvvOPS76Em95ioFeIilu5wjCbdNagdQVVP590zJJGPN57gZKGRRVtOMfWqJMpNVtLPOBrE9s1a5Di5793QrqqoccgjsP4N5ugXcW1FP35Mz2NMr9gm/zxCCOEuRo4cyYEDB2rtqy61OH78OOBoPVRzSu9CrrrqKvbt23fB9+677z7uu+++8/aHh4fz8ccfX/Cca6+9Foul9ioY7dq1o7i4+JJxNJSMUAm3VW6y8lPVNN6NfeOgLBc2vIXv9g94ZIjjN6BPNh7HblfZc7oYVYXuoRb8jqx0XGDQQ+cuds1j4BdKOzWbG3TbWXOwcefahRBCeBZJqITb+vlwPmarnfZRgXTRZcE7w2D107DqcX6z7U66+RVw/KyRn4/ks/NkMQC/CT8CdivE9IDYGk986INhwIMATPX+hh8O5WG12TX4VEIIIdyRJFTCbW2qehrv2k7hKF88CMYCiOwEYQnoSk7xL7+/4YuFL3dmcSjXMd03jN2Okztef/4FB/wWVdExUJdOaMVJdlQlYUIIIeqnuu9j3759L3rMtddei6qqhIWFNVlcjUkSKuG2tmQWAjDRezPk7gW/MLh/FTzwHQRG06oygwe8VrHmwBn2nC4GVBKLqx6z7TDi/AuGxKJU7b/V6xe+l2k/IYQQdSQJlXBLxUazc9Spx+nFjp1D/gBB0RASCze8AMAjPsvRmcs4cdZIF+UU+so88PaHdkMufOF+dwNwi9cv/Jye1+ifQwghhGeQhEq4pZ2nigG4OqIEn5ztjn5SKfedO6D37RDVhSCM3OnlWJLoep+qp0gSh4HPRZYg6DwG1SeANspZfPN2k19marwPIYQQwmNIQiXc0sGcUgBuCayqiUq8GoJizh2g08HQRwC4z/s7dNgZWZ1QXWi6r5qPH0onxyKdo7y2siGjwOWxCyGE8DySUAm3dDDHMd032LTRsaPruPMP6jUJ1S+UNspZrtPtpKdtv2N/x0skVABdJwAwSreN9UcloRJCCHF5klAJt3Qwp5QAKmlVVjXq1Hn0+Qf5+KH0vBWA+T7vo8cCIW0gqvOlL945FbvOh466bE6l77roQpxCCCFENUmoRLNnt9dOaCotNo7ll9NHl4FOtUFIWwiLv/DJfe4CIFpxTBHS4Xq43ErnfqGoCcMA6GbcSmaBoUHxCyGEcD1FUfjqq6+0DsNJEirRbG0/UciI136k41PfcN/CLZwprQTgaF45dhWG6o85DowfePGLtO1fe0Sqy5g63dur00gArtHtYdOxwiuKXwghRMshCZVolo4XGJjy4RYy8g3YVfgxPZ873ttESYXFOWI01CfDcfClEipFgf5VK4wHRDlGqOqi6rhBuoPsPJZzpR9DCCE8lqqq/N///R/t27fH39+fPn368L///Q9VVRk5ciSjR492lkwUFxfTrl07nnrqKQBsNhtTp04lKSkJf39/unTpwt/+9rfz7vHRRx/Ro0cP9Ho9sbGxPPKI42GjxMREAG6++WYURXFua0kWRxbN0twV+zGabQxMjGDWmK48umgnmQUGnl9xgMTIAEClq+2Q4+C2l0ioAAY+6Fhapk0K+PjXLYCY7pj8Y/CvyMOcuREY1JCPI4QQdaOqYDFqc2+fgMuXRNTw9NNP88UXX/DOO+/QqVMnfv75ZyZPnkx0dDT//ve/6dWrF2+++SbTp09n2rRptGrVirlz5wJgt9tp27Ytn3/+OVFRUWzYsIHf/e53xMbGMmnSJADeeecdZs6cyfz58xkzZgwlJSWsX78egK1btxITE8PChQsZPXo0Xl5eLv866ksSKtHspOeW8WN6PjoF/u83vUmMCuStu/pxy9sbWLrjNB2iA2mv5BBoKwVvP2jd69IX1Hk5G3bWmaKg63g97F1MN+M2ckoqiA2tYzImhBBXymKEl+O0ufdfssE3sE6HGgwG/vrXv5KWlsaQIY5Gye3bt2fdunX885//5D//+Q///Oc/mTJlCmfOnGHFihXs3LkTHx8fAHx8fHjuueec10tKSmLDhg18/vnnzoTqxRdf5M9//jPTp093HjdgwAAAoqOjAQgLC6N169YN/+wuIFN+otlZtOUkAKN6tCYxKhAslSTHeHFLchsAMvINJOuOOA6O6wfevo0Sh0+NOqrqZW6EEELAgQMHqKys5IYbbiAoKMj5+vjjj8nIcJRj3Hbbbdxyyy3MmzeP1157jc6daz9h/e6779K/f3+io6MJCgri/fff5+RJx3//8/LyyM7OZsSIy7S5aUZkhEo0K6qq8t3+XABuS2kD696AH+eDtYLnO4zle+UWStUAkpXDjhMuVT/VUO2HA9BVOcmXR49zY982jXcvIYQAx7TbX7K1u3cd2e12AFauXEmbNrX/26jX6wEwGo1s374dLy8vjhw5UuuYzz//nBkzZvDaa68xZMgQgoODWbBgAZs3O9Zb9fd3vxkBSahEs7LndAk5JZUE+npxtWENfD/H+V5Qxjf8N/gk40tnkaw76th5ufqphgiKoTy4PUFlxzAf2wAMa7x7CSEEOGqY6jjtpqXu3buj1+s5efIkw4cPv+Axf/7zn9HpdKxatYqxY8cybtw4rr/e8cDPL7/8wtChQ3n44Yedx1ePbAEEBweTmJjI2rVrue666y54fR8fH2w2mws/VcNIQiWalXVVnclHdgjE5/uHHDuHz3I07vz4RrqZ9vGE92I6K6cd7zXmCBXglTQM9hyjTelOSowWQgN8GvV+QgjhDoKDg3nssceYMWMGdrudq666itLSUjZs2EBQUBBRUVF89NFHbNy4keTkZJ588knuvfde9uzZQ3h4OB07duTjjz/mu+++IykpiU8++YStW7eSlJTkvMfcuXOZNm0aMTExjBkzhrKyMtavX88f//hHAGfCNWzYMPR6PeHh4Vp9HYDUUIlmprpW6W7vNKgshsiOjoSqTTKMfRWAh7xXolNUx3s11+9rBP4dHb95DdIdZNsJqaMSQohqL7zwAs8++yzz5s2jW7dujBo1ihUrVpCYmMjUqVOZO3cuycnJAMyZM4e4uDimTZsGwLRp07jlllu4/fbbGTRoEGfPnq01WgVw77338sYbb/D222/To0cPxo8fX2vq8LXXXmPNmjXEx8fTr1+/pvvgF6Gosq5GkygtLSU0NJSSkhJCQkK0DqdZstlV+j63mjKTlUOxz+FXlA4T/gYp9zkOUFX48AY4vdWx3W8y3PiPxg2qJAte745NVfj7oDSmj01u3PsJIVqUyspKMjMzSUpKws/PT+twWqxL/T3U9ee3jFCJZuNQbillJiu99bmOZErnA91vOneAokDqS+e2u01s/KBC21Dm3xYvRcV0bEPj308IIYRbkhoq0Wzsz3Kst3d36B4oxdGt3D+s9kHtBsH4NxzTgZ1SmyQuW/wQOLyE8Pyt2O0qOl3dG98JIYRoGWSESjQbB3IcCdUAdb9jR6cbLnxg//vhqhn16ujbEMFdrwWgn3qAjPzyJrmnEEII9yIJlWg2DuWW4oOVdoa9jh2JV2kbUBWvxKEA9FKOsTszT+NohBBCNEeSUIlmQVVVDuWW0VvJwNteCQGREN1V67AcwpMweIejV6zkH9midTRCCA8kz4dpyxXfvyRUolnILa2k2GghxauqYWe7IU02pXdZikJ5tOORXK+srRoHI4TwJNWL+prNZo0jadmMRseC1NVrDV4JKUoXzcLRPEdt0kC/02AFYvtqGs+vBXQYAjlptDXsxWCyEqiXfzpCiIbz9vYmICCA/Px8fHx80OlknKMpqaqK0WgkLy+PsLAwZ4J7JeSngmgWjp91/HbQTTnh2BHbW8NozhfccSisg2TdEfacKmZIxyitQxJCeABFUYiNjSUzM5MTJ05oHU6LFRYWRuvWrRt0DUmoRLNwosCAHjOxllOOHa17aRvQr8X1w4aO1koRq48eZEjHq7WOSAjhIXx9fenUqZNM+2nEx8enQSNT1SShEs3C8bMGuion0WGDgCgIjtU6pNp8AykM7kJ02UEqj20CJKESQriOTqeTTuluTiZrRbNw/KyRTrosx0arHs2nIL0Ge5v+AAQX7JQncoQQQtQiCZXQnM2ucvKskSQlx7EjqpO2AV1EeBdHX6xu1kPkllZqHI0QQojmRBIqobnc0krMNjsddLmOHZEdtQ3oInwTBgHQXTnOvhPS4FMIIcQ5klAJzZ04awCgk/cZx45mmlARnkiZVzi+io389E1aRyOEEKIZkYRKaC6nuBIFO/H2qim/yA7aBnQxikJxZF/HH09Lg08hhBDnSEIlNJdTUkEshfhiBp03hLbTOqSL8m43AICIkn1SmC6EEMJJEiqhueySSpJ0VaNT4Ung1Xy7eUR2GQJAd/tRThVWaByNEEKI5kISKqG5nOIK4pV8x0ZEkrbBXIZv22QA4nX5HDp2TONohBBCNBeSUAnN5ZRUEqcUODZC47UN5nL8w8jXO6Yki49s1jgYIYQQzYUkVEJzOSWVtFHOOjZC22obTB0YohzrDCo5OzSORAghRHMhCZXQlNFspaTCQhzVCVUzH6EC/BIHAtCqdD92uxSmCyGEkIRKaCy72NFxvK3OfUaoojoPBqA7GWQWlGscjRBCiOZAEiqhqdwSRw+q1m405ecd1wcrXkQppWQcOah1OEIIIZoBSaiEps6UVhJFCT5YQdFBcKzWIV2ejx95AY71BksypDBdCCGEJFRCYwXlJuKqR6eC45p1D6qaKqP7AOCbu1PjSIQQQjQHklAJTdVKqNxguq9aYHtHYXqs4SBWm13jaIQQQmhNEiqhqYJy87mEKiRO22DqIbqqY3oPMjh6pkTjaIQQQmhNEiqhqYJyE9FKVUIS3FrbYOpBF9OVSsWPQMXE8fRdWocjhBBCY5JQCU3ll5mIVoodG0ExmsZSLzovzgR1BcB4bIvGwQghhNCaJFRCUwXlZqIpdmwEtdI0lvqytHKs6+eXv0vbQIQQQmhOEiqhGbtdpdBgIkopdexwpxEqILSjozA93ngIs1UK04UQoiWThEpopshoxq5SY8rPvUaooqoK07soJziSla9xNEIIIbTkVgnVypUrGTRoEP7+/kRFRXHLLbfUen/t2rUMHTqU4OBgYmNjmTVrFlar9ZLXzMjI4OabbyY6OpqQkBAmTZrEmTNnnO8fP36cqVOnkpSUhL+/Px06dGDOnDmYzeZG+YwtSUG5GR12IqpHqALda4RKCUugRBeKr2Lj9KGtWocjhBBCQ26TUC1dupQpU6Zw//33s3v3btavX89dd93lfH/Pnj2MHTuW0aNHs3PnThYvXszy5ct58sknL3pNg8FAamoqiqKQlpbG+vXrMZvNTJgwAbvdMYVz6NAh7HY7//znP9m/fz+vv/467777Ln/5y18a/TN7uoJyE5GU4oXq6JIeGKV1SPWjKBSEdAfAdEISKiGEaMncoi211Wpl+vTpLFiwgKlTpzr3d+nSxfnnxYsX07t3b5599lkAOnbsyLx587jzzjuZM2cOwcHB5113/fr1HD9+nJ07dxISEgLAwoULiYiIIC0tjZEjRzJ69GhGjx7tPKd9+/akp6fzzjvv8Oqrr140ZpPJhMlkcm6XlpZe+RfgoRwtE4odGwFRoPPSNJ4rocYmQ/FGAgr2aB2KEEIIDbnFCNWOHTvIyspCp9PRr18/YmNjGTNmDPv373ceYzKZ8PPzq3Wev78/lZWVbN++/YLXNZlMKIqCXq937vPz80On07Fu3bqLxlNSUkJERMQlY543bx6hoaHOV3x8fF0+aotSUG4+14PKzeqnqoV1HgxAoimdSotN42iEEEJoxS0SqmPHjgEwd+5cnn76ab7++mvCw8MZPnw4hYWFAIwaNYoNGzawaNEibDYbWVlZvPjiiwDk5ORc8LqDBw8mMDCQWbNmYTQaMRgMPP7449jt9ouek5GRwVtvvcW0adMuGfPs2bMpKSlxvk6dOnWlH99jFRnM7tmDqobITo6Eqj3ZpJ/M1jgaIYQQWtE0oZo7dy6KolzytW3bNmc901NPPcWtt95KSkoKCxcuRFEUlixZAkBqaioLFixg2rRp6PV6OnfuzLhx4wDw8rrwVFJ0dDRLlixhxYoVBAUFERoaSklJCcnJyRc8Jzs7m9GjR3Pbbbfx29/+9pKfTa/XExISUuslaiuuMBONe49QKUExFHjFoFNUcg9tcvn188oqOZhTKusFCiFEM6dpDdUjjzzCHXfcccljEhMTKSsrA6B79+7O/Xq9nvbt23Py5EnnvpkzZzJjxgxycnIIDw/n+PHjzJ49m6SkpItePzU1lYyMDAoKCvD29iYsLIzWrVufd052djbXXXcdQ4YM4b333ruSjyt+pchoIck55RetbTANUBjak6jCNCwntwO3ueSadrvKK98d4v2fj2FXoW24P3+7oy8pCZeeahZCCKENTROqqKgooqIu/2RXSkoKer2e9PR0rrrqKgAsFgvHjx8nISGh1rGKohAX51hkd9GiRcTHx5OcnFynWADS0tLIy8tj4sSJzveysrK47rrrnCNjOp1bzJQ2eyVGC+GKI1kmIFLbYBpAaZMMhWmEnHVdYfo/fz7GP39yTHXrvXWcLqrgng+38N+HhtCzTajL7iOEEMI13CIzCAkJYdq0acyZM4fVq1eTnp7O73//ewBuu+3ciMCCBQvYu3cv+/fv54UXXmD+/Pm8+eabzum7rKwsunbtypYt59ZeW7hwIZs2bSIjI4NPP/2U2267jRkzZjifIMzOzubaa68lPj6eV199lfz8fHJzc8nNzW3Cb8AzFRnNhFOVUPm778hLZJeqOipLOkbzpfue1UVWcQWvf38YgBdu7MGOZ25gaIdIDGYbf/rvLil+F0KIZsgt2iaAI1ny9vZmypQpVFRUMGjQINLS0ggPD3ces2rVKl566SVMJhN9+vRh2bJljBkzxvm+xWIhPT0do9Ho3Jeens7s2bMpLCwkMTGRp556ihkzZjjfX716NUePHuXo0aO0bdu2VkyqqjbiJ/Z8xbVGqNw3oYqoWoKmrVLArmOZ9O3aqUHX+2hdJmarnUFJEUwenICiKPzjrmRS3/iZo3nlvP/zMf44omH3EEII4VqKKllBkygtLXUWvUuBukOPZ7/lG/5Igi4PHvgO2g3WOqQrlvNST2Itp1jd9y1Sb7rniq9TabHR/8XvKTdZ+fcDAxkecga2LwS7jZ8DU7lntUqw3pufn7iO8EBfF34CIYQQF1LXn99uMeUnPI/ZasdgthGulDt2uPGUH0BxeC8A7Kd3NOg6Px3Op9xkpU2YP9ewE96/DrZ+ANsXcvXPd/F4+M+Umax8tD7TFWELIYRwEUmohCaKK8x4YyVEqZp+deMpPwCv+BQAwor2Nug6q/Y6+p/d2kWP8uXvwGaG9tdBj1tQUPlDxbtcq9vFfzaflFoqIYRoRiShEpooMVoIw1C1pYBfmJbhNFhMlyEAdLQepqziyhbOtttVfjycD8Bdlv9BRRG06gV3L4HffAT9HwDgNd/3MBuKWb5bGokKIURzIQmV0ESR0UJYdUG6Xyh4uc3zERcUlpSCFS+ilFIOHzl0RddIP1NGsdFCjK+JVkc/d+wcORe8fEBRYNTLENmJSIqZ5r2c/2w+ecnrCSGEaDqSUAlNFBvNROD+T/g5+fiR7etoBlt4+Mo6pm8+dhaAhyJ3o5jLIaoLdBxR4x7+cMPzAEz1WkXWqeNk5Jc3LG4hhBAuIQmV0ISjZUJVMuDGTT1rKovsDYCadWWF6ZszHetSjmSzY0fvSY6RqZq6jIG2A/BTLEzxXs2XO7KuOF4hhBCuIwmV0ERxhZkwD3nCr5pPO0dhelTJvis6f/epYkIwEF+81bGj+43nH6QoMPSPAEz2+p6V2zOw26XziRBCaE0SKqGJIqPFs6b8gNbdhgLQ0XaUEoOpXucWGcxkl1QySHcQnWqFyI4QdZHmnV3HYw9LJEIpZ4AhjR0nixoauhBCiAaqU0JVWlpa75cQl1JcsyjdQ0aoQuJ7U4kvIUoFRw/uqte5+7Md/2ZuCDjq2JF49cUP1nmh638fALd5/cSqfbIMkhBCaK1OCVVYWBjh4eF1fkVERHDs2LHGjl24sdIKC+FU11B5RkKFlzdZfo5RpaKj9StM359dAsBgr4OOHYlXXfqE3negomOA7jD792yXZZCEEEJjdX5W/X//+x8REZf/waeqKmPHjm1QUMLzlVZ6xjp+v2aM7gOn9uOVs7Ne5x3IKSUII21NGY4dCcMufUJILPYOI/DKWMM1xtXsy5pIr7ahVxi1EEKIhqpTQpWQkMA111xDZGTdnsZq3749Pj4+DQpMeLaySiuhSlVjT//wSx/sRvwSBsCp/xBdur9e56XnltFDOYEOO4TGQ0jsZc/xSp4MGWu40Ws9n+3NloRKCCE0VKcpv8zMzDonUwD79u0jPj7+ioMSnq+s0kIIVcvO+HlOIhDbvaow3Z7J2ZK69Yiy21UyCwz00B137Gjdu2436zwKq3cAbZSzHN/78xVEK4QQwlXq/JTfG2+8wdmzZxszFtGClFVaCVY8L6EKiu1CGYH4KRaOHdhap3OySyowWe309Dru2BFbx4TKxx+10ygA+pb+xImzhsucIIQQorHUOaF67rnnaNOmDZMmTWL16tVSBCsapLTWCFWYprG4lKKQHdAVgNKMLXU6JbPAkQj19a5aSqauI1SAT69bABjrtZkfDp6pR6BCCCFcqc4JVW5uLh9++CGFhYWMGTOGhIQE5syZQ2ZmZmPGJzyQxWbHbLESrFQ4dnjQCBVARUwfAHxyd9Xp+MwCA3rMtLOfduyo6wgVQKcbsHj501Yp4Pje9fWMVAghhKvUOaHS6/XcfffdfP/992RkZHD//ffz8ccf06lTJ0aOHMnixYsxmerXzFC0TGWVVoKqR6cA9CHaBdMIApMGAhBrqFth+rF8A4lKLt7YHMllSJu638zHn8rEkQDE5aymwmyrd7xCCCEa7oo6pScmJvLcc8+RmZnJt99+S6tWrZg6dSpxcXGujk94oLJKCyHV9VPe/uDtq21ALta2h6MwPcl+ijNnCy97/LECA+2VHMdGZKfz1++7jKA+jiVqhrODjccK6hesEEIIl2jw0jM6nQ5FUVBVFbvd7oqYhIcrq7QS6oFP+FXzj2zHWSUcb8XOyf2Xb/B54qyBpOqE6mLLzVyC0nEENrzoojvNzt27632+EEKIhruihOrEiRM899xzJCUlkZqaSnZ2Nu+//z45OTmujk94oNJKCyHVPag8MKFCUcgJ6g5AeealC9PtdpWc4ko66KpHqDrU/34BEZRGJztufUQeGBFCCC3UuVN6ZWUlS5cu5aOPPuKnn34iNjaWe++9lwceeID27ds3ZozCw5RVWgn24BEqAEurvlC2Hr8zlx4xKig3YbbZSfKqMeV3BQJ7jYO0raSYNnOswECH6KAruo4QQogrU+cRqtatWzN16lTCw8NZsWIFJ06c4MUXX5RkStRbWaX1XA2Vn2cVpFcLbu8oTI8zHrzkiFFWcQWg0lFXtcBxZMcrup9vN8dyT4N1B9h86OQVXUMIIcSVq3NC9eyzz3L69Gn+97//MWbMGHS6BpdfiRbKU7uk19S2h2MtvgRyyDlz8f5QWcUVhFNGCOWAcmVTfgBRnSnxa4NesVK8b/WVXUMIIcQVq3NWNHPmTKKiomrtKy8vp7S0tNZLiMtxjFB5cA0V4BcaTY6uNQBZ+y/eHyq7uIIEJc+xEdIGfPyv7IaKgrl9KgCtcn/CapMHRIQQoinVe5gpMzOTcePGERgYSGhoKOHh4YSHhxMWFkZ4uOcscisaT1mlhWA8s6lnTXnBjsJ04/GLL0GTVVRBrFK1pFNo2wbdL6LveAAGs5s9p4sbdC0hhBD1U+ei9Gp33303AB999BGtWrVCqWfPHCHKKq10xrNHqACssf2gJI2Agj0XPSaruJIEZ0JVj4aeF+CVOBSL4kMbzpK2ZzvJCTc06HpCCCHqrt4J1Z49e9i+fTtdunRpjHhEC1CrKN3DuqTXFN5xMByC+IpDqKp6wV8+soorGFydUIU0sDGubwAFESnEnt2E9cj3gCRUQgjRVOo95TdgwABOnTrVGLGIFqK0BRSlA7TtPhibqtCas2SdOn7BY3JKakz5hTRsyg/Ar6tjGZrE4s0YTNYGX08IIUTd1HuE6oMPPmDatGlkZWXRs2dPfHx8ar3fu3c9FnYVLVJZpZVgZ9uEME1jaUy+ASGc8G5Hgu0EOQfW07ZdUq33TVYbxUYLsb5Vy9M0cMoPIKxnKqx/kYHKAbYezeXaHg1P0oQQQlxevROq/Px85+LI1aqXnlEUBZtNFmcVl2YwWQlpATVUAAWhPUgoPIH55DZgcu33ys0AxClVCVVDp/wApVUvyrzDCbYWcWLPj9Bj8mXPEUII0XD1TqgeeOAB+vXrx6JFi6QoXVwRg6lmY0/PTqiIS4bCbwg8e35hel5pJV7YiFaKHTtcMOWHTkdJ7FUEn1qB7/Ef+XUSJ4QQonHUO6E6ceIEy5cvp2PHK+voLITBVHPpGc8tSgeI7DwE9kFiZTo2mx0vr3Nli3llJlpRhBd20PlAYLRL7hnWcxScWkH3iu3kl5mIDta75LpCCCEurt5F6ddffz27ZUV7cYVUVcVmNuKlVC3H4uvZa87FdxuAWfUmTCkn8+j+Wu/ll5lo7ZzuiwUXrT4Q1N3xdF8vJZMdh4665JpCCCEurd4jVBMmTGDGjBns3buXXr16nVeUPnHiRJcFJzyP2WbHz+5o6qmioPgGahxR4/Ly0XPctz0dLIfJPbiRjl16Od/LKzMR58In/JyCW3PGrz2tKo9RtHcNDOjhumsLIYS4oHonVNOmTQPg+eefP+89KUoXl2Mw2QhUqrqk+wZBC6jBK43oBWcOYzu1Dfidc39+WWWNLukNf8Kvpop2w+HwMYJzfgH+5NJrCyGEOF+95xjsdvtFX5JMicsxmKwEUgng8aNT1XzaDQAgvHhfrf35tUaoXJtQRfdyrOvX07SHM6WVLr22EEKI87mmaEOIOjKabc6ECr1n109Vi+s+FIAO1qOUGs8lN3m1aqhcm1AFdr4aGzoSdHns3nvxpW+EEEK4Rp0SqjfffJPKyrr/lvvuu+9SVlZ2xUEJz1VustaY8msZI1QRCT0x4E+gYuLovm3O/Xmlpkab8kMfTHagY3HmkgNrXXttIYQQ56lTQjVjxox6JUhPPPEE+fn5VxyU8FxGs5VATI4N32Btg2kqOi9OB3QDoOTwOgDsdpWCclONpp4uTqgAa8LVAITmbnT5tYUQQtRWp6J0VVUZMWIE3t51q2GvqKhoUFDCcxlqjlC1kCk/AGOrFMjcgW/udsCxnqFitxBFieOARkioYnrfAAfeoY91N9lFRuLCA1x+DyGEEA51ypDmzJlTr4veeOONREREXFFAwrMZTDaCqmuoWsiUH0Bwx6GQ+T5tyvehqiqFBjOtlCJ0igpeegiMcvk9AzsMxYwPrZRiVu/ZRtzwa1x+DyGEEA6NklAJcTFGs5UAZ0LVckao2va6BtZAItlkZWdRZA0gluon/OIap32Ejz/ZIX1ILN1G+aE0kIRKCCEajTzlJ5pUuclGkFL9lF8LqaEC/EKiOO3laN55cu/PFBos5wrSG2G6r5o90VFHFX5mU6PdQwghhCRUoonVHqFqOVN+APmhvQGwHN9MkcF8rgeVq5/wq6F1n1EA9LXt5dTZ8ka7jxBCtHSSUIkmVbttQsuZ8gNQ4h0NPkPP7qLQaG60HlQ1BST2p0LxJ1wp5+AuedpPCCEaiyRUokkZaxalt6Cn/ABiujum3zqYD3Gm2NAkI1R4+ZAd2g+AivS0xruPEEK0cJJQiSZlaKFF6QCxHftRjj9BSiVZh3c0SQ0VgNLeUYweXbAJVVUb9V5CCNFS1ekpv5kzZ9b5gn/961+vOBjh+Qwm67mi9BaWUCle3pz060r3yp1EFu8h1rvxp/wA4vqOhh3z6W07wMn8EhJiwhr1fkII0RLVKaHauXNnnS6mNMaj38KjGMw2AmlZS8/UVB6dDKd2MlS3nyil1LEzLL5R7+nXtg9lSjDBlLFx588kjJrYqPcTQoiWqE4J1Q8//NDYcYgWwmCyEqBULT3TwmqoAAI6DIFTHzJOtxkAm3cgXn5hjXtTnY6c8AEEF6ZhOvIjSEIlhBAuJzVUokkZzTaCnCNULacPVbWEPo56Jp3iqGWyhrRtnKaev+LdcTgArc5ukToqIYRoBHVbnO9Xtm7dypIlSzh58iRms7nWe1988YVLAhOeyVBpIbCF9qECCA5vxSkljng1GwAltHGn+6q16TcKtsyht/0QmbkFtI+NbpL7CiFES1HvEarFixczbNgwDhw4wJdffonFYuHAgQOkpaURGhraGDEKD2I2V+Kj2BwbLXDKD+BUYE/nn70jE5vknvrWXSnURaBXLBzbIe0ThBDC1eqdUL388su8/vrrfP311/j6+vK3v/2NgwcPMmnSJNq1a9cYMQoPYber6Cw1unW3sKf8qpVE9XP+WdeqW9PcVFHIixwEgOXoz01zTyGEaEHqnVBlZGQwbtw4APR6PQaDAUVRmDFjBu+9957LAxSeo8Jic/agUr39QeelcUTa6H/1mHMbbVKa7L76ztc5blm0Bbtd6qiEEMKV6p1QRUREUFZWBkCbNm3Yt28fAMXFxRiNRtdGJzyKwWw9Vz/VQqf7AKI79MM04iVsI1+A2L5Ndt82/Rzr+nVXj3L0dHaT3VcIIVqCeidUV199NWvWrAFg0qRJTJ8+nQcffJA777yTESNGuDxA4TmMJpszoVJa6HRfNf3Vj+B11aNN8oRfNd+oRM54x+Gt2Dmx4/smu68QQrQE9U6o/v73v3PHHXcAMHv2bB577DHOnDnDLbfcwocffujyAGtauXIlgwYNwt/fn6ioKG655ZZa769du5ahQ4cSHBxMbGwss2bNwmq1XvKaGRkZ3HzzzURHRxMSEsKkSZM4c+bMBY81mUz07dsXRVHYtWuXqz5Wi1FushLUQhdGbi7ORjvqqDj2k7aBCCGEh7miKb+4uDjHyTodTzzxBMuXL+evf/0r4eHhLg+w2tKlS5kyZQr3338/u3fvZv369dx1113O9/fs2cPYsWMZPXo0O3fuZPHixSxfvpwnn3zyotc0GAykpqaiKAppaWmsX78es9nMhAkTsNvt5x3/xBNPOD+7qD+j2UYALbepZ3MQ0NUxityudBs2qaMSQgiXqVMfqtLSUkJCQpx/vpTq41zJarUyffp0FixYwNSpU537u3Tp4vzz4sWL6d27N88++ywAHTt2ZN68edx5553MmTOH4ODzm0iuX7+e48ePs3PnTmfcCxcuJCIigrS0NEaOHOk8dtWqVaxevZqlS5eyatWqy8ZsMpkwmUzO7ct9by2BwVxzhKrl9aBqDtr2S4UfoAsnOJBxjO6dOmgdkhBCeIQ6jVCFh4eTl5cHQFhYGOHh4ee9qvc3hh07dpCVlYVOp6Nfv37ExsYyZswY9u/f7zzGZDLh5+dX6zx/f38qKyvZvn37Ba9rMplQFAW9Xu/c5+fnh06nY926dc59Z86c4cEHH+STTz4hICCgTjHPmzeP0NBQ5ys+vmkaODZnRtO5p/xkyk8b3iGtOO2TBEDWrtUaRyOEEJ6jTglVWloaERERgGNdv7S0tPNe1fsbw7FjxwCYO3cuTz/9NF9//TXh4eEMHz6cwsJCAEaNGsWGDRtYtGgRNpuNrKwsXnzxRQBycnIueN3BgwcTGBjIrFmzMBqNGAwGHn/8cex2u/McVVW57777mDZtGv37969zzLNnz6akpMT5OnXqVEO+Ao9gMFkJkqf8NFfUeigA3id+0TgSIYTwHHVKqIYPH463t2N2MCkpiWuuuYbhw4fXel1zzTUkJSXV6+Zz585FUZRLvrZt2+asZ3rqqae49dZbSUlJYeHChSiKwpIlSwBITU1lwYIFTJs2Db1eT+fOnZ39sry8LtzvKDo6miVLlrBixQqCgoIIDQ2lpKSE5ORk5zlvvfUWpaWlzJ49u16fTa/XExISUuvV0hnMVgKlKF1zod0ddVTty7ZjsZ1fKyiEEKL+6r2WX1JSEjk5OcTExNTaX1hYSFJSEjabrc7XeuSRR5xPDF5MYmKis+9V9+7dnfv1ej3t27fn5MmTzn0zZ85kxowZ5OTkEB4ezvHjx5k9e/YlE73U1FQyMjIoKCjA29ubsLAwWrdu7TwnLS2NTZs21ZoWBOjfvz933303//73v+v8eVu6WkXpklBppm3fkVi/05Gg5LLn0AF69+h5+ZOEEEJcUr0TKlVVUS7QO6e8vPy8GqbLiYqKIioq6rLHpaSkoNfrSU9P56qrrgLAYrFw/PhxEhISah2rKIrzSbxFixYRHx9PcnJynWIBRwKVl5fHxIkTAXjzzTedU4cA2dnZjBo1iv/+978MGjSobh9UAI62CTFUjVDJlJ9mdP6hnNB3Icl0kLzdq0ESKiGEaLA6J1QzZ84EHAnLM888U6s422azsXnzZvr27evyAMHx5OC0adOYM2cO8fHxJCQksGDBAgBuu+0253ELFixg9OjR6HQ6vvjiC+bPn8/nn3/unL7LyspixIgRfPzxxwwcOBBwPNXXrVs3oqOj2bhxI9OnT2fGjBnOJwh/vT5hUJAjEejQoQNt27ZtlM/rqYwmK4GKFKU3B2VthsGxg/idXgfM1DocIYRwe3VOqHbu3Ak4Rqj27t2Lr6+v8z1fX1/69OnDY4895voIqyxYsABvb2+mTJlCRUUFgwYNIi0trdaThatWreKll17CZDLRp08fli1bxpgx59ZNs1gspKen11oiJz09ndmzZ1NYWEhiYiJPPfUUM2bMaLTP0ZIZzOc6pUtCpa3InjfAsQ/obNhBpdmKn2+9B6uFEELUoKiqWq/ufvfffz9/+9vfpMi6nkpLS51F7y31u/v9p9uZenga/XWH4fZPodsErUNqsVSzEfPL7dBjYefENfRLHqh1SEII0SzV9ed3vTulL1y4sMUmBKJhHCNU0tizOVB8Azge0AuAwn3Sj0oIIRqq3uP8BoOB+fPns3btWvLy8s5boqW6Z5QQv2Y0WWtM+Z3fuV40LVPbYXB4B4FZG7QORVzAsfxyVu7JwWS1c13XaFISIrQOSQhxCfVOqH7729/y008/MWXKFGJjYy/4xJ8QF1JeqyhdRqi0Ft0nFQ6/RdfKXRgrTQT46S9/kmgSS7efZvYXezFX9Qn7+w9H+U1KW16+uRe+3vWeWBBCNIF6J1SrVq1i5cqVDBs2rDHiER7MaLZJp/RmpHXXIRjwJ0wxsGPXBpIHX6d1SALYdOwsTyzdg82uMqR9JNHBer7ek83/tp+mtMLCu5NT0OnkF1khmpt6/6oTHh7uXIZGiPowmSrRKxbHhjzlpznFy4fjQf0AKDnwvcbRCACLzc7TX+3DZle5qW8c/7m7I2/2y+bLMVYCvO2sPnCGN9Ye0TpMIcQF1DuheuGFF3j22WdrtR4Qoi5Uc/m5DUmomgVrwtUAhORs1DgSAfDljiyO5pUTEejLy0m7Ud7oBYvvok/aPWwLfpwhuv38Pe0Ie04Xax2qEOJX6j3l99prr5GRkUGrVq1ITEzEx8en1vs7duxwWXDCc9jsKl6WCvAC1csXxdv38ieJRhfbdxTsf4Vu5n2UGgyEBEptm1ZUVeVfG44D8ErXowSsetLxRmRHqCwhwJDDJ76v8Dvzn3jif8GsfPRqvGTqT4hmo94J1U033dQIYQhPZ5SFkZulmA79KCKUcKWEbdt/pP8147QOqcXafbqEAzmlxHqXMSLjFcfOgQ/BmFfAYoSvfo/3gWX8w/ctJpyJYemOJCb1j9c2aCGEU70Tqjlz5jRGHMLDGUw1CtLlCb/mQ6fjVGgK4SVplB9MA0moNPPN3hwAXoj+AV1REbTqBaNeAkVx/Ju59SOovBX/Yz/yts/f+O3qBCb2icPPx0vjyIUQcAU1VADFxcV88MEHziVbwDHVl5WV5dLghOcwmK0EVLVMUPTSg6pZaT8cgIg8qaPSiqqqfLc/lxAMXFu23LFzxDPgVaOkwssbbvkANTCazrosJhiW8ummE9oELIQ4T70Tqj179tC5c2deeeUVXn31VYqLiwH48ssvmT17tqvjEx7CaLIRhEz5NUcJKY71LrtaD3Hm7FmNo2mZjuSVc+KskYk+W/C2GiG6K3RKPf/AoGiUUS8D8EfvL1n5y2bMVvv5xwkhmly9E6qZM2dy3333ceTIEfz8/Jz7x4wZw88//+zS4ITnKK/VJV2m/JqT0DadydNF46vYOLJFlqHRwoajBQBMDtjk2NHnTsdU34X0ug17wlX4KRbuNC5i2S6ZGRCiOah3QrV161Yeeuih8/a3adOG3NxclwQlPI+jKF2aejZLikJu5BAArIfXahxMy7Q5s5AYiuhq2uvY0es3Fz9YUdDd8BwAt3r9zMoffsZur9ca90KIRlDvhMrPz4/S0tLz9qenpxMdHe2SoITncSyMXD1CJQlVc6Pv5pheii/ahKrKD+empKoqWzILucZrj2NHXDKEtr30SW37Y+04Ci9F5ebST1lXNcIlhNBOvROqG2+8keeffx6LxdHxWlEUTp48yZNPPsmtt97q8gCFZzCYpG1Cc5Y4YAw2VaEDpzh69LDW4bQoGfnlnDWYudaranSqw/V1Os97xFMAjNdt5JtfNjdWeEKIOqp3QvXqq6+Sn59PTEwMFRUVDB8+nI4dOxIcHMxLL73UGDEKD2AwWQnE5NiQKb9mRx8cxXF9FwCyt3+jcTQty65TJSjYucZ7v2NHxxF1OzG2D8a2V+OlqHTO/JSs4orGC1IIcVn17kMVEhLCunXrSEtLY8eOHdjtdpKTkxk5cmRjxCc8hNFsI8b5lJ8UpTdHJXFXw/FD+J78EZihdTgtxv7sEjopWYTYS8AnENoOqPO5Adf+CT79hdu90vhw/V4eHTew8QIVQlxSvUeoPv74Y0wmE9dffz2PPfYYTzzxBCNHjsRsNvPxxx83RozCAxjMVoKqi9J9pQ9VcxTVt6p9gmE7lSazxtG0HPuzSumrO+rYaJNcu/fU5XQYQWlIZwIVE+q2f2Oy2honSCHEZdU7obr//vspKSk5b39ZWRn333+/S4ISnsdgshKAPOXXnMX3vJpyAghXykjftU7rcFoEu13lQE4pfZXqhCqlfhdQFAKGPwrAzbbvWHtAnrQWQiv1TqhUVUW5QH+U06dPExoa6pKghOcxmmzn2ibIlF+zpHj7khmcDEDx3m81jqZlOFlopNxkJdkrw7GjHtN91bx73UqlVzDtdPkcXPeVawMUQtRZnWuo+vXrh6IoKIrCiBEj8PY+d6rNZiMzM5PRo0c3SpDC/RnM1hqd0mXKr7myJl0Pe9YRkbte61BahAM5pQRQSSfltGNH2/71v4hvAKYek/Db8yE9c74gr3QqMSF+lz9PCOFSdU6obrrpJgB27drFqFGjCAo6N23j6+tLYmKitE0QF2Uw2WTKzw3EDxgHe56nq+UghWcLiIiM0jokj5aRV04X5RRe2CE4FoJbX9F1Qq9+CPZ8yAjdDhZt3MGUUUNdHKkQ4nLqnFDNmTMHgMTERG6//fZay84IcTm1i9Jlyq+5iorvSpYuljb2HI5sWcWgMVO0DsmjZeSX01lXNToV0+3KLxTdhbyI/sQUbsO2/WPU1CEXLM0QQjSeetdQ3Xvvvfj5+bF9+3Y+/fRTPvvsM3bu3NkYsQkPYqw5QiWNPZu1nKiqZWiOyDI0je1YgYGuyknHRkz3Bl0r+KrfAZBq+o6dJ2SRayGaWr0Tqry8PK6//noGDBjAo48+yiOPPEJKSgojRowgPz+/MWIUHsBQaSZQqWrsKQlVs+bf9QYA2hVulGVoGpGqqhzLN9BZccEIFeDf60aMumDilEJ2/LTcBREKIeqj3gnVH//4R0pLS9m/fz+FhYUUFRWxb98+SktLefTRRxsjRuEJzOXn/iw1VM1ah4FjsKhexJPL0fR9WofjsfLKTJSbrHTRnXLsaGBChY8fJR1vBKB15lIqLdKTSoimVO+E6ttvv+Wdd96hW7dz//i7d+/OP/7xD1atWuXS4IQHsRgAUBUv8Jb6u+bMLyicTD/H9FPW9pUaR+O5MvLLiaSEKKVqsfnorg2+ZqurHb0AR6hbWLcvo8HXE0LUXb0TKrvdjo/P+Z18fXx8sNvtLglKeBaLzY6vzejY8A0EKZZt9gztrgUg6GSatoF4sGP5Bjoo2Y6NsHYueVhD1zaFAr9E/BUzORsWN/h6Qoi6q3dCdf311zN9+nSys7Od+7KyspgxYwYjRtRxUU/RohhNNgKlZYJbie0/EYDulbsoKS3TOBrPdLLQSILujGMjooNrLqoo2HrfBUD3M19TUmFxzXWFEJdV74Tq73//O2VlZSQmJtKhQwc6duxIUlISZWVlvPXWW40Ro3BzBrPV2SVdkaaebqF15wHkK5EEKCYObfpG63A8UlZRBQlKdULV3mXXjblqCjZ0pOjSWbd5k8uuK4S4tDr3oaoWHx/Pjh07WLNmDYcOHUJVVbp3787IkSMbIz7hAQwmK4HOLunSg8otKAqno64iOn8Z5kPfQertWkfkcU4XGRnjTKiSXHZdJSSO0xFDSChcj2nbf+Daq112bSHExdU7oap2ww03cMMNN7gyFuGhDGaZ8nNHft3HwE/LSCpch91mR+dV7wFtcQlZxRW0a4QRKoDAgffAt+sZVPYducVGWocFuPT6QojzXdF/IdeuXcv48eOdU37jx4/n+++/d3VswkMYTdYaCyPLlJ+7aD9oLGbVm7ac4eghad7rShVmGwXlJhKrE6pw141QAUSl3IRBCaCNcpYtP33t0msLIS7simqoRo8eTXBwMNOnT+fRRx8lJCSEsWPH8ve//70xYhRurtxkPTdCJVN+bkMfEMqRgL4A5G2TRpGulFVsJIxyQpSqp1/DE117Ax8/cuJSHX88sNS11xZCXFC9E6p58+bx+uuvs2jRIh599FEeffRR/vOf//D666/z8ssvN0aMws0ZzTaClKoaKpnycysViY7ayNDT0j7BlU7XLEgPjgVf10/JxQy7B4ChlT9zNKfA5dcXQtRW74SqtLSU0aNHn7c/NTWV0tJSlwQlPIvBbCWA6mVnZITKncQPcnTe7mreT1Gh/FB2ldNFFbRT8hwbrh6dqhLS9VqKvCIJVYzs+1FGqYRobPVOqCZOnMiXX3553v5ly5YxYcIElwQlPIvRZCPI+ZSf1FC5k1aJ3Tmta4OPYuPIRpn2c5Ws4gpilaoFjEPjG+cmOi/OJjn6iYUe+VLWZRSikdX7Kb9u3brx0ksv8eOPPzJkiGNV+k2bNrF+/Xr+/Oc/8+abbzqPlbX9BDhGqKIVecrPXWXHXE3b3MXYD6+GcQ9oHY5HyCqqoJ9S6NgIbdNo92l7zb1wdCFDbdvYdfQE/TolNtq9hGjp6p1Qffjhh4SHh3PgwAEOHDjg3B8WFsaHH37o3FYURRIqAThqqKQo3X2F9B4PuYvpWLIBi9WKj/cVd1sRVc6UVhJXPUIV0ngJlV98X3J9E2ltPs7xXxbTr9OTjXYvIVq6ev+XMTMzszHiEB7MYLIS5EyoZITK3XQakEr5an+iKGH3jp/pM/B6rUNye3llpnNTfo2YUKEoGLveAnv+SpuTK7DYnsBH+okJ0SjkX5ZodBVmGwHOKT+poXI3Xj56joUMBKBkp9RRuUJeaSWxTTDlB9Bu+L0A9Ff3s2X3vka9lxAtmSRUotEZzNYaReky5eeWuowFoE1umhQ3N1C5yYrFXEm0UuLYEdK2Ue/nHZnIycDe6BSV/I3/adR7CdGSSUIlGp3RbKvRKV2m/NxRx6tuxarq6KCeIPOwjHI0xJnSSlpVj055+0FAROPftM8kALrkrcJotjb+/YRogSShEo3OaLYRgEz5ubOA0GgO+/cBIHvz/zSOxr3llZqIoyqhCokDRWn0e8YPuwsrXnRTjrNp0/pGv58QLZEkVKLRGSot8pSfBzC2HwVA+Mk1Gkfi3vLKKpumIL0GJTCSE+FDATBuX9wk9xSipbmihOqXX35h8uTJDBkyhKysLAA++eQT1q1b59LghGewm414KVV1NzLl57YSh94GQFfLAfJyT2scjfs6U6sgvXHrp2oK7H8nAH2LV1NYXtlk9xWipah3QrV06VJGjRqFv78/O3fuxGRyLClSVlYma/mJCzMbzv3Zx/VrlommEdW2IxneHfBSVDLWy1ImVyqv1ESMUuTYCG7dZPdtPeBmjIo/bZUCtvyyqsnuK0RLUe+E6sUXX+Tdd9/l/fffx8fHx7l/6NCh7Nixw6XBCc+gs5QDYPcJBJ3MMruzgjaOxZL9jsoP5Ct1psx07gm/oFZNd2PfAE63cvz9KXs+b7r7CtFC1PunW3p6Otdcc815+0NCQiguLnZFTMKD2O0qisXo2JD6KbfXatCtAHQzbsNQVqJxNO7pTGkl0UqxYyMwuknvHTV0CgADjT9zKr+4Se8thKerd0IVGxvL0aNHz9u/bt062rdv75KghOeotNZ4wk8SKreX0HUA2Uor/BQLB9ct0zoct1RQZiIKDUaogIieIynSRRCulLP3xyVNem8hPF29E6qHHnqI6dOns3nzZhRFITs7m88++4zHHnuMhx9+uDFiFG7MYLIRoDjq7BRfqZ9yd4pOx+mY6wCwHVyhcTTu6azBXGPKL6Zpb67z4kzCBACC05dKk1YhXKjea/k98cQTlJSUcN1111FZWck111yDXq/nscce45FHHmmMGIUbM5qtBFCVUPnICJUnCE+5Gb5ZTNeS9VRWVuLn56d1SG7DYrNTWWEgxK9qGrypEyqgzbX3Q+a/GWjZyuETp+iS2K7JYxDCE11RhfBLL71EQUEBW7ZsYdOmTeTn5/PCCy+4OjbhAYxmG/5VCRUyQuUROqaMoIgQQhUD+9Z/rXU4bqXIaCaSUgBUL1/wC2vyGIIT+nHaNwm9YuXYj582+f2F8FRX/MhVQEAA/fv3Z+DAgQQFSW8hcWFGs9U55YeMUHkExcuHY9HXA2Dd84XG0biXQoPZWZCuBMY0SZf0Cynv/BsA4k4sw26XaT8hXKHeCZXBYOCZZ55h6NChdOzYkfbt29d6CVGTwWTDX4rSPU5wclWTz+KfMJmkSWRdFZabiXLWTzXtE341JV53L3ZVoY96iD17d2kWhxCepN41VL/97W/56aefmDJlCrGxsSga/YYl3IPRbCNQpvw8TscBoyj8LoQIpZRdG1bS97pbtQ7JLdQuSG/aJ/xq8ouM53BQCp0N28jf8An06adZLEJ4inonVKtWrWLlypUMGzasMeIRHkam/DyTztuHjKgRRBR8iWn3UpCEqk4KDeZzLROauAfVefrcDhu20fnMSsyWBfj6eGkbjxBurt5TfuHh4URERDRGLJe1cuVKBg0ahL+/P1FRUdxyyy213l+7di1Dhw4lODiY2NhYZs2ahdVqveQ1MzIyuPnmm4mOjiYkJIRJkyZx5syZet9bXJjBXHPKT0aoPElQP0cS1aX4J8xVS1CJSztbo4ZKyxEqgA7X3EkFehLIZdem7zWNRQhPUO+E6oUXXuDZZ5/FaDQ2RjwXtXTpUqZMmcL999/P7t27Wb9+PXfddZfz/T179jB27FhGjx7Nzp07Wbx4McuXL+fJJ5+86DUNBgOpqakoikJaWhrr16/HbDYzYcIE7HZ7ne8tLq6iRtsEWcfPs3QeNJqzhBJGOYc2ytN+dVFoMNWooWr6lgk1efkFczTiWgAqt32maSxCeIJ6T/m99tprZGRk0KpVKxITE2ut5wc0ynp+VquV6dOns2DBAqZOnerc36VLF+efFy9eTO/evXn22WcB6NixI/PmzePOO+9kzpw5BAcHn3fd9evXc/z4cXbu3ElISAgACxcuJCIigrS0NEaOHFmne1+IyWRyLhwNUFpaemUf3s0ZTDbiqqf8pCjdo3h5+3A08joiz35F5e6lcK1M+11OocFMlFL134LAKG2DAYIGToZvv6N38VrKjUaCAuSXHiGuVL0TqptuuqkRwri0HTt2kJWVhU6no1+/fuTm5tK3b19effVVevToATgSmF83GPT396eyspLt27dz7bXXnnddk8mEoijo9XrnPj8/P3Q6HevWrWPkyJF1uveFzJs3j+eee841X4Abq9nYUxIqzxPY7zfw/Vd0LnJM+/nW+Lckzne23EwYjsXCCYjUNhggccAYzn4XTiRFbPjhfwwdd4/WIQnhtuqdUM2ZM6cx4rikY8eOATB37lz++te/kpiYyGuvvcbw4cM5fPgwERERjBo1ijfeeINFixYxadIkcnNzefHFFwHIycm54HUHDx5MYGAgs2bN4uWXX0ZVVWbNmoXdbneeU5d7X8js2bOZOXOmc7u0tJT4+HiXfSfuwmi2EahU1VDJlJ/H6TZ4DGe/DyWSEnasX0Hy9b/ROqRmrdBgJkIpc2w0g4RK8fLhROxYIrM/w3vff0ESKiGu2BU39nSFuXPnoijKJV/btm1z1jM99dRT3HrrraSkpLBw4UIURWHJEscCn6mpqSxYsIBp06ah1+vp3Lkz48aNA8DL68JPr0RHR7NkyRJWrFhBUFAQoaGhlJSUkJyc7DynLve+EL1eT0hISK1XS1S7U7qMUHkaL29vjkWPAMC8SxbbvZzCctO5ESp/bR7u+bXYa+4DoI9xEzm5F/7lUwhxefUeobLZbLz++ut8/vnnnDx5ErPZXOv9wsLCOl/rkUce4Y477rjkMYmJiZSVOX6j6969u3O/Xq+nffv2nDx50rlv5syZzJgxg5ycHMLDwzl+/DizZ88mKSnpotdPTU0lIyODgoICvL29CQsLo3Xr1s5zYmNj63RvcWEGkxSle7rwgXfCyi/oWfIThvIyAoPOr1cUYLOrWCpK8NHbHDsCmklC1WUAJ70TaWc9zqG1HxN79yytQxLCLdV7hOq5557jr3/9K5MmTaKkpISZM2dyyy23oNPpmDt3br2uFRUVRdeuXS/58vPzIyUlBb1eT3p6uvNci8XC8ePHSUhIqHVNRVGIi4vD39+fRYsWER8fT3Jycp1iCQsLIy0tjby8PCZOnAhQr3uL81VYbPgr0tjTk3VIGUGuEk2QUsH+H/+rdTjNVmmFhZCq0SnV2x98/DWOqIqiUNzJ8UBBVMYXqKosRSPElah3QvXZZ5/x/vvv89hjj+Ht7c2dd97JBx98wLPPPsumTZsaI0ZCQkKYNm0ac+bMYfXq1aSnp/P73/8egNtuu8153IIFC9i7dy/79+/nhRdeYP78+bz55pvO6busrCy6du3Kli1bnOcsXLiQTZs2kZGRwaeffsptt93GjBkznE/x1fXe4sIqzLYaI1Qy5eeJFJ0XJ9o4ptd99v9P42iar5IKCxE4RtuVZlA/VVPHkQ9gVXX0sh9i3+6tWocjhFuq95Rfbm4uvXr1AiAoKIiSEkdPlfHjx/PMM8+4NroaFixYgLe3N1OmTKGiooJBgwaRlpZGeHi485hVq1bx0ksvYTKZ6NOnD8uWLWPMmDHO9y0WC+np6bV6aKWnpzN79mwKCwtJTEzkqaeeYsaMGfW+t7iwCotNnvJrAVpfdS8s/hc9jVsozM8hIjpW65CanZIKC+FK9RN+zeu/HQGRbdkfMpgeZRs4u+4j6DtQ65CEcDv1Tqjatm1LTk4O7dq1o2PHjqxevZrk5GS2bt1aq/2Aq/n4+PDqq6/y6quvXvSYtLS0S14jMTHxvOHs+fPnM3/+/AbfW1yY2WxGr1gcG5JQeayErslkeLWng+0Yh3/4lMGTHtc6pGanuMJCWNUIVXMpSK/Jp/+98MMGeuZ/g7GiggD/ZjIlKYSbqPeU380338zatWsBmD59Os888wydOnXinnvu4YEHHnB5gMK9KZYaHfWlKN2j5SfdCEDYkS80jqR5Kqmw1GiZ0PwSqk7DbqGQUKKUEnalyRObQtRXvUeoao7m/OY3vyE+Pp7169fTsWNHZyG3EE5VCZWq6FC8pemjJ0u67h7sR96gq+UAOSfSiU249GoCLU1JhYUwpfk09fw1xduX420mEpH1Cb57P5OeVELUU71GqCwWC/fff7+z2SXAoEGDmDlzpiRT4oK8rFUJlXcAKIrG0YjG1KpNew7o+wBwPO1f2gbTDJUYzYQ3sx5Uv9ZmxIMA9K3YQtapTI2jEcK91Cuh8vHx4csvv2ysWISHUVUVpTqhkvqpFqGym+Px+9iTy1FrLDAuqovSm++UH0Cr9n047Nsdb8XOsbUfah2OEG7limqovvrqq0YIRXgas82Ovyo9qFqS7iMmU6n6kKie5sC2H7UOp1kpqbAQ3oyL0qsZut8JQLsTX2C3SVIsRF3Vu4aqY8eOvPDCC2zYsIGUlBQCA2uPPDz66KMuC064t0qz3bmOn05GqFqEgJAIdoRdS3LJGso2LoSB12sdUrNRbKzZNqH51VBV6zbyHip2vUiCmsWuTavpO2y01iEJ4RbqnVB98MEHhIWFsX37drZv317rPUVRJKESThWWc+v4KZJQtRj+g+6D1WvoUbgGo6GUgMCWuY7lr9UuSm9efahq8gsKY2fECPoVfoNh079AEioh6qTeCVVmphQqirqprNnUU1omtBhdB48he00r4jjDlu8/Y+CNv9c6pGahZqf05jzlBxB59W9h2Tf0K00jPz+P6OgYrUMSotmrdw1VTaqqyrpP4qIqLDYCFOmS3tIoOi9OtrsZgID9izSOpvmoMBrwV6oWk/cP0zSWy2nX93pOebUjQDFx8Lv3tQ5HCLdwRQnVhx9+SM+ePfHz88PPz4+ePXvywQcfuDo24eZqTvnJCFXLkjjit9hVhZ7m3WRnHtQ6nGbBXulYpktFAX2oxtFchqJwtttkAOIzFklxuhB1UO+E6plnnmH69OlMmDCBJUuWsGTJEiZMmMCMGTN4+umnGyNG4aYqayVUsoxFS9K6XSf2+SUDcHLtexpHoz2z1Y6PpWq6Tx8MugZNDjSJrqN+RwV6ktRT7Nn4rdbhCNHs1ftf9TvvvMP777/PvHnzmDhxIhMnTmTevHm89957vPvuu40Ro3BTlRYbftVTHDJC1eKYet0FQNLpZVgtFo2j0VZJhYUQqpZh8mvmo1NV/ILDORCZCoB5k0z7CXE59U6obDYb/fv3P29/SkoKVqvVJUEJz1BhtuNPdULlp20wosn1GnEnJQTSirPs/fkrrcPRVEmFhWDFkVApfmHaBlMP0dc5HijoW/YTebmnNI5GiOat3gnV5MmTeeedd87b/95773H33Xe7JCjhGSotNvyqEypvmfJrafz8AzkcMxYA+7aFGkejLXccoQJo13MYR30646vYOPqtzEAIcSl1apswc+ZM558VReGDDz5g9erVDB48GIBNmzZx6tQp7rlHFtMU51RYbOeeapIaqhap9YiHYdES+ho3kHPyKLHtOmodkiZKKsyEKAbHhhslVAAlPe6BXU+TeOJzrJa5ePv4aB2SEM1SnUaodu7c6Xzt3buXlJQUoqOjycjIICMjg+joaJKTk9m/f39jxyvciKMoXRKqliy+SzIHfHvjpagc/+5trcPRTFml1S1HqAB6pN5HKYHEqXns+vELrcMRotmq0wjVDz/80NhxCA9Ua8pPEqoWy9T3Ptgyk45ZX2Axz8PHV691SE2urNLqtiNUfgHB7Gs9nv65/0XZ9iHccLvWIQnRLDX/Z3eF26qoVUMlRektVc+Rd1NAGNEUsW/tf7QORxPlJvcdoQJoN+qPAPSr3MLRQ7s1jkaI5qneCVVlZSULFixg7Nix9O/fn+Tk5FovIapVmO1SQyXw8fXjSBtH53TfXS2zOL2s0kKI4r4JVUxSL/YFDkKnqJxZ8zetwxGiWar3Wn4PPPAAa9as4Te/+Q0DBw5EUZTGiEt4gEqrTPkJh4TUh7F99C96mHZz8vAu2nXuq3VITaq80koI7jnlV8132B9g9Wb6FnxN8dl8wiKjtQ5JiGal3gnVypUr+eabbxg2bFhjxCM8SKXZhl7aJgggLqEzOwMH08+4kaw1f6dd55a1VFWZyerWI1QAnQZP4MTadiTYTrLhm7cZOmWO1iEJ0azUe8qvTZs2BAcHN0YswsPUbpsgNVQtne/g3wHQM+9rSooLNY6mabnzU37VFJ2O/O4PAJB47NMW3/1eiF+rd0L12muvMWvWLE6cONEY8QgPUvspP1l6pqXrftWNnNK1IVipYP/KltVCodyNn/KrqeeYBykimDg1jz1rF2kdjhDNSr0Tqv79+1NZWUn79u0JDg4mIiKi1kuIavKUn6hJ0XmR280xwpFw9OMWNcLh7k/5VfMLCCK9za0A6Lf/U+NohGhe6l1Ddeedd5KVlcXLL79Mq1atpChdXFSFWTqli9p6jXuI4v2v00Y9w460RSSPahmrK1RUGM/9W/AL0TaYBuo49k9Y3vuEHpZ9HNj+M91TrtE6JCGahXonVBs2bGDjxo306dOnMeIRHkS1VJzbkIRK4GgSubPNbxiS9S/8t70LLSShwlR67s96906ootoksTPsevqVrKEs7XWQhEoI4Aqm/Lp27UpFRcXlDxQtnr1mQiVP+YkqHcbOwKx60c2yn6O7ftY6nCahVCVUdt9g0HlpHE3DRY56DID+5T9w/IgsOSYEXEFCNX/+fP785z/z448/cvbsWUpLS2u9hKimVCVUquINXvUeDBUeKqZNIrtDrwegOM3zm0SarDb8beWODTeun6qpXffB7PMfgJeikrPq/7QOR4hmod4J1ejRo9m4cSMjRowgJiaG8PBwwsPDCQsLIzw8vDFiFG6qesrPLtN94lfCR/wJgD4lP5B94oi2wTQyg8nm7EGl+HtGQgXgc81MAPqdXUl+zkmNoxFCe/UeNpCFkkVdKZZK8EGe8BPn6djnKg5804fupt0c//r/iPvD+1qH1GjKKi0EVz3hp+g9J6HqMngMh9O60NmSzs4VrxH9O88fbRTiUuqdUA0fPrwx4hAexmZX8bZXOjZkhEpcgHrVDFh7H33zlnE2by6RMW20DqlRlFVaCVKq6gn1QdoG40qKgmHAo7DhD/TI/pyykjkEh0rrHNFy1XvKD+CXX35h8uTJDB06lKysLAA++eQT1q1b59LghPsyWW34VT0mrkhCJS6g+7AbOerdkQDFxOHlr2odTqMpN1kJoiqh8vWghAroM+JOTujaEoKRvcve0DocITRV74Rq6dKljBo1Cn9/f3bs2IHJZAKgrKyMl19+2eUBCvdkstidTT0loRIXouh0lA14FIAepxdTXuqZy9GUVVoJpGq0Vu9Zy3bpvLzI7z0NgE7H/o3BUK5xREJop94J1Ysvvsi7777L+++/j4+Pj3P/0KFD2bFjh0uDE+7LZJWESlxen5GTnSMcB5a9rnU4jaLcZCFI8cyECqDv2Ac5o0QRTTE7v5I6KtFy1TuhSk9P55przm/kFhISQnFxsStiEh7AZK25jp8kVOLCdF5e5Pb6PQAdMv5NpdHzRjjKK60EVS8742FTfgDevn6c7un4O+xy5H0qZJRKtFD1TqhiY2M5evToefvXrVtH+/btXRKUcH+VFvu5pTakqae4hH5jHySHaCIpYefyt7QOx+VKK60EevAIFUDvCY9UjVIVsUtqqUQLVe+E6qGHHmL69Ols3rwZRVHIzs7ms88+47HHHuPhhx9ujBiFG5IRKlFXvno9p7s/CED7Q+9RWWHQOCLXchSlVydUnjdCBeDj68fJHo5Rqk6H3/fIkUYhLqfeCdUTTzzBTTfdxHXXXUd5eTnXXHMNv/3tb3nooYd45JFHGiNG4YZq1lDhI32oxKX1mfhHzhBJKwrZ+aVn1VI5pvw88ym/mvpMeIQcoomimN0ySiVaoCtqm/DSSy9RUFDAli1b2LRpE/n5+bzwwguujk24MZPFjp/ieAJUpvzE5fj6BXCyp2OEu9Ph96kwlGkckesYzFYCnX2oPHPKD8BX78eJqlqqDunvY/Sgv0Mh6uKKEiqAgIAA+vfvz8CBAwkK8tzfusSVcUz5WRwbMuUn6qDvxEfIVloRRTF7vvCcvlRGk81j2yb8WvKER8hWYoiimB1LX9M6HCGaVJ07pT/wwAN1Ou6jjz664mCE56g95ScJlbg8H18/Tvf6I3F7nqZLxocYy/5EQLD7rw9qMFsJVjx/yg8c9XBn+vyRuF3P0OPYBxQXPUJYeJTWYQnRJOo8QvWvf/2LH374geLiYoqKii76EgIcI1T+VE/5SQ2VqJt+Ex7ipBJHGGXsWfqK1uG4RIXZRiAeuPTMRfQZ/3tO6toSThn7l7yodThCNJk6j1BNmzaNxYsXc+zYMR544AEmT55MRISs2yQuzGSxE1jdNsEnQNtghNvw8fHlTPIM2m1/nO6Z/6aoYAbhUa20DqtBKkxmAqvrCfUh2gbTBHTePhQNmU279X8gOesz8rJmENMmQeuwhGh0dR6hevvtt8nJyWHWrFmsWLGC+Ph4Jk2axHfffYeqqo0Zo3BDjim/6hoqGaESdZcydiqZXomEKEYOff6s1uE0mGqu0ULAw6f8qvUecReHfLrjr5g5vvRprcMRoknUqyhdr9dz5513smbNGg4cOECPHj14+OGHSUhIoLxc+o6IcxxF6fKUn6g/nZcXhmueASDlzP/IOnZI44gayOToq6XqvMFbr3EwTUPR6VBHzgUg+ezXnDq8S9N4hGgKV/yUn6IoKIqCqqrY7XZXxiQ8gKNtghSliyvT85pb2afvh69iJffL2VqH0yA6i6N9gN0nCBRF42iaTrdBo9jpPwRvxU7+V09pHY4Qja5eCZXJZGLRokXccMMNdOnShb179/L3v/+dkydPSusEUYs85ScaRFHwG/cydlUhpSyNozt+0jqiK2K3q3hZqjq/e3jLhAuJuPFlbKpCsnEde9av0jocIRpVnROqhx9+mNjYWF555RXGjx/P6dOnWbJkCWPHjkWnu+KBLuGhHE/5Va/lJzVUov469h7KtrBRAFi+/QuqG46EV1hsBFW1TFBawBN+v5bQNZmd0TcCELD2L1gtFo0jEqLx1Pkpv3fffZd27dqRlJTETz/9xE8/Xfg3xi+++MJlwQn3ZbLWnPKTp/zElYm/9SUqP1xLN/M+tq/+lJTR92gdUr0YzOfW8VNa4AgVQKc75lH299V0tB9j01dvMvi2P2sdkhCNos5DS/fccw/XXXcdYWFhhIaGXvQlBDhqqPSylp9ooNh2HdkdP8Xx580vUGFwr4dfHF3Sq0eoWmZCFRoVx8EujnVeu+x/g5KifI0jEqJx1HmE6l//+lcjhiE8jUz5CVfpfcdznHl1GXFqHhsWP8fQqQu0DqnODGarc8qvJTT1vJh+tz7G8fmLSLSfYvOivzDo4fe1DkkIl5PiJ9EoTFY7elnLT7iAf1AIWYMcvYySTy4kO9N92igYzTbnlB++LXOECsDHV0/JNc8DjlYYxw5s0zgiIVxPEirRKCwWCz6KzbEhI1SigfqNuo99vn3xUyzkLZmpdTh1ZjTbCJQRKgD6XHsLuwKG4q3YMXw5E7vN/R4yEOJSJKESjcJuqTi3IQmVaCBFpyPgptewqF70Na5nzw9LtA6pTowmK0HOdfxa7ghVtdjbX6dC9aWXZTdbl/9D63CEcClJqETjkIRKuFj77v3Z1noSABE/P43RUKZxRJdnMNsIUqqn/Fr2CBVAq4Su7O04DYDOu1+hKD9H44iEcB1JqETjsDh+iNh1PiB9yoSL9L77ZfKJoK2ay65P/6J1OJdlNFsJrK6hauFTftX63f40mbpEwikj47M/aR2OEC7jVj/pVq5cyaBBg/D39ycqKopbbrml1vtr165l6NChBAcHExsby6xZs7BarZe8ZkZGBjfffDPR0dGEhIQwadIkzpw5U+uYw4cPc+ONNxIVFUVISAjDhg3jhx9+cPnn8ySqtSqh8pLRKeE6gSER5Fz1AgADsz/l6O71Gkd0aQaTjSCMjg19iLbBNBM+vnpMY/6KXVXoX/wt+9d/rXVIQriE2yRUS5cuZcqUKdx///3s3r2b9evXc9dddznf37NnD2PHjmX06NHs3LmTxYsXs3z5cp588smLXtNgMJCamoqiKKSlpbF+/XrMZjMTJkyotT7huHHjsFqtpKWlsX37dvr27cv48ePJzc1t1M/szpSqhEqV6T7hYr1HTmZH0HC8FTss/yM2a/Ptvm00W2XK7wK6DhjB5qibAAj5/nGMRvfqLybEBaluwGKxqG3atFE/+OCDix4ze/ZstX///rX2ffnll6qfn59aWlp6wXO+++47VafTqSUlJc59hYWFKqCuWbNGVVVVzc/PVwH1559/dh5TWlqqAur3339f589QUlKiArXu5ckeeOFtVZ0TopoW9NA6FOGB8nNOqMVzYlV1Toi66ZNntQ7nop5bvl89/Ew3VZ0ToqrHftI6nGaltKhAzZuTqKpzQtT1b0/TOhwhLqquP7/dYoRqx44dZGVlodPp6NevH7GxsYwZM4b9+/c7jzGZTPj51R4N8ff3p7Kyku3bt1/wuiaTCUVR0Ov1zn1+fn7odDrWrVsHQGRkJN26dePjjz/GYDBgtVr55z//SatWrUhJSblozCaTidLS0lqvlkSxVf1WLl3SRSOIat2Og71mAdDnyD84cWSvxhFdmNFsPdc2QUaoagkOiyR3+HwABucu4sDm1RpHJETDuEVCdezYMQDmzp3L008/zddff014eDjDhw+nsLAQgFGjRrFhwwYWLVqEzWYjKyuLF198EYCcnAs/STJ48GACAwOZNWsWRqMRg8HA448/jt1ud56jKApr1qxh586dBAcH4+fnx+uvv863335LWFjYRWOeN29erSV54uPjXfiNNH9e1QmVt/7SBwpxhQbd/Ef26fvhp1gw/vfBZrnwrqFmY09pm3CeXtfdztawsegUldBv/0hFecv6xVN4Fk0Tqrlz56IoyiVf27Ztc9YzPfXUU9x6662kpKSwcOFCFEVhyRJHP5rU1FQWLFjAtGnT0Ov1dO7cmXHjxgHg5eV1wftHR0ezZMkSVqxYQVBQEKGhoZSUlJCcnOw8R1VVHn74YWJiYvjll1/YsmULN954I+PHj79oogYwe/ZsSkpKnK9Tp0658qtr9nS26nX8pEu6aByKTkfM5Pcox59u1oNs/c8crUM6j7HSQoCzU3qgtsE0U13u+zu5RNFGzWXvv2doHY4QV0zThOqRRx7h4MGDl3z17NmT2NhYALp37+48V6/X0759e06ePOncN3PmTIqLizl58iQFBQXceOONACQlJV00htTUVDIyMsjLy6OgoIBPPvmErKws5zlpaWl8/fXXLF68mGHDhpGcnMzbb7+Nv78///73vy96Xb1eT0hISK1XS2G12fFRTQDoJKESjSgmvjOH+j0DQP9j73JszwaNI6rNbK5wFM+DTPldREhYJLnXOtZnHJj/P/b8vEzjiIS4MnVeHLkxREVFERUVddnjUlJS0Ov1pKenc9VVVwGOpU2OHz9OQkJCrWMVRSEuLg6ARYsWER8fT3Jycp1iAUcClZeXx8SJEwEwGh2PPOt+1UtJp9PVehJQnGOy2tErjukXRWqoRCNLmfB7dhxeRbLhF7y++h2mTpvQ+zeP5EU11Xh6TUaoLqrvtbewee8yBp39ilZpMyjsNpCI6FitwxKiXtyihiokJIRp06YxZ84cVq9eTXp6Or///e8BuO2225zHLViwgL1797J//35eeOEF5s+fz5tvvumcvsvKyqJr165s2bLFec7ChQvZtGkTGRkZfPrpp9x2223MmDGDLl26ADBkyBDCw8O599572b17N4cPH+bxxx8nMzPTOaUoajNZ7fjhmPKTESrR2BSdjsR736OAMBLsp9j5UTOaNjI7Eiqblz/oLlx6IBx63/8mp3RtaMVZTiy8H1V+YRVuxi0SKnAkS3fccQdTpkxhwIABnDhxgrS0NMLDw53HrFq1iquvvpr+/fuzcuVKli1bxk033eR832KxkJ6e7hx1AkhPT+emm26iW7duPP/88zz11FO8+uqrzvejoqL49ttvKS8v5/rrr6d///6sW7eOZcuW0adPnyb57O7GZLU5EyoZoRJNISImjqxrHNNGg/M/Z8eaRRpHVMVkAMDuI6NTl+MfFIrlpg8wq970M25k6+evaB2SEPWiqKqqah1ES1BaWuosevf0eqrMAgNLX5/OYz5LIPlemPim1iGJFmLL2w8yMO9zSgik4oGfaN2uk6bx3PfcW/xLfRpzSAK+M/doGou72Piflxhy+P8wqT7k3LaSxJ6DtA5JtHB1/fntNiNUwn2YrDb8lKqn/KRTumhCfae+xWHvzoRioOSTyVjMJk3j8bI6RqikIL3uBt0+m53+g9ErFnRL76estEjrkISoE0mohMuZLHb0VPUEkik/0YR89X4E3vUJpWoAXSyH2LnwT5rFYrer+NgcTT0VvUz51ZXOS0fC/QvJI4J2ahaH3pN6KuEeJKESLlezKB1vKUoXTatN+64cHuyovxmY8x92rP5UkzhMVjuBVT2oFGnqWS8RMXEUj3sPi+rFgPIf2PyfF7QOSYjLkoRKuJzJajs3QiWd0oUG+o+5h00xtwPQef1jHD944eWnGlOFxUZA1cLIXnqZ8quvzgNuYEf3JwDof+QNDm74WuOIhLg0SaiEy5ks9nM1VNI2QWik/2/f4oBvb4KUCrw/v5uSovwmvX+F5dyyM4okVFdk4G1PsDV0FN6Kndarf0/uqaNahyTERUlCJVyu9pSfjFAJbXj76ol98L/kEE1bNYdT/7wdm7Xp1vurMJ8boZKi9Cuj6HT0+N2HHPVqTzillP7rdgyy3p9opiShEi5Xaak55ScjVEI74dFxGG75GKOqp2fldra+/8cmu3elxeasoZIu6VcuIDCYwHsWU0wwnW1HSX/7Tuw2m9ZhCXEeSaiEy5msNaf85Ck/oa2OvYeyf+A8AAafWcSmz1+9zBmuUVEzoZIpvwaJTejCmbEfYVa9STauY8sHTZcYC1FXklAJl6s9QiUJldDegHFT2ZzwO8ef97/I7rWLG/2elRYbgTLl5zJdBqayp//LAAzO+YytS1/TOCIhapOESrhcpdWGHmnsKZqXgfe+wtawsXgpKp1+fpSMXT836v0qzDYCcfShkik/1+g/4SHWxz8EQL89L7Jz7RKNIxLiHEmohMuZLDWL0iWhEs2DotPR9+F/sUefQoBiIuyryWQdO9Bo93O0Tajq1C4jVC4z9P75zif/uvz8Bw5s+V7rkIQAJKESjaDSakOvSKd00fz4+OpJfPh/HPVqTyQlqJ/cTF7W8Ua5V+2idEmoXEXR6ej7h4/Z6z+AAMVE22/uIXP/Zq3DEkISKuF6tUeo5Ck/0byEhEYQNvUrspVWtFVzqfhwPIV5WS6/T60pPylKdykfXz86/uELDvl0JwQDwUsmkd2Io41C1IUkVMLlahelSx8q0fxExSXAPcvJI4IE+ymK/jme0mLXNv6ssNgJdE75SQ2Vq/kHhRD7+2Vk6BKJohj1k5vIPiGNP4V2JKESLmey2M6NUEmndNFMxSV1peLOLzlLKB1sx8j9xzjKSgpddv0Ki40A6UPVqEIjYgh9cAVZSmvaqGew/2ucdFMXmpGESricxWLCS1EdGzJCJZqxhC59Kbzlc0oIpLMlnay3xlJSfNYl1640Wwhytk2QxZEbS1RsO3weWOmcwrV9NJYzJ49oHZZogSShEi5nM1ec25AaKtHMdeo9mPybFlNKIF2tB8l7K5WSs7kNvq6t0nBuQ0aoGlVMfEe8pn7D6eqRqoVjyTmRrnVYooWRhEq4nGqpPLchI1TCDXTsew0Fty6liBA62Y5S+I9UCs+catA17aZyx/+ik6nvJtCqbUe8HviGU0ossWoeLBzLicO7tQ5LtCCSUAmXUy2OESqbTg+KonE0QtRN+15DKLn9K/IJJ8l+AsO7qWSfuPKpI9XsSKis3gHy76CJxMZ3wPe333BK14ZYCgj5zziO7GzcBq5CVJOESrhc9QiVXZp6CjeT2C0F490ryCWaeDUb74WpZOy9sh5HStUIldUrwJUhisto1aY9QdPWcMS7I+GUEffVbez/5SutwxItgCRUwvWsjoRK9ZLpPuF+Ejr1Qjf1W07o4omhkFb/u5H9vyyr93UUi6OGyuYj9VNNLTymDbGPfs9e374EKpV0+v4Btq54X+uwhIeThEq4XnVCJSNUwk3FxHck7I8/sN+3F0FKBZ2/v5+ty96u1zW8LGUA2OUJP00EhYTTacYqtgVdh69iY8D2x1j/0SxUu13r0ISHkoRKuJyuKqGSdfyEOwsNj6bDjNVsDboOH8XGgJ2z2fDPR7FZrXU639dSCkhCpSU//wCSZyxlS+s7ABh28l12vPEbTBXlGkcmPJEkVMLlFFtVd2hJqISb8/MPIGXGUjbHTQFgaM6/2ffaWMrq0KvK1+qY8lP9Qhs1RnFpOi8vBk77J1t6zsGiepFSupYTr11HfvYJrUMTHkYSKuFy1SNUijwqLjyAzsuLQb/7O9tTXqFS9aFPxWaK37yaU4d3XfI8P5tjyg99SOMHKS5r4G9mcuiGjykmiM7Ww6jvXcv+jd9qHZbwIJJQCZey2uz4qo4RKkmohCdJmTCNUzd/yRkiibdnEfbZaLZ+89FFj9fbHNNKioxQNRu9rhpP+eTvnA8cdPn2TjZ/OlfqqoRLSEIlXKrSaiegakFYnV6ebhKepVPfq9E99CMHfXsSrFQwYMsMNr91L5XG82tyAuyOKT+vgLAmjlJcStuOPYmZuZ5tISPxVuwMOvo6u18bT0lhgdahCTcnCZVwqUqLDX8koRKeKzq2HZ0eS2Nz3L0ADDr7FTmvDeNU+k7nMTa7SoBanVDJCFVz4x8USsqflrCp+1OYVW/6GtZjeHOITAGKBpGESrhUpcVGQFVCpfhKQ0Phmbx99Qz63ZvsuW4hZwklyXacyP+MYtN//w+7zUalxUYIRgB8ZISqWVJ0OgZPeoLMm74iW2lFHHl0/fYONr3/KBZz5eUvIMSvSEIlXKrSYnNO+SENDYWH6z38Fmy/W8defT8CFBODD77Egf8bwalj6UQrJQB4B8doHKW4lC79riZ0xia2ho3BS1EZnPVvTr0yhMwD27QOTbgZSaiES1Va7PhT9dudryRUwvPFxLWjxxNr2dL1CSpUX3qadtJm8Qi66U4CoAtprXGE4nICQyIY8KfFbB/0JkUE0952jLj/jmb9wicxm2S0StSNJFTCpWpO+SFTfqKF0Hl5MfCOpyiY/D0HvbsRrFScezM4TrvARL2kjLkXy4Pr2eM/CL1iYdiJd8h+ZQBHtq3VOjThBiShEi5VabHjL1N+ooWK79SHTrN+YX2HP1Gh+nJA3wcCI7UOS9RDTJsEej3+LTv6L6CQEBLtJ+mw4lY2//1+iovkSUBxcZJQCZeSESrR0nn7+DBsynOos0/R+fE0rcMRV0DR6Uge/zuUR7ayOXQ0OkVlUMEX2P/Wj81LXqvz8kOiZZGESrhUhcVGoFJVc+AjCZVouQL8/PD29tY6DNEA4VGtGTTjv+wb+QmndG2IoJRB+5/nxLz+HNr4jdbhiWZGEirhUjX7UElRuhDCE/S8aiKtn9zJ5i6PU0og7W2ZdP3uTnb83zgyD2zXOjzRTEhCJVyq0mo/N+UnI1RCCA/h46tn0J1PY3l4Gxsjb8amKiQb15Hw3xFsff02cjIPaB2i0JgkVMKlTBbbuaJ0qaESQniYyJg4hvzxX2TduZZdgVejU1QGlKwm6l9XseXNKWSfOKx1iEIjklAJl6pdlB6kbTBCCNFI2nVNoe/jX3N44gp261PwUWwMLFxO9EeD2fL67Zw4JFOBLY0kVMKlKmomVDLlJ4TwcJ2Tr6HP7DQOjlrMAX1fR2JV8i0Ji69n9/+N4cCW71FVVeswRROQhEq4lMlsQa9YHBtSlC6EaCG6DRlD99k/cWTiMnYEXI1dVehj3ED3b27l8EsD2frV25gqDVqHKRqRJFTCpeymGv/BkBEqIUQL0yn5WpKf+Jrjd/7IlvBxmFVvulgPM2DXbIzzu7Ll/UfJOZGudZiiEUiTFOFS1QmVHR06b73G0QghhDbad+1L+67/oSgvix3f/IPE4/+lNQUMzPo3to8+ZrdfCpbed9Lz+jvx85fRfE8gI1TCtSxGAKxe/qAoGgcjhBDaCo9pw+D7XibyqYNsHfwW+/R98VJU+pi20X/rnzG/0omtb93DoW1rUe12rcMVDSAjVMK1TOUA2Lz9NQ5ECCGaDx8fXwaMvgdG30POsX2cSPuQxNPLaU0BA84ug6+XcWplLKda30DM4Nvp0Gsoik7GPNyJJFTCpRSrY4TK5i31U0IIcSGx7XsS2/51bLZX2bN+JZXbPqFnyU/Ek0N8zsfw5cdkfdWa07E3ENr/Njr3uRqdlyRXzZ0kVMKllKopP7skVEIIcUleXl70vmYiXDORSkMJO3/6H+qBr+hWtok25NIm+xNY/gn5y8M5FjYU3+5j6DJkPAHB4VqHLi5AEirhUrqqESpVnvATQog68wsMpd/YqTB2KuVlJWz9+X94HVxG17JNRCtFRBevhA0rMa+fzj6/3pS2vY7o3qNo33MAXl5eWocvkIRKuJiXM6GSp1aEEOJKBAWHMmDcVBg3FXOlkf1bvqNs7ze0KfiFeHLoadoJGTsh468UfRlMZmA/rO2uonXfG4jv1FdqrzQiCZVwKV+ro22C6heicSRCCOH+fP0C6HHNzXDNzaiqSubhPZzZvoLAUz/SwbiHcKWMcMPPcPBnOPgyBYRxPKAXltgUwjoPJanXMPwCZBmwpiAJlXApvc2RUCn6YI0jEUIIz6IoCkld+pDUpQ/wNBaziUO7f6Fw31qCczbQybSfKKWYKOMvkPELZLyB5Rsvjvi0pzC8D0rbAUR3Hkh8x154+/ho/XE8jiRUwqX0dgMooOhlhEoIIRqTj6+ergNGwoCRAJgrK0jf8zPF6evxzd1OvGEfUUoxnaxHIP8I5P8PdkKF6kuGTxIloV3RxfYmrH0ysZ1SCAwO1fgTuTdJqIRL+dmN4AVe/pJQCSFEU/L186fLwFEwcBQAqt1O1okjZO3/GfvJrYQX7SHefIwAxUQXazqcTYezy2Af2FSF07pWFPglUhnaAa9WXQlr15O4jn0IDI3U+JO5B0mohMtYbHaCcBSlS0IlhBDaUnQ62iR1oU1SF+BBAOxWK6cz95N7eCvm07sJLNxPW9NRIpUS2qq5tK3IhYpNkAvsdlyngDByfRMoD2yHPSwRfXR7QuM6EZPYlZCwaM0+X3MjCZVwmUqLjSAqAPCWhEoIIZodnbc3bTv1oW2nPrX2F505Re7RXZSePgD56QSUZtDKfJIYComimChzMZh3QxGQee68UgLJ82pNiV8bTEFtUULb4BseT1BMOyJaJxLZKh6dd8tINVrGpxRNosJiI1ipSqgCZC5eCCHcRXireMJbxQMTau0vKiwg//g+yk/vx5KfiVfpcYKMWURZsomimBAMhNgywJABBuBM7etaVR35unBKvKMp18dg8m+FPbAV3sEx+Ia2IjAilpCoOMKjY9H7u/fTiJJQCZcxWezOESopShdCCPcXHhFFeMS1kHztee+Vl5eSeyKd0uyjWAqOoRSfxNuYS2DlGUIt+USphXgrdlqpZ2llOQuWQ1AO5F/4XuX4U6KEUu4djsEnArM+Ars+DPzD8AoIxzsoAr+gCPxDowgMjSIkPAb/4DBQlMb7AurBLRKqH3/8keuuu+6C723ZsoUBAwYAcPLkSf7whz+QlpaGv78/d911F6+++iq+vr4XvbbJZOKxxx5j0aJFVFRUMGLECN5++23atm3rPKaoqIhHH32U5cuXAzBx4kTeeustwsLCXPchPUClxUaY4lgcGT8ZoRJCCE8WFBRCxx4DoMeAC75vtVg4k5dFYU4mhvxT2EqyoDQbL2MevqZC/C2FBFuLiVCL8VWsBFFBkFoBllywQFVJ7iXZVIUyJYhyJQijVzC2G16g26DRrv2gdeQWCdXQoUPJycmpte+ZZ57h+++/p3///gDYbDbGjRtHdHQ069at4+zZs9x7772oqspbb7110Wv/6U9/YsWKFSxevJjIyEj+/Oc/M378eLZv3+5s53/XXXdx+vRpvv32WwB+97vfMWXKFFasWNFIn9g9VZpttKXUsREkhYpCCNGSefv40KpNIq3aJF7yONVup7ikkOK8LMoKc7CUnMFalo9anodSWYLOVIy3uQS9pRR/WymB9nJC1HL0igUvRSWMMsLUMrDmsM9ibpoPdwGKqqqqZne/QhaLhbZt2/LII4/wzDPPALBq1SrGjx/PqVOniIuLA2Dx4sXcd9995OXlERJy/hRUSUkJ0dHRfPLJJ9x+++0AZGdnEx8fzzfffMOoUaM4ePAg3bt3Z9OmTQwaNAiATZs2MWTIEA4dOkSXLl3qFHNpaSmhoaGUlJRcMJYrVXDmNJZKQ+2dtf5K1YvuUy503GXO4WL/d1FVMrNyGfLjnY7tv2SDryw/I4QQwvVUVaW8vIzykrNUlORTWXoWS3khCf1GEBbV2qX3quvPb7cYofq15cuXU1BQwH333efct3HjRnr27OlMpgBGjRqFyWRi+/btF5wy3L59OxaLhdTUVOe+uLg4evbsyYYNGxg1ahQbN24kNDTUmUwBDB48mNDQUDZs2HDRhMpkMmEymZzbpaWlDfnIF5W98F56V25rlGvXV/X/hcuUQIIlmRJCCNFIFEUhODiE4OAQaJukdTiAmyZUH374IaNGjSI+Pt65Lzc3l1atWtU6Ljw8HF9fX3Jzcy94ndzcXHx9fQkPD6+1v1WrVs5zcnNziYmJOe/cmJiYi14XYN68eTz33HN1/kxXyq7zoUI9VyOmolT9b03Kee//+phz5136/fOvd/75GYl3MgghhBCi5dA0oZo7d+5lk46tW7c666QATp8+zXfffcfnn39+3rHKBSr9VVW94P5L+fU5V3Ld2bNnM3PmTOd2aWlprQTQVfo+8a3Lr9lQUVoHIIQQQjQxTROqRx55hDvuuOOSxyQmJtbaXrhwIZGRkUycOLHW/tatW7N58+Za+4qKirBYLOeNXNU8x2w2U1RUVGuUKi8vj6FDhzqPOXPmzHnn5ufnX/S6AHq9Hr1ef8nPJoQQQgjPoGlCFRUVRVRU3cczVFVl4cKF3HPPPfj8aqXsIUOG8NJLL5GTk0NsbCwAq1evRq/Xk5KScsHrpaSk4OPjw5o1a5g0aRIAOTk57Nu3j//7v/9zXrekpIQtW7YwcOBAADZv3kxJSYkz6RJCCCFEy6bTOoD6SEtLIzMzk6lTp573XmpqKt27d2fKlCns3LmTtWvX8thjj/Hggw86q/KzsrLo2rUrW7ZsASA0NJSpU6fy5z//mbVr17Jz504mT55Mr169GDnSsXp3t27dGD16NA8++CCbNm1i06ZNPPjgg4wfP77OT/gJIYQQwrO5VUL14YcfMnToULp163bee15eXqxcuRI/Pz+GDRvGpEmTuOmmm3j11Vedx1gsFtLT0zEaz3ULe/3117npppuYNGkSw4YNIyAggBUrVjh7UAF89tln9OrVi9TUVFJTU+nduzeffPJJ435YIYQQQrgNt+xD5Y4aqw+VEEIIIRpPXX9+u9UIlRBCCCFEcyQJlRBCCCFEA0lCJYQQQgjRQJJQCSGEEEI0kCRUQgghhBANJAmVEEIIIUQDSUIlhBBCCNFAklAJIYQQQjSQJFRCCCGEEA2k6eLILUl1Q/rS0lKNIxFCCCFEXVX/3L7cwjKSUDWRsrIyAOLj4zWORAghhBD1VVZWRmho6EXfl7X8mojdbic7O5vg4GAURXHZdUtLS4mPj+fUqVOyRmAjk++6acj33DTke24a8j03ncb6rlVVpaysjLi4OHS6i1dKyQhVE9HpdLRt27bRrh8SEiL/WJuIfNdNQ77npiHfc9OQ77npNMZ3famRqWpSlC6EEEII0UCSUAkhhBBCNJAkVG5Or9czZ84c9Hq91qF4PPmum4Z8z01DvuemId9z09H6u5aidCGEEEKIBpIRKiGEEEKIBpKESgghhBCigSShEkIIIYRoIEmohBBCCCEaSBIqN/f222+TlJSEn58fKSkp/PLLL1qH5DbmzZvHgAEDCA4OJiYmhptuuon09PRax6iqyty5c4mLi8Pf359rr72W/fv31zrGZDLxxz/+kaioKAIDA5k4cSKnT59uyo/iVubNm4eiKPzpT39y7pPv2XWysrKYPHkykZGRBAQE0LdvX7Zv3+58X77rhrNarTz99NMkJSXh7+9P+/btef7557Hb7c5j5Huuv59//pkJEyYQFxeHoih89dVXtd531XdaVFTElClTCA0NJTQ0lClTplBcXNzwD6AKt7V48WLVx8dHff/999UDBw6o06dPVwMDA9UTJ05oHZpbGDVqlLpw4UJ137596q5du9Rx48ap7dq1U8vLy53HzJ8/Xw0ODlaXLl2q7t27V7399tvV2NhYtbS01HnMtGnT1DZt2qhr1qxRd+zYoV533XVqnz59VKvVqsXHata2bNmiJiYmqr1791anT5/u3C/fs2sUFhaqCQkJ6n333adu3rxZzczMVL///nv16NGjzmPku264F198UY2MjFS//vprNTMzU12yZIkaFBSkvvHGG85j5Huuv2+++UZ96qmn1KVLl6qA+uWXX9Z631Xf6ejRo9WePXuqGzZsUDds2KD27NlTHT9+fIPjl4TKjQ0cOFCdNm1arX1du3ZVn3zySY0icm95eXkqoP7000+qqqqq3W5XW7durc6fP995TGVlpRoaGqq+++67qqqqanFxserj46MuXrzYeUxWVpaq0+nUb7/9tmk/QDNXVlamdurUSV2zZo06fPhwZ0Il37PrzJo1S73qqqsu+r58164xbtw49YEHHqi175ZbblEnT56sqqp8z67w64TKVd/pgQMHVEDdtGmT85iNGzeqgHro0KEGxSxTfm7KbDazfft2UlNTa+1PTU1lw4YNGkXl3kpKSgCIiIgAIDMzk9zc3FrfsV6vZ/jw4c7vePv27VgsllrHxMXF0bNnT/l7+JX/b+9OQ6Jq+zCAX+OMo9bYqI0zU4mlIWapZQqVmbTRaiRFlAypCUGSpkVWtph90KcPERGE0KZBi34R2giycskQjdS0hcrKpbKsMIvGkvR+Pzxvp3eescXOTL4+Xj844Nzn9vxvrxn07/HMcf369Vi8eDHmzp1rMc6cbefcuXMICwvDihUroNfrERISgiNHjkj7mbVtRERE4OrVq3j48CEA4Pbt2ygvL8eiRYsAMGd7sFWmFRUV0Gq1mDJlijRn6tSp0Gq1snPnP0ceoN68eYPu7m4YDAaLcYPBgJcvX/bTqgYuIQQ2bdqEiIgIBAYGAoCUY28ZNzU1SXPUajXc3d2t5vB5+CY/Px/V1dW4efOm1T7mbDtPnjxBTk4ONm3ahO3bt6OqqgobNmyAk5MTYmNjmbWNbN26FR0dHRg3bhyUSiW6u7uRlZWFmJgYAHxN24OtMn358iX0er3V8fV6vezc2VANcAqFwuKxEMJqjH4uKSkJdXV1KC8vt9r3OxnzefimpaUFKSkpuHz5Mpydnb87jznL19PTg7CwMGRnZwMAQkJCcPfuXeTk5CA2Nlaax6zlKSgowMmTJ3H69GlMmDABtbW1SE1NxciRIxEXFyfNY862Z4tMe5tvi9z5J78BSqfTQalUWnXUbW1tVh08/VhycjLOnTuH4uJieHl5SeNGoxEAfpix0WhEV1cX2tvbvztnsLt16xba2toQGhoKlUoFlUqF0tJSHDx4ECqVSsqJOcs3YsQIjB8/3mIsICAAzc3NAPiatpW0tDRs27YNq1atQlBQEFavXo2NGzfir7/+AsCc7cFWmRqNRrx69crq+K9fv5adOxuqAUqtViM0NBRFRUUW40VFRQgPD++nVQ0sQggkJSWhsLAQ165dg4+Pj8V+Hx8fGI1Gi4y7urpQWloqZRwaGgpHR0eLOa2trbhz5w6fh/+aM2cO6uvrUVtbK21hYWEwmUyora2Fr68vc7aR6dOnW9364+HDhxg9ejQAvqZtxWw2w8HB8senUqmUbpvAnG3PVplOmzYNHR0dqKqqkuZUVlaio6NDfu6yLmmnfvX1tgnHjh0T9+7dE6mpqWLo0KGisbGxv5c2ICQmJgqtVitKSkpEa2urtJnNZmnO3r17hVarFYWFhaK+vl7ExMT0+jZdLy8vceXKFVFdXS1mz549qN/6/Cv+911+QjBnW6mqqhIqlUpkZWWJR48eiVOnTokhQ4aIkydPSnOYtXxxcXFi1KhR0m0TCgsLhU6nE1u2bJHmMOe++/Dhg6ipqRE1NTUCgNi/f7+oqamRbgVkq0wXLFgggoODRUVFhaioqBBBQUG8bQIJcejQITF69GihVqvF5MmTpbf8088B6HXLzc2V5vT09Ijdu3cLo9EonJycRGRkpKivr7c4Tmdnp0hKShIeHh7CxcVFREVFiebm5j/81Qws/2yomLPtnD9/XgQGBgonJycxbtw4cfjwYYv9zFq+9+/fi5SUFOHt7S2cnZ2Fr6+v2LFjh/j8+bM0hzn3XXFxca/fk+Pi4oQQtsv07du3wmQyCVdXV+Hq6ipMJpNob2+XvX6FEELIO8dFRERENLjxGioiIiIimdhQEREREcnEhoqIiIhIJjZURERERDKxoSIiIiKSiQ0VERERkUxsqIiIiIhkYkNFREREJBMbKiL6V8vMzMSkSZP+eN2SkhIoFAooFApER0fbtdbXOm5ubnatQ0Tfx4aKiAasr43E97b4+Hhs3rwZV69e7bc1PnjwAHl5eXat0draigMHDti1BhH9mKq/F0BE9LtaW1uljwsKCpCRkYEHDx5IYy4uLtBoNNBoNP2xPACAXq+3+5kjo9EIrVZr1xpE9GM8Q0VEA5bRaJQ2rVYLhUJhNfbPP/nFx8cjOjoa2dnZMBgMcHNzw549e/DlyxekpaXBw8MDXl5eOH78uEWt58+fY+XKlXB3d8fw4cOxdOlSNDY29nnNM2fORHJyMlJTU+Hu7g6DwYDDhw/j48ePWLNmDVxdXTF27FhcunRJ+pz29naYTCZ4enrCxcUFfn5+yM3N/d3YiMgO2FAR0aBz7do1vHjxAmVlZdi/fz8yMzMRFRUFd3d3VFZWYt26dVi3bh1aWloAAGazGbNmzYJGo0FZWRnKy8uh0WiwYMECdHV19bn+iRMnoNPpUFVVheTkZCQmJmLFihUIDw9HdXU15s+fj9WrV8NsNgMAdu3ahXv37uHSpUu4f/8+cnJyoNPpbJoJEcnDhoqIBh0PDw8cPHgQ/v7+SEhIgL+/P8xmM7Zv3w4/Pz+kp6dDrVbjxo0bAID8/Hw4ODjg6NGjCAoKQkBAAHJzc9Hc3IySkpI+1584cSJ27twp1XJxcYFOp8PatWvh5+eHjIwMvH37FnV1dQCA5uZmhISEICwsDGPGjMHcuXOxZMkSW0ZCRDLxGioiGnQmTJgAB4dvv08aDAYEBgZKj5VKJYYPH462tjYAwK1bt9DQ0ABXV1eL43z69AmPHz/uc/3g4GCrWkFBQRbrASDVT0xMxPLly1FdXY158+YhOjoa4eHhfa5LRPbDhoqIBh1HR0eLxwqFotexnp4eAEBPTw9CQ0Nx6tQpq2N5enravL5CoZDqAsDChQvR1NSEixcv4sqVK5gzZw7Wr1+Pffv29bk2EdkHGyoiop+YPHkyCgoKoNfrMWzYsH5Zg6enJ+Lj4xEfH48ZM2YgLS2NDRXR/xFeQ0VE9BMmkwk6nQ5Lly7F9evX8fTpU5SWliIlJQXPnj2ze/2MjAycPXsWDQ0NuHv3Li5cuICAgAC71yWiX8eGiojoJ4YMGYKysjJ4e3tj2bJlCAgIQEJCAjo7O//IGSu1Wo309HQEBwcjMjISSqUS+fn5dq9LRL9OIYQQ/b0IIqJ/m5KSEsyaNQvt7e1/5F/C5OXlITU1Fe/evbN7LSKyxmuoiIjsyMvLC0uWLMGZM2fsVkOj0eDLly9wdna2Ww0i+jGeoSIisoPOzk48f/4cwN8Nj9FotFuthoYGAH/fgsHHx8dudYjo+9hQEREREcnEi9KJiIiIZGJDRURERCQTGyoiIiIimdhQEREREcnEhoqIiIhIJjZURERERDKxoSIiIiKSiQ0VERERkUz/AVNXviv48eGXAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -441,7 +430,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 7, "id": "4464fa0a-d5f0-4a78-81d6-fff64b2cbfef", "metadata": {}, "outputs": [], @@ -451,10 +440,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "74efe493-f9a4-4c85-9e1b-b506d92f9026", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 1:....:....:....:....:....:....:\n", + " 10:....:....:....:....:....:....:\n", + " 100:....:....:....:..:..:.:\n", + " 1000:....:....:.:.:::\n", + " 1600:....:...:.::::\n", + " 3200:....:..:::::\n" + ] + } + ], "source": [ "n_pre = [1, 10, 100, 1000, 1600, 3200]\n", "weight = [0.1, 1, 10, 20, 50, 100]\n", @@ -493,13 +495,13 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 9, "id": "f0bea39d-ca88-42b8-b036-cce030a6c2e2", "metadata": {}, "outputs": [ { "data": { - "image/png": "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7twZbm5ucHV1RXFxMc6fP69XTL1799b8+9aQWX5+vtY5ERERmn/b2NggNDS0zniJiOrCycNEzVhsbCyuXLmCjz76CO3atYNCoUBERATKy8v1qtfW1lbrtSAIEEWx3tfLZDJIkqRVVlFRoVdMRNQ8sMeGyMK5urrCz88PO3bs0CrfsWMHAgMDAQB2dnYAALVaXe2cF198EUOHDkWPHj2gUChQUFDQJHHv2rVL8+/Kykrs27cP3bt3B1A1dFZUVISSkhLNOXcuVbezs6vWHiIi9tgQWYHp06dj1qxZ6NixI4KDg7F48WJkZmbiu+++AwB4eXnBwcEBqampaNOmDezt7eHm5obOnTvjm2++QWhoKFQqFaZPn95kc1WUSiU6d+6M7t2748MPP8S1a9cwadIkAEB4eDgcHR3x+uuv48UXX8Tu3burrXoKCAhAVlYWMjMz0aZNG7i4uEChUDRJ7ERkvthjQ2QFXnzxRSQkJGDq1Kno1asXUlNTsXr1anTu3BlA1RyWjz/+GJ9//jn8/Pzw4IMPAgC++uorXLt2DXfddReefPJJvPjii/Dy8mqSmN977z289957CAoKwvbt27F69Wp4enoCqNob59tvv8W6devQq1cvfP/999U2IHzooYfwwAMPIDIyEq1atcL333/fJHETkXkTpDsHsomIjOjs2bNo3749Dhw4wJ2Dicjg2GNDREREVoOJDREREVkNDkURERGR1WCPDREREVkNJjZERERkNZjYEBERkdVgYkNERERWg4kNERERWQ0mNkRERGQ1mNgQERGR1WBiQ0RERFbj/wETE0tpzSyZPwAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjYAAAHJCAYAAACWmnNkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABoHklEQVR4nO3deVxU5f4H8M+ZGfZNEdlkdRdRVFDDfbmhWGRuP9vctbxhZmSLeTM1ixYzrVCzLC2tvGV6S0mlFLXUwrXctVBQQQSVAWSdeX5/GJMjDAzMDLPwefc6r5wz5zzn+4AyX55VEkIIEBEREdkAmbkDICIiIjIWJjZERERkM5jYEBERkc1gYkNEREQ2g4kNERER2QwmNkRERGQzmNgQERGRzWBiQ0RERDaDiQ0RERHZDCY21CDWrFkDSZJ0HqmpqeYOsVrz58+HJEnmDsMsKr9nBw8eNHcoFm/58uVYs2ZNgzxr3759mD9/Pm7evFnlvQEDBmDAgAH1KteQe4ksicLcAVDj8umnn6J9+/ZVzoeFhZkhmtpNnToVQ4cONXcYZOGWL18OLy8vTJw40eTP2rdvHxYsWICJEyeiSZMmVeIgauyY2FCDCg8PR1RUVJ3uEUKgpKQETk5OVd4rLi6Go6OjQa0qt27dgrOzc7XvBQQEICAgoN5lN2Y1fV3JNCz1FwSihsSuKLI4kiRhxowZWLlyJTp06AAHBwesXbtW0zWyY8cOTJ48Gc2bN4ezszNKS0uhVqvx1ltvoX379nBwcIC3tzfGjx+PS5cuaZU9YMAAhIeHY8+ePejVqxecnZ0xefJknbFU1xUVEhKC+++/H9u2bUO3bt3g5OSE9u3b45NPPqm1bhcuXIAkSXj77bfx5ptvIiQkBE5OThgwYADOnj2L8vJyvPjii/D394eHhwdGjBiBnJycKuVs2LAB0dHRcHFxgaurK4YMGYIjR45oXTNx4kS4urri9OnTGDJkCFxcXODn54c33ngDAHDgwAH06dMHLi4uaNu2LdauXVttzDdu3MCkSZPg6ekJFxcXxMXF4a+//tL767phwwbExMTAz88PTk5O6NChA1588UUUFRVVG+/58+cxbNgwuLq6IjAwEM8++yxKS0u1ri0rK8OiRYs03+/mzZtj0qRJuHbtWq3fg8rnnDhxAoMHD4aLiwuaN2+OGTNm4NatW1rXlpSUYM6cOQgNDYW9vT1atGiB+Ph4rW6gkJAQnDhxArt379Z0rYaEhGjeVyqVmD17tlYZs2bNqlL/yr/3n3/+OTp06ABnZ2dERERgy5Ytmmvmz5+P5557DgAQGhpapSu3uu6kBQsWoGfPnvD09IS7uzu6deuG1atXg/sfk80SRA3g008/FQDEgQMHRHl5udZRUVGhdS0A0aJFC9G5c2fxxRdfiJ07d4rjx49rymjRooV4/PHHxQ8//CC++eYbUVFRIR5//HEBQMyYMUNs27ZNrFy5UjRv3lwEBgaKa9euacru37+/8PT0FIGBgeL9998Xu3btErt379YZ9yuvvCLu/mcSHBwsAgICRFhYmPjss8/E9u3bxZgxYwSAGssSQoj09HQBQAQHB4u4uDixZcsWsW7dOuHj4yPatm0rxo0bJyZPnix++OEHsXLlSuHq6iri4uK0ynjttdeEJEli8uTJYsuWLeLbb78V0dHRwsXFRZw4cUJz3YQJE4S9vb3o0KGDWLZsmUhJSRGTJk0SAMScOXNE27ZtxerVq8X27dvF/fffLwCIgwcPVvmeBQYGamJatWqV8Pb2FoGBgeLGjRt6fV1fffVV8e6774qtW7eK1NRUsXLlShEaGioGDhyoVa874128eLH48ccfxbx584QkSWLBggWa61QqlRg6dKhwcXERCxYsECkpKeLjjz8WLVq0EGFhYeLWrVs1fg8qnxMUFCRee+01sWPHDjF//nyhUCjE/fffr7lOrVaLIUOGCIVCIV5++WWxY8cOsXjxYuHi4iK6du0qSkpKhBBCHD58WLRs2VJ07dpV7N+/X+zfv18cPnxYCCFEUVGR6NKli/Dy8hJLliwRP/74o1i2bJnw8PAQgwYNEmq1WvM8ACIkJET06NFD/Pe//xXJycliwIABQqFQiD///FMIIURmZqZ46qmnBADx7bffap6Xn5+v+T70799fq74TJ04Uq1evFikpKSIlJUW8+uqrwsnJSetrquteImvExIYaROWHZHWHXC7XuhaA8PDwENevX6+2jPHjx2udP3XqlAAgnnzySa3zv/76qwAgXnrpJc25/v37CwDip59+0ituXYmNo6OjuHjxouZccXGx8PT0FE888USN5VUmNhEREUKlUmnOL126VAAQDzzwgNb1s2bNEgA0H1wZGRlCoVCIp556Suu6goIC4evrK/7v//5Pc27C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", "text/plain": [ "
" ] @@ -512,21 +514,13 @@ "d.plot(x='Total input', y='rms_Vm', kind='scatter', c=np.log10(d.w), s=d.n_pre**0.5, \n", " logx=True, logy=True, title='Error in membrane potential', colormap='viridis');" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eda60a2a-f215-4aa5-b010-a0951674f6dd", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "nest", "language": "python", - "name": "python3" + "name": "nest" }, "language_info": { "codemirror_mode": { From 6fc3164289cdba596dabb207e9c534a29ea424be Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sun, 28 Apr 2024 21:29:36 +0200 Subject: [PATCH 112/184] simplify equations --- models/iaf_wang_2002.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index d92f1b126b..790d777f26 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -388,12 +388,9 @@ nest::iaf_wang_2002::pre_run_hook() // helper vars const double alpha_tau = P_.alpha * P_.tau_rise_NMDA; const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; - const double expint = boost::math::gamma_q( 1 - tau_rise_tau_dec, alpha_tau ) - * boost::math::tgamma( 1 - tau_rise_tau_dec ) * pow( alpha_tau, tau_rise_tau_dec - 1 ); - V_.S_jump_1 = exp( -P_.alpha * P_.tau_rise_NMDA ) - 1; - V_.S_jump_0 = -expint * alpha_tau + pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma( 1 - tau_rise_tau_dec ); + V_.S_jump_0 = pow(alpha_tau, tau_rise_tau_dec) * boost::math::tgamma_lower(1 - tau_rise_tau_dec, alpha_tau); } From 9852cb433f6aea25094ca4857db52fba542c001e Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sun, 28 Apr 2024 21:30:59 +0200 Subject: [PATCH 113/184] black --- .../Wang_2002_Model_Approximation.ipynb | 95 +++++++++++-------- 1 file changed, 57 insertions(+), 38 deletions(-) diff --git a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb index fc673fc659..36e274b9d8 100644 --- a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb +++ b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb @@ -268,15 +268,16 @@ "ampa_ext_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_ext, \"receptor_type\": receptors[\"AMPA\"]}\n", "\n", "rec_syn_specs = nest.CollocatedSynapses(\n", - " {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": receptors[\"AMPA\"]},\n", - " {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": receptors[\"NMDA\"]},\n", - " {\"synapse_model\": \"static_synapse\", \"weight\": w_in, \"receptor_type\": receptors[\"GABA\"]})\n", + " {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": receptors[\"AMPA\"]},\n", + " {\"synapse_model\": \"static_synapse\", \"weight\": w_ex, \"receptor_type\": receptors[\"NMDA\"]},\n", + " {\"synapse_model\": \"static_synapse\", \"weight\": w_in, \"receptor_type\": receptors[\"GABA\"]},\n", + ")\n", "\n", "nest.Connect(pg, nrn_pre, syn_spec=ampa_ext_syn_spec)\n", "nest.Connect(nrn_pre, nrn_post_approx, syn_spec=rec_syn_specs)\n", "nest.Connect(nrn_pre, nrn_post_exact, syn_spec=rec_syn_specs)\n", "\n", - "#nest.Connect(nrn_pre, sr)\n", + "# nest.Connect(nrn_pre, sr)\n", "nest.Connect(vm_pre, nrn_pre)\n", "nest.Connect(vm_post_approx, nrn_post_approx)\n", "nest.Connect(vm_post_exact, nrn_post_exact)\n", @@ -304,7 +305,7 @@ "source": [ "fig, ax = plt.subplots(2, 3)\n", "fig.set_size_inches([15, 6])\n", - "#fig.subplots_adjust(hspace=0.5, wspace=0.3)\n", + "# fig.subplots_adjust(hspace=0.5, wspace=0.3)\n", "\n", "ax[0, 0].plot((ev := vm_pre.events)[\"times\"], ev[\"V_m\"])\n", "ax[0, 0].set_xlabel(\"Time [ms]\")\n", @@ -323,11 +324,11 @@ "\n", "ax[1, 0].axis(\"off\")\n", "\n", - "ax[1, 1].plot((ev := vm_post_approx.events)[\"times\"], ev[\"V_m\"]-vm_post_exact.events[\"V_m\"], label=\"Approximation\")\n", + "ax[1, 1].plot((ev := vm_post_approx.events)[\"times\"], ev[\"V_m\"] - vm_post_exact.events[\"V_m\"], label=\"Approximation\")\n", "ax[1, 1].set_xlabel(\"Time [ms]\")\n", "ax[1, 1].set_ylabel(\"Error [mV]\")\n", "\n", - "ax[1, 2].plot((ev := vm_post_approx.events)[\"times\"], ev[\"V_m\"]-vm_post_exact.events[\"V_m\"], label=\"Approximation\")\n", + "ax[1, 2].plot((ev := vm_post_approx.events)[\"times\"], ev[\"V_m\"] - vm_post_exact.events[\"V_m\"], label=\"Approximation\")\n", "ax[1, 2].set_xlabel(\"Time [ms]\")\n", "ax[1, 2].set_xlim(300, 400);" ] @@ -356,22 +357,22 @@ "outputs": [], "source": [ "def do_sim(n_pre, r_pre, weight, t_sim=1000, show=False, seed=955):\n", - " nest.set_verbosity('M_ERROR')\n", + " nest.set_verbosity(\"M_ERROR\")\n", " nest.ResetKernel()\n", " nest.rng_seed = seed\n", " nest.local_num_threads = 4\n", - " sg = nest.Create('poisson_generator', params={'rate': r_pre})\n", - " \n", + " sg = nest.Create(\"poisson_generator\", params={\"rate\": r_pre})\n", + "\n", " pp = params.copy()\n", - " pp['t_ref'] = 0\n", - " pre = nest.Create('iaf_wang_2002', n=n_pre, params=pp) # t_ref==0 to make \"parroting\" easier\n", - " post_app = nest.Create('iaf_wang_2002', params=params) \n", - " post_exa = nest.Create('iaf_wang_2002_exact', params=params)\n", - " rec_pre, rec_post_app, rec_post_exa = nest.Create('spike_recorder', n=3)\n", + " pp[\"t_ref\"] = 0\n", + " pre = nest.Create(\"iaf_wang_2002\", n=n_pre, params=pp) # t_ref==0 to make \"parroting\" easier\n", + " post_app = nest.Create(\"iaf_wang_2002\", params=params)\n", + " post_exa = nest.Create(\"iaf_wang_2002_exact\", params=params)\n", + " rec_pre, rec_post_app, rec_post_exa = nest.Create(\"spike_recorder\", n=3)\n", " vm_app, vm_exa = nest.Create(\"voltmeter\", params={\"interval\": nest.resolution}, n=2)\n", - " \n", - " nest.Connect(sg, pre, syn_spec={'receptor_type': 1, 'weight': 76}) # gives approx one spike out for one in\n", - " nest.Connect(pre, post_app+post_exa, syn_spec={'receptor_type': 3, 'weight': weight})\n", + "\n", + " nest.Connect(sg, pre, syn_spec={\"receptor_type\": 1, \"weight\": 76}) # gives approx one spike out for one in\n", + " nest.Connect(pre, post_app + post_exa, syn_spec={\"receptor_type\": 3, \"weight\": weight})\n", " nest.Connect(pre, rec_pre)\n", " nest.Connect(post_app, rec_post_app)\n", " nest.Connect(post_exa, rec_post_exa)\n", @@ -379,24 +380,33 @@ " nest.Connect(vm_exa, post_exa)\n", " nest.Simulate(t_sim)\n", "\n", - " rate_in = rec_pre.n_events / ( n_pre * t_sim ) * 1000\n", + " rate_in = rec_pre.n_events / (n_pre * t_sim) * 1000\n", " rate_post_app = rec_post_app.n_events / t_sim * 1000\n", " rate_post_exa = rec_post_exa.n_events / t_sim * 1000\n", " e_app = vm_app.events\n", " e_exa = vm_exa.events\n", - " rms_Vm = np.mean( ( e_app['V_m'] - e_exa['V_m'] ) ** 2 ) ** 0.5\n", - " mean_Vm_exa = np.mean( e_exa['V_m'] )\n", - " mean_Vm_app = np.mean( e_app['V_m'] )\n", - " \n", + " rms_Vm = np.mean((e_app[\"V_m\"] - e_exa[\"V_m\"]) ** 2) ** 0.5\n", + " mean_Vm_exa = np.mean(e_exa[\"V_m\"])\n", + " mean_Vm_app = np.mean(e_app[\"V_m\"])\n", + "\n", " if show:\n", - " plt.plot(e_app['times'], e_app['V_m'], label='approx');\n", - " plt.plot(e_exa['times'], e_exa['V_m'], label='exact');\n", - " plt.xlabel('Time [ms]');\n", - " plt.ylabel('Membrane potential [mV]');\n", - " plt.legend();\n", - " \n", - " return {'n_pre': n_pre, 'w': weight, 'r_pre': r_pre, 'r_in': rate_in, 'r_app': rate_post_app, 'r_exa': rate_post_exa,\n", - " 'rms_Vm': rms_Vm, 'mean_Vm_exa': mean_Vm_exa, 'mean_Vm_app': mean_Vm_app}" + " plt.plot(e_app[\"times\"], e_app[\"V_m\"], label=\"approx\")\n", + " plt.plot(e_exa[\"times\"], e_exa[\"V_m\"], label=\"exact\")\n", + " plt.xlabel(\"Time [ms]\")\n", + " plt.ylabel(\"Membrane potential [mV]\")\n", + " plt.legend()\n", + "\n", + " return {\n", + " \"n_pre\": n_pre,\n", + " \"w\": weight,\n", + " \"r_pre\": r_pre,\n", + " \"r_in\": rate_in,\n", + " \"r_app\": rate_post_app,\n", + " \"r_exa\": rate_post_exa,\n", + " \"rms_Vm\": rms_Vm,\n", + " \"mean_Vm_exa\": mean_Vm_exa,\n", + " \"mean_Vm_app\": mean_Vm_app,\n", + " }" ] }, { @@ -464,18 +474,18 @@ "\n", "res = []\n", "for npr in n_pre:\n", - " print(f\"{npr:6d}\", end=':')\n", + " print(f\"{npr:6d}\", end=\":\")\n", " for w in weight:\n", " for rp in r_pre:\n", " if npr * rp * w > 1e5:\n", - " continue # skip unrealistically high input regimes\n", - " print('.', end='')\n", + " continue # skip unrealistically high input regimes\n", + " print(\".\", end=\"\")\n", " res.append(do_sim(npr, rp, w))\n", - " print(':', end='')\n", + " print(\":\", end=\"\")\n", " print()\n", "\n", "d = pd.DataFrame.from_records(res)\n", - "d['Total input'] = d.n_pre * d.r_in * d.w " + "d[\"Total input\"] = d.n_pre * d.r_in * d.w" ] }, { @@ -511,8 +521,17 @@ } ], "source": [ - "d.plot(x='Total input', y='rms_Vm', kind='scatter', c=np.log10(d.w), s=d.n_pre**0.5, \n", - " logx=True, logy=True, title='Error in membrane potential', colormap='viridis');" + "d.plot(\n", + " x=\"Total input\",\n", + " y=\"rms_Vm\",\n", + " kind=\"scatter\",\n", + " c=np.log10(d.w),\n", + " s=d.n_pre**0.5,\n", + " logx=True,\n", + " logy=True,\n", + " title=\"Error in membrane potential\",\n", + " colormap=\"viridis\",\n", + ");" ] } ], From 17762781c98e6928099b67fa06d514682bb851d1 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 07:56:35 +0200 Subject: [PATCH 114/184] clang-format --- models/iaf_wang_2002.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 790d777f26..f0799bbb0a 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -390,7 +390,7 @@ nest::iaf_wang_2002::pre_run_hook() const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; V_.S_jump_1 = exp( -P_.alpha * P_.tau_rise_NMDA ) - 1; - V_.S_jump_0 = pow(alpha_tau, tau_rise_tau_dec) * boost::math::tgamma_lower(1 - tau_rise_tau_dec, alpha_tau); + V_.S_jump_0 = pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma_lower( 1 - tau_rise_tau_dec, alpha_tau ); } From c63b8e71c22be410f513e53693326c8a79cf28ad Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 08:30:38 +0200 Subject: [PATCH 115/184] fix equations, add examples to model docs --- models/iaf_wang_2002.h | 8 +++----- models/iaf_wang_2002_exact.h | 21 ++++++++++++--------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index d924e9038d..966efbfb87 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -55,7 +55,7 @@ namespace nest */ extern "C" inline int iaf_wang_2002_dynamics( double, const double*, double*, void* ); - +// clang-format off /* BeginUserDocs: neuron, integrate-and-fire, conductance-based Short description @@ -184,15 +184,13 @@ See also iaf_wang_2002_exact - Examples using this model +++++++++++++++++++++++++ -.. listexamples:: ht_neuron - - +.. listexamples:: iaf_wang_2002, iaf_wang_2002_exact EndUserDocs */ +// clang-format on void register_iaf_wang_2002( const std::string& name ); diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 874a23f326..c1b0452743 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -55,7 +55,7 @@ namespace nest **/ extern "C" inline int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); - +// clang-format off /* BeginUserDocs: neuron, integrate-and-fire, conductance-based Short description @@ -87,11 +87,10 @@ The membrane potential and synaptic variables evolve according to I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] I_\mathrm{GABA} &= (V(t) - V_I)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] - \frac{dS_{j,\mathrm{AMPA}}}{dt} &=-\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - -t_j^k) \\[3ex] \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in -\Delta_j} \delta (t - t_j^k) \\[3ex] \frac{dS_{j,\mathrm{NMDA}}}{dt} &= --\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}}+ \alpha x_j (1 - S_{j,\mathrm{NMDA}})\\[3ex] \frac{dx_j}{dt} &= - -\frac{x_j}{\tau_\mathrm{NMDA,rise}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) + \frac{dS_{j,\mathrm{AMPA}}}{dt} &=-\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}}+ \alpha x_j (1 - S_{j,\mathrm{NMDA}})\\[3ex] + \frac{dx_j}{dt} &= -\frac{x_j}{\tau_\mathrm{NMDA,rise}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. @@ -145,9 +144,7 @@ The following values can be recorded. =========== =========================================================== .. note:: - It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when -creating the model, while the different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be -set by the user. + It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when creating the model, while the different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be set by the user. .. note:: :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST @@ -175,7 +172,13 @@ See also iaf_wang_2002 +Examples using this model ++++++++++++++++++++++++++ + +.. listexamples:: iaf_wang_2002, iaf_wang_2002_exact + EndUserDocs */ +// clang-format on void register_iaf_wang_2002_exact( const std::string& name ); From bb67d3c00acb77a34f5bd71537c4727b66aeb2f3 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 09:07:46 +0200 Subject: [PATCH 116/184] fix modeldoc --- models/iaf_wang_2002.h | 20 ++++++++------------ models/iaf_wang_2002_exact.h | 5 ++--- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 966efbfb87..f4725a4fce 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -84,13 +84,11 @@ The membrane potential and synaptic variables evolve according to C_\mathrm{m} \frac{dV(t)}{dt} &= -g_\mathrm{L} (V(t) - V_\mathrm{L}) - I_\mathrm{syn} (t) \\[3ex] I_\mathrm{syn}(t) &= I_\mathrm{AMPA}(t) + I_\mathrm{NMDA}(t) + I_\mathrm{GABA}(t) (t) \\[3ex] I_\mathrm{AMPA} &= (V(t) - V_E)\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{AMPA}}(t) \\[3ex] - I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in -\Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] I_\mathrm{GABA} &= (V(t) - V_I)\sum_{j \in -\Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] \frac{dS_{j,\mathrm{AMPA}}}{dt} &= --\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] - \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t -- t_j^k) \\[3ex] \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}} + \sum_{k \in -\Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] + I_\mathrm{NMDA} &= \frac{(V(t) - V_E)}{1+[\mathrm{Mg^{2+}}]\mathrm{exp}(-0.062V(t))/3.57}\sum_{j \in \Gamma_\mathrm{ex}}^{N_E}w_jS_{j,\mathrm{NMDA}}(t) \\[3ex] + I_\mathrm{GABA} &= (V(t) - V_I)\sum_{j \in \Gamma_\mathrm{in}}^{N_E}w_jS_{j,\mathrm{GABA}}(t) \\[5ex] + \frac{dS_{j,\mathrm{AMPA}}}{dt} &= -\frac{j,S_{\mathrm{AMPA}}}{\tau_\mathrm{AMPA}}+\sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] + \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}} + \sum_{k \in \Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. @@ -154,12 +152,10 @@ The following values can be recorded. =========== =========================================================== .. note:: - :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST -model, so setting the variables is thus done by changing the weights. + :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the variables is thus done by changing the weights. .. note:: - For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_wang_2002. For -AMPA/GABA synapses, any pre-synaptic neuron can be used. + For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_wang_2002. For AMPA/GABA synapses, any pre-synaptic neuron can be used. Sends @@ -187,7 +183,7 @@ iaf_wang_2002_exact Examples using this model +++++++++++++++++++++++++ -.. listexamples:: iaf_wang_2002, iaf_wang_2002_exact +.. listexamples:: iaf_wang_2002 EndUserDocs */ // clang-format on diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index c1b0452743..6e4b82fd18 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -147,8 +147,7 @@ The following values can be recorded. It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when creating the model, while the different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be set by the user. .. note:: - :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST -model, so setting the variables is thus done by changing the weights. + :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the variables is thus done by changing the weights. Sends +++++ @@ -175,7 +174,7 @@ iaf_wang_2002 Examples using this model +++++++++++++++++++++++++ -.. listexamples:: iaf_wang_2002, iaf_wang_2002_exact +.. listexamples:: iaf_wang_2002_exact EndUserDocs */ // clang-format on From 04b832d251ecb497a57d3fc8051a21a141092a7f Mon Sep 17 00:00:00 2001 From: janskaar Date: Mon, 29 Apr 2024 09:09:10 +0200 Subject: [PATCH 117/184] Update models/iaf_wang_2002_exact.cpp Co-authored-by: Hans Ekkehard Plesser --- models/iaf_wang_2002_exact.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 95eecb2454..f470f74032 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -480,9 +480,7 @@ nest::iaf_wang_2002_exact::update( Time const& origin, const long from, const lo for ( size_t i = NMDA - 1; i < B_.spikes_.size(); ++i ) // i starts at 2, runs through all NMDA spikes { - - // index which starts at 0 - const size_t si = i - ( NMDA - 1 ); + const size_t si = i - ( NMDA - 1 ); // index which starts at 0 assert( si >= 0 ); assert( State_::s_NMDA_base + si * 2 <= S_.state_vec_size ); From 78fdb309bb5d45a9382e9a3937ef75570c696db6 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 09:10:59 +0200 Subject: [PATCH 118/184] clang-format --- models/iaf_wang_2002_exact.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index f470f74032..e0ffcbed42 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -480,7 +480,7 @@ nest::iaf_wang_2002_exact::update( Time const& origin, const long from, const lo for ( size_t i = NMDA - 1; i < B_.spikes_.size(); ++i ) // i starts at 2, runs through all NMDA spikes { - const size_t si = i - ( NMDA - 1 ); // index which starts at 0 + const size_t si = i - ( NMDA - 1 ); // index which starts at 0 assert( si >= 0 ); assert( State_::s_NMDA_base + si * 2 <= S_.state_vec_size ); From ac80cf29b73d950da0effdcc6a69c290af2f15c0 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 09:18:31 +0200 Subject: [PATCH 119/184] change wording in documentation note --- models/iaf_wang_2002.h | 2 +- models/iaf_wang_2002_exact.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index f4725a4fce..2e4bb07d87 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -152,7 +152,7 @@ The following values can be recorded. =========== =========================================================== .. note:: - :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the variables is thus done by changing the weights. + :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so these variables are set by changing the weights. .. note:: For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_wang_2002. For AMPA/GABA synapses, any pre-synaptic neuron can be used. diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 6e4b82fd18..3629d7de6d 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -147,7 +147,7 @@ The following values can be recorded. It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when creating the model, while the different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be set by the user. .. note:: - :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so setting the variables is thus done by changing the weights. + :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so these variables are set by changing the weights. Sends +++++ From cfe61a5672e0afd37b477122ade113e9b8c90e65 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 09:19:56 +0200 Subject: [PATCH 120/184] add note explaining spikes must be recorded with time_in_steps --- models/iaf_wang_2002.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 2e4bb07d87..88e3a984a2 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -157,6 +157,8 @@ The following values can be recorded. .. note:: For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_wang_2002. For AMPA/GABA synapses, any pre-synaptic neuron can be used. +.. note:: + For technical reasons, spikes from iaf_wang_2002 neurons must be recorded with time_in_steps: True set in the spike recorder, ignoring the offset value. We hope to correct this in a future version of NEST. Sends +++++ From 4817bc3d5eb897ecdfd6cf29078aed284cbee484 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 09:21:11 +0200 Subject: [PATCH 121/184] add example to modeldoc --- models/iaf_wang_2002_exact.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 3629d7de6d..6b0e65c031 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -174,7 +174,7 @@ iaf_wang_2002 Examples using this model +++++++++++++++++++++++++ -.. listexamples:: iaf_wang_2002_exact +.. listexamples:: iaf_wang_2002 EndUserDocs */ // clang-format on From ef16d2afbcb0fce627b21ba402e4e9f328deadeb Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 09:27:32 +0200 Subject: [PATCH 122/184] remove unnecessary blank lines --- models/iaf_wang_2002.cpp | 3 --- models/iaf_wang_2002.h | 7 ------- models/iaf_wang_2002_exact.cpp | 1 - models/iaf_wang_2002_exact.h | 6 ------ 4 files changed, 17 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index f0799bbb0a..a1f5b61c73 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -89,7 +89,6 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode // not the state vector in the node, node.S_.y[]. const double I_AMPA = ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ]; - const double I_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; node.S_.I_NMDA_ = ( y[ S::V_m ] - node.P_.E_ex ) / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) @@ -393,7 +392,6 @@ nest::iaf_wang_2002::pre_run_hook() V_.S_jump_0 = pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma_lower( 1 - tau_rise_tau_dec, alpha_tau ); } - /* --------------------------------------------------------------------------- * Update and spike handling functions * --------------------------------------------------------------------------- */ @@ -435,7 +433,6 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to } } - // add incoming spikes S_.y_[ State_::s_AMPA ] += B_.spikes_[ SynapseTypes::AMPA - 1 ].get_value( lag ); S_.y_[ State_::s_GABA ] += B_.spikes_[ SynapseTypes::GABA - 1 ].get_value( lag ); diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 88e3a984a2..848dc712af 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -113,13 +113,11 @@ For more implementation details and a comparison to the exact version see: - `wong_approximate_implementation <../model_details/wong_approximate_implementation.ipynb>`_ - Parameters ++++++++++ The following parameters can be set in the status dictionary. - =============== ======= =========================================================== E_L mV Resting potential E_ex mV Excitatory reversal potential @@ -138,7 +136,6 @@ The following parameters can be set in the status dictionary. gsl_error_tol - GSL error tolerance =============== ======= =========================================================== - Recordables +++++++++++ @@ -250,7 +247,6 @@ class iaf_wang_2002 : public ArchivingNode SUP_SPIKE_RECEPTOR }; - // make dynamics function quasi-member friend int iaf_wang_2002_dynamics( double, const double*, double*, void* ); @@ -284,7 +280,6 @@ class iaf_wang_2002 : public ArchivingNode void set( const DictionaryDatum&, Node* node ); //!< Set values from dictionary }; - public: // State variables class -------------------------------------------- @@ -312,7 +307,6 @@ class iaf_wang_2002 : public ArchivingNode double y_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver double s_NMDA_pre; // for determining (unweighted) alpha * (1 - s_NMDA) term on // pre-synaptic side - double I_NMDA_; // For recording NMDA currents int r_; //!< number of refractory steps remaining @@ -405,7 +399,6 @@ class iaf_wang_2002 : public ArchivingNode return S_.I_NMDA_; } - // Data members ----------------------------------------------------------- // keep the order of these lines, seems to give best performance diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index e0ffcbed42..26a6cb32a9 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -376,7 +376,6 @@ nest::iaf_wang_2002_exact::init_buffers_() B_.I_stim_ = 0.0; } - void nest::iaf_wang_2002_exact::pre_run_hook() { diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 6b0e65c031..972c7813c4 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -105,13 +105,11 @@ The specification of this model differs slightly from the one in [1]_. The param :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. - Parameters ++++++++++ The following parameters can be set in the status dictionary. - =============== ======= =========================================================== E_L mV Resting potential E_ex mV Excitatory reversal potential @@ -130,7 +128,6 @@ The following parameters can be set in the status dictionary. gsl_error_tol - GSL error tolerance =============== ======= =========================================================== - Recordables +++++++++++ @@ -235,7 +232,6 @@ class iaf_wang_2002_exact : public ArchivingNode SUP_SPIKE_RECEPTOR }; - // make dynamics function quasi-member friend int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); @@ -337,7 +333,6 @@ class iaf_wang_2002_exact : public ArchivingNode std::vector< RingBuffer > spikes_; RingBuffer currents_; - /** * Vector for weights */ @@ -371,7 +366,6 @@ class iaf_wang_2002_exact : public ArchivingNode double I_stim_; }; - // Variables class ------------------------------------------------------- /** From 1c6b1d7f181e87b810a67aa4bcc97f757c8191a0 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 09:33:32 +0200 Subject: [PATCH 123/184] clang-format --- models/iaf_wang_2002.h | 1 + 1 file changed, 1 insertion(+) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 848dc712af..4496f21d60 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -307,6 +307,7 @@ class iaf_wang_2002 : public ArchivingNode double y_[ STATE_VEC_SIZE ]; //!< state vector, must be C-array for GSL solver double s_NMDA_pre; // for determining (unweighted) alpha * (1 - s_NMDA) term on // pre-synaptic side + double I_NMDA_; // For recording NMDA currents int r_; //!< number of refractory steps remaining From 690a3eb6dae3790ab6378f77633dd164d028fec3 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 09:45:53 +0200 Subject: [PATCH 124/184] fix equation for NMDA spike update --- models/iaf_wang_2002.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index 4496f21d60..e26735b92c 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -90,15 +90,12 @@ The membrane potential and synaptic variables evolve according to \frac{dS_{j,\mathrm{GABA}}}{dt} &= -\frac{S_{j,\mathrm{GABA}}}{\tau_\mathrm{GABA}} + \sum_{k \in \Delta_j} \delta (t - t_j^k) \\[3ex] \frac{dS_{j,\mathrm{NMDA}}}{dt} &= -\frac{S_{j,\mathrm{NMDA}}}{\tau_\mathrm{NMDA,decay}} + \sum_{k \in \Delta_j} (k_0 + k_1 S(t)) \delta (t - t_j^k) \\[3ex] -where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory -neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. +where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets for presynaptic excitatory and inhibitory neurons respectively, and :math:`\Delta_j` is an index set for the spike times of neuron :math:`j`. .. math:: - k_0 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 \\[3ex] - k_1 &= -\alpha \tau_\mathrm{r} \mathrm{E_N} \Big[ \frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}, \alpha \tau_\mathrm{r} -\Big] + (\alpha \tau_\mathrm{r})^{\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}}} \Gamma \Big[ 1 - -\frac{\tau_\mathrm{r}}{\tau_\mathrm{d}} \Big] + k_0 &= (\alpha \tau_r)^{\frac{\tau_r}{\tau_d}} \gamma \big[1 - \frac{\tau_r}{\tau_d}, \alpha \tau_r \big] + k_1 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 \\[3ex] where :math:`\mathrm{E_N}` is the `generalized exponential integral `_, and :math:`\Gamma` is the `gamma function From 94f9f7c0355203e4b56abae4790f6a40ff533199 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Mon, 29 Apr 2024 09:52:03 +0200 Subject: [PATCH 125/184] add newline between equations --- models/iaf_wang_2002.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index e26735b92c..f162a65bd7 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -94,8 +94,8 @@ where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets f .. math:: - k_0 &= (\alpha \tau_r)^{\frac{\tau_r}{\tau_d}} \gamma \big[1 - \frac{\tau_r}{\tau_d}, \alpha \tau_r \big] - k_1 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 \\[3ex] + k_0 &= (\alpha \tau_r)^{\frac{\tau_r}{\tau_d}} \gamma \big[1 - \frac{\tau_r}{\tau_d}, \alpha \tau_r \big] \\[3ex] + k_1 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 where :math:`\mathrm{E_N}` is the `generalized exponential integral `_, and :math:`\Gamma` is the `gamma function From ef313bf6f29d2b854dad0bb7cb165e3e45cf48c1 Mon Sep 17 00:00:00 2001 From: Hans Ekkehard Plesser Date: Mon, 29 Apr 2024 12:51:52 +0200 Subject: [PATCH 126/184] Some more polishing and questions in notebook --- .../Wang_2002_Model_Approximation.ipynb | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb index 36e274b9d8..8586e3d8e8 100644 --- a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb +++ b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "d48013ba-af79-4804-aa7a-ed6720fd2e59", @@ -49,13 +49,12 @@ "\n", "This original model by Wang (2002) is implemented in NEST as `iaf_wang_2002_exact`. Due to the nonlinear term $x_j (1 - S_{j,\\mathrm{NMDA}})$, NMDA synapses cannot be combined together, so each incoming synapse to a neuron needs to be integrated individually, significantly impacting performance. Note that $S_{j,\\mathrm{NMDA}}(t)$ represents the input to a given neuron from presynaptic neuron $j$. Importantly, the same $S_j(t)$ describes input to all neurons postsynaptic to $j$, although shifted by possibly different delays and weighted by different input weights. This allows us to compute $S_j(t)$ only once in neuron $j$ and then distribute this value, for each simulation time step, to all post-synaptic neurons of $j$.\n", "\n", - "Prior implementations of the model, such as the [Brian2 implementation by Wimmer and Stimberg](https://brian2.readthedocs.io/en/stable/examples/frompapers.Wang_2002.html) and presumably Wang's original implementation, circumvent this problem by investiagting a model with all-to-all connectivity with a single delay value and fixed-timestep forward Euler integration.\n", - "The NEST implementation supports arbitrary connectivity and delays, and uses RKF45 adaptive stepsize integration. " + "Prior implementations of the model, such as the [Brian2 implementation by Wimmer and Stimberg](https://brian2.readthedocs.io/en/stable/examples/frompapers.Wang_2002.html) and presumably Wang's original implementation, circumvent address this by investigating a model with all-to-all connectivity with a single delay value and fixed-timestep forward Euler integration. The NEST implementation supports arbitrary connectivity and delays, and uses RKF45 adaptive stepsize integration. " ] }, { "cell_type": "markdown", - "id": "782bad70-7ae1-4bd9-9196-f3c58e792d37", + "id": "a3a552e1-72db-4bc3-a494-cd852d879ed9", "metadata": {}, "source": [ "## Approximation of NMDA dynamics\n", @@ -82,13 +81,17 @@ " \\Bigg(S_{j}^0+ \\alpha x_j^0 \\int_0^{t} \\mathrm{exp}\\Bigg[\\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg)t' + \\alpha x_j^0 \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg] dt' \\Bigg) \\mathrm{.}\n", "$$\n", "\n", - "Since we have two different time scales in the exponential inside the remaining integral, there is no exact solution for arbitrary limits of integration. We would like to approximate this function with an exponential function, such that we can integrate the sum of multiple such functions in a single variable. \n", + "Since we have two different time scales in the exponential inside the remaining integral, there is no exact solution for arbitrary limits of integration. We would like to approximate this function with an exponential function, such that we can integrate the sum of multiple such functions in a single variable, as we do for the AMPA and GABA synapses.\n", "\n", "Our approximate function will then have the form \n", "$$\n", "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big) \\tag{1}\n", "$$\n", - "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit as $t \\to \\infty$, in the sense that the ratio $S_j(t)/\\hat{S}_j(t)\\to 1$. We additionally assume that $x_0 = 0$ immediately before every spikes, i.e., that the effect on $x_j$ of the previous spike has vanished by the time the next spike arrives. Since $\\tau_r$ is very small (e.g. $2$ ms), this is reasonable unless the neuron is firing very rapidly.\n", + "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit of large $t$, i.e.,\n", + "$$\n", + "\\lim_{t \\to \\infty} \\frac{S_j(t)}{\\hat{S}_j(t)}\\to 1 \\;.\n", + "$$\n", + "We additionally assume that $x_0 = 0$ immediately before every spike, i.e., that the effect on $x_j$ of the previous spike has vanished by the time the next spike arrives. Since $\\tau_r$ is very small (e.g. $2$ ms), this is reasonable unless the neuron is firing very rapidly.\n", "\n", "Setting $x_0 = 1$ in the exact solution upon spiking, we get\n", "$$\\begin{align}\n", @@ -115,7 +118,7 @@ "$$\n", "where we make the substitution $u = \\alpha \\tau_r \\mathrm{exp}\\big[-\\frac{t'}{\\tau_r} \\big]$, and $\\gamma$ is the [lower incomplete gamma function](https://en.wikipedia.org/wiki/Incomplete_gamma_function).\n", "\n", - "We then find that \n", + "We thus have\n", "\n", "$$\\begin{align}\n", " S_\\mathrm{jump} = \n", @@ -123,7 +126,19 @@ " +\n", " (\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big] \\tag{2}\n", "\\end{align}\n", - "$$\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "60d7fc0d-e96e-4fa4-994e-35a9b34a0624", + "metadata": {}, + "source": [ + "### QUESTIONS\n", + "- How is $S_j^0$ related to $S_0$?\n", + "- I don't quite get the $-S_0$ in the expression for $\\Delta S$.\n", + "- Could you write down \"what happens when $j$ fires\" equations once for the exact and once for the approximate model?\n", + "\n", "\n", "After spiking, the new value of $S$ is then dependent only on the value of $S$ immediately before spiking. In pre-synaptic neurons, every time it spikes, the value of $S_0$ immediately before spiking is computed by Eq. 1. $\\Delta S = S_\\mathrm{jump} - S_0$ is then computed by Eq. 2, and sent to post-synaptic neurons as an offset in the SpikeEvent object. The The post-synaptic neuron then adds the offset multiplied by weight and multiplicity to its $s_\\mathrm{NMDA}$ variable. Integration in the post-synaptic neuron is then done as a normal exponential synapse. The coefficients in Eq. 2 are only dependent on the synaptic parameters, so only has to be computed once before the simulation." ] @@ -537,9 +552,9 @@ ], "metadata": { "kernelspec": { - "display_name": "nest", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "nest" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -551,7 +566,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.6" + "version": "3.12.2" } }, "nbformat": 4, From d036f039bcc7dd69c86bbfbbd161f9d245310b85 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 1 May 2024 13:16:27 +0200 Subject: [PATCH 127/184] make it possible to record s_NMDA --- models/iaf_wang_2002.cpp | 1 + models/iaf_wang_2002.h | 1 + models/iaf_wang_2002_exact.cpp | 7 ++++--- models/iaf_wang_2002_exact.h | 8 +++++++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index a1f5b61c73..4bbf09c06f 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -71,6 +71,7 @@ RecordablesMap< iaf_wang_2002 >::create() insert_( names::V_m, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::V_m > ); insert_( names::s_AMPA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_AMPA > ); insert_( names::s_GABA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_GABA > ); + insert_( names::s_NMDA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_NMDA > ); insert_( names::I_NMDA, &iaf_wang_2002::get_I_NMDA_ ); } } diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index f162a65bd7..a2e884a77c 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -142,6 +142,7 @@ The following values can be recorded. V_m Membrane potential s_AMPA sum of AMPA gating variables s_GABA sum of GABA gating variables + s_NMDA sum of NMDA gating variables I_NMDA NMDA current =========== =========================================================== diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_wang_2002_exact.cpp index 26a6cb32a9..559419ebc0 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_wang_2002_exact.cpp @@ -66,6 +66,7 @@ RecordablesMap< iaf_wang_2002_exact >::create() insert_( names::V_m, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::V_m > ); insert_( names::s_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_AMPA > ); insert_( names::s_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_GABA > ); + insert_( names::s_NMDA, &iaf_wang_2002_exact::get_s_NMDA_ ); insert_( names::I_NMDA, &iaf_wang_2002_exact::get_I_NMDA_ ); } } @@ -409,14 +410,14 @@ nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[] const double I_GABA = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::s_GABA ]; // The sum of s_NMDA - double total_NMDA = 0; + node.S_.s_NMDA_sum = 0; for ( size_t i = State_::s_NMDA_base + 1, w_idx = 0; i < node.S_.state_vec_size; i += 2, ++w_idx ) { - total_NMDA += ode_state[ i ] * node.B_.weights_.at( w_idx ); + node.S_.s_NMDA_sum += ode_state[ i ] * node.B_.weights_.at( w_idx ); } node.S_.I_NMDA_ = ( ode_state[ State_::V_m ] - node.P_.E_ex ) - / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ State_::V_m ] ) / 3.57 ) * total_NMDA; + / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ State_::V_m ] ) / 3.57 ) * node.S_.s_NMDA_sum; const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_; diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index 972c7813c4..a4e7439cac 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -299,6 +299,7 @@ class iaf_wang_2002_exact : public ArchivingNode long num_ports_; //!< Number of ports int r_; //!< number of refractory steps remaining + double s_NMDA_sum; // For recording NMDA gating variables double I_NMDA_; // For recording NMDA currents State_( const Parameters_& ); //!< Default initialization @@ -388,7 +389,12 @@ class iaf_wang_2002_exact : public ArchivingNode return S_.ode_state_[ elem ]; } - //! Get NMDA current from state, used by UniversalDataLogger + //! Get NMDA current / gating variable from state, used by UniversalDataLogger + double + get_s_NMDA_() const + { + return S_.s_NMDA_sum; + } double get_I_NMDA_() const { From afcd5b5d7899061dc9885f217d48406bc42f0ea6 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 1 May 2024 15:05:39 +0200 Subject: [PATCH 128/184] update notebook --- .../Wang_2002_Model_Approximation.ipynb | 48 +++++++++++++++---- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb index 8586e3d8e8..1233e7bfa9 100644 --- a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb +++ b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "d48013ba-af79-4804-aa7a-ed6720fd2e59", @@ -38,7 +38,7 @@ "The synaptic activations $S_{j,\\mathrm{ext,AMPA}},S_{j,\\mathrm{rec,AMPA}},S_{j,\\mathrm{NMDA}},\\ \\mathrm{ and }\\ S_{j,\\mathrm{GABA}}$\n", "are governed by the equations\n", "\n", - "$$\\begin{align}\n", + "$$\\begin{align} \n", " \\frac{dS_{j,\\mathrm{AMPA}}}{dt} &= -\\frac{S_{j,\\mathrm{AMPA}}}{\\tau_\\mathrm{AMPA}}+\\sum_k \\delta (t - t_j^k) \\\\\n", " \\frac{dS_{j,\\mathrm{GABA}}}{dt} &= -\\frac{S_{j,\\mathrm{GABA}}}{\\tau_\\mathrm{GABA}} + \\sum_k \\delta (t - t_j^k) \\\\\n", " \\frac{dS_{j,\\mathrm{NMDA}}}{dt} &= -\\frac{S_{j,\\mathrm{NMDA}}}{\\tau_\\mathrm{NMDA,decay}}+ \\alpha x_j (1 - S_{j,\\mathrm{NMDA}}) \\\\\n", @@ -85,7 +85,7 @@ "\n", "Our approximate function will then have the form \n", "$$\n", - "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big) \\tag{1}\n", + "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big) \n", "$$\n", "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit of large $t$, i.e.,\n", "$$\n", @@ -124,9 +124,36 @@ " S_\\mathrm{jump} = \n", " \\mathrm{exp}\\Big[-\\alpha \\tau_\\mathrm{r} \\Big] S_j^0\n", " +\n", - " (\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big] \\tag{2}\n", + " (\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big] \\mathrm{,}\n", "\\end{align}\n", - "$$" + "$$\n", + "where $S_j^0$ is the value immediately before spiking.\n", + "\n", + "In each neuron, before the simulation, we compute the following two constants\n", + "$$\\begin{align}\n", + " k_0 &= (\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big] \\\\[3ex]\n", + " k_1 &= \\mathrm{exp}(-\\alpha \\tau_\\mathrm{r}) - 1 \\mathrm{,}\n", + "\\end{align} \n", + "$$\n", + "which are the zeroth and first order coefficients of instantaneous update in the S_j variable after spiking.\n", + "\n", + "In a presynaptic neuron $j$, at time $t^-$ immediately before it spikes, the value of $S_j$ is computed as \n", + "\n", + "$$\n", + "S_j(t^-) = S_j(t_\\mathrm{ls}) \\mathrm{exp}\\big[-\\frac{t^- - t_\\mathrm{ls}}{\\tau_d}\\big] \\mathrm{,}\n", + "$$\n", + "where $t_\\mathrm{ls}$ is the time of the last spike. The value of $S_j$ immediately after spiking at time $t^+$, is then computed as\n", + "$$\n", + "S_j(t^+) = S_j(t^-) + k_0 + k_1 S_j (t^-) \\mathrm{.}\n", + "$$\n", + "\n", + "The difference $S_j(t^+) - S_j(t^-) = k_0 + k_1 S_j (t^-)$ is then sent to the post-synaptic neuron, where it is added to the aggregated gating variable.\n", + "\n", + "In the exact implementation, the spike only affects $S_j$ through the variable $x_j$, and everything is integrated post-synaptically. After receiving a spike, the variable is updated as\n", + "$$\n", + "x_j(t^+) = x_j(t^-) + 1\n", + "$$\n", + "in the post-synaptic neuron, and the value of $S_j$ is updated during the integration of the entire system described in the beginning." ] }, { @@ -136,11 +163,16 @@ "source": [ "### QUESTIONS\n", "- How is $S_j^0$ related to $S_0$?\n", + "\n", + "It's the same variable, just inconsistent naming. I changed the notation now, and introduced different times $t_\\mathrm{ls}$, $t^-$ and $t^+$ to denote the different times we use for our updates, so that we don't have to use $S_0$.\n", + "\n", "- I don't quite get the $-S_0$ in the expression for $\\Delta S$.\n", - "- Could you write down \"what happens when $j$ fires\" equations once for the exact and once for the approximate model?\n", "\n", + "When we derive the update values for S_j, we're solving explicitly for the new value of the S_j variable after the jump from receiving a spike. Since we're aggragating these variables in the post-synaptic neuron, we can't simply set the value in the post-synaptic neuron to $S_\\mathrm{jump}$ directly. Therefore, we need to add the difference before and after the jump for each synapse. The name might be a bit confusing since one could think it's how far the jump is, so maybe it would be a good idea to call it something else, e.g. S_postspike\n", + "\n", + "- Could you write down \"what happens when $j$ fires\" equations once for the exact and once for the approximate model?\n", "\n", - "After spiking, the new value of $S$ is then dependent only on the value of $S$ immediately before spiking. In pre-synaptic neurons, every time it spikes, the value of $S_0$ immediately before spiking is computed by Eq. 1. $\\Delta S = S_\\mathrm{jump} - S_0$ is then computed by Eq. 2, and sent to post-synaptic neurons as an offset in the SpikeEvent object. The The post-synaptic neuron then adds the offset multiplied by weight and multiplicity to its $s_\\mathrm{NMDA}$ variable. Integration in the post-synaptic neuron is then done as a normal exponential synapse. The coefficients in Eq. 2 are only dependent on the synaptic parameters, so only has to be computed once before the simulation." + "Done" ] }, { @@ -566,7 +598,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.2" + "version": "3.11.6" } }, "nbformat": 4, From 3feb295a829575cc7868d30847d3e5c60a4f2fb8 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Wed, 1 May 2024 15:08:23 +0200 Subject: [PATCH 129/184] clang-format --- models/iaf_wang_2002_exact.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index a4e7439cac..e75134c19e 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -300,7 +300,7 @@ class iaf_wang_2002_exact : public ArchivingNode int r_; //!< number of refractory steps remaining double s_NMDA_sum; // For recording NMDA gating variables - double I_NMDA_; // For recording NMDA currents + double I_NMDA_; // For recording NMDA currents State_( const Parameters_& ); //!< Default initialization State_( const State_& ); From 5ea17ebae1f4adacf4f79001b102356328c58851 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Thu, 2 May 2024 11:42:41 +0200 Subject: [PATCH 130/184] update documentation --- models/iaf_wang_2002.h | 76 ++++++++++++++++++------------------ models/iaf_wang_2002_exact.h | 68 +++++++++++++++++--------------- 2 files changed, 74 insertions(+), 70 deletions(-) diff --git a/models/iaf_wang_2002.h b/models/iaf_wang_2002.h index a2e884a77c..de4d25f45c 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_wang_2002.h @@ -68,7 +68,7 @@ Description ``iaf_wang_2002`` is a leaky integrate-and-fire neuron model with -* an approximate version of the neuron model described in [1]_. +* an approximate version of the neuron model described in [1,2,3]_. * exponential conductance-based AMPA and GABA-synapses * exponential conductance-based NMDA-synapses weighted such that it approximates the original non-linear dynamics * a fixed refractory period @@ -97,10 +97,8 @@ where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets f k_0 &= (\alpha \tau_r)^{\frac{\tau_r}{\tau_d}} \gamma \big[1 - \frac{\tau_r}{\tau_d}, \alpha \tau_r \big] \\[3ex] k_1 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 -where :math:`\mathrm{E_N}` is the `generalized exponential integral -`_, and :math:`\Gamma` is the `gamma function -`_. For these values of :math:`k_0` and :math:`k_1`, the approximate model -will approach the exact model for large t. +where :math:`\gamma` is the `lower incomplete gamma function +`_. For these values of :math:`k_0` and :math:`k_1`, the approximate model will approach the exact model for large t. The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. @@ -115,36 +113,37 @@ Parameters The following parameters can be set in the status dictionary. -=============== ======= =========================================================== - E_L mV Resting potential - E_ex mV Excitatory reversal potential - E_in mV Inhibitory reversal potential - V_th mV Threshold potential - V_reset mV Reset potential - C_m pF Membrane capacitance - g_L nS Leak conductance - t_ref ms Refractory period - tau_AMPA ms Synaptic time constant for AMPA synapse - tau_GABA ms Synaptic time constant for GABA synapse - tau_rise_NMDA ms Synaptic rise time constant for NMDA synapse - tau_decay_NMDA ms Synaptic decay time constant for NMDA synapse - alpha 1/ms Scaling factor for NMDA synapse - conc_Mg2 mM Extracellular magnesium concentration - gsl_error_tol - GSL error tolerance -=============== ======= =========================================================== - -Recordables -+++++++++++ - -The following values can be recorded. - -=========== =========================================================== - V_m Membrane potential - s_AMPA sum of AMPA gating variables - s_GABA sum of GABA gating variables - s_NMDA sum of NMDA gating variables - I_NMDA NMDA current -=========== =========================================================== +=================== ================== ================================= ======================================================================== +**Parameter** **Default** **Math equivalent** **Description** +=================== ================== ================================= ======================================================================== +``E_L`` -70.0 mV :math:`E_\mathrm{L}` Leak reversal potential +``E_ex`` 0.0 mV :math:`E_\mathrm{ex}` Excitatory reversal potential +``E_in`` -70.0 mV :math:`E_\mathrm{in}` Inhibitory reversal potential +``V_th`` -55.0 mV :math:`V_\mathrm{th}` Spike threshold +``V_reset`` -60.0 mV :math:`V_\mathrm{reset}` Reset potential of the membrane +``C_m`` 250.0 pF :math:`C_\mathrm{m}` Capacitance of the membrane +``g_L`` 25.0 nS :math:`g_\mathrm{L}` Leak conductance +``t_ref`` 2.0 ms :math:`t_\mathrm{ref}` Duration of refractory period +``tau_AMPA`` 2.0 ms :math:`\tau_\mathrm{AMPA}` Time constant of AMPA synapse +``tau_GABA`` 5.0 ms :math:`\tau_\mathrm{GABA}` Time constant of GABA synapse +``tau_rise_NMDA`` 2.0 ms :math:`\tau_\mathrm{NMDA,rise}` Rise time constant of NMDA synapse +``tau_decay_NMDA`` 100.0 ms :math:`\tau_\mathrm{NMDA,decay}` Decay time constant of NMDA synapse +``alpha`` 0.5 ms^{-1} :math:`\alpha` Rise-time coupling strength for NMDA synapse +``conc_Mg2`` 1.0 mM :math:`[\mathrm{Mg}^+]` Extracellular magnesium concentration +``gsl_error_tol`` 1e-3 Error tolerance for GSL RKF45-solver +=================== ================== ================================= ======================================================================== + +The following state variables evolve during simulation and are available either as neuron properties or as recordables. + +================== ================= ========================== ================================= +**State variable** **Initial value** **Math equivalent** **Description** +================== ================= ========================== ================================= +``V_m`` -70 mV :math:`V_{\mathrm{m}}` Membrane potential +``s_AMPA`` 0 :math:`s_\mathrm{AMPA}` AMPA gating variable +``s_GABA`` 0 :math:`s_\mathrm{GABA}` GABA gating variable +``s_NMDA`` 0 :math:`s_\mathrm{NMDA}` NMDA gating variable +``I_NMDA`` 0 pA :math:`I_\mathrm{NMDA}` NMDA current +================== ================= ========================== ================================= .. note:: :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so these variables are set by changing the weights. @@ -168,9 +167,10 @@ SpikeEvent, CurrentEvent, DataLoggingRequest References ++++++++++ -.. [1] Wang, X. J. (2002). Probabilistic decision making by slow reverberation in - cortical circuits. Neuron, 36(5), 955-968. - DOI: https://doi.org/10.1016/S0896-6273(02)01092-9 +.. [1] Wang, X.-J. (1999). Synaptic Basis of Cortical Persistent Activity: The Importance of NMDA Receptors to Working Memory. Journal of Neuroscience, 19(21), 9587–9603. https://doi.org/10.1523/JNEUROSCI.19-21-09587.1999 +.. [2] Wang, X.-J. (1999). Synaptic Basis of Cortical Persistent Activity: The Importance of NMDA Receptors to Working Memory. Journal of Neuroscience, 19(21), 9587–9603. https://doi.org/10.1523/JNEUROSCI.19-21-09587.1999 +.. [3] Wang, X. J. (2002). Probabilistic decision making by slow reverberation in + cortical circuits. Neuron, 36(5), 955-968. https://doi.org/10.1016/S0896-6273(02)01092-9 See also ++++++++ diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_wang_2002_exact.h index e75134c19e..26d0a487c7 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_wang_2002_exact.h @@ -104,41 +104,44 @@ slow. The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. +This model is slow to simulate when there are many neurons with NMDA-synapses, since each post-synaptic neuron simulates each pre-synaptic connection explicitly. The model iaf_wang_2002 is an approximation to this model which is significantly faster. Parameters ++++++++++ The following parameters can be set in the status dictionary. -=============== ======= =========================================================== - E_L mV Resting potential - E_ex mV Excitatory reversal potential - E_in mV Inhibitory reversal potential - V_th mV Threshold potential - V_reset mV Reset potential - C_m pF Membrane capacitance - g_L nS Leak conductance - t_ref ms Refractory period - tau_AMPA ms Synaptic time constant for AMPA synapse - tau_GABA ms Synaptic time constant for GABA synapse - tau_rise_NMDA ms Synaptic rise time constant for NMDA synapse - tau_decay_NMDA ms Synaptic decay time constant for NMDA synapse - alpha 1/ms Scaling factor for NMDA synapse - conc_Mg2 mM Extracellular magnesium concentration - gsl_error_tol - GSL error tolerance -=============== ======= =========================================================== - -Recordables -+++++++++++ - -The following values can be recorded. - -=========== =========================================================== - V_m Membrane potential - s_AMPA sum of AMPA gating variables - s_GABA sum of GABA gating variables - I_NMDA NMDA currents -=========== =========================================================== +=================== ================== ================================= ======================================================================== +**Parameter** **Default** **Math equivalent** **Description** +=================== ================== ================================= ======================================================================== +``E_L`` -70.0 mV :math:`E_\mathrm{L}` Leak reversal potential +``E_ex`` 0.0 mV :math:`E_\mathrm{ex}` Excitatory reversal potential +``E_in`` -70.0 mV :math:`E_\mathrm{in}` Inhibitory reversal potential +``V_th`` -55.0 mV :math:`V_\mathrm{th}` Spike threshold +``V_reset`` -60.0 mV :math:`V_\mathrm{reset}` Reset potential of the membrane +``C_m`` 250.0 pF :math:`C_\mathrm{m}` Capacitance of the membrane +``g_L`` 25.0 nS :math:`g_\mathrm{L}` Leak conductance +``t_ref`` 2.0 ms :math:`t_\mathrm{ref}` Duration of refractory period +``tau_AMPA`` 2.0 ms :math:`\tau_\mathrm{AMPA}` Time constant of AMPA synapse +``tau_GABA`` 5.0 ms :math:`\tau_\mathrm{GABA}` Time constant of GABA synapse +``tau_rise_NMDA`` 2.0 ms :math:`\tau_\mathrm{NMDA,rise}` Rise time constant of NMDA synapse +``tau_decay_NMDA`` 100.0 ms :math:`\tau_\mathrm{NMDA,decay}` Decay time constant of NMDA synapse +``alpha`` 0.5 ms^{-1} :math:`\alpha` Rise-time coupling strength for NMDA synapse +``conc_Mg2`` 1.0 mM :math:`[\mathrm{Mg}^+]` Extracellular magnesium concentration +``gsl_error_tol`` 1e-3 Error tolerance for GSL RKF45-solver +=================== ================== ================================= ======================================================================== + +The following state variables evolve during simulation and are available either as neuron properties or as recordables. + +================== ================= ========================== ================================= +**State variable** **Initial value** **Math equivalent** **Description** +================== ================= ========================== ================================= +``V_m`` -70 mV :math:`V_{\mathrm{m}}` Membrane potential +``s_AMPA`` 0 :math:`s_\mathrm{AMPA}` AMPA gating variable +``s_GABA`` 0 :math:`s_\mathrm{GABA}` GABA gating variable +``s_NMDA`` 0 :math:`s_\mathrm{NMDA}` NMDA gating variable +``I_NMDA`` 0 pA :math:`I_\mathrm{NMDA}` NMDA current +================== ================= ========================== ================================= .. note:: It is possible to set values for :math:`V_\mathrm{m}`, :math:`S_\mathrm{AMPA}` and :math:`S_\mathrm{GABA}` when creating the model, while the different :math:`s_{j,\mathrm{NMDA}}` (`j` represents presynaptic neuron `j`) can not be set by the user. @@ -159,9 +162,10 @@ SpikeEvent, CurrentEvent, DataLoggingRequest References ++++++++++ -.. [1] Wang, X. J. (2002). Probabilistic decision making by slow reverberation in - cortical circuits. Neuron, 36(5), 955-968. - DOI: https://doi.org/10.1016/S0896-6273(02)01092-9 +.. [1] Wang, X.-J. (1999). Synaptic Basis of Cortical Persistent Activity: The Importance of NMDA Receptors to Working Memory. Journal of Neuroscience, 19(21), 9587–9603. https://doi.org/10.1523/JNEUROSCI.19-21-09587.1999 +.. [2] Wang, X.-J. (1999). Synaptic Basis of Cortical Persistent Activity: The Importance of NMDA Receptors to Working Memory. Journal of Neuroscience, 19(21), 9587–9603. https://doi.org/10.1523/JNEUROSCI.19-21-09587.1999 +.. [3] Wang, X. J. (2002). Probabilistic decision making by slow reverberation in + cortical circuits. Neuron, 36(5), 955-968. https://doi.org/10.1016/S0896-6273(02)01092-9 See also ++++++++ From 70e8e561fa2b2e6de4dd8fe6bdd63bf9c0f5f2e7 Mon Sep 17 00:00:00 2001 From: Hans Ekkehard Plesser Date: Thu, 2 May 2024 16:38:53 +0200 Subject: [PATCH 131/184] Further polishing of notebook --- .../Wang_2002_Model_Approximation.ipynb | 73 ++++++++----------- 1 file changed, 31 insertions(+), 42 deletions(-) diff --git a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb index 1233e7bfa9..909d42d38a 100644 --- a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb +++ b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "d48013ba-af79-4804-aa7a-ed6720fd2e59", @@ -61,7 +61,7 @@ "\n", "We will from now on only focus on the last two equations, which are the subjects of the approximation in the model. We drop the subscript NMDA in the following and abbreviate \"rise\" and \"decay\" as \"r\" and \"d\", respectively. \n", "\n", - "Assume that neuron $j$ last spike at time zero and does not spike again until $t$. Then we obtain the following expression for time evolution of $S_j$ until $t$ by plugging in the solution for $x_j$ on the interval $(0, t]$:\n", + "Assume that neuron $j$ last spiked at time zero and does not spike again until $t$. Then we obtain the following expression for time evolution of $S_j$ until $t$ by plugging in the solution for $x_j$ on the interval $(0, t]$:\n", "$$\n", "\\begin{align}\n", " \\frac{dS_{j}}{dt} + \\bigg(\\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}}\\bigg] \\bigg) S_{j,\\mathrm{NMDA}} &= \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}}\\bigg] \\;\\mathrm{.}\n", @@ -70,10 +70,10 @@ "We obtain the formal solution by an integrating factor as\n", "$$\n", " S_{j}(t) = \\mathrm{exp}\\Bigg[-\\int_0^t \\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] dt' \\Bigg] \n", - " \\Bigg( S_{j}^0 +\\int_0^t \\mathrm{exp}\\Bigg[\\int_0^{t'} \\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t''}{\\tau_\\mathrm{r}} \\bigg] dt'' \\Bigg]\\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}}\\bigg] dt' \\Bigg) \\mathrm{.}\n", + " \\Bigg( S_{j}^0 +\\int_0^t \\mathrm{exp}\\Bigg[\\int_0^{t'} \\frac{1}{\\tau_\\mathrm{d}} + \\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t''}{\\tau_\\mathrm{r}} \\bigg] dt'' \\Bigg]\\alpha x_j^0 \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}}\\bigg] dt' \\Bigg) \\mathrm{,}\n", "$$\n", "\n", - "The first and innermost integrals can be solved in closed form, which gives\n", + "with $S_j^0=S_j(t=0)$. The first and innermost integrals can be solved in closed form, which gives\n", "$$\n", " S_{j}(t) \n", " = \n", @@ -83,23 +83,25 @@ "\n", "Since we have two different time scales in the exponential inside the remaining integral, there is no exact solution for arbitrary limits of integration. We would like to approximate this function with an exponential function, such that we can integrate the sum of multiple such functions in a single variable, as we do for the AMPA and GABA synapses.\n", "\n", - "Our approximate function will then have the form \n", + "For NMDA synapses we have $\\tau_\\mathrm{r}\\ll\\tau_\\mathrm{d}$, whence we define our approximate function between spikes in terms of the decay time constant as\n", "$$\n", - "\\hat{S_j} (t) = S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big) \n", + "\\hat{S_j} (t) = S_\\mathrm{post} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big) \\;.\n", "$$\n", - "between spikes, where $S_\\mathrm{jump}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{jump}$ such that the approximation is exact in the limit of large $t$, i.e.,\n", + "Here $S_\\mathrm{post}$ is some initial condition immediately after receiving a spike. We set the value of $S_\\mathrm{post}$ such that the approximation is exact in the limit of large $t$, i.e.,\n", "$$\n", "\\lim_{t \\to \\infty} \\frac{S_j(t)}{\\hat{S}_j(t)}\\to 1 \\;.\n", "$$\n", - "We additionally assume that $x_0 = 0$ immediately before every spike, i.e., that the effect on $x_j$ of the previous spike has vanished by the time the next spike arrives. Since $\\tau_r$ is very small (e.g. $2$ ms), this is reasonable unless the neuron is firing very rapidly.\n", + "Note that a new $S_\\mathrm{post}$ is computed after every spike of neuron $j$.\n", "\n", - "Setting $x_0 = 1$ in the exact solution upon spiking, we get\n", + "To obtain $S_\\mathrm{post}$, we assume that $x_0 = 0$ immediately before every spike, i.e., that the effect on $x_j$ of the previous spike has vanished by the time the next spike arrives. Since $\\tau_r$ is very small (e.g. $2$ ms), this is reasonable unless the neuron is firing very rapidly. Since $x$ is increased by $1$ on every spike, we have $x_0=1$ immediately after spiking. \n", + "\n", + "We now set our approximation ansatz equal to the exact solution, inserting $x_0=1$, and move the exponential in $\\tau_\\mathrm{d}$ to the right hand side\n", "$$\\begin{align}\n", - " S_\\mathrm{jump} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", + " S_\\mathrm{post} \\mathrm{exp}\\Big(-\\frac{t}{\\tau_d}\\Big)\n", " &=\n", " \\mathrm{exp}\\Bigg[-\\frac{t}{\\tau_\\mathrm{d}} - \\alpha \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", " \\Bigg(S_{j}^0 + \\alpha \\int_0^{t} \\mathrm{exp}\\Bigg[(t') \\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg] dt' \\Bigg) \\mathrm{,} \\\\\n", - " \\Leftrightarrow S_\\mathrm{jump}\n", + " \\Leftrightarrow S_\\mathrm{post}\n", " &=\n", " \\mathrm{exp}\\Bigg[- \\alpha \\tau_\\mathrm{r} \\bigg( 1-\\mathrm{exp}\\bigg[-\\frac{t}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]\n", " \\Bigg( S_{j}^0 + \\alpha \\int_0^{t} \\mathrm{exp}\\Bigg[\\bigg( \\frac{1}{\\tau_\\mathrm{d}} - \\frac{1}{\\tau_\\mathrm{r}} \\bigg) t' + \\alpha \\tau_\\mathrm{r} \\bigg( 1 - \\mathrm{exp}\\bigg[-\\frac{t'}{\\tau_\\mathrm{r}} \\bigg] \\bigg) \\Bigg]dt' \\Bigg) \\;.\n", @@ -121,33 +123,39 @@ "We thus have\n", "\n", "$$\\begin{align}\n", - " S_\\mathrm{jump} = \n", + " S_\\mathrm{post} = \n", " \\mathrm{exp}\\Big[-\\alpha \\tau_\\mathrm{r} \\Big] S_j^0\n", " +\n", " (\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big] \\mathrm{,}\n", "\\end{align}\n", "$$\n", - "where $S_j^0$ is the value immediately before spiking.\n", + "where $S_j^0$ is the value of $S_j$ immediately before spiking. Note that since the exact solution $S_j(t)$ includes the full history of $S_j$, and thus $S_\\mathrm{post}$ as its approxmation also includes the full history. \n", "\n", - "In each neuron, before the simulation, we compute the following two constants\n", + "Defining\n", "$$\\begin{align}\n", " k_0 &= (\\alpha \\tau_r)^{\\frac{\\tau_r}{\\tau_d}} \\gamma \\big[1 - \\frac{\\tau_r}{\\tau_d}, \\alpha \\tau_r \\big] \\\\[3ex]\n", - " k_1 &= \\mathrm{exp}(-\\alpha \\tau_\\mathrm{r}) - 1 \\mathrm{,}\n", + " k'_1 &= \\mathrm{exp}(-\\alpha \\tau_\\mathrm{r}) \n", "\\end{align} \n", "$$\n", - "which are the zeroth and first order coefficients of instantaneous update in the S_j variable after spiking.\n", - "\n", - "In a presynaptic neuron $j$, at time $t^-$ immediately before it spikes, the value of $S_j$ is computed as \n", + "we can write\n", + "$$\n", + " S_\\mathrm{post} = k_0 + k'_1 S_j^0 \\;.\n", + "$$\n", "\n", + "In a presynaptic neuron $j$, let $t_\\mathrm{ls}$ be the time of the previous spike and $t^-$ the time immediately before the next spike. Then we have from the definition of our approximation\n", + "$$\n", + "S_j(t^-) = S_j(t_\\mathrm{ls}) \\mathrm{exp}\\big[-\\frac{t^- - t_\\mathrm{ls}}{\\tau_d}\\big] \\;.\n", "$$\n", - "S_j(t^-) = S_j(t_\\mathrm{ls}) \\mathrm{exp}\\big[-\\frac{t^- - t_\\mathrm{ls}}{\\tau_d}\\big] \\mathrm{,}\n", + "The value of $S_j$ at $t^+$ immediately after the spike is then given by\n", "$$\n", - "where $t_\\mathrm{ls}$ is the time of the last spike. The value of $S_j$ immediately after spiking at time $t^+$, is then computed as\n", + "S_j(t^+) = S_\\mathrm{post} = k_0 + k'_1 S_j(t^-)\n", "$$\n", - "S_j(t^+) = S_j(t^-) + k_0 + k_1 S_j (t^-) \\mathrm{.}\n", + "and the change in $S_j$ upon the spike at $t$ is given by\n", "$$\n", + "\\Delta S_j = S_j(t^+)-S_j(t^-) = k_0 + k'_1 S_j(t^-) - S_j(t^-) = k_0 + k_1 S_j(t^-) \\;.\n", + "$$\n", + "with $k_1 = k'_1 - 1$. The change $\\Delta S_j$ is then transmitted to all postsynaptic neurons and added to their aggregated $S$ input variable.\n", "\n", - "The difference $S_j(t^+) - S_j(t^-) = k_0 + k_1 S_j (t^-)$ is then sent to the post-synaptic neuron, where it is added to the aggregated gating variable.\n", "\n", "In the exact implementation, the spike only affects $S_j$ through the variable $x_j$, and everything is integrated post-synaptically. After receiving a spike, the variable is updated as\n", "$$\n", @@ -156,25 +164,6 @@ "in the post-synaptic neuron, and the value of $S_j$ is updated during the integration of the entire system described in the beginning." ] }, - { - "cell_type": "markdown", - "id": "60d7fc0d-e96e-4fa4-994e-35a9b34a0624", - "metadata": {}, - "source": [ - "### QUESTIONS\n", - "- How is $S_j^0$ related to $S_0$?\n", - "\n", - "It's the same variable, just inconsistent naming. I changed the notation now, and introduced different times $t_\\mathrm{ls}$, $t^-$ and $t^+$ to denote the different times we use for our updates, so that we don't have to use $S_0$.\n", - "\n", - "- I don't quite get the $-S_0$ in the expression for $\\Delta S$.\n", - "\n", - "When we derive the update values for S_j, we're solving explicitly for the new value of the S_j variable after the jump from receiving a spike. Since we're aggragating these variables in the post-synaptic neuron, we can't simply set the value in the post-synaptic neuron to $S_\\mathrm{jump}$ directly. Therefore, we need to add the difference before and after the jump for each synapse. The name might be a bit confusing since one could think it's how far the jump is, so maybe it would be a good idea to call it something else, e.g. S_postspike\n", - "\n", - "- Could you write down \"what happens when $j$ fires\" equations once for the exact and once for the approximate model?\n", - "\n", - "Done" - ] - }, { "cell_type": "markdown", "id": "a6fa9697-6765-421e-ba8d-640e14f27399", @@ -598,7 +587,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.6" + "version": "3.12.2" } }, "nbformat": 4, From a1b6b59a592cee1a150b23c714ab94725abfe09a Mon Sep 17 00:00:00 2001 From: janskaar Date: Thu, 2 May 2024 21:15:49 +0200 Subject: [PATCH 132/184] Update models/iaf_wang_2002.cpp Co-authored-by: Hans Ekkehard Plesser --- models/iaf_wang_2002.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/iaf_wang_2002.cpp b/models/iaf_wang_2002.cpp index 4bbf09c06f..31d2e41951 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_wang_2002.cpp @@ -389,8 +389,8 @@ nest::iaf_wang_2002::pre_run_hook() const double alpha_tau = P_.alpha * P_.tau_rise_NMDA; const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; - V_.S_jump_1 = exp( -P_.alpha * P_.tau_rise_NMDA ) - 1; - V_.S_jump_0 = pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma_lower( 1 - tau_rise_tau_dec, alpha_tau ); + V_.S_jump_1 = std::expm1( -P_.alpha * P_.tau_rise_NMDA ); + V_.S_jump_0 = std::pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma_lower( 1 - tau_rise_tau_dec, alpha_tau ); } /* --------------------------------------------------------------------------- From ea254fe61f8b983d2929009f33822ff976f269ad Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 4 May 2024 13:42:40 +0200 Subject: [PATCH 133/184] change iaf_wang_2002 to iaf_bw_2001 --- .../Wang_2002_Model_Approximation.ipynb | 18 ++--- models/{iaf_wang_2002.cpp => iaf_bw_2001.cpp} | 68 +++++++++--------- models/{iaf_wang_2002.h => iaf_bw_2001.h} | 60 ++++++++-------- ...g_2002_exact.cpp => iaf_bw_2001_exact.cpp} | 70 +++++++++---------- ..._wang_2002_exact.h => iaf_bw_2001_exact.h} | 56 +++++++-------- modelsets/full | 4 +- pynest/examples/wang_decision_making.py | 4 +- .../test_neurons_handle_multiplicity.py | 4 +- .../test_multimeter_stepping.py | 4 +- .../sli2py_regressions/test_issue_77.py | 4 +- testsuite/pytests/test_iaf_wang_2002.py | 14 ++-- testsuite/pytests/test_iaf_wang_2002_exact.py | 10 +-- testsuite/pytests/test_refractory.py | 4 +- testsuite/regressiontests/ticket-618.sli | 2 +- 14 files changed, 161 insertions(+), 161 deletions(-) rename models/{iaf_wang_2002.cpp => iaf_bw_2001.cpp} (87%) rename models/{iaf_wang_2002.h => iaf_bw_2001.h} (91%) rename models/{iaf_wang_2002_exact.cpp => iaf_bw_2001_exact.cpp} (86%) rename models/{iaf_wang_2002_exact.h => iaf_bw_2001_exact.h} (92%) diff --git a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb index 909d42d38a..806953d4f4 100644 --- a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb +++ b/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb @@ -14,7 +14,7 @@ "id": "bca71cf0-a616-4077-9334-a72861e24e76", "metadata": {}, "source": [ - "This notebook briefly describes the approximation underlying the `iaf_wang_2002` model in NEST. The model itself was first published in\n", + "This notebook briefly describes the approximation underlying the `iaf_bw_2001` model in NEST. The model itself was first published in\n", "\n", "Wang, X.-J. (2002). Probabilistic Decision Making by Slow Reverberation in Cortical Circuits. Neuron, 36(5), 955–968. https://doi.org/10.1016/S0896-6273(02)01092-9\n", "\n", @@ -47,7 +47,7 @@ "$$\n", "where indices $j$ mark presynaptic neurons and $k$ spike times.\n", "\n", - "This original model by Wang (2002) is implemented in NEST as `iaf_wang_2002_exact`. Due to the nonlinear term $x_j (1 - S_{j,\\mathrm{NMDA}})$, NMDA synapses cannot be combined together, so each incoming synapse to a neuron needs to be integrated individually, significantly impacting performance. Note that $S_{j,\\mathrm{NMDA}}(t)$ represents the input to a given neuron from presynaptic neuron $j$. Importantly, the same $S_j(t)$ describes input to all neurons postsynaptic to $j$, although shifted by possibly different delays and weighted by different input weights. This allows us to compute $S_j(t)$ only once in neuron $j$ and then distribute this value, for each simulation time step, to all post-synaptic neurons of $j$.\n", + "This original model by Wang (2002) is implemented in NEST as `iaf_bw_2001_exact`. Due to the nonlinear term $x_j (1 - S_{j,\\mathrm{NMDA}})$, NMDA synapses cannot be combined together, so each incoming synapse to a neuron needs to be integrated individually, significantly impacting performance. Note that $S_{j,\\mathrm{NMDA}}(t)$ represents the input to a given neuron from presynaptic neuron $j$. Importantly, the same $S_j(t)$ describes input to all neurons postsynaptic to $j$, although shifted by possibly different delays and weighted by different input weights. This allows us to compute $S_j(t)$ only once in neuron $j$ and then distribute this value, for each simulation time step, to all post-synaptic neurons of $j$.\n", "\n", "Prior implementations of the model, such as the [Brian2 implementation by Wimmer and Stimberg](https://brian2.readthedocs.io/en/stable/examples/frompapers.Wang_2002.html) and presumably Wang's original implementation, circumvent address this by investigating a model with all-to-all connectivity with a single delay value and fixed-timestep forward Euler integration. The NEST implementation supports arbitrary connectivity and delays, and uses RKF45 adaptive stepsize integration. " ] @@ -290,9 +290,9 @@ "nest.rng_seed = 12345\n", "\n", "# pre-synaptic neuron, must be approximate model since the post-synaptic approximate model needs the offset\n", - "nrn_pre = nest.Create(\"iaf_wang_2002\", params)\n", - "nrn_post_approx = nest.Create(\"iaf_wang_2002\", params)\n", - "nrn_post_exact = nest.Create(\"iaf_wang_2002_exact\", params)\n", + "nrn_pre = nest.Create(\"iaf_bw_2001\", params)\n", + "nrn_post_approx = nest.Create(\"iaf_bw_2001\", params)\n", + "nrn_post_exact = nest.Create(\"iaf_bw_2001_exact\", params)\n", "\n", "pg = nest.Create(\"poisson_generator\", {\"rate\": 50.0})\n", "\n", @@ -300,7 +300,7 @@ "vm_post_approx = nest.Create(\"voltmeter\", {\"interval\": nest.resolution})\n", "vm_post_exact = nest.Create(\"voltmeter\", {\"interval\": nest.resolution})\n", "\n", - "receptors = nest.GetDefaults(\"iaf_wang_2002\")[\"receptor_types\"]\n", + "receptors = nest.GetDefaults(\"iaf_bw_2001\")[\"receptor_types\"]\n", "ampa_ext_syn_spec = {\"synapse_model\": \"static_synapse\", \"weight\": w_ext, \"receptor_type\": receptors[\"AMPA\"]}\n", "\n", "rec_syn_specs = nest.CollocatedSynapses(\n", @@ -401,9 +401,9 @@ "\n", " pp = params.copy()\n", " pp[\"t_ref\"] = 0\n", - " pre = nest.Create(\"iaf_wang_2002\", n=n_pre, params=pp) # t_ref==0 to make \"parroting\" easier\n", - " post_app = nest.Create(\"iaf_wang_2002\", params=params)\n", - " post_exa = nest.Create(\"iaf_wang_2002_exact\", params=params)\n", + " pre = nest.Create(\"iaf_bw_2001\", n=n_pre, params=pp) # t_ref==0 to make \"parroting\" easier\n", + " post_app = nest.Create(\"iaf_bw_2001\", params=params)\n", + " post_exa = nest.Create(\"iaf_bw_2001_exact\", params=params)\n", " rec_pre, rec_post_app, rec_post_exa = nest.Create(\"spike_recorder\", n=3)\n", " vm_app, vm_exa = nest.Create(\"voltmeter\", params={\"interval\": nest.resolution}, n=2)\n", "\n", diff --git a/models/iaf_wang_2002.cpp b/models/iaf_bw_2001.cpp similarity index 87% rename from models/iaf_wang_2002.cpp rename to models/iaf_bw_2001.cpp index 31d2e41951..bb5058a8fc 100644 --- a/models/iaf_wang_2002.cpp +++ b/models/iaf_bw_2001.cpp @@ -1,5 +1,5 @@ /* - * iaf_wang_2002.cpp + * iaf_bw_2001.cpp * * This file is part of NEST. * @@ -20,7 +20,7 @@ * */ -#include "iaf_wang_2002.h" +#include "iaf_bw_2001.h" #ifdef HAVE_GSL @@ -50,14 +50,14 @@ /* --------------------------------------------------------------------------- * Recordables map * --------------------------------------------------------------------------- */ -nest::RecordablesMap< nest::iaf_wang_2002 > nest::iaf_wang_2002::recordablesMap_; +nest::RecordablesMap< nest::iaf_bw_2001 > nest::iaf_bw_2001::recordablesMap_; namespace nest { void -register_iaf_wang_2002( const std::string& name ) +register_iaf_bw_2001( const std::string& name ) { - register_node_model< iaf_wang_2002 >( name ); + register_node_model< iaf_bw_2001 >( name ); } /* * Override the create() method with one call to RecordablesMap::insert_() @@ -65,26 +65,26 @@ register_iaf_wang_2002( const std::string& name ) */ template <> void -RecordablesMap< iaf_wang_2002 >::create() +RecordablesMap< iaf_bw_2001 >::create() { // add state variables to recordables map - insert_( names::V_m, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::V_m > ); - insert_( names::s_AMPA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_AMPA > ); - insert_( names::s_GABA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_GABA > ); - insert_( names::s_NMDA, &iaf_wang_2002::get_ode_state_elem_< iaf_wang_2002::State_::s_NMDA > ); - insert_( names::I_NMDA, &iaf_wang_2002::get_I_NMDA_ ); + insert_( names::V_m, &iaf_bw_2001::get_ode_state_elem_< iaf_bw_2001::State_::V_m > ); + insert_( names::s_AMPA, &iaf_bw_2001::get_ode_state_elem_< iaf_bw_2001::State_::s_AMPA > ); + insert_( names::s_GABA, &iaf_bw_2001::get_ode_state_elem_< iaf_bw_2001::State_::s_GABA > ); + insert_( names::s_NMDA, &iaf_bw_2001::get_ode_state_elem_< iaf_bw_2001::State_::s_NMDA > ); + insert_( names::I_NMDA, &iaf_bw_2001::get_I_NMDA_ ); } } extern "C" inline int -nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode ) +nest::iaf_bw_2001_dynamics( double, const double y[], double f[], void* pnode ) { // a shorthand - typedef nest::iaf_wang_2002::State_ S; + typedef nest::iaf_bw_2001::State_ S; // get access to node so we can almost work as in a member function assert( pnode ); - nest::iaf_wang_2002& node = *( reinterpret_cast< nest::iaf_wang_2002* >( pnode ) ); + nest::iaf_bw_2001& node = *( reinterpret_cast< nest::iaf_bw_2001* >( pnode ) ); // y[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.y[]. @@ -111,7 +111,7 @@ nest::iaf_wang_2002_dynamics( double, const double y[], double f[], void* pnode * Default constructors defining default parameters and state * --------------------------------------------------------------------------- */ -nest::iaf_wang_2002::Parameters_::Parameters_() +nest::iaf_bw_2001::Parameters_::Parameters_() : E_L( -70.0 ) // mV , E_ex( 0.0 ) // mV , E_in( -70.0 ) // mV @@ -130,7 +130,7 @@ nest::iaf_wang_2002::Parameters_::Parameters_() { } -nest::iaf_wang_2002::State_::State_( const Parameters_& p ) +nest::iaf_bw_2001::State_::State_( const Parameters_& p ) : r_( 0 ) { y_[ V_m ] = p.E_L; // initialize to reversal potential @@ -141,7 +141,7 @@ nest::iaf_wang_2002::State_::State_( const Parameters_& p ) I_NMDA_ = 0.0; } -nest::iaf_wang_2002::State_::State_( const State_& s ) +nest::iaf_bw_2001::State_::State_( const State_& s ) : r_( s.r_ ) { y_[ V_m ] = s.y_[ V_m ]; @@ -152,7 +152,7 @@ nest::iaf_wang_2002::State_::State_( const State_& s ) I_NMDA_ = s.I_NMDA_; } -nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) +nest::iaf_bw_2001::Buffers_::Buffers_( iaf_bw_2001& n ) : logger_( n ) , spikes_() , s_( nullptr ) @@ -164,7 +164,7 @@ nest::iaf_wang_2002::Buffers_::Buffers_( iaf_wang_2002& n ) // Initialization of the remaining members is deferred to init_buffers_(). } -nest::iaf_wang_2002::Buffers_::Buffers_( const Buffers_&, iaf_wang_2002& n ) +nest::iaf_bw_2001::Buffers_::Buffers_( const Buffers_&, iaf_bw_2001& n ) : logger_( n ) , s_( nullptr ) , c_( nullptr ) @@ -178,7 +178,7 @@ nest::iaf_wang_2002::Buffers_::Buffers_( const Buffers_&, iaf_wang_2002& n ) * --------------------------------------------------------------------------- */ void -nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const +nest::iaf_bw_2001::Parameters_::get( DictionaryDatum& d ) const { def< double >( d, names::E_L, E_L ); def< double >( d, names::E_ex, E_ex ); @@ -198,7 +198,7 @@ nest::iaf_wang_2002::Parameters_::get( DictionaryDatum& d ) const } void -nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) +nest::iaf_bw_2001::Parameters_::set( const DictionaryDatum& d, Node* node ) { // allow setting the membrane potential updateValueParam< double >( d, names::E_L, E_L, node ); @@ -248,7 +248,7 @@ nest::iaf_wang_2002::Parameters_::set( const DictionaryDatum& d, Node* node ) } void -nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const +nest::iaf_bw_2001::State_::get( DictionaryDatum& d ) const { def< double >( d, names::V_m, y_[ V_m ] ); // Membrane potential def< double >( d, names::s_AMPA, y_[ s_AMPA ] ); @@ -258,7 +258,7 @@ nest::iaf_wang_2002::State_::get( DictionaryDatum& d ) const } void -nest::iaf_wang_2002::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) +nest::iaf_bw_2001::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) { updateValueParam< double >( d, names::V_m, y_[ V_m ], node ); updateValueParam< double >( d, names::s_AMPA, y_[ s_AMPA ], node ); @@ -270,7 +270,7 @@ nest::iaf_wang_2002::State_::set( const DictionaryDatum& d, const Parameters_&, * Default constructor for node * --------------------------------------------------------------------------- */ -nest::iaf_wang_2002::iaf_wang_2002() +nest::iaf_bw_2001::iaf_bw_2001() : ArchivingNode() , P_() , S_( P_ ) @@ -283,7 +283,7 @@ nest::iaf_wang_2002::iaf_wang_2002() * Copy constructor for node * --------------------------------------------------------------------------- */ -nest::iaf_wang_2002::iaf_wang_2002( const iaf_wang_2002& n_ ) +nest::iaf_bw_2001::iaf_bw_2001( const iaf_bw_2001& n_ ) : ArchivingNode( n_ ) , P_( n_.P_ ) , S_( n_.S_ ) @@ -295,7 +295,7 @@ nest::iaf_wang_2002::iaf_wang_2002( const iaf_wang_2002& n_ ) * Destructor for node * --------------------------------------------------------------------------- */ -nest::iaf_wang_2002::~iaf_wang_2002() +nest::iaf_bw_2001::~iaf_bw_2001() { // GSL structs may not have been allocated, so we need to protect destruction @@ -320,12 +320,12 @@ nest::iaf_wang_2002::~iaf_wang_2002() * --------------------------------------------------------------------------- */ void -nest::iaf_wang_2002::init_state_() +nest::iaf_bw_2001::init_state_() { } void -nest::iaf_wang_2002::init_buffers_() +nest::iaf_bw_2001::init_buffers_() { B_.spikes_.resize( 3 ); for ( auto& sb : B_.spikes_ ) @@ -365,7 +365,7 @@ nest::iaf_wang_2002::init_buffers_() gsl_odeiv_evolve_reset( B_.e_ ); } - B_.sys_.function = iaf_wang_2002_dynamics; + B_.sys_.function = iaf_bw_2001_dynamics; B_.sys_.jacobian = nullptr; B_.sys_.dimension = State_::STATE_VEC_SIZE; B_.sys_.params = reinterpret_cast< void* >( this ); @@ -376,7 +376,7 @@ nest::iaf_wang_2002::init_buffers_() } void -nest::iaf_wang_2002::pre_run_hook() +nest::iaf_bw_2001::pre_run_hook() { // ensures initialization in case mm connected after Simulate B_.logger_.init(); @@ -398,7 +398,7 @@ nest::iaf_wang_2002::pre_run_hook() * --------------------------------------------------------------------------- */ void -nest::iaf_wang_2002::update( Time const& origin, const long from, const long to ) +nest::iaf_bw_2001::update( Time const& origin, const long from, const long to ) { std::vector< double > s_vals( kernel().connection_manager.get_min_delay(), 0.0 ); for ( long lag = from; lag < to; ++lag ) @@ -480,13 +480,13 @@ nest::iaf_wang_2002::update( Time const& origin, const long from, const long to // Do not move this function as inline to h-file. It depends on // universal_data_logger_impl.h being included here. void -nest::iaf_wang_2002::handle( DataLoggingRequest& e ) +nest::iaf_bw_2001::handle( DataLoggingRequest& e ) { B_.logger_.handle( e ); } void -nest::iaf_wang_2002::handle( SpikeEvent& e ) +nest::iaf_bw_2001::handle( SpikeEvent& e ) { assert( e.get_delay_steps() > 0 ); @@ -505,7 +505,7 @@ nest::iaf_wang_2002::handle( SpikeEvent& e ) } void -nest::iaf_wang_2002::handle( CurrentEvent& e ) +nest::iaf_bw_2001::handle( CurrentEvent& e ) { assert( e.get_delay_steps() > 0 ); diff --git a/models/iaf_wang_2002.h b/models/iaf_bw_2001.h similarity index 91% rename from models/iaf_wang_2002.h rename to models/iaf_bw_2001.h index de4d25f45c..f3b2ac50aa 100644 --- a/models/iaf_wang_2002.h +++ b/models/iaf_bw_2001.h @@ -1,5 +1,5 @@ /* - * iaf_wang_2002.h + * iaf_bw_2001.h * * This file is part of NEST. * @@ -20,8 +20,8 @@ * */ -#ifndef IAF_WANG_2002_H -#define IAF_WANG_2002_H +#ifndef IAF_BW_2001_H +#define IAF_BW_2001_H // Generated includes: #include "config.h" @@ -53,7 +53,7 @@ namespace nest * through a function pointer. * @param void* Pointer to model neuron instance. */ -extern "C" inline int iaf_wang_2002_dynamics( double, const double*, double*, void* ); +extern "C" inline int iaf_bw_2001_dynamics( double, const double*, double*, void* ); // clang-format off /* BeginUserDocs: neuron, integrate-and-fire, conductance-based @@ -66,7 +66,7 @@ Leaky integrate-and-fire-neuron model with conductance based synapses, and addit Description +++++++++++ -``iaf_wang_2002`` is a leaky integrate-and-fire neuron model with +``iaf_bw_2001`` is a leaky integrate-and-fire neuron model with * an approximate version of the neuron model described in [1,2,3]_. * exponential conductance-based AMPA and GABA-synapses @@ -149,10 +149,10 @@ The following state variables evolve during simulation and are available either :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so these variables are set by changing the weights. .. note:: - For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_wang_2002. For AMPA/GABA synapses, any pre-synaptic neuron can be used. + For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_bw_2001. For AMPA/GABA synapses, any pre-synaptic neuron can be used. .. note:: - For technical reasons, spikes from iaf_wang_2002 neurons must be recorded with time_in_steps: True set in the spike recorder, ignoring the offset value. We hope to correct this in a future version of NEST. + For technical reasons, spikes from iaf_bw_2001 neurons must be recorded with time_in_steps: True set in the spike recorder, ignoring the offset value. We hope to correct this in a future version of NEST. Sends +++++ @@ -175,24 +175,24 @@ References See also ++++++++ -iaf_wang_2002_exact +iaf_bw_2001_exact Examples using this model +++++++++++++++++++++++++ -.. listexamples:: iaf_wang_2002 +.. listexamples:: iaf_bw_2001 EndUserDocs */ // clang-format on -void register_iaf_wang_2002( const std::string& name ); +void register_iaf_bw_2001( const std::string& name ); -class iaf_wang_2002 : public ArchivingNode +class iaf_bw_2001 : public ArchivingNode { public: - iaf_wang_2002(); - iaf_wang_2002( const iaf_wang_2002& ); - ~iaf_wang_2002() override; + iaf_bw_2001(); + iaf_bw_2001( const iaf_bw_2001& ); + ~iaf_bw_2001() override; /** * Import all overloaded virtual functions that we @@ -246,11 +246,11 @@ class iaf_wang_2002 : public ArchivingNode }; // make dynamics function quasi-member - friend int iaf_wang_2002_dynamics( double, const double*, double*, void* ); + friend int iaf_bw_2001_dynamics( double, const double*, double*, void* ); // The next two classes need to be friends to access the State_ class/member - friend class RecordablesMap< iaf_wang_2002 >; - friend class UniversalDataLogger< iaf_wang_2002 >; + friend class RecordablesMap< iaf_bw_2001 >; + friend class UniversalDataLogger< iaf_bw_2001 >; struct Parameters_ { @@ -329,11 +329,11 @@ class iaf_wang_2002 : public ArchivingNode */ struct Buffers_ { - Buffers_( iaf_wang_2002& ); - Buffers_( const Buffers_&, iaf_wang_2002& ); + Buffers_( iaf_bw_2001& ); + Buffers_( const Buffers_&, iaf_bw_2001& ); //! Logger for all analog data - UniversalDataLogger< iaf_wang_2002 > logger_; + UniversalDataLogger< iaf_bw_2001 > logger_; // ----------------------------------------------------------------------- // Buffers and sums of incoming spikes and currents per timestep @@ -407,12 +407,12 @@ class iaf_wang_2002 : public ArchivingNode Buffers_ B_; //!< Buffers. //! Mapping of recordables names to access functions - static RecordablesMap< iaf_wang_2002 > recordablesMap_; + static RecordablesMap< iaf_bw_2001 > recordablesMap_; -}; /* neuron iaf_wang_2002 */ +}; /* neuron iaf_bw_2001 */ inline size_t -iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bool ) +iaf_bw_2001::send_test_event( Node& target, size_t receptor_type, synindex, bool ) { SpikeEvent e; e.set_sender( *this ); @@ -420,7 +420,7 @@ iaf_wang_2002::send_test_event( Node& target, size_t receptor_type, synindex, bo } inline size_t -iaf_wang_2002::handles_test_event( SpikeEvent& e, size_t receptor_type ) +iaf_bw_2001::handles_test_event( SpikeEvent& e, size_t receptor_type ) { if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) ) { @@ -431,13 +431,13 @@ iaf_wang_2002::handles_test_event( SpikeEvent& e, size_t receptor_type ) if ( receptor_type == NMDA and typeid( sender ) != typeid( *this ) ) { throw IllegalConnection( - "For NMDA synapses in iaf_wang_2002, pre-synaptic neuron must also be of type iaf_wang_2002" ); + "For NMDA synapses in iaf_bw_2001, pre-synaptic neuron must also be of type iaf_bw_2001" ); } return receptor_type; } inline size_t -iaf_wang_2002::handles_test_event( CurrentEvent&, size_t receptor_type ) +iaf_bw_2001::handles_test_event( CurrentEvent&, size_t receptor_type ) { if ( receptor_type != 0 ) { @@ -447,7 +447,7 @@ iaf_wang_2002::handles_test_event( CurrentEvent&, size_t receptor_type ) } inline size_t -iaf_wang_2002::handles_test_event( DataLoggingRequest& dlr, size_t receptor_type ) +iaf_bw_2001::handles_test_event( DataLoggingRequest& dlr, size_t receptor_type ) { /* * You should usually not change the code in this function. @@ -465,7 +465,7 @@ iaf_wang_2002::handles_test_event( DataLoggingRequest& dlr, size_t receptor_type } inline void -iaf_wang_2002::get_status( DictionaryDatum& d ) const +iaf_bw_2001::get_status( DictionaryDatum& d ) const { P_.get( d ); S_.get( d ); @@ -481,7 +481,7 @@ iaf_wang_2002::get_status( DictionaryDatum& d ) const } inline void -iaf_wang_2002::set_status( const DictionaryDatum& d ) +iaf_bw_2001::set_status( const DictionaryDatum& d ) { Parameters_ ptmp = P_; // temporary copy in case of errors ptmp.set( d, this ); // throws if BadProperty @@ -503,4 +503,4 @@ iaf_wang_2002::set_status( const DictionaryDatum& d ) } // namespace #endif // HAVE_GSL -#endif // IAF_WANG_2002 +#endif // IAF_BW_2001 diff --git a/models/iaf_wang_2002_exact.cpp b/models/iaf_bw_2001_exact.cpp similarity index 86% rename from models/iaf_wang_2002_exact.cpp rename to models/iaf_bw_2001_exact.cpp index 559419ebc0..a79a39cee8 100644 --- a/models/iaf_wang_2002_exact.cpp +++ b/models/iaf_bw_2001_exact.cpp @@ -1,5 +1,5 @@ /* - * iaf_wang_2002_exact.cpp + * iaf_bw_2001_exact.cpp * * This file is part of NEST. * @@ -20,7 +20,7 @@ * */ -#include "iaf_wang_2002_exact.h" +#include "iaf_bw_2001_exact.h" #ifdef HAVE_GSL @@ -45,14 +45,14 @@ /* --------------------------------------------------------------------------- * Recordables map * --------------------------------------------------------------------------- */ -nest::RecordablesMap< nest::iaf_wang_2002_exact > nest::iaf_wang_2002_exact::recordablesMap_; +nest::RecordablesMap< nest::iaf_bw_2001_exact > nest::iaf_bw_2001_exact::recordablesMap_; namespace nest { void -register_iaf_wang_2002_exact( const std::string& name ) +register_iaf_bw_2001_exact( const std::string& name ) { - register_node_model< iaf_wang_2002_exact >( name ); + register_node_model< iaf_bw_2001_exact >( name ); } /* * Override the create() method with one call to RecordablesMap::insert_() @@ -60,21 +60,21 @@ register_iaf_wang_2002_exact( const std::string& name ) */ template <> void -RecordablesMap< iaf_wang_2002_exact >::create() +RecordablesMap< iaf_bw_2001_exact >::create() { // add state variables to recordables map - insert_( names::V_m, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::V_m > ); - insert_( names::s_AMPA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_AMPA > ); - insert_( names::s_GABA, &iaf_wang_2002_exact::get_ode_state_elem_< iaf_wang_2002_exact::State_::s_GABA > ); - insert_( names::s_NMDA, &iaf_wang_2002_exact::get_s_NMDA_ ); - insert_( names::I_NMDA, &iaf_wang_2002_exact::get_I_NMDA_ ); + insert_( names::V_m, &iaf_bw_2001_exact::get_ode_state_elem_< iaf_bw_2001_exact::State_::V_m > ); + insert_( names::s_AMPA, &iaf_bw_2001_exact::get_ode_state_elem_< iaf_bw_2001_exact::State_::s_AMPA > ); + insert_( names::s_GABA, &iaf_bw_2001_exact::get_ode_state_elem_< iaf_bw_2001_exact::State_::s_GABA > ); + insert_( names::s_NMDA, &iaf_bw_2001_exact::get_s_NMDA_ ); + insert_( names::I_NMDA, &iaf_bw_2001_exact::get_I_NMDA_ ); } } /* --------------------------------------------------------------------------- * Default constructors defining default parameters and state * --------------------------------------------------------------------------- */ -nest::iaf_wang_2002_exact::Parameters_::Parameters_() +nest::iaf_bw_2001_exact::Parameters_::Parameters_() : E_L( -70.0 ) // mV , E_ex( 0.0 ) // mV , E_in( -70.0 ) // mV @@ -93,7 +93,7 @@ nest::iaf_wang_2002_exact::Parameters_::Parameters_() { } -nest::iaf_wang_2002_exact::State_::State_( const Parameters_& p ) +nest::iaf_bw_2001_exact::State_::State_( const Parameters_& p ) : state_vec_size( 0 ) , ode_state_( nullptr ) , num_ports_( SynapseTypes::GABA ) // only AMPA/GABA for now, add NMDA later @@ -109,7 +109,7 @@ nest::iaf_wang_2002_exact::State_::State_( const Parameters_& p ) state_vec_size = s_NMDA_base; } -nest::iaf_wang_2002_exact::State_::State_( const State_& s ) +nest::iaf_bw_2001_exact::State_::State_( const State_& s ) : state_vec_size( s.state_vec_size ) , ode_state_( nullptr ) , num_ports_( s.num_ports_ ) @@ -126,7 +126,7 @@ nest::iaf_wang_2002_exact::State_::State_( const State_& s ) ode_state_[ s_GABA ] = s.ode_state_[ s_GABA ]; } -nest::iaf_wang_2002_exact::Buffers_::Buffers_( iaf_wang_2002_exact& n ) +nest::iaf_bw_2001_exact::Buffers_::Buffers_( iaf_bw_2001_exact& n ) : logger_( n ) , spikes_() , weights_() @@ -139,7 +139,7 @@ nest::iaf_wang_2002_exact::Buffers_::Buffers_( iaf_wang_2002_exact& n ) // Initialization of the remaining members is deferred to init_buffers_(). } -nest::iaf_wang_2002_exact::Buffers_::Buffers_( const Buffers_&, iaf_wang_2002_exact& n ) +nest::iaf_bw_2001_exact::Buffers_::Buffers_( const Buffers_&, iaf_bw_2001_exact& n ) : logger_( n ) , spikes_() , weights_() @@ -157,7 +157,7 @@ nest::iaf_wang_2002_exact::Buffers_::Buffers_( const Buffers_&, iaf_wang_2002_ex * --------------------------------------------------------------------------- */ void -nest::iaf_wang_2002_exact::Parameters_::get( DictionaryDatum& d ) const +nest::iaf_bw_2001_exact::Parameters_::get( DictionaryDatum& d ) const { def< double >( d, names::E_L, E_L ); def< double >( d, names::E_ex, E_ex ); @@ -177,7 +177,7 @@ nest::iaf_wang_2002_exact::Parameters_::get( DictionaryDatum& d ) const } void -nest::iaf_wang_2002_exact::Parameters_::set( const DictionaryDatum& d, Node* node ) +nest::iaf_bw_2001_exact::Parameters_::set( const DictionaryDatum& d, Node* node ) { // allow setting the membrane potential updateValueParam< double >( d, names::V_th, V_th, node ); @@ -227,7 +227,7 @@ nest::iaf_wang_2002_exact::Parameters_::set( const DictionaryDatum& d, Node* nod } void -nest::iaf_wang_2002_exact::State_::get( DictionaryDatum& d ) const +nest::iaf_bw_2001_exact::State_::get( DictionaryDatum& d ) const { def< double >( d, names::V_m, ode_state_[ V_m ] ); // Membrane potential def< double >( d, names::s_AMPA, ode_state_[ s_AMPA ] ); @@ -235,7 +235,7 @@ nest::iaf_wang_2002_exact::State_::get( DictionaryDatum& d ) const } void -nest::iaf_wang_2002_exact::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) +nest::iaf_bw_2001_exact::State_::set( const DictionaryDatum& d, const Parameters_&, Node* node ) { updateValueParam< double >( d, names::V_m, ode_state_[ V_m ], node ); updateValueParam< double >( d, names::s_AMPA, ode_state_[ s_AMPA ], node ); @@ -246,7 +246,7 @@ nest::iaf_wang_2002_exact::State_::set( const DictionaryDatum& d, const Paramete * Default constructor for node * --------------------------------------------------------------------------- */ -nest::iaf_wang_2002_exact::iaf_wang_2002_exact() +nest::iaf_bw_2001_exact::iaf_bw_2001_exact() : ArchivingNode() , P_() , S_( P_ ) @@ -259,7 +259,7 @@ nest::iaf_wang_2002_exact::iaf_wang_2002_exact() * Copy constructor for node * --------------------------------------------------------------------------- */ -nest::iaf_wang_2002_exact::iaf_wang_2002_exact( const iaf_wang_2002_exact& n_ ) +nest::iaf_bw_2001_exact::iaf_bw_2001_exact( const iaf_bw_2001_exact& n_ ) : ArchivingNode( n_ ) , P_( n_.P_ ) , S_( n_.S_ ) @@ -271,7 +271,7 @@ nest::iaf_wang_2002_exact::iaf_wang_2002_exact( const iaf_wang_2002_exact& n_ ) * Destructor for node * --------------------------------------------------------------------------- */ -nest::iaf_wang_2002_exact::~iaf_wang_2002_exact() +nest::iaf_bw_2001_exact::~iaf_bw_2001_exact() { // GSL structs may not have been allocated, so we need to protect destruction @@ -301,7 +301,7 @@ nest::iaf_wang_2002_exact::~iaf_wang_2002_exact() * --------------------------------------------------------------------------- */ void -nest::iaf_wang_2002_exact::init_state_() +nest::iaf_bw_2001_exact::init_state_() { assert( S_.state_vec_size == State_::s_NMDA_base ); @@ -324,7 +324,7 @@ nest::iaf_wang_2002_exact::init_state_() } void -nest::iaf_wang_2002_exact::init_buffers_() +nest::iaf_bw_2001_exact::init_buffers_() { B_.spikes_.resize( S_.num_ports_ ); @@ -367,7 +367,7 @@ nest::iaf_wang_2002_exact::init_buffers_() gsl_odeiv_evolve_reset( B_.e_ ); } - B_.sys_.function = iaf_wang_2002_exact_dynamics; + B_.sys_.function = iaf_bw_2001_exact_dynamics; B_.sys_.jacobian = nullptr; B_.sys_.dimension = S_.state_vec_size; B_.sys_.params = reinterpret_cast< void* >( this ); @@ -378,7 +378,7 @@ nest::iaf_wang_2002_exact::init_buffers_() } void -nest::iaf_wang_2002_exact::pre_run_hook() +nest::iaf_bw_2001_exact::pre_run_hook() { // ensures initialization in case mm connected after Simulate B_.logger_.init(); @@ -393,14 +393,14 @@ nest::iaf_wang_2002_exact::pre_run_hook() * --------------------------------------------------------------------------- */ extern "C" inline int -nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[], void* pnode ) +nest::iaf_bw_2001_exact_dynamics( double, const double ode_state[], double f[], void* pnode ) { // a shorthand - typedef nest::iaf_wang_2002_exact::State_ State_; + typedef nest::iaf_bw_2001_exact::State_ State_; // get access to node so we can almost work as in a member function assert( pnode ); - nest::iaf_wang_2002_exact& node = *( reinterpret_cast< nest::iaf_wang_2002_exact* >( pnode ) ); + nest::iaf_bw_2001_exact& node = *( reinterpret_cast< nest::iaf_bw_2001_exact* >( pnode ) ); // ode_state[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.ode_state[]. @@ -438,7 +438,7 @@ nest::iaf_wang_2002_exact_dynamics( double, const double ode_state[], double f[] } void -nest::iaf_wang_2002_exact::update( Time const& origin, const long from, const long to ) +nest::iaf_bw_2001_exact::update( Time const& origin, const long from, const long to ) { for ( long lag = from; lag < to; ++lag ) { @@ -519,13 +519,13 @@ nest::iaf_wang_2002_exact::update( Time const& origin, const long from, const lo // Do not move this function as inline to h-file. It depends on // universal_data_logger_impl.h being included here. void -nest::iaf_wang_2002_exact::handle( DataLoggingRequest& e ) +nest::iaf_bw_2001_exact::handle( DataLoggingRequest& e ) { B_.logger_.handle( e ); } void -nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) +nest::iaf_bw_2001_exact::handle( SpikeEvent& e ) { assert( e.get_delay_steps() > 0 ); assert( e.get_rport() <= static_cast< int >( B_.spikes_.size() ) ); @@ -551,13 +551,13 @@ nest::iaf_wang_2002_exact::handle( SpikeEvent& e ) } else if ( B_.weights_[ w_idx ] != e.get_weight() ) { - throw KernelException( "iaf_wang_2002_exact requires constant weights." ); + throw KernelException( "iaf_bw_2001_exact requires constant weights." ); } } } void -nest::iaf_wang_2002_exact::handle( CurrentEvent& e ) +nest::iaf_bw_2001_exact::handle( CurrentEvent& e ) { assert( e.get_delay_steps() > 0 ); diff --git a/models/iaf_wang_2002_exact.h b/models/iaf_bw_2001_exact.h similarity index 92% rename from models/iaf_wang_2002_exact.h rename to models/iaf_bw_2001_exact.h index 26d0a487c7..4e6703d31e 100644 --- a/models/iaf_wang_2002_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -1,5 +1,5 @@ /* - * iaf_wang_2002_exact.h + * iaf_bw_2001_exact.h * * This file is part of NEST. * @@ -20,8 +20,8 @@ * */ -#ifndef IAF_WANG_2002_EXACT -#define IAF_WANG_2002_EXACT +#ifndef IAF_BW_2001_EXACT +#define IAF_BW_2001_EXACT // Generated includes: #include "config.h" @@ -53,7 +53,7 @@ namespace nest * through a function pointer. * @param void* Pointer to model neuron instance. **/ -extern "C" inline int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); +extern "C" inline int iaf_bw_2001_exact_dynamics( double, const double y[], double f[], void* pnode ); // clang-format off /* BeginUserDocs: neuron, integrate-and-fire, conductance-based @@ -66,7 +66,7 @@ Leaky integrate-and-fire-neuron model with conductance based synapses, and addit Description +++++++++++ -``iaf_wang_2002_exact`` is a leaky integrate-and-fire neuron model with +``iaf_bw_2001_exact`` is a leaky integrate-and-fire neuron model with * an exact implementation of the neuron model described in [1]_. * exponential conductance-based AMPA and GABA-synapses @@ -104,7 +104,7 @@ slow. The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. -This model is slow to simulate when there are many neurons with NMDA-synapses, since each post-synaptic neuron simulates each pre-synaptic connection explicitly. The model iaf_wang_2002 is an approximation to this model which is significantly faster. +This model is slow to simulate when there are many neurons with NMDA-synapses, since each post-synaptic neuron simulates each pre-synaptic connection explicitly. The model iaf_bw_2001 is an approximation to this model which is significantly faster. Parameters ++++++++++ @@ -170,24 +170,24 @@ References See also ++++++++ -iaf_wang_2002 +iaf_bw_2001 Examples using this model +++++++++++++++++++++++++ -.. listexamples:: iaf_wang_2002 +.. listexamples:: iaf_bw_2001 EndUserDocs */ // clang-format on -void register_iaf_wang_2002_exact( const std::string& name ); +void register_iaf_bw_2001_exact( const std::string& name ); -class iaf_wang_2002_exact : public ArchivingNode +class iaf_bw_2001_exact : public ArchivingNode { public: - iaf_wang_2002_exact(); - iaf_wang_2002_exact( const iaf_wang_2002_exact& ); - ~iaf_wang_2002_exact() override; + iaf_bw_2001_exact(); + iaf_bw_2001_exact( const iaf_bw_2001_exact& ); + ~iaf_bw_2001_exact() override; /* * Import all overloaded virtual functions that we @@ -237,11 +237,11 @@ class iaf_wang_2002_exact : public ArchivingNode }; // make dynamics function quasi-member - friend int iaf_wang_2002_exact_dynamics( double, const double y[], double f[], void* pnode ); + friend int iaf_bw_2001_exact_dynamics( double, const double y[], double f[], void* pnode ); // The next two classes need to be friends to access the State_ class/member - friend class RecordablesMap< iaf_wang_2002_exact >; - friend class UniversalDataLogger< iaf_wang_2002_exact >; + friend class RecordablesMap< iaf_bw_2001_exact >; + friend class UniversalDataLogger< iaf_bw_2001_exact >; struct Parameters_ { @@ -324,13 +324,13 @@ class iaf_wang_2002_exact : public ArchivingNode */ struct Buffers_ { - Buffers_( iaf_wang_2002_exact& ); - Buffers_( const Buffers_&, iaf_wang_2002_exact& ); + Buffers_( iaf_bw_2001_exact& ); + Buffers_( const Buffers_&, iaf_bw_2001_exact& ); /** * Logger for all analog data **/ - UniversalDataLogger< iaf_wang_2002_exact > logger_; + UniversalDataLogger< iaf_bw_2001_exact > logger_; // ----------------------------------------------------------------------- // Buffers and sums of incoming spikes and currents per timestep @@ -414,13 +414,13 @@ class iaf_wang_2002_exact : public ArchivingNode Buffers_ B_; //!< Buffers. //! Mapping of recordables names to access functions - static RecordablesMap< iaf_wang_2002_exact > recordablesMap_; + static RecordablesMap< iaf_bw_2001_exact > recordablesMap_; -}; /* neuron iaf_wang_2002_exact */ +}; /* neuron iaf_bw_2001_exact */ inline size_t -iaf_wang_2002_exact::send_test_event( Node& target, size_t receptor_type, synindex, bool ) +iaf_bw_2001_exact::send_test_event( Node& target, size_t receptor_type, synindex, bool ) { SpikeEvent e; e.set_sender( *this ); @@ -428,7 +428,7 @@ iaf_wang_2002_exact::send_test_event( Node& target, size_t receptor_type, synind } inline size_t -iaf_wang_2002_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) +iaf_bw_2001_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) { if ( not( INF_SPIKE_RECEPTOR < receptor_type and receptor_type < SUP_SPIKE_RECEPTOR ) ) { @@ -451,7 +451,7 @@ iaf_wang_2002_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) } inline size_t -iaf_wang_2002_exact::handles_test_event( CurrentEvent&, size_t receptor_type ) +iaf_bw_2001_exact::handles_test_event( CurrentEvent&, size_t receptor_type ) { if ( receptor_type != 0 ) { @@ -461,7 +461,7 @@ iaf_wang_2002_exact::handles_test_event( CurrentEvent&, size_t receptor_type ) } inline size_t -iaf_wang_2002_exact::handles_test_event( DataLoggingRequest& dlr, size_t receptor_type ) +iaf_bw_2001_exact::handles_test_event( DataLoggingRequest& dlr, size_t receptor_type ) { /* * You should usually not change the code in this function. @@ -479,7 +479,7 @@ iaf_wang_2002_exact::handles_test_event( DataLoggingRequest& dlr, size_t recepto } inline void -iaf_wang_2002_exact::get_status( DictionaryDatum& d ) const +iaf_bw_2001_exact::get_status( DictionaryDatum& d ) const { P_.get( d ); S_.get( d ); @@ -497,7 +497,7 @@ iaf_wang_2002_exact::get_status( DictionaryDatum& d ) const } inline void -iaf_wang_2002_exact::set_status( const DictionaryDatum& d ) +iaf_bw_2001_exact::set_status( const DictionaryDatum& d ) { Parameters_ ptmp = P_; // temporary copy in case of errors ptmp.set( d, this ); // throws if BadProperty @@ -519,4 +519,4 @@ iaf_wang_2002_exact::set_status( const DictionaryDatum& d ) } // namespace #endif // HAVE_GSL -#endif // IAF_WANG_2002 +#endif // IAF_BW_2001 diff --git a/modelsets/full b/modelsets/full index ea263188ba..2d8bbf461c 100644 --- a/modelsets/full +++ b/modelsets/full @@ -64,8 +64,8 @@ iaf_psc_exp_multisynapse iaf_psc_exp_ps iaf_psc_exp_ps_lossless iaf_tum_2000 -iaf_wang_2002 -iaf_wang_2002_exact +iaf_bw_2001 +iaf_bw_2001_exact ignore_and_fire izhikevich jonke_synapse diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 2992b3fe7b..ca86b138fe 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -49,8 +49,8 @@ np.random.seed(1234) rng = np.random.default_rng() -# Use approximate model, can be replaced by "iaf_wang_2002_exact" -model = "iaf_wang_2002" +# Use approximate model, can be replaced by "iaf_bw_2001_exact" +model = "iaf_bw_2001" dt = 0.1 diff --git a/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py b/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py index a7e83d9666..0ed52cac1f 100644 --- a/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py +++ b/testsuite/pytests/sli2py_neurons/test_neurons_handle_multiplicity.py @@ -87,8 +87,8 @@ "receptor_type": 1, }, "ht_neuron": {"receptor_type": 1}, - "iaf_wang_2002": {"receptor_type": 1}, # cannot test NMDA port since pre-synaptic - "iaf_wang_2002_exact": {"receptor_type": 1}, # also must be of same neuron type in that case + "iaf_bw_2001": {"receptor_type": 1}, # cannot test NMDA port since pre-synaptic + "iaf_bw_2001_exact": {"receptor_type": 1}, # also must be of same neuron type in that case } diff --git a/testsuite/pytests/sli2py_recording/test_multimeter_stepping.py b/testsuite/pytests/sli2py_recording/test_multimeter_stepping.py index 83cb4e2f92..c800c5ae61 100644 --- a/testsuite/pytests/sli2py_recording/test_multimeter_stepping.py +++ b/testsuite/pytests/sli2py_recording/test_multimeter_stepping.py @@ -72,8 +72,8 @@ "aeif_cond_alpha_multisynapse": {"receptor_type": 1}, "aeif_cond_beta_multisynapse": {"receptor_type": 1}, "pp_cond_exp_mc_urbanczik": {"receptor_type": 1}, - "iaf_wang_2002": {"receptor_type": 1}, - "iaf_wang_2002_exact": {"receptor_type": 1}, + "iaf_bw_2001": {"receptor_type": 1}, + "iaf_bw_2001_exact": {"receptor_type": 1}, } # Obtain all models with non-empty recordables list diff --git a/testsuite/pytests/sli2py_regressions/test_issue_77.py b/testsuite/pytests/sli2py_regressions/test_issue_77.py index 43f7dfbce7..651a85a77a 100644 --- a/testsuite/pytests/sli2py_regressions/test_issue_77.py +++ b/testsuite/pytests/sli2py_regressions/test_issue_77.py @@ -89,8 +89,8 @@ }, "ht_neuron": {"receptor_type": 1}, "pp_cond_exp_mc_urbanczik": {"receptor_type": 1}, - "iaf_wang_2002": {"receptor_type": 1}, - "iaf_wang_2002_exact": {"receptor_type": 1}, + "iaf_bw_2001": {"receptor_type": 1}, + "iaf_bw_2001_exact": {"receptor_type": 1}, } models = [ diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_wang_2002.py index 5457711a3b..7e9dacfcb9 100644 --- a/testsuite/pytests/test_iaf_wang_2002.py +++ b/testsuite/pytests/test_iaf_wang_2002.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# test_iaf_wang_2002.py +# test_iaf_bw_2001.py # # This file is part of NEST. # @@ -20,7 +20,7 @@ # along with NEST. If not, see . """ -Tests dynamics and connections of the approximate model iaf_wang_2002. +Tests dynamics and connections of the approximate model iaf_bw_2001. Since the neuron is conductance based, it is impossible to analytically confirm the membrane potential. We therefore test that without the NMDA- @@ -29,7 +29,7 @@ We then test the AMPA and GABA gating variables against analytical solution, and NMDA synamptic current against analytical solution. We also test that an error is correctly raised when an NMDA-connection -from neuron other than iaf_wang_2002 is made. +from neuron other than iaf_bw_2001 is made. """ import nest @@ -103,9 +103,9 @@ def test_wang(): conc_Mg2=1.0, # Magnesium concentration ) - nrn1 = nest.Create("iaf_wang_2002", wang_params) - nrn2 = nest.Create("iaf_wang_2002", wang_params) - nrn3 = nest.Create("iaf_wang_2002", wang_params) + nrn1 = nest.Create("iaf_bw_2001", wang_params) + nrn2 = nest.Create("iaf_bw_2001", wang_params) + nrn3 = nest.Create("iaf_bw_2001", wang_params) nrn4 = nest.Create("iaf_cond_exp", cond_exp_params) receptor_types = nrn1.get("receptor_types") @@ -172,7 +172,7 @@ def test_illegal_connection_error(): """ nest.ResetKernel() nrn1 = nest.Create("iaf_psc_exp") - nrn2 = nest.Create("iaf_wang_2002") + nrn2 = nest.Create("iaf_bw_2001") receptor_types = nrn2.get("receptor_types") nmda_syn_spec = {"receptor_type": receptor_types["NMDA"]} with pytest.raises(nest.kernel.NESTErrors.IllegalConnection): diff --git a/testsuite/pytests/test_iaf_wang_2002_exact.py b/testsuite/pytests/test_iaf_wang_2002_exact.py index a0e2d6da05..51fd43671f 100644 --- a/testsuite/pytests/test_iaf_wang_2002_exact.py +++ b/testsuite/pytests/test_iaf_wang_2002_exact.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# test_iaf_wang_2002_exact.py +# test_iaf_bw_2001_exact.py # # This file is part of NEST. # @@ -20,7 +20,7 @@ # along with NEST. If not, see . """ -Tests dynamics of the model iaf_wang_2002_exact. +Tests dynamics of the model iaf_bw_2001_exact. Since the neuron is conductance based, it is impossible to analytically confirm the membrane potential. We therefore test that without the NMDA- @@ -108,9 +108,9 @@ def test_wang(): conc_Mg2=1.0, # Magnesium concentration ) - nrn1 = nest.Create("iaf_wang_2002", wang_params) - nrn2 = nest.Create("iaf_wang_2002", wang_params) - nrn3 = nest.Create("iaf_wang_2002", wang_params) + nrn1 = nest.Create("iaf_bw_2001", wang_params) + nrn2 = nest.Create("iaf_bw_2001", wang_params) + nrn3 = nest.Create("iaf_bw_2001", wang_params) nrn4 = nest.Create("iaf_cond_exp", cond_exp_params) receptor_types = nrn1.get("receptor_types") diff --git a/testsuite/pytests/test_refractory.py b/testsuite/pytests/test_refractory.py index 178f8f85fd..d2d7601ca6 100644 --- a/testsuite/pytests/test_refractory.py +++ b/testsuite/pytests/test_refractory.py @@ -86,8 +86,8 @@ "step_rate_generator", # No regular neuron model "eprop_readout_bsshslm_2020", # This one does not spike "iaf_tum_2000", # Hijacks the offset field, see #2912 - "iaf_wang_2002", # Hijacks the offset field, see #2912 - "iaf_wang_2002_exact", # Hijacks the offset field, see #2912 + "iaf_bw_2001", # Hijacks the offset field, see #2912 + "iaf_bw_2001_exact", # Hijacks the offset field, see #2912 ] tested_models = [ diff --git a/testsuite/regressiontests/ticket-618.sli b/testsuite/regressiontests/ticket-618.sli index 4ffc745248..969ef4a9c9 100644 --- a/testsuite/regressiontests/ticket-618.sli +++ b/testsuite/regressiontests/ticket-618.sli @@ -46,7 +46,7 @@ Author: Hans Ekkehard Plesser, 2012-12-11 M_ERROR setverbosity -/excluded_models [ /eprop_iaf_bsshslm_2020 /eprop_iaf_adapt_bsshslm_2020 /eprop_readout_bsshslm_2020 /iaf_wang_2002 ] def +/excluded_models [ /eprop_iaf_bsshslm_2020 /eprop_iaf_adapt_bsshslm_2020 /eprop_readout_bsshslm_2020 /iaf_bw_2001 ] def { GetKernelStatus /node_models get From 14c34d4686f2ea8b2f9de239d01db5fdc2fb8330 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 4 May 2024 13:51:38 +0200 Subject: [PATCH 134/184] rename tests to iaf_bw_2001 --- testsuite/pytests/{test_iaf_wang_2002.py => test_iaf_bw_2001.py} | 0 .../{test_iaf_wang_2002_exact.py => test_iaf_bw_2001_exact.py} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename testsuite/pytests/{test_iaf_wang_2002.py => test_iaf_bw_2001.py} (100%) rename testsuite/pytests/{test_iaf_wang_2002_exact.py => test_iaf_bw_2001_exact.py} (100%) diff --git a/testsuite/pytests/test_iaf_wang_2002.py b/testsuite/pytests/test_iaf_bw_2001.py similarity index 100% rename from testsuite/pytests/test_iaf_wang_2002.py rename to testsuite/pytests/test_iaf_bw_2001.py diff --git a/testsuite/pytests/test_iaf_wang_2002_exact.py b/testsuite/pytests/test_iaf_bw_2001_exact.py similarity index 100% rename from testsuite/pytests/test_iaf_wang_2002_exact.py rename to testsuite/pytests/test_iaf_bw_2001_exact.py From 1fab22ff229828bed5d7bb2897dd4a702976f9b6 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 4 May 2024 13:56:44 +0200 Subject: [PATCH 135/184] clang-format --- models/iaf_bw_2001.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index f3b2ac50aa..298758a3cb 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -430,8 +430,7 @@ iaf_bw_2001::handles_test_event( SpikeEvent& e, size_t receptor_type ) const Node& sender = e.get_sender(); if ( receptor_type == NMDA and typeid( sender ) != typeid( *this ) ) { - throw IllegalConnection( - "For NMDA synapses in iaf_bw_2001, pre-synaptic neuron must also be of type iaf_bw_2001" ); + throw IllegalConnection( "For NMDA synapses in iaf_bw_2001, pre-synaptic neuron must also be of type iaf_bw_2001" ); } return receptor_type; } From 489237fefd27d275925301a8b5e4475d21fee43c Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 4 May 2024 14:24:53 +0200 Subject: [PATCH 136/184] add check that we don't add NMDA synapses after buffers have been created --- models/iaf_bw_2001_exact.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index 4e6703d31e..f6291d2136 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -439,6 +439,11 @@ iaf_bw_2001_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) { if ( receptor_type == SynapseTypes::NMDA ) { + if ( B_.e_ != nullptr ) + { + throw IllegalConnection( + "NMDA connections to this model can only be made before the first call to nest.Simulate" ); + } // give each NMDA synapse a unique rport, starting from 3 (num_ports_ is initialized to 3) ++S_.num_ports_; return S_.num_ports_; From bf595de74daa9ea0e845ff56771cafc84ba46ba1 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 4 May 2024 15:36:03 +0200 Subject: [PATCH 137/184] update tests --- testsuite/pytests/test_iaf_bw_2001.py | 76 ++++++++++++++++++--- testsuite/pytests/test_iaf_bw_2001_exact.py | 45 ++++++------ 2 files changed, 93 insertions(+), 28 deletions(-) diff --git a/testsuite/pytests/test_iaf_bw_2001.py b/testsuite/pytests/test_iaf_bw_2001.py index 7e9dacfcb9..13935f2808 100644 --- a/testsuite/pytests/test_iaf_bw_2001.py +++ b/testsuite/pytests/test_iaf_bw_2001.py @@ -65,13 +65,13 @@ def spiketrain_response(t, tau, spiketrain, w): return response -def test_wang(): +def test_iaf_bw_2001(): """ Creates 4 neurons. - nrn1: pre-synaptic iaf_psc_wang - nrn2: post-synaptic iaf_psc_wang, will have AMPA, GABA and NMDA synapses - nrn3: post-synaptic iaf_psc_wang, will only have AMPA and GABA - nrn4: post-synaptic iaf_psc_exp, will only have AMPA and GABA + nrn1: pre-synaptic iaf_bw_2001 + nrn2: post-synaptic iaf_bw_2001, will have AMPA, GABA and NMDA synapses + nrn3: post-synaptic iaf_bw_2001, will only have AMPA and GABA + nrn4: post-synaptic iaf_cond_exp, will only have AMPA and GABA We test that nrn3 and nrn4 have identical V_m. We test that nrn2 has greater V_m compared to nrn3. @@ -124,7 +124,7 @@ def test_wang(): ) mm4 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) - # for post-synaptic iaf_psc_wang + # for post-synaptic iaf_bw_2001 ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} gaba_syn_spec = {"weight": w_in, "receptor_type": receptor_types["GABA"]} nmda_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["NMDA"]} @@ -166,12 +166,72 @@ def test_wang(): nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) +def test_approximation_I_NMDA_V_m(): + """ + Creates 3 neurons. + nrn1: pre-synaptic iaf_bw_2001 + nrn2: post-synaptic iaf_bw_2001 + nrn3: post-synaptic iaf_bw_2001_exact + + We will check that the and membrane potentials + of nrn2 and nrn3 are sufficiently close. + """ + nest.ResetKernel() + + nrn_params = { + "tau_GABA": 5.0, # GABA decay time constant + "tau_AMPA": 2.0, # AMPA decay time constant + "g_L": 25.0, # leak conductance + "E_L": -70.0, # leak reversal potential + "E_ex": 0.0, # excitatory reversal potential + "E_in": -70.0, # inhibitory reversal potential + "V_reset": -55.0, # reset potential + "V_th": -50.0, # threshold + "C_m": 500.0, # membrane capacitance + "t_ref": 0.0, # refreactory period + } + + nrn1 = nest.Create("iaf_bw_2001", nrn_params) + nrn2 = nest.Create("iaf_bw_2001", nrn_params) + nrn3 = nest.Create("iaf_bw_2001_exact", nrn_params) + + receptor_types = nrn1.get("receptor_types") + + pg = nest.Create("poisson_generator", {"rate": 150.0}) + sr = nest.Create("spike_recorder", {"time_in_steps": True}) + + mm1 = nest.Create("multimeter", {"record_from": ["V_m", "I_NMDA"], "interval": 0.1, "time_in_steps": True}) + + mm2 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) + mm3 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) + + # for post-synaptic iaf_bw_2001 + ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} + nmda_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["NMDA"]} + + # for post-synaptic iaf_cond_exp + ex_syn_spec = {"weight": w_ex} + + nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) + nest.Connect(nrn1, sr) + + nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec) + + nest.Connect(mm1, nrn1) + nest.Connect(mm2, nrn2) + nest.Connect(mm3, nrn3) + + nest.Simulate(500.0) + assert np.max(np.abs(mm2.events["V_m"] - mm3.events["V_m"])) < 0.25 + + def test_illegal_connection_error(): """ - Test that connecting with NMDA synapses from iaf_psc_exp throws error. + Test that connecting with NMDA synapses from iaf_cond_exp throws error. """ nest.ResetKernel() - nrn1 = nest.Create("iaf_psc_exp") + nrn1 = nest.Create("iaf_cond_exp") nrn2 = nest.Create("iaf_bw_2001") receptor_types = nrn2.get("receptor_types") nmda_syn_spec = {"receptor_type": receptor_types["NMDA"]} diff --git a/testsuite/pytests/test_iaf_bw_2001_exact.py b/testsuite/pytests/test_iaf_bw_2001_exact.py index 51fd43671f..85f9609b87 100644 --- a/testsuite/pytests/test_iaf_bw_2001_exact.py +++ b/testsuite/pytests/test_iaf_bw_2001_exact.py @@ -50,18 +50,6 @@ def s_soln(w, t, tau): def spiketrain_response(t, tau, spiketrain, w): - """ - Creates 4 neurons. - nrn1: pre-synaptic iaf_psc_wang - nrn2: post-synaptic iaf_psc_wang, will have AMPA, GABA and NMDA synapses - nrn3: post-synaptic iaf_psc_wang, will only have AMPA and GABA - nrn4: post-synaptic iaf_psc_exp, will only have AMPA and GABA - - We test that nrn3 and nrn4 have identical V_m. - We test that nrn2 has greater V_m compared to nrn3. - We test that s_AMPA and s_GABA have the correct analytical solution. - """ - response = np.zeros_like(t) for sp in spiketrain: t_ = t - 1.0 - sp @@ -70,12 +58,12 @@ def spiketrain_response(t, tau, spiketrain, w): return response -def test_wang(): +def test_iaf_bw_2001_exact(): """ Creates 4 neurons. - nrn1: pre-synaptic iaf_psc_wang - nrn2: post-synaptic iaf_psc_wang, will have AMPA, GABA and NMDA synapses - nrn3: post-synaptic iaf_psc_wang, will only have AMPA and GABA + nrn1: pre-synaptic iaf_bw_2001_exact + nrn2: post-synaptic iaf_bw_2001_exact, will have AMPA, GABA and NMDA synapses + nrn3: post-synaptic iaf_bw_2001_exact, will only have AMPA and GABA nrn4: post-synaptic iaf_psc_exp, will only have AMPA and GABA We test that nrn3 and nrn4 have identical V_m. @@ -108,9 +96,9 @@ def test_wang(): conc_Mg2=1.0, # Magnesium concentration ) - nrn1 = nest.Create("iaf_bw_2001", wang_params) - nrn2 = nest.Create("iaf_bw_2001", wang_params) - nrn3 = nest.Create("iaf_bw_2001", wang_params) + nrn1 = nest.Create("iaf_bw_2001_exact", wang_params) + nrn2 = nest.Create("iaf_bw_2001_exact", wang_params) + nrn3 = nest.Create("iaf_bw_2001_exact", wang_params) nrn4 = nest.Create("iaf_cond_exp", cond_exp_params) receptor_types = nrn1.get("receptor_types") @@ -129,7 +117,7 @@ def test_wang(): ) mm4 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) - # for post-synaptic iaf_psc_wang + # for post-synaptic iaf_bw_2001_exact ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} gaba_syn_spec = {"weight": w_in, "receptor_type": receptor_types["GABA"]} nmda_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["NMDA"]} @@ -169,3 +157,20 @@ def test_wang(): assert (mm2.events["V_m"] >= mm3.events["V_m"]).all() nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) + + +def test_connect_NMDA_after_simulate(): + """ + Test that error is thrown if we try to make a connection after running + nest.Simulate and the buffers have already been created. + """ + nrn1 = nest.Create("iaf_bw_2001_exact") + nrn2 = nest.Create("iaf_bw_2001_exact") + + receptor_types = nrn1.get("receptor_types") + nmda_syn_spec = {"weight": 1.0, "receptor_type": receptor_types["NMDA"]} + + nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + nest.Simulate(1.0) + with pytest.raises(nest.kernel.NESTErrors.IllegalConnection): + nest.Connect(nrn2, nrn1, syn_spec=nmda_syn_spec) From 442a5d88799a2f508c2dc7d77f2d2589443055a3 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 4 May 2024 15:55:56 +0200 Subject: [PATCH 138/184] add comment --- models/iaf_bw_2001_exact.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index f6291d2136..31dca9b298 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -439,6 +439,8 @@ iaf_bw_2001_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) { if ( receptor_type == SynapseTypes::NMDA ) { + // after the buffers are initialized, new synapses cannot be added since the buffers would have + // to be expanded if ( B_.e_ != nullptr ) { throw IllegalConnection( From 1b44488ce192e1194e1399c01b9652f060dc8e96 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 4 May 2024 16:25:26 +0200 Subject: [PATCH 139/184] update example --- pynest/examples/wang_decision_making.py | 56 ++++++------------------- 1 file changed, 13 insertions(+), 43 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index ca86b138fe..d4ad45ed76 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -140,8 +140,9 @@ def run_sim(coherence, seed=123): rates_b = np.random.normal(mu_b, sigma, size=num_updates) # synaptic weights - w_plus = 1.7 - w_minus = 1 - f * (w_plus - 1) / (1 - f) + w_plus = 1.7 # strong connections in selective populations + w_minus = 1 - f * (w_plus - 1) / (1 - f) # weak connections between selective populations + # and from nonselective to selective populations delay = 0.5 @@ -182,13 +183,8 @@ def run_sim(coherence, seed=123): sr_selective2 = nest.Create("spike_recorder", {"time_in_steps": True}) sr_inhibitory = nest.Create("spike_recorder", {"time_in_steps": True}) - sr_selective1_raster = nest.Create("spike_recorder", 100) - sr_selective2_raster = nest.Create("spike_recorder", 100) - - mm_selective1 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) - mm_selective2 = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) - mm_nonselective = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) - mm_inhibitory = nest.Create("multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"]}) + sr_selective1_raster = nest.Create("spike_recorder", 100, {"time_in_steps": True}) + sr_selective2_raster = nest.Create("spike_recorder", 100, {"time_in_steps": True}) ################################################## # Define synapse specifications @@ -334,14 +330,6 @@ def run_sim(coherence, seed=123): nest.Connect(inhibitory_pop, sr_inhibitory) - # multimeters record from single neuron from each population. - # since the network is fully connected, it's the same for all - # neurons in the same population. - nest.Connect(mm_selective1, selective_pop1[0]) - nest.Connect(mm_selective2, selective_pop2[0]) - nest.Connect(mm_nonselective, nonselective_pop[0]) - nest.Connect(mm_inhibitory, inhibitory_pop[0]) - ################################################## # Run simulation nest.Simulate(4000.0) @@ -356,26 +344,6 @@ def run_sim(coherence, seed=123): spikes_selective1_raster = sr_selective1_raster.get("events", "times") spikes_selective2_raster = sr_selective2_raster.get("events", "times") - # vm_nonselective = mm_nonselective.get("events", "V_m") - # s_AMPA_nonselective = mm_nonselective.get("events", "s_AMPA") - # s_GABA_nonselective = mm_nonselective.get("events", "s_GABA") - # s_NMDA_nonselective = mm_nonselective.get("events", "s_NMDA") - # - # vm_selective1 = mm_selective1.get("events", "V_m") - # s_AMPA_selective1 = mm_selective1.get("events", "s_AMPA") - # s_GABA_selective1 = mm_selective1.get("events", "s_GABA") - # s_NMDA_selective1 = mm_selective1.get("events", "s_NMDA") - # - # vm_selective2 = mm_selective2.get("events", "V_m") - # s_AMPA_selective2 = mm_selective2.get("events", "s_AMPA") - # s_GABA_selective2 = mm_selective2.get("events", "s_GABA") - # s_NMDA_selective2 = mm_selective2.get("events", "s_NMDA") - # - # vm_inhibitory = mm_inhibitory.get("events", "V_m") - # s_AMPA_inhibitory = mm_inhibitory.get("events", "s_AMPA") - # s_GABA_inhibitory = mm_inhibitory.get("events", "s_GABA") - # s_NMDA_inhibitory = mm_inhibitory.get("events", "s_NMDA") - return { "nonselective": spikes_nonselective, "selective1": spikes_selective1, @@ -387,9 +355,9 @@ def run_sim(coherence, seed=123): coherences = [51.2, 12.8, 0.0] -spikes = [] +results = [] for c in coherences: - spikes.append(run_sim(c, seed=1234)) + results.append(run_sim(c, seed=1234)) ################################################## # Plots @@ -411,9 +379,11 @@ def run_sim(coherence, seed=123): for j in range(3): # compute firing rates as moving averages over 50 ms windows with 5 ms strides - hist1, _ = np.histogram(spikes[j]["selective1"], bins=bins) + hist1, _ = np.histogram( + results[j]["selective1"] * dt, bins=bins + ) # spikes are recorded in steps, multiply på dt to get time hist1 = hist1.reshape((-1, 5)).sum(-1) - hist2, _ = np.histogram(spikes[j]["selective2"], bins=bins) + hist2, _ = np.histogram(results[j]["selective2"] * dt, bins=bins) hist2 = hist2.reshape((-1, 5)).sum(-1) pop1_rate = np.convolve(hist1, np.ones(10) * 0.1, mode="same") / num / 5 * 1000 @@ -426,12 +396,12 @@ def run_sim(coherence, seed=123): ax[j * 3 + 1, 0].set_ylim(0, 40) ax[j * 3 + 1, 1].set_ylim(0, 40) for k in range(100): - sp = spikes[j]["selective1_raster"][k] / 5.0 + sp = results[j]["selective1_raster"][k] * dt / 5.0 ax[j * 3, 0].scatter(sp, np.ones_like(sp) * k, s=1.0, marker="|", c="black") ax[j * 3, 0].vlines([200, 400], 0, 100, colors="black", linewidths=1.0) ax[j * 3, 0].set_yticks([]) ax[j * 3, 0].set_ylim(0, 99) - sp = spikes[j]["selective2_raster"][k] / 5.0 + sp = results[j]["selective2_raster"][k] * dt / 5.0 ax[j * 3, 1].scatter(sp, np.ones_like(sp) * k, s=1.0, marker="|", c="black") ax[j * 3, 1].vlines([200, 400], 0, 100, colors="black", linewidths=1.0) ax[j * 3, 1].set_yticks([]) From fd083801a3f3cf547dc9deb9cb26455b75dcee72 Mon Sep 17 00:00:00 2001 From: janeirik <> Date: Sat, 4 May 2024 16:28:59 +0200 Subject: [PATCH 140/184] change variable names S_jump_* -> k_* --- models/iaf_bw_2001.cpp | 6 +++--- models/iaf_bw_2001.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/models/iaf_bw_2001.cpp b/models/iaf_bw_2001.cpp index bb5058a8fc..5b726bb7eb 100644 --- a/models/iaf_bw_2001.cpp +++ b/models/iaf_bw_2001.cpp @@ -389,8 +389,8 @@ nest::iaf_bw_2001::pre_run_hook() const double alpha_tau = P_.alpha * P_.tau_rise_NMDA; const double tau_rise_tau_dec = P_.tau_rise_NMDA / P_.tau_decay_NMDA; - V_.S_jump_1 = std::expm1( -P_.alpha * P_.tau_rise_NMDA ); - V_.S_jump_0 = std::pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma_lower( 1 - tau_rise_tau_dec, alpha_tau ); + V_.k_1 = std::expm1( -P_.alpha * P_.tau_rise_NMDA ); + V_.k_0 = std::pow( alpha_tau, tau_rise_tau_dec ) * boost::math::tgamma_lower( 1 - tau_rise_tau_dec, alpha_tau ); } /* --------------------------------------------------------------------------- @@ -461,7 +461,7 @@ nest::iaf_bw_2001::update( Time const& origin, const long from, const long to ) // compute current value of s_NMDA and add NMDA update to spike offset S_.s_NMDA_pre = S_.s_NMDA_pre * exp( -( t_spike - t_lastspike ) / P_.tau_decay_NMDA ); - const double s_NMDA_delta = V_.S_jump_0 + V_.S_jump_1 * S_.s_NMDA_pre; + const double s_NMDA_delta = V_.k_0 + V_.k_1 * S_.s_NMDA_pre; S_.s_NMDA_pre += s_NMDA_delta; SpikeEvent se; diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index 298758a3cb..812a7b84a1 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -379,8 +379,8 @@ class iaf_bw_2001 : public ArchivingNode { //! refractory time in steps long RefractoryCounts_; - double S_jump_0; // zeroth order term of jump - double S_jump_1; // first order term of jump + double k_0; // zeroth order term of jump + double k_1; // first order term of jump }; // Access functions for UniversalDataLogger ------------------------------- From 9469e6b079381d4fffda56231434a4b1f1b2d86c Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:29:21 +0200 Subject: [PATCH 141/184] Update models/iaf_bw_2001_exact.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001_exact.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index 31dca9b298..d60ed0f577 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -104,7 +104,7 @@ slow. The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. -This model is slow to simulate when there are many neurons with NMDA-synapses, since each post-synaptic neuron simulates each pre-synaptic connection explicitly. The model iaf_bw_2001 is an approximation to this model which is significantly faster. +This model is slow to simulate when there are many neurons with NMDA-synapses, since each post-synaptic neuron simulates each pre-synaptic connection explicitly. The model :doc:`iaf_bw_2001 ` is an approximation to this model which is significantly faster. Parameters ++++++++++ From 0ced8d27eb279ed6eb65e2a477908e2d38c8c65d Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:29:35 +0200 Subject: [PATCH 142/184] Update models/iaf_bw_2001.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index 812a7b84a1..96181f90e9 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -68,7 +68,7 @@ Description ``iaf_bw_2001`` is a leaky integrate-and-fire neuron model with -* an approximate version of the neuron model described in [1,2,3]_. +* an approximate version of the neuron model described in [1]_, [2]_, [3]_. * exponential conductance-based AMPA and GABA-synapses * exponential conductance-based NMDA-synapses weighted such that it approximates the original non-linear dynamics * a fixed refractory period From 06cf6c7319841f1bfa6c10dbb389c8234f06f074 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:29:56 +0200 Subject: [PATCH 143/184] Update pynest/examples/wang_decision_making.py Co-authored-by: jessica-mitchell --- pynest/examples/wang_decision_making.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index d4ad45ed76..3ade330e40 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -23,7 +23,7 @@ Decision making in recurrent network with NMDA-dynamics ------------------------------------------------------------ -This script simulates the network modelled in [1]_. +This script simulates the network modeled in [1]_. An excitatory and an inhibitory population receives input from an external population modelled as a Poisson process. Two different subsets of the excitatory population, From 863653da5e1b87c88e5cde132598eb27fc1a82e1 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:30:28 +0200 Subject: [PATCH 144/184] Update pynest/examples/wang_decision_making.py Co-authored-by: jessica-mitchell --- pynest/examples/wang_decision_making.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 3ade330e40..3205d31446 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -25,7 +25,7 @@ This script simulates the network modeled in [1]_. An excitatory and an inhibitory population receives input -from an external population modelled as a Poisson process. +from an external population modeled as a Poisson process. Two different subsets of the excitatory population, comprising 15% of the total population each, receive additional inputs from a time-inhomogeneous Poisson process, where the From 7fd6f853ccda5b8beda6baf9fb3edfb15d41d178 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:30:41 +0200 Subject: [PATCH 145/184] Update models/iaf_bw_2001.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index 96181f90e9..3e9af064f1 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -102,7 +102,7 @@ where :math:`\gamma` is the `lower incomplete gamma function The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. -Additionally, the synapses from the external population is not separated from the recurrent AMPA-synapses. +Additionally, the synapses from the external population are not separated from the recurrent AMPA-synapses. For more implementation details and a comparison to the exact version see: From 623297b44767dae1f26db1ca57fcfd71113605c9 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:30:53 +0200 Subject: [PATCH 146/184] Update models/iaf_bw_2001.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index 3e9af064f1..bfee8b6e09 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -146,7 +146,7 @@ The following state variables evolve during simulation and are available either ================== ================= ========================== ================================= .. note:: - :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ is built into the weights in this NEST model, so these variables are set by changing the weights. + :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ are built into the weights in this NEST model, so these variables are set by changing the weights. .. note:: For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_bw_2001. For AMPA/GABA synapses, any pre-synaptic neuron can be used. From 5db64d54b3f3f22fe6233704dc164fbcf91b18f2 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:31:01 +0200 Subject: [PATCH 147/184] Update models/iaf_bw_2001.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index bfee8b6e09..c4ad6176b2 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -152,7 +152,7 @@ The following state variables evolve during simulation and are available either For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_bw_2001. For AMPA/GABA synapses, any pre-synaptic neuron can be used. .. note:: - For technical reasons, spikes from iaf_bw_2001 neurons must be recorded with time_in_steps: True set in the spike recorder, ignoring the offset value. We hope to correct this in a future version of NEST. + For technical reasons, spikes from ``iaf_bw_2001`` neurons must be recorded with ``time_in_steps: True`` set in the spike recorder, ignoring the offset value. We hope to correct this in a future version of NEST. Sends +++++ From 21c128143e0ab3f0eee21d45cfa2d47c3a69d833 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:36:03 +0200 Subject: [PATCH 148/184] Update models/iaf_bw_2001.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index c4ad6176b2..ba66306114 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -149,7 +149,7 @@ The following state variables evolve during simulation and are available either :math:`g_{\mathrm{\{\{rec,AMPA\}, \{ext,AMPA\}, GABA, NMBA}\}}` from [1]_ are built into the weights in this NEST model, so these variables are set by changing the weights. .. note:: - For the NMDA dynamics to work, the both pre-synaptic and post-synaptic neuron must be of type iaf_bw_2001. For AMPA/GABA synapses, any pre-synaptic neuron can be used. + For the NMDA dynamics to work, both pre-synaptic and post-synaptic neurons must be of type ``iaf_bw_2001``. For AMPA/GABA synapses, any pre-synaptic neuron can be used. .. note:: For technical reasons, spikes from ``iaf_bw_2001`` neurons must be recorded with ``time_in_steps: True`` set in the spike recorder, ignoring the offset value. We hope to correct this in a future version of NEST. From 548f2ab5b355cca87fe5cb8efa35cc1e4fb2dd4d Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:36:14 +0200 Subject: [PATCH 149/184] Update pynest/examples/wang_decision_making.py Co-authored-by: jessica-mitchell --- pynest/examples/wang_decision_making.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 3205d31446..cf32a197cb 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -30,7 +30,7 @@ comprising 15% of the total population each, receive additional inputs from a time-inhomogeneous Poisson process, where the coherence between the two signals can be varied. Local inhibition -mediates a winner-takes-all comptetion, and the activity of +mediates a winner-takes-all competition, and the activity of one of the sub-population is suppressed. References From 4fb08e62d6e465bffd6557b4a127d16961d88fee Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:36:47 +0200 Subject: [PATCH 150/184] Update pynest/examples/wang_decision_making.py Co-authored-by: jessica-mitchell --- pynest/examples/wang_decision_making.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index cf32a197cb..b04e0925e9 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -118,7 +118,7 @@ def run_sim(coherence, seed=123): # the signal is given by a time-inhomogeneous Poisson process, # where the expectations are constant over intervals of 50ms, # and then change. The values for each interval are normally - # distributed, with means mu_a and mu_b, and standard deviation + # distributed, with means `mu_a`and `mu_b`, and standard deviation # sigma. signal_start = 1000.0 signal_duration = 1000.0 From 9ac9b50794e86c1b35dfa96b587c87df5e5dd33e Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:37:02 +0200 Subject: [PATCH 151/184] Update pynest/examples/wang_decision_making.py Co-authored-by: jessica-mitchell --- pynest/examples/wang_decision_making.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index b04e0925e9..e3aad2e1bf 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -119,7 +119,7 @@ def run_sim(coherence, seed=123): # where the expectations are constant over intervals of 50ms, # and then change. The values for each interval are normally # distributed, with means `mu_a`and `mu_b`, and standard deviation - # sigma. + # `sigma`. signal_start = 1000.0 signal_duration = 1000.0 signal_update_interval = 50.0 From 40805582b1922ed188bf29ee17d0b71f7f8d729c Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:37:21 +0200 Subject: [PATCH 152/184] Update models/iaf_bw_2001_exact.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001_exact.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index d60ed0f577..41e9e98be1 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -61,7 +61,7 @@ extern "C" inline int iaf_bw_2001_exact_dynamics( double, const double y[], doub Short description +++++++++++++++++ -Leaky integrate-and-fire-neuron model with conductance based synapses, and additional NMDA receptors. +Leaky integrate-and-fire-neuron model with conductance based synapses and additional NMDA receptors. Description +++++++++++ From 0e9fb5b09da954c7e5b19ce8ccbcd29b8bcc4bc7 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:38:09 +0200 Subject: [PATCH 153/184] Update models/iaf_bw_2001.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index ba66306114..c4668b78cf 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -61,7 +61,7 @@ extern "C" inline int iaf_bw_2001_dynamics( double, const double*, double*, void Short description +++++++++++++++++ -Leaky integrate-and-fire-neuron model with conductance based synapses, and additional NMDA receptors. +Leaky integrate-and-fire-neuron model with conductance based synapses and additional NMDA receptors. Description +++++++++++ From 0197ab3aa0efc8d6feb540146acecdeec6149f55 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:38:48 +0200 Subject: [PATCH 154/184] Update models/iaf_bw_2001_exact.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001_exact.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index 41e9e98be1..f87542ac3c 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -98,7 +98,7 @@ neurons respectively, and :math:`\Delta_j` is an index set for the spike times o Since :math:`S_{j,\mathrm{AMPA}}` and :math:`S_{j,\mathrm{GABA}}` are piecewise exponential functions, the sums are also a piecewise exponential function, and can be stored in a single synaptic variable each, :math:`S_{\mathrm{AMPA}}` and :math:`S_{\mathrm{GABA}}` respectively. The sum over :math:`S_{j,\mathrm{NMDA}}` does not have a simple expression, and -cannot be simplified. Therefore, for each synapse, we need to integrate separate state variable, which makes the model +cannot be simplified. Therefore, for each synapse, we need to integrate separate state variables, which makes the model slow. The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, From 47b38afe1798e2078a738def48872521214057f2 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:39:09 +0200 Subject: [PATCH 155/184] Update models/iaf_bw_2001.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index c4668b78cf..47bc15ff66 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -98,7 +98,7 @@ where :math:`\Gamma_\mathrm{ex}` and :math:`\Gamma_\mathrm{in}` are index sets f k_1 &= \mathrm{exp}(-\alpha \tau_\mathrm{r}) - 1 where :math:`\gamma` is the `lower incomplete gamma function -`_. For these values of :math:`k_0` and :math:`k_1`, the approximate model will approach the exact model for large t. +`_. For these values of :math:`k_0` and :math:`k_1`, the approximate model will approach the exact model for large `t`. The specification of this model differs slightly from the one in [1]_. The parameters :math:`g_\mathrm{AMPA}`, :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. From 1643d9f41cfaea110b9306765144e8453d5a238c Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 11:51:52 +0200 Subject: [PATCH 156/184] correct citaton --- models/iaf_bw_2001.h | 2 +- models/iaf_bw_2001_exact.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index 47bc15ff66..cf81137b16 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -168,7 +168,7 @@ References ++++++++++ .. [1] Wang, X.-J. (1999). Synaptic Basis of Cortical Persistent Activity: The Importance of NMDA Receptors to Working Memory. Journal of Neuroscience, 19(21), 9587–9603. https://doi.org/10.1523/JNEUROSCI.19-21-09587.1999 -.. [2] Wang, X.-J. (1999). Synaptic Basis of Cortical Persistent Activity: The Importance of NMDA Receptors to Working Memory. Journal of Neuroscience, 19(21), 9587–9603. https://doi.org/10.1523/JNEUROSCI.19-21-09587.1999 +.. [2] Brunel, N., & Wang, X.-J. (2001). Effects of Neuromodulation in a Cortical Network Model of Object Working Memory Dominated by Recurrent Inhibition. Journal of Computational Neuroscience, 11(1), 63–85. https://doi.org/10.1023/A:1011204814320 .. [3] Wang, X. J. (2002). Probabilistic decision making by slow reverberation in cortical circuits. Neuron, 36(5), 955-968. https://doi.org/10.1016/S0896-6273(02)01092-9 diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index f87542ac3c..27e2ec71a4 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -163,7 +163,7 @@ References ++++++++++ .. [1] Wang, X.-J. (1999). Synaptic Basis of Cortical Persistent Activity: The Importance of NMDA Receptors to Working Memory. Journal of Neuroscience, 19(21), 9587–9603. https://doi.org/10.1523/JNEUROSCI.19-21-09587.1999 -.. [2] Wang, X.-J. (1999). Synaptic Basis of Cortical Persistent Activity: The Importance of NMDA Receptors to Working Memory. Journal of Neuroscience, 19(21), 9587–9603. https://doi.org/10.1523/JNEUROSCI.19-21-09587.1999 +.. [2] Brunel, N., & Wang, X.-J. (2001). Effects of Neuromodulation in a Cortical Network Model of Object Working Memory Dominated by Recurrent Inhibition. Journal of Computational Neuroscience, 11(1), 63–85. https://doi.org/10.1023/A:1011204814320 .. [3] Wang, X. J. (2002). Probabilistic decision making by slow reverberation in cortical circuits. Neuron, 36(5), 955-968. https://doi.org/10.1016/S0896-6273(02)01092-9 From 14549d99e13225a16f0849198b06089eb0bd8ac4 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 12:11:15 +0200 Subject: [PATCH 157/184] rename notebook --- ...oximation.ipynb => Brunel_Wang_2001_Model_Approximation.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/htmldoc/model_details/{Wang_2002_Model_Approximation.ipynb => Brunel_Wang_2001_Model_Approximation.ipynb} (100%) diff --git a/doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb b/doc/htmldoc/model_details/Brunel_Wang_2001_Model_Approximation.ipynb similarity index 100% rename from doc/htmldoc/model_details/Wang_2002_Model_Approximation.ipynb rename to doc/htmldoc/model_details/Brunel_Wang_2001_Model_Approximation.ipynb From 9e3ecba1e7cef2839a5373af8192c18763e3b3ff Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 12:12:49 +0200 Subject: [PATCH 158/184] correct notebook name in documentation --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index cf81137b16..bc1e522f85 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -106,7 +106,7 @@ Additionally, the synapses from the external population are not separated from t For more implementation details and a comparison to the exact version see: -- `wong_approximate_implementation <../model_details/wong_approximate_implementation.ipynb>`_ +- `Brunel_Wang_2001_Model_Approximation <../model_details/Brunel_Wang_2001_Model_Approximation.ipynb>`_ Parameters ++++++++++ From e64515b9f1470b6f3b15911c8ba18619422e360e Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 7 May 2024 12:35:47 +0200 Subject: [PATCH 159/184] Update models/iaf_bw_2001_exact.h Co-authored-by: jessica-mitchell --- models/iaf_bw_2001_exact.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index 27e2ec71a4..d6468c7b05 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -175,7 +175,7 @@ iaf_bw_2001 Examples using this model +++++++++++++++++++++++++ -.. listexamples:: iaf_bw_2001 +.. listexamples:: iaf_bw_2001_exact EndUserDocs */ // clang-format on From f0ce0dfc536f608439563eba5d8fc042c102741c Mon Sep 17 00:00:00 2001 From: janskaar Date: Sun, 19 May 2024 22:53:03 +0200 Subject: [PATCH 160/184] allow recording of AMPA and GABA currents --- models/iaf_bw_2001.cpp | 14 +++++++++++--- models/iaf_bw_2001.h | 15 +++++++++++++++ models/iaf_bw_2001_exact.cpp | 9 +++++---- models/iaf_bw_2001_exact.h | 15 +++++++++++++++ nestkernel/nest_names.cpp | 2 ++ nestkernel/nest_names.h | 2 ++ 6 files changed, 50 insertions(+), 7 deletions(-) diff --git a/models/iaf_bw_2001.cpp b/models/iaf_bw_2001.cpp index 5b726bb7eb..51e0d8341b 100644 --- a/models/iaf_bw_2001.cpp +++ b/models/iaf_bw_2001.cpp @@ -73,6 +73,8 @@ RecordablesMap< iaf_bw_2001 >::create() insert_( names::s_GABA, &iaf_bw_2001::get_ode_state_elem_< iaf_bw_2001::State_::s_GABA > ); insert_( names::s_NMDA, &iaf_bw_2001::get_ode_state_elem_< iaf_bw_2001::State_::s_NMDA > ); insert_( names::I_NMDA, &iaf_bw_2001::get_I_NMDA_ ); + insert_( names::I_AMPA, &iaf_bw_2001::get_I_AMPA_ ); + insert_( names::I_GABA, &iaf_bw_2001::get_I_GABA_ ); } } @@ -89,13 +91,13 @@ nest::iaf_bw_2001_dynamics( double, const double y[], double f[], void* pnode ) // y[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.y[]. - const double I_AMPA = ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ]; - const double I_GABA = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; + node.S_.I_AMPA_ = ( y[ S::V_m ] - node.P_.E_ex ) * y[ S::s_AMPA ]; + node.S_.I_GABA_ = ( y[ S::V_m ] - node.P_.E_in ) * y[ S::s_GABA ]; node.S_.I_NMDA_ = ( y[ S::V_m ] - node.P_.E_ex ) / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * y[ S::V_m ] ) / 3.57 ) * y[ S::s_NMDA ]; - const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_; + const double I_syn = node.S_.I_AMPA_ + node.S_.I_GABA_ + node.S_.I_NMDA_; f[ S::V_m ] = ( -node.P_.g_L * ( y[ S::V_m ] - node.P_.E_L ) - I_syn + node.B_.I_stim_ ) / node.P_.C_m; @@ -139,6 +141,8 @@ nest::iaf_bw_2001::State_::State_( const Parameters_& p ) y_[ s_NMDA ] = 0.0; s_NMDA_pre = 0.0; I_NMDA_ = 0.0; + I_AMPA_ = 0.0; + I_GABA_ = 0.0; } nest::iaf_bw_2001::State_::State_( const State_& s ) @@ -150,6 +154,8 @@ nest::iaf_bw_2001::State_::State_( const State_& s ) y_[ s_NMDA ] = s.y_[ s_NMDA ]; s_NMDA_pre = s.s_NMDA_pre; I_NMDA_ = s.I_NMDA_; + I_AMPA_ = s.I_AMPA_; + I_GABA_ = s.I_GABA_; } nest::iaf_bw_2001::Buffers_::Buffers_( iaf_bw_2001& n ) @@ -255,6 +261,8 @@ nest::iaf_bw_2001::State_::get( DictionaryDatum& d ) const def< double >( d, names::s_GABA, y_[ s_GABA ] ); def< double >( d, names::s_NMDA, y_[ s_NMDA ] ); def< double >( d, names::I_NMDA, I_NMDA_ ); + def< double >( d, names::I_AMPA, I_AMPA_ ); + def< double >( d, names::I_GABA, I_GABA_ ); } void diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index bc1e522f85..caa327e4ce 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -143,6 +143,8 @@ The following state variables evolve during simulation and are available either ``s_GABA`` 0 :math:`s_\mathrm{GABA}` GABA gating variable ``s_NMDA`` 0 :math:`s_\mathrm{NMDA}` NMDA gating variable ``I_NMDA`` 0 pA :math:`I_\mathrm{NMDA}` NMDA current +``I_AMPA`` 0 pA :math:`I_\mathrm{AMPA}` AMPA current +``I_GABA`` 0 pA :math:`I_\mathrm{GABA}` GABA current ================== ================= ========================== ================================= .. note:: @@ -307,6 +309,8 @@ class iaf_bw_2001 : public ArchivingNode // pre-synaptic side double I_NMDA_; // For recording NMDA currents + double I_AMPA_; // For recording AMPA currents + double I_GABA_; // For recording GABA currents int r_; //!< number of refractory steps remaining @@ -397,6 +401,17 @@ class iaf_bw_2001 : public ArchivingNode { return S_.I_NMDA_; } + double + get_I_AMPA_() const + { + return S_.I_AMPA_; + } + double + get_I_GABA_() const + { + return S_.I_GABA_; + } + // Data members ----------------------------------------------------------- diff --git a/models/iaf_bw_2001_exact.cpp b/models/iaf_bw_2001_exact.cpp index a79a39cee8..3855c27a53 100644 --- a/models/iaf_bw_2001_exact.cpp +++ b/models/iaf_bw_2001_exact.cpp @@ -68,6 +68,8 @@ RecordablesMap< iaf_bw_2001_exact >::create() insert_( names::s_GABA, &iaf_bw_2001_exact::get_ode_state_elem_< iaf_bw_2001_exact::State_::s_GABA > ); insert_( names::s_NMDA, &iaf_bw_2001_exact::get_s_NMDA_ ); insert_( names::I_NMDA, &iaf_bw_2001_exact::get_I_NMDA_ ); + insert_( names::I_AMPA, &iaf_bw_2001_exact::get_I_AMPA_ ); + insert_( names::I_GABA, &iaf_bw_2001_exact::get_I_GABA_ ); } } /* --------------------------------------------------------------------------- @@ -405,9 +407,8 @@ nest::iaf_bw_2001_exact_dynamics( double, const double ode_state[], double f[], // ode_state[] here is---and must be---the state vector supplied by the integrator, // not the state vector in the node, node.S_.ode_state[]. - const double I_AMPA = ( ode_state[ State_::V_m ] - node.P_.E_ex ) * ode_state[ State_::s_AMPA ]; - - const double I_GABA = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::s_GABA ]; + node.S_.I_AMPA_ = ( ode_state[ State_::V_m ] - node.P_.E_ex ) * ode_state[ State_::s_AMPA ]; + node.S_.I_GABA_ = ( ode_state[ State_::V_m ] - node.P_.E_in ) * ode_state[ State_::s_GABA ]; // The sum of s_NMDA node.S_.s_NMDA_sum = 0; @@ -419,7 +420,7 @@ nest::iaf_bw_2001_exact_dynamics( double, const double ode_state[], double f[], node.S_.I_NMDA_ = ( ode_state[ State_::V_m ] - node.P_.E_ex ) / ( 1 + node.P_.conc_Mg2 * std::exp( -0.062 * ode_state[ State_::V_m ] ) / 3.57 ) * node.S_.s_NMDA_sum; - const double I_syn = I_AMPA + I_GABA + node.S_.I_NMDA_; + const double I_syn = node.S_.I_AMPA_ + node.S_.I_GABA_ + node.S_.I_NMDA_; f[ State_::V_m ] = ( -node.P_.g_L * ( ode_state[ State_::V_m ] - node.P_.E_L ) - I_syn + node.B_.I_stim_ ) / node.P_.C_m; diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index 27e2ec71a4..6e8a2db43e 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -141,6 +141,8 @@ The following state variables evolve during simulation and are available either ``s_GABA`` 0 :math:`s_\mathrm{GABA}` GABA gating variable ``s_NMDA`` 0 :math:`s_\mathrm{NMDA}` NMDA gating variable ``I_NMDA`` 0 pA :math:`I_\mathrm{NMDA}` NMDA current +``I_AMPA`` 0 pA :math:`I_\mathrm{AMPA}` AMPA current +``I_GABA`` 0 pA :math:`I_\mathrm{GABA}` GABA current ================== ================= ========================== ================================= .. note:: @@ -305,6 +307,8 @@ class iaf_bw_2001_exact : public ArchivingNode double s_NMDA_sum; // For recording NMDA gating variables double I_NMDA_; // For recording NMDA currents + double I_AMPA_; // For recording NMDA currents + double I_GABA_; // For recording NMDA currents State_( const Parameters_& ); //!< Default initialization State_( const State_& ); @@ -404,6 +408,17 @@ class iaf_bw_2001_exact : public ArchivingNode { return S_.I_NMDA_; } + double + get_I_AMPA_() const + { + return S_.I_AMPA_; + } + double + get_I_GABA_() const + { + return S_.I_GABA_; + } + // Data members ----------------------------------------------------------- diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index 1b96f1adcf..c7152ec06c 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -251,6 +251,8 @@ const Name I( "I" ); const Name I_ahp( "I_ahp" ); const Name I_e( "I_e" ); const Name I_h( "I_h" ); +const Name I_AMPA( "I_AMPA" ); +const Name I_GABA( "I_GABA" ); const Name I_KNa( "I_KNa" ); const Name I_NMDA( "I_NMDA" ); const Name I_NaP( "I_NaP" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index 71535cb640..c08742bdec 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -279,6 +279,8 @@ extern const Name I; extern const Name I_ahp; extern const Name I_e; extern const Name I_h; +extern const Name I_AMPA; +extern const Name I_GABA; extern const Name I_KNa; extern const Name I_NMDA; extern const Name I_NaP; From 99e8d705d968697068f865ca31c37173fd9edf1e Mon Sep 17 00:00:00 2001 From: Jessica Mitchell Date: Thu, 20 Jun 2024 12:25:03 +0200 Subject: [PATCH 161/184] add wang to example index --- doc/htmldoc/examples/index.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/htmldoc/examples/index.rst b/doc/htmldoc/examples/index.rst index 5ef22afc0a..2f22cb80ab 100644 --- a/doc/htmldoc/examples/index.rst +++ b/doc/htmldoc/examples/index.rst @@ -153,6 +153,12 @@ PyNEST examples * :doc:`../auto_examples/CampbellSiegert` +.. grid:: 1 1 2 3 + + .. grid-item-card:: Decision making in recurrent network (after Wang 2002) + :img-top: ../static/img/nest_logo-faded.png + + * :doc:`../auto_examples/wang_decision_making` .. grid:: 1 1 2 3 @@ -351,6 +357,7 @@ PyNEST examples ../auto_examples/astrocytes/astrocyte_brunel ../auto_examples/EI_clustered_network/index ../auto_examples/eprop_plasticity/index + ../auto_examples/wang_decision_making .. toctree:: :hidden: From dc9cef872a018fb8de1407a1a8eea7086dc29422 Mon Sep 17 00:00:00 2001 From: janskaar Date: Thu, 20 Jun 2024 18:24:26 +0200 Subject: [PATCH 162/184] Update models/iaf_bw_2001_exact.h Co-authored-by: Hans Ekkehard Plesser --- models/iaf_bw_2001_exact.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index 24e2d50295..ef2bb6b6a3 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -459,7 +459,7 @@ iaf_bw_2001_exact::handles_test_event( SpikeEvent&, size_t receptor_type ) if ( B_.e_ != nullptr ) { throw IllegalConnection( - "NMDA connections to this model can only be made before the first call to nest.Simulate" ); + "NMDA connections to this model can only be made before the first call to nest.Simulate()" ); } // give each NMDA synapse a unique rport, starting from 3 (num_ports_ is initialized to 3) ++S_.num_ports_; From d1c5de2d04837bb7450215d068ca4d9d077a1fc5 Mon Sep 17 00:00:00 2001 From: janskaar Date: Thu, 20 Jun 2024 18:24:39 +0200 Subject: [PATCH 163/184] Update pynest/examples/wang_decision_making.py Co-authored-by: Hans Ekkehard Plesser --- pynest/examples/wang_decision_making.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index e3aad2e1bf..ae1a31ce06 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -114,7 +114,7 @@ def run_sim(coherence, seed=123): } # fmt: on - # signals to the two different excitatory sub-populations + # Signals to the two different excitatory sub-populations # the signal is given by a time-inhomogeneous Poisson process, # where the expectations are constant over intervals of 50ms, # and then change. The values for each interval are normally From 58b5ceef9d8adcfae5b324b41ee37cef9e1dcde1 Mon Sep 17 00:00:00 2001 From: janskaar Date: Thu, 20 Jun 2024 18:24:48 +0200 Subject: [PATCH 164/184] Update pynest/examples/wang_decision_making.py Co-authored-by: Hans Ekkehard Plesser --- pynest/examples/wang_decision_making.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index ae1a31ce06..22914b6729 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -375,7 +375,7 @@ def run_sim(coherence, seed=123): fig.set_size_inches(sz) # selective populations -num = NE * 0.15 +num = 0.15 * NE for j in range(3): # compute firing rates as moving averages over 50 ms windows with 5 ms strides From 5979ebd6a4d73f876d7ee2f7ca2856eaf62264a8 Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 11:22:09 +0200 Subject: [PATCH 165/184] Update testsuite/pytests/test_iaf_bw_2001_exact.py Co-authored-by: Hans Ekkehard Plesser --- testsuite/pytests/test_iaf_bw_2001_exact.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/testsuite/pytests/test_iaf_bw_2001_exact.py b/testsuite/pytests/test_iaf_bw_2001_exact.py index 85f9609b87..d4bbaafa2c 100644 --- a/testsuite/pytests/test_iaf_bw_2001_exact.py +++ b/testsuite/pytests/test_iaf_bw_2001_exact.py @@ -106,14 +106,8 @@ def test_iaf_bw_2001_exact(): pg = nest.Create("poisson_generator", {"rate": 50.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) - mm1 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} - ) - mm2 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} - ) - mm3 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + mm1, mm2, mm3 = nest.Create( + "multimeter", n=3, params={"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} ) mm4 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) From fb5b716b24bdca363ade6583ee57e99fa84ac635 Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 11:22:46 +0200 Subject: [PATCH 166/184] Update pynest/examples/wang_decision_making.py Co-authored-by: Hans Ekkehard Plesser --- pynest/examples/wang_decision_making.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 22914b6729..e2c763be74 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -46,9 +46,6 @@ import numpy as np from matplotlib.gridspec import GridSpec -np.random.seed(1234) -rng = np.random.default_rng() - # Use approximate model, can be replaced by "iaf_bw_2001_exact" model = "iaf_bw_2001" From 21c5568cc396b43054f5942a1bea1e4ce343ce02 Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 11:23:16 +0200 Subject: [PATCH 167/184] Update pynest/examples/wang_decision_making.py Co-authored-by: Hans Ekkehard Plesser --- pynest/examples/wang_decision_making.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index e2c763be74..3962c52499 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -133,8 +133,11 @@ def run_sim(coherence, seed=123): num_updates = int(signal_duration / signal_update_interval) update_times = np.arange(0, signal_duration, signal_update_interval) update_times[0] = 0.1 - rates_a = np.random.normal(mu_a, sigma, size=num_updates) - rates_b = np.random.normal(mu_b, sigma, size=num_updates) + # for p ... below allows us to create a local variable in the iterator which is created once + rates = lambda mu, sig, n: np.fromiter((p.GetValue() for _ in range(n) + for p in [nest.CreateParameter('normal', {'mean': mu, 'std': sig})]), float) + rates_a = rates(mu_a, sigma, n) + rates_b = rates(mu_b, sigma, n) # synaptic weights w_plus = 1.7 # strong connections in selective populations From bdec79d27018269afc151d6abb12de6f234459e8 Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 11:23:28 +0200 Subject: [PATCH 168/184] Update testsuite/pytests/test_iaf_bw_2001_exact.py Co-authored-by: Hans Ekkehard Plesser --- testsuite/pytests/test_iaf_bw_2001_exact.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/pytests/test_iaf_bw_2001_exact.py b/testsuite/pytests/test_iaf_bw_2001_exact.py index d4bbaafa2c..1ab4006a3f 100644 --- a/testsuite/pytests/test_iaf_bw_2001_exact.py +++ b/testsuite/pytests/test_iaf_bw_2001_exact.py @@ -64,7 +64,7 @@ def test_iaf_bw_2001_exact(): nrn1: pre-synaptic iaf_bw_2001_exact nrn2: post-synaptic iaf_bw_2001_exact, will have AMPA, GABA and NMDA synapses nrn3: post-synaptic iaf_bw_2001_exact, will only have AMPA and GABA - nrn4: post-synaptic iaf_psc_exp, will only have AMPA and GABA + nrn4: post-synaptic iaf_cond_exp, will only have AMPA and GABA We test that nrn3 and nrn4 have identical V_m. We test that nrn2 has greater V_m compared to nrn3. From 431d4ceec4c03357c807f73515f7bced58af99ef Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 11:31:15 +0200 Subject: [PATCH 169/184] fix bug --- pynest/examples/wang_decision_making.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 3962c52499..8510583df2 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -133,11 +133,13 @@ def run_sim(coherence, seed=123): num_updates = int(signal_duration / signal_update_interval) update_times = np.arange(0, signal_duration, signal_update_interval) update_times[0] = 0.1 + # for p ... below allows us to create a local variable in the iterator which is created once - rates = lambda mu, sig, n: np.fromiter((p.GetValue() for _ in range(n) - for p in [nest.CreateParameter('normal', {'mean': mu, 'std': sig})]), float) - rates_a = rates(mu_a, sigma, n) - rates_b = rates(mu_b, sigma, n) + rates = lambda mu, sig, n: np.fromiter( + (p.GetValue() for _ in range(n) for p in [nest.CreateParameter("normal", {"mean": mu, "std": sig})]), float + ) + rates_a = rates(mu_a, sigma, num_updates) + rates_b = rates(mu_b, sigma, num_updates) # synaptic weights w_plus = 1.7 # strong connections in selective populations From eb052202b06930e84046c8f218bd85eff8ef3f50 Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 12:14:15 +0200 Subject: [PATCH 170/184] apply suggestions fro mreview --- testsuite/pytests/test_iaf_bw_2001.py | 124 ++++++++++---------- testsuite/pytests/test_iaf_bw_2001_exact.py | 75 ++++++------ 2 files changed, 99 insertions(+), 100 deletions(-) diff --git a/testsuite/pytests/test_iaf_bw_2001.py b/testsuite/pytests/test_iaf_bw_2001.py index 13935f2808..3573138596 100644 --- a/testsuite/pytests/test_iaf_bw_2001.py +++ b/testsuite/pytests/test_iaf_bw_2001.py @@ -68,13 +68,13 @@ def spiketrain_response(t, tau, spiketrain, w): def test_iaf_bw_2001(): """ Creates 4 neurons. - nrn1: pre-synaptic iaf_bw_2001 - nrn2: post-synaptic iaf_bw_2001, will have AMPA, GABA and NMDA synapses - nrn3: post-synaptic iaf_bw_2001, will only have AMPA and GABA - nrn4: post-synaptic iaf_cond_exp, will only have AMPA and GABA + nrn_presyn: pre-synaptic iaf_bw_2001 + postsyn_bw1: post-synaptic iaf_bw_2001, will have AMPA, GABA and NMDA synapses + postsyn_bw2: post-synaptic iaf_bw_2001, will only have AMPA and GABA + postsyn_ce: post-synaptic iaf_cond_exp, will only have AMPA and GABA - We test that nrn3 and nrn4 have identical V_m. - We test that nrn2 has greater V_m compared to nrn3. + We test that postsyn_bw2 and postsyn_ce have identical V_m. + We test that postsyn_bw1 has greater V_m compared to postsyn_bw2. We test that s_AMPA and s_GABA have the correct analytical solution. """ @@ -103,26 +103,20 @@ def test_iaf_bw_2001(): conc_Mg2=1.0, # Magnesium concentration ) - nrn1 = nest.Create("iaf_bw_2001", wang_params) - nrn2 = nest.Create("iaf_bw_2001", wang_params) - nrn3 = nest.Create("iaf_bw_2001", wang_params) - nrn4 = nest.Create("iaf_cond_exp", cond_exp_params) + nrn_presyn = nest.Create("iaf_bw_2001", wang_params) + postsyn_bw1 = nest.Create("iaf_bw_2001", wang_params) + postsyn_bw2 = nest.Create("iaf_bw_2001", wang_params) + postsyn_ce = nest.Create("iaf_cond_exp", cond_exp_params) - receptor_types = nrn1.get("receptor_types") + receptor_types = nrn_presyn.get("receptor_types") pg = nest.Create("poisson_generator", {"rate": 50.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) - mm1 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} + mm_presyn, mm_bw1, mm_bw2 = nest.Create( + "multimeter", n=3, params={"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} ) - mm2 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} - ) - mm3 = nest.Create( - "multimeter", {"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} - ) - mm4 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) + mm_ce = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) # for post-synaptic iaf_bw_2001 ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} @@ -133,48 +127,51 @@ def test_iaf_bw_2001(): ex_syn_spec = {"weight": w_ex} in_syn_spec = {"weight": -w_in} - nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) - nest.Connect(nrn1, sr) + nest.Connect(pg, nrn_presyn, syn_spec=ampa_syn_spec) + nest.Connect(nrn_presyn, sr) - nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec) - nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec) - nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + nest.Connect(nrn_presyn, postsyn_bw1, syn_spec=ampa_syn_spec) + nest.Connect(nrn_presyn, postsyn_bw1, syn_spec=gaba_syn_spec) + nest.Connect(nrn_presyn, postsyn_bw1, syn_spec=nmda_syn_spec) - nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec) - nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec) + nest.Connect(nrn_presyn, postsyn_bw2, syn_spec=ampa_syn_spec) + nest.Connect(nrn_presyn, postsyn_bw2, syn_spec=gaba_syn_spec) - nest.Connect(nrn1, nrn4, syn_spec=ex_syn_spec) - nest.Connect(nrn1, nrn4, syn_spec=in_syn_spec) + nest.Connect(nrn_presyn, postsyn_ce, syn_spec=ex_syn_spec) + nest.Connect(nrn_presyn, postsyn_ce, syn_spec=in_syn_spec) - nest.Connect(mm1, nrn1) - nest.Connect(mm2, nrn2) - nest.Connect(mm3, nrn3) - nest.Connect(mm4, nrn4) + nest.Connect(mm_presyn, nrn_presyn) + nest.Connect(mm_bw1, postsyn_bw1) + nest.Connect(mm_bw2, postsyn_bw2) + nest.Connect(mm_ce, postsyn_ce) nest.Simulate(1000.0) spikes = sr.get("events", "times") * nest.resolution + first_spike_ind = int(spikes[0] / nest.resolution) # compute analytical solutions - times = mm1.get("events", "times") * nest.resolution + times = mm_presyn.get("events", "times") * nest.resolution ampa_soln = spiketrain_response(times, wang_params["tau_AMPA"], spikes, w_ex) gaba_soln = spiketrain_response(times, wang_params["tau_GABA"], spikes, np.abs(w_in)) - nptest.assert_array_equal(mm3.events["V_m"], mm4.events["V_m"]) - assert (mm2.events["V_m"] >= mm3.events["V_m"]).all() - nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) - nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) + nptest.assert_array_almost_equal(mm_bw2.events["V_m"], mm_ce.events["V_m"], decimal=10) + assert ( + mm_bw1.events["V_m"][first_spike_ind + 10 :] > mm_bw2.events["V_m"][first_spike_ind + 10 :] + ).all() # 10 due to delay + nptest.assert_array_almost_equal(ampa_soln, mm_bw1.events["s_AMPA"]) + nptest.assert_array_almost_equal(gaba_soln, mm_bw1.events["s_GABA"]) def test_approximation_I_NMDA_V_m(): """ Creates 3 neurons. - nrn1: pre-synaptic iaf_bw_2001 - nrn2: post-synaptic iaf_bw_2001 - nrn3: post-synaptic iaf_bw_2001_exact + nrn_presyn: pre-synaptic iaf_bw_2001 + nrn_approx: post-synaptic iaf_bw_2001 + nrn_exact: post-synaptic iaf_bw_2001_exact We will check that the and membrane potentials - of nrn2 and nrn3 are sufficiently close. + of nrn_approx and nrn_exact are sufficiently close. """ nest.ResetKernel() @@ -191,39 +188,38 @@ def test_approximation_I_NMDA_V_m(): "t_ref": 0.0, # refreactory period } - nrn1 = nest.Create("iaf_bw_2001", nrn_params) - nrn2 = nest.Create("iaf_bw_2001", nrn_params) - nrn3 = nest.Create("iaf_bw_2001_exact", nrn_params) + nrn_presyn = nest.Create("iaf_bw_2001", nrn_params) + nrn_approx = nest.Create("iaf_bw_2001", nrn_params) + nrn_exact = nest.Create("iaf_bw_2001_exact", nrn_params) - receptor_types = nrn1.get("receptor_types") + receptor_types = nrn_presyn.get("receptor_types") pg = nest.Create("poisson_generator", {"rate": 150.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) - mm1 = nest.Create("multimeter", {"record_from": ["V_m", "I_NMDA"], "interval": 0.1, "time_in_steps": True}) + mm_presyn = nest.Create("multimeter", {"record_from": ["V_m", "I_NMDA"], "interval": 0.1, "time_in_steps": True}) - mm2 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) - mm3 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) + mm_approx = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) + mm_exact = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) # for post-synaptic iaf_bw_2001 ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} nmda_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["NMDA"]} - # for post-synaptic iaf_cond_exp - ex_syn_spec = {"weight": w_ex} - - nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) - nest.Connect(nrn1, sr) + nest.Connect(pg, nrn_presyn, syn_spec=ampa_syn_spec) + nest.Connect(nrn_presyn, sr) - nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) - nest.Connect(nrn1, nrn3, syn_spec=nmda_syn_spec) + nest.Connect(nrn_presyn, nrn_approx, syn_spec=nmda_syn_spec) + nest.Connect(nrn_presyn, nrn_exact, syn_spec=nmda_syn_spec) - nest.Connect(mm1, nrn1) - nest.Connect(mm2, nrn2) - nest.Connect(mm3, nrn3) + nest.Connect(mm_presyn, nrn_presyn) + nest.Connect(mm_approx, nrn_approx) + nest.Connect(mm_exact, nrn_exact) nest.Simulate(500.0) - assert np.max(np.abs(mm2.events["V_m"] - mm3.events["V_m"])) < 0.25 + + # 0.25 was found to be roughly the tightest bound we can expect + assert np.max(np.abs(mm_approx.events["V_m"] - mm_exact.events["V_m"])) < 0.25 def test_illegal_connection_error(): @@ -231,9 +227,9 @@ def test_illegal_connection_error(): Test that connecting with NMDA synapses from iaf_cond_exp throws error. """ nest.ResetKernel() - nrn1 = nest.Create("iaf_cond_exp") - nrn2 = nest.Create("iaf_bw_2001") - receptor_types = nrn2.get("receptor_types") + nrn_ce = nest.Create("iaf_cond_exp") + nrn_bw = nest.Create("iaf_bw_2001") + receptor_types = nrn_bw.get("receptor_types") nmda_syn_spec = {"receptor_type": receptor_types["NMDA"]} with pytest.raises(nest.kernel.NESTErrors.IllegalConnection): - nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + nest.Connect(nrn_ce, nrn_bw, syn_spec=nmda_syn_spec) diff --git a/testsuite/pytests/test_iaf_bw_2001_exact.py b/testsuite/pytests/test_iaf_bw_2001_exact.py index 1ab4006a3f..695cd29d34 100644 --- a/testsuite/pytests/test_iaf_bw_2001_exact.py +++ b/testsuite/pytests/test_iaf_bw_2001_exact.py @@ -61,13 +61,13 @@ def spiketrain_response(t, tau, spiketrain, w): def test_iaf_bw_2001_exact(): """ Creates 4 neurons. - nrn1: pre-synaptic iaf_bw_2001_exact - nrn2: post-synaptic iaf_bw_2001_exact, will have AMPA, GABA and NMDA synapses - nrn3: post-synaptic iaf_bw_2001_exact, will only have AMPA and GABA - nrn4: post-synaptic iaf_cond_exp, will only have AMPA and GABA + bw_presyn: pre-synaptic iaf_bw_2001_exact + bw_postsyn_1: post-synaptic iaf_bw_2001_exact, will have AMPA, GABA and NMDA synapses + bw_postsyn_2: post-synaptic iaf_bw_2001_exact, will only have AMPA and GABA + cond_exp_postsyn: post-synaptic iaf_cond_exp, will only have AMPA and GABA - We test that nrn3 and nrn4 have identical V_m. - We test that nrn2 has greater V_m compared to nrn3. + We test that bw_postsyn_2 and cond_exp_postsyn have identical V_m. + We test that bw_postsyn_1 has greater V_m compared to bw_postsyn_2. We test that s_AMPA and s_GABA have the correct analytical solution. """ @@ -96,20 +96,20 @@ def test_iaf_bw_2001_exact(): conc_Mg2=1.0, # Magnesium concentration ) - nrn1 = nest.Create("iaf_bw_2001_exact", wang_params) - nrn2 = nest.Create("iaf_bw_2001_exact", wang_params) - nrn3 = nest.Create("iaf_bw_2001_exact", wang_params) - nrn4 = nest.Create("iaf_cond_exp", cond_exp_params) + bw_presyn = nest.Create("iaf_bw_2001_exact", wang_params) + bw_postsyn_1 = nest.Create("iaf_bw_2001_exact", wang_params) + bw_postsyn_2 = nest.Create("iaf_bw_2001_exact", wang_params) + cond_exp_postsyn = nest.Create("iaf_cond_exp", cond_exp_params) - receptor_types = nrn1.get("receptor_types") + receptor_types = bw_presyn.get("receptor_types") pg = nest.Create("poisson_generator", {"rate": 50.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) - mm1, mm2, mm3 = nest.Create( + mm_presyn, mm_bw1, mm_bw2 = nest.Create( "multimeter", n=3, params={"record_from": ["V_m", "s_AMPA", "s_GABA"], "interval": 0.1, "time_in_steps": True} ) - mm4 = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) + mm_ce = nest.Create("multimeter", {"record_from": ["V_m"], "interval": 0.1, "time_in_steps": True}) # for post-synaptic iaf_bw_2001_exact ampa_syn_spec = {"weight": w_ex, "receptor_type": receptor_types["AMPA"]} @@ -120,37 +120,40 @@ def test_iaf_bw_2001_exact(): ex_syn_spec = {"weight": w_ex} in_syn_spec = {"weight": -w_in} - nest.Connect(pg, nrn1, syn_spec=ampa_syn_spec) - nest.Connect(nrn1, sr) + nest.Connect(pg, bw_presyn, syn_spec=ampa_syn_spec) + nest.Connect(bw_presyn, sr) - nest.Connect(nrn1, nrn2, syn_spec=ampa_syn_spec) - nest.Connect(nrn1, nrn2, syn_spec=gaba_syn_spec) - nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + nest.Connect(bw_presyn, bw_postsyn_1, syn_spec=ampa_syn_spec) + nest.Connect(bw_presyn, bw_postsyn_1, syn_spec=gaba_syn_spec) + nest.Connect(bw_presyn, bw_postsyn_1, syn_spec=nmda_syn_spec) - nest.Connect(nrn1, nrn3, syn_spec=ampa_syn_spec) - nest.Connect(nrn1, nrn3, syn_spec=gaba_syn_spec) + nest.Connect(bw_presyn, bw_postsyn_2, syn_spec=ampa_syn_spec) + nest.Connect(bw_presyn, bw_postsyn_2, syn_spec=gaba_syn_spec) - nest.Connect(nrn1, nrn4, syn_spec=ex_syn_spec) - nest.Connect(nrn1, nrn4, syn_spec=in_syn_spec) + nest.Connect(bw_presyn, cond_exp_postsyn, syn_spec=ex_syn_spec) + nest.Connect(bw_presyn, cond_exp_postsyn, syn_spec=in_syn_spec) - nest.Connect(mm1, nrn1) - nest.Connect(mm2, nrn2) - nest.Connect(mm3, nrn3) - nest.Connect(mm4, nrn4) + nest.Connect(mm_presyn, bw_presyn) + nest.Connect(mm_bw1, bw_postsyn_1) + nest.Connect(mm_bw2, bw_postsyn_2) + nest.Connect(mm_ce, cond_exp_postsyn) nest.Simulate(1000.0) spikes = sr.get("events", "times") * nest.resolution + first_spike_ind = int(spikes[0] / nest.resolution) # compute analytical solutions - times = mm1.get("events", "times") * nest.resolution + times = mm_presyn.get("events", "times") * nest.resolution ampa_soln = spiketrain_response(times, wang_params["tau_AMPA"], spikes, w_ex) gaba_soln = spiketrain_response(times, wang_params["tau_GABA"], spikes, np.abs(w_in)) - nptest.assert_array_equal(mm3.events["V_m"], mm4.events["V_m"]) - assert (mm2.events["V_m"] >= mm3.events["V_m"]).all() - nptest.assert_array_almost_equal(ampa_soln, mm2.events["s_AMPA"]) - nptest.assert_array_almost_equal(gaba_soln, mm2.events["s_GABA"]) + nptest.assert_array_almost_equal(mm_bw2.events["V_m"], mm_ce.events["V_m"], decimal=10) + assert ( + mm_bw1.events["V_m"][first_spike_ind + 10 :] > mm_bw2.events["V_m"][first_spike_ind + 10 :] + ).all() # 10 due to delay + nptest.assert_array_almost_equal(ampa_soln, mm_bw1.events["s_AMPA"]) + nptest.assert_array_almost_equal(gaba_soln, mm_bw1.events["s_GABA"]) def test_connect_NMDA_after_simulate(): @@ -158,13 +161,13 @@ def test_connect_NMDA_after_simulate(): Test that error is thrown if we try to make a connection after running nest.Simulate and the buffers have already been created. """ - nrn1 = nest.Create("iaf_bw_2001_exact") - nrn2 = nest.Create("iaf_bw_2001_exact") + presyn = nest.Create("iaf_bw_2001_exact") + postsyn = nest.Create("iaf_bw_2001_exact") - receptor_types = nrn1.get("receptor_types") + receptor_types = presyn.get("receptor_types") nmda_syn_spec = {"weight": 1.0, "receptor_type": receptor_types["NMDA"]} - nest.Connect(nrn1, nrn2, syn_spec=nmda_syn_spec) + nest.Connect(presyn, postsyn, syn_spec=nmda_syn_spec) nest.Simulate(1.0) with pytest.raises(nest.kernel.NESTErrors.IllegalConnection): - nest.Connect(nrn2, nrn1, syn_spec=nmda_syn_spec) + nest.Connect(postsyn, presyn, syn_spec=nmda_syn_spec) From 1dc31c41f37b0648705967de931978a02d56a1a1 Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 12:21:50 +0200 Subject: [PATCH 171/184] rm lambda fn to please pylint --- pynest/examples/wang_decision_making.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 8510583df2..f8e42583e2 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -135,11 +135,12 @@ def run_sim(coherence, seed=123): update_times[0] = 0.1 # for p ... below allows us to create a local variable in the iterator which is created once - rates = lambda mu, sig, n: np.fromiter( - (p.GetValue() for _ in range(n) for p in [nest.CreateParameter("normal", {"mean": mu, "std": sig})]), float + rates_a = np.fromiter( + (p.GetValue() for _ in range(n) for p in [nest.CreateParameter("normal", {"mean": mu_a, "std": sigma})]), float + ) + rates_b = np.fromiter( + (p.GetValue() for _ in range(n) for p in [nest.CreateParameter("normal", {"mean": mu_b, "std": sigma})]), float ) - rates_a = rates(mu_a, sigma, num_updates) - rates_b = rates(mu_b, sigma, num_updates) # synaptic weights w_plus = 1.7 # strong connections in selective populations From 6c087b6d07e917ca96663e980bc71c35a526bdd6 Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 12:23:01 +0200 Subject: [PATCH 172/184] bugfix --- pynest/examples/wang_decision_making.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index f8e42583e2..32e557e914 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -136,10 +136,20 @@ def run_sim(coherence, seed=123): # for p ... below allows us to create a local variable in the iterator which is created once rates_a = np.fromiter( - (p.GetValue() for _ in range(n) for p in [nest.CreateParameter("normal", {"mean": mu_a, "std": sigma})]), float + ( + p.GetValue() + for _ in range(num_updates) + for p in [nest.CreateParameter("normal", {"mean": mu_a, "std": sigma})] + ), + float, ) rates_b = np.fromiter( - (p.GetValue() for _ in range(n) for p in [nest.CreateParameter("normal", {"mean": mu_b, "std": sigma})]), float + ( + p.GetValue() + for _ in range(num_updates) + for p in [nest.CreateParameter("normal", {"mean": mu_b, "std": sigma})] + ), + float, ) # synaptic weights From 713f102366b637abd7d249277e40b76ce52f706b Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 12:28:43 +0200 Subject: [PATCH 173/184] rm unused imports --- testsuite/pytests/test_iaf_bw_2001.py | 1 - 1 file changed, 1 deletion(-) diff --git a/testsuite/pytests/test_iaf_bw_2001.py b/testsuite/pytests/test_iaf_bw_2001.py index 3573138596..f7baacd11d 100644 --- a/testsuite/pytests/test_iaf_bw_2001.py +++ b/testsuite/pytests/test_iaf_bw_2001.py @@ -36,7 +36,6 @@ import numpy as np import numpy.testing as nptest import pytest -from scipy.special import gamma, gammaincc w_ex = 40.0 w_in = 15.0 From b8982679c3bbc4c00136ced5c462b74752044c3e Mon Sep 17 00:00:00 2001 From: janskaar Date: Fri, 21 Jun 2024 12:29:46 +0200 Subject: [PATCH 174/184] change docstring --- testsuite/pytests/test_iaf_bw_2001_exact.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/pytests/test_iaf_bw_2001_exact.py b/testsuite/pytests/test_iaf_bw_2001_exact.py index 695cd29d34..a9be1c1749 100644 --- a/testsuite/pytests/test_iaf_bw_2001_exact.py +++ b/testsuite/pytests/test_iaf_bw_2001_exact.py @@ -159,7 +159,7 @@ def test_iaf_bw_2001_exact(): def test_connect_NMDA_after_simulate(): """ Test that error is thrown if we try to make a connection after running - nest.Simulate and the buffers have already been created. + nest.Simulate() and the buffers have already been created. """ presyn = nest.Create("iaf_bw_2001_exact") postsyn = nest.Create("iaf_bw_2001_exact") From 6a599c7c83cbb7739026b0d7bc5a431e4d9e21b7 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 25 Jun 2024 13:51:48 +0200 Subject: [PATCH 175/184] Update models/iaf_bw_2001.h Co-authored-by: Nicolai Haug <39106781+nicolossus@users.noreply.github.com> --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index caa327e4ce..0f386667f2 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -104,7 +104,7 @@ The specification of this model differs slightly from the one in [1]_. The param :math:`g_\mathrm{GABA}`, and :math:`g_\mathrm{NMDA}` have been absorbed into the respective synaptic weights. Additionally, the synapses from the external population are not separated from the recurrent AMPA-synapses. -For more implementation details and a comparison to the exact version see: +For more implementation details and a comparison to the exact version, see: - `Brunel_Wang_2001_Model_Approximation <../model_details/Brunel_Wang_2001_Model_Approximation.ipynb>`_ From 2d67e023285b41bc2cd186fda260991e660204c7 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 25 Jun 2024 13:52:03 +0200 Subject: [PATCH 176/184] Update models/iaf_bw_2001.h Co-authored-by: Nicolai Haug <39106781+nicolossus@users.noreply.github.com> --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index 0f386667f2..c7e45a7e75 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -61,7 +61,7 @@ extern "C" inline int iaf_bw_2001_dynamics( double, const double*, double*, void Short description +++++++++++++++++ -Leaky integrate-and-fire-neuron model with conductance based synapses and additional NMDA receptors. +Leaky integrate-and-fire-neuron model with conductance-based synapses and additional NMDA receptors. Description +++++++++++ From d81d3b31235d532e41b1dcfb88ca44e1513b8b70 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 25 Jun 2024 13:56:00 +0200 Subject: [PATCH 177/184] update short description --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index caa327e4ce..adfd6bebe7 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -61,7 +61,7 @@ extern "C" inline int iaf_bw_2001_dynamics( double, const double*, double*, void Short description +++++++++++++++++ -Leaky integrate-and-fire-neuron model with conductance based synapses and additional NMDA receptors. +Leaky integrate-and-fire-neuron model with conductance based synapses and additional NMDA receptors with simplified dynamics. Description +++++++++++ From 5dc04a15bf81ca96177f4fcedd627dfb6490cf9e Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 25 Jun 2024 13:58:40 +0200 Subject: [PATCH 178/184] Update models/iaf_bw_2001_exact.h Co-authored-by: Nicolai Haug <39106781+nicolossus@users.noreply.github.com> --- models/iaf_bw_2001_exact.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001_exact.h b/models/iaf_bw_2001_exact.h index ef2bb6b6a3..4d863a4440 100644 --- a/models/iaf_bw_2001_exact.h +++ b/models/iaf_bw_2001_exact.h @@ -61,7 +61,7 @@ extern "C" inline int iaf_bw_2001_exact_dynamics( double, const double y[], doub Short description +++++++++++++++++ -Leaky integrate-and-fire-neuron model with conductance based synapses and additional NMDA receptors. +Leaky integrate-and-fire-neuron model with conductance-based synapses and additional NMDA receptors. Description +++++++++++ From 5f870546491b2892206331cd84d01360383d2c0e Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 25 Jun 2024 13:58:55 +0200 Subject: [PATCH 179/184] Update pynest/examples/wang_decision_making.py Co-authored-by: Hans Ekkehard Plesser --- pynest/examples/wang_decision_making.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 32e557e914..f11a35a706 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -134,7 +134,12 @@ def run_sim(coherence, seed=123): update_times = np.arange(0, signal_duration, signal_update_interval) update_times[0] = 0.1 - # for p ... below allows us to create a local variable in the iterator which is created once + # We could have written the generator expressions passed to `np.fromiter()` below as + # + # ( nest.CreateParameter(...).GetValue() for _ in range(num_updates) ) + # + # but that would create a new Parameter object for each iteration. We avoid this by + # wrapping the iterator in an outer loop in which `p` assumes only a single value. rates_a = np.fromiter( ( p.GetValue() From c7f78266387669cb98e0e8155780e1b2bab838bb Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 25 Jun 2024 13:59:06 +0200 Subject: [PATCH 180/184] Update pynest/examples/wang_decision_making.py Co-authored-by: Nicolai Haug <39106781+nicolossus@users.noreply.github.com> --- pynest/examples/wang_decision_making.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index f11a35a706..776530adbe 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -354,10 +354,10 @@ def run_sim(coherence, seed=123): ################################################## # Collect data from simulation - spikes_nonselective = sr_nonselective.get("events", "times") - spikes_selective1 = sr_selective1.get("events", "times") - spikes_selective2 = sr_selective2.get("events", "times") - spikes_inhibitory = sr_inhibitory.get("events", "times") + spikes_nonselective = sr_nonselective.events["times"] + spikes_selective1 = sr_selective1.events["times"] + spikes_selective2 = sr_selective2.events["times"] + spikes_inhibitory = sr_inhibitory.events["times"] spikes_selective1_raster = sr_selective1_raster.get("events", "times") spikes_selective2_raster = sr_selective2_raster.get("events", "times") From ef363c09506b3ee04792185483a60f176ad0e70c Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 25 Jun 2024 13:59:16 +0200 Subject: [PATCH 181/184] Update testsuite/pytests/test_iaf_bw_2001.py Co-authored-by: Nicolai Haug <39106781+nicolossus@users.noreply.github.com> --- testsuite/pytests/test_iaf_bw_2001.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/pytests/test_iaf_bw_2001.py b/testsuite/pytests/test_iaf_bw_2001.py index f7baacd11d..81061bb528 100644 --- a/testsuite/pytests/test_iaf_bw_2001.py +++ b/testsuite/pytests/test_iaf_bw_2001.py @@ -146,7 +146,7 @@ def test_iaf_bw_2001(): nest.Simulate(1000.0) - spikes = sr.get("events", "times") * nest.resolution + spikes = sr.events["times"] * nest.resolution first_spike_ind = int(spikes[0] / nest.resolution) # compute analytical solutions From 476b70050e3736bb2d70cea4d607ff5bf1c0f4e9 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 25 Jun 2024 13:59:24 +0200 Subject: [PATCH 182/184] Update testsuite/pytests/test_iaf_bw_2001_exact.py Co-authored-by: Nicolai Haug <39106781+nicolossus@users.noreply.github.com> --- testsuite/pytests/test_iaf_bw_2001_exact.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/pytests/test_iaf_bw_2001_exact.py b/testsuite/pytests/test_iaf_bw_2001_exact.py index a9be1c1749..59cae5f15e 100644 --- a/testsuite/pytests/test_iaf_bw_2001_exact.py +++ b/testsuite/pytests/test_iaf_bw_2001_exact.py @@ -140,7 +140,7 @@ def test_iaf_bw_2001_exact(): nest.Simulate(1000.0) - spikes = sr.get("events", "times") * nest.resolution + spikes = sr.events["times"] * nest.resolution first_spike_ind = int(spikes[0] / nest.resolution) # compute analytical solutions From 7cae37d624fcfcce56e70cc970f2b37e2ff282e6 Mon Sep 17 00:00:00 2001 From: janskaar Date: Tue, 25 Jun 2024 14:35:57 +0200 Subject: [PATCH 183/184] don't use getter directly --- pynest/examples/wang_decision_making.py | 2 +- testsuite/pytests/test_iaf_bw_2001.py | 8 ++++---- testsuite/pytests/test_iaf_bw_2001_exact.py | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pynest/examples/wang_decision_making.py b/pynest/examples/wang_decision_making.py index 776530adbe..764e18b537 100644 --- a/pynest/examples/wang_decision_making.py +++ b/pynest/examples/wang_decision_making.py @@ -207,7 +207,7 @@ def run_sim(coherence, seed=123): ################################################## # Define synapse specifications - receptor_types = selective_pop1[0].get("receptor_types") + receptor_types = selective_pop1[0].receptor_types syn_spec_pot_AMPA = { "synapse_model": "static_synapse", diff --git a/testsuite/pytests/test_iaf_bw_2001.py b/testsuite/pytests/test_iaf_bw_2001.py index 81061bb528..257b8d0db2 100644 --- a/testsuite/pytests/test_iaf_bw_2001.py +++ b/testsuite/pytests/test_iaf_bw_2001.py @@ -107,7 +107,7 @@ def test_iaf_bw_2001(): postsyn_bw2 = nest.Create("iaf_bw_2001", wang_params) postsyn_ce = nest.Create("iaf_cond_exp", cond_exp_params) - receptor_types = nrn_presyn.get("receptor_types") + receptor_types = nrn_presyn.receptor_types pg = nest.Create("poisson_generator", {"rate": 50.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) @@ -150,7 +150,7 @@ def test_iaf_bw_2001(): first_spike_ind = int(spikes[0] / nest.resolution) # compute analytical solutions - times = mm_presyn.get("events", "times") * nest.resolution + times = mm_presyn.events["times"] * nest.resolution ampa_soln = spiketrain_response(times, wang_params["tau_AMPA"], spikes, w_ex) gaba_soln = spiketrain_response(times, wang_params["tau_GABA"], spikes, np.abs(w_in)) @@ -191,7 +191,7 @@ def test_approximation_I_NMDA_V_m(): nrn_approx = nest.Create("iaf_bw_2001", nrn_params) nrn_exact = nest.Create("iaf_bw_2001_exact", nrn_params) - receptor_types = nrn_presyn.get("receptor_types") + receptor_types = nrn_presyn.receptor_types pg = nest.Create("poisson_generator", {"rate": 150.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) @@ -228,7 +228,7 @@ def test_illegal_connection_error(): nest.ResetKernel() nrn_ce = nest.Create("iaf_cond_exp") nrn_bw = nest.Create("iaf_bw_2001") - receptor_types = nrn_bw.get("receptor_types") + receptor_types = nrn_bw.receptor_types nmda_syn_spec = {"receptor_type": receptor_types["NMDA"]} with pytest.raises(nest.kernel.NESTErrors.IllegalConnection): nest.Connect(nrn_ce, nrn_bw, syn_spec=nmda_syn_spec) diff --git a/testsuite/pytests/test_iaf_bw_2001_exact.py b/testsuite/pytests/test_iaf_bw_2001_exact.py index 59cae5f15e..2428443637 100644 --- a/testsuite/pytests/test_iaf_bw_2001_exact.py +++ b/testsuite/pytests/test_iaf_bw_2001_exact.py @@ -101,7 +101,7 @@ def test_iaf_bw_2001_exact(): bw_postsyn_2 = nest.Create("iaf_bw_2001_exact", wang_params) cond_exp_postsyn = nest.Create("iaf_cond_exp", cond_exp_params) - receptor_types = bw_presyn.get("receptor_types") + receptor_types = bw_presyn.receptor_types pg = nest.Create("poisson_generator", {"rate": 50.0}) sr = nest.Create("spike_recorder", {"time_in_steps": True}) @@ -144,7 +144,7 @@ def test_iaf_bw_2001_exact(): first_spike_ind = int(spikes[0] / nest.resolution) # compute analytical solutions - times = mm_presyn.get("events", "times") * nest.resolution + times = mm_presyn.events["times"] * nest.resolution ampa_soln = spiketrain_response(times, wang_params["tau_AMPA"], spikes, w_ex) gaba_soln = spiketrain_response(times, wang_params["tau_GABA"], spikes, np.abs(w_in)) @@ -164,7 +164,7 @@ def test_connect_NMDA_after_simulate(): presyn = nest.Create("iaf_bw_2001_exact") postsyn = nest.Create("iaf_bw_2001_exact") - receptor_types = presyn.get("receptor_types") + receptor_types = presyn.receptor_types nmda_syn_spec = {"weight": 1.0, "receptor_type": receptor_types["NMDA"]} nest.Connect(presyn, postsyn, syn_spec=nmda_syn_spec) From 6fbb8c9705befc3be2f7078c6b783610daaedc34 Mon Sep 17 00:00:00 2001 From: janskaar Date: Wed, 26 Jun 2024 11:33:49 +0200 Subject: [PATCH 184/184] add hyphen --- models/iaf_bw_2001.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/iaf_bw_2001.h b/models/iaf_bw_2001.h index b68b80d9d5..b334cd581f 100644 --- a/models/iaf_bw_2001.h +++ b/models/iaf_bw_2001.h @@ -61,7 +61,7 @@ extern "C" inline int iaf_bw_2001_dynamics( double, const double*, double*, void Short description +++++++++++++++++ -Leaky integrate-and-fire-neuron model with conductance based synapses and additional NMDA receptors with simplified dynamics. +Leaky integrate-and-fire-neuron model with conductance-based synapses and additional NMDA receptors with simplified dynamics. Description +++++++++++