NEST  2.6.0,not_revisioned_source_dir@0
Classes | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
nest::iaf_psc_alpha_presc Class Reference

Leaky iaf neuron, alpha PSC synapses, canonical implementation. More...

#include <iaf_psc_alpha_presc.h>

Inheritance diagram for nest::iaf_psc_alpha_presc:
nest::Node

Classes

struct  Buffers_
 Buffers of the model. More...
 
struct  Parameters_
 Independent parameters of the model. More...
 
struct  State_
 State variables of the model. More...
 
struct  Variables_
 Internal variables of the model. More...
 

Public Member Functions

 iaf_psc_alpha_presc ()
 Basic constructor. More...
 
 iaf_psc_alpha_presc (const iaf_psc_alpha_presc &)
 Copy constructor. More...
 
port send_test_event (Node &, rport, synindex, bool)
 Send an event to the receiving_node passed as an argument. More...
 
void handle (SpikeEvent &)
 Handle incoming spike events. More...
 
void handle (CurrentEvent &)
 Handler for current events. More...
 
void handle (DataLoggingRequest &)
 Handler for universal data logging request. More...
 
port handles_test_event (SpikeEvent &, rport)
 Check if the node can handle a particular event and receptor type. More...
 
port handles_test_event (CurrentEvent &, rport)
 
port handles_test_event (DataLoggingRequest &, rport)
 
bool is_off_grid () const
 Returns true if the node if it sends/receives -grid events This is used to discriminate between different types of nodes, when adding new nodes to the network. More...
 
void get_status (DictionaryDatum &) const
 
void set_status (const DictionaryDatum &)
 
- Public Member Functions inherited from nest::Node
 Node ()
 
 Node (Node const &)
 
virtual ~Node ()
 
virtual Nodeclone () const
 Virtual copy constructor. More...
 
virtual bool has_proxies () const
 Returns true if the node has proxies on remote threads. More...
 
virtual bool potential_global_receiver () const
 Returns true for potential global receivers (e.g. More...
 
virtual void set_has_proxies (const bool)
 Sets has_proxies_ member variable (to switch to global spike detection mode) More...
 
virtual void set_local_receiver (const bool)
 Sets local_receiver_ member variable (to switch to global spike detection mode) More...
 
virtual bool local_receiver () const
 Returns true if the node only receives events from nodes/devices on the same thread. More...
 
virtual bool one_node_per_process () const
 Returns true if the node exists only once per process, but does not have proxies on remote threads. More...
 
virtual bool is_proxy () const
 Returns true if the node is a proxy node. More...
 
std::string get_name () const
 Return class name. More...
 
index get_gid () const
 Return global Network ID. More...
 
index get_lid () const
 Return local node ID. More...
 
index get_subnet_index () const
 Return the index to the node in the node array of the parent subnet. More...
 
int get_model_id () const
 Return model ID of the node. More...
 
Subnetget_parent () const
 Return pointer to parent subnet. More...
 
virtual std::string print_network (int, int, std::string="")
 Prints out one line of the tree view of the network. More...
 
bool is_frozen () const
 Returns true if node is frozen, i.e., shall not be updated. More...
 
bool is_local () const
 Returns true if the node is allocated in the local process. More...
 
void init_state ()
 Set state variables to the default values for the model. More...
 
void init_buffers ()
 Initialize buffers of a node. More...
 
virtual void finalize ()
 Finalize node. More...
 
virtual void set_status (const DictionaryDatum &)=0
 Change properties of the node according to the entries in the dictionary. More...
 
virtual void get_status (DictionaryDatum &) const =0
 Export properties of the node by setting entries in the status dictionary. More...
 
virtual port handles_test_event (RateEvent &, rport receptor_type)
 
virtual port handles_test_event (ConductanceEvent &, rport receptor_type)
 
virtual port handles_test_event (DoubleDataEvent &, rport receptor_type)
 
virtual port handles_test_event (DSSpikeEvent &, rport receptor_type)
 
virtual port handles_test_event (DSCurrentEvent &, rport receptor_type)
 
virtual void register_stdp_connection (double_t)
 Register a STDP connection. More...
 
virtual void unregister_stdp_connection (double_t)
 Unregister a STDP connection. More...
 
virtual void handle (RateEvent &e)
 Handler for rate events. More...
 
virtual void handle (DataLoggingReply &e)
 Handler for universal data logging request. More...
 
virtual void handle (ConductanceEvent &e)
 Handler for conductance events. More...
 
virtual void handle (DoubleDataEvent &e)
 Handler for DoubleData events. More...
 
virtual double_t get_K_value (double_t t)
 return the Kminus value at t (in ms). More...
 
virtual void get_K_values (double_t t, double_t &Kminus, double_t &triplet_Kminus)
 write the Kminus and triplet_Kminus values at t (in ms) to the provided locations. More...
 
virtual void get_history (double_t t1, double_t t2, std::deque< histentry >::iterator *start, std::deque< histentry >::iterator *finish)
 return the spike history for (t1,t2]. More...
 
virtual void event_hook (DSSpikeEvent &)
 Modify Event object parameters during event delivery. More...
 
virtual void event_hook (DSCurrentEvent &)
 
void set_thread (thread)
 Store the number of the thread to which the node is assigned. More...
 
thread get_thread () const
 Retrieve the number of the thread to which the node is assigned. More...
 
void set_vp (thread)
 Store the number of the virtual process to which the node is assigned. More...
 
thread get_vp () const
 Retrieve the number of the virtual process to which the node is assigned. More...
 
void set_model_id (int)
 Set the model id. More...
 
virtual bool is_subnet () const
 
DictionaryDatum get_status_base ()
 Return a dictionary with the node's properties. More...
 
void set_status_base (const DictionaryDatum &)
 Set status dictionary of a node. More...
 
bool is_model_prototype () const
 Returns true if node is model prototype. More...
 
void set_thread_lid (const index)
 set thread local index More...
 
index get_thread_lid () const
 get thread local index More...
 
bool buffers_initialized () const
 True if buffers have been initialized. More...
 
void set_buffers_initialized (bool initialized)
 

Private Member Functions

Time get_spiketime () const
 
void set_spiketime (Time const &)
 
double_t update_y3_delta_ () const
 Compute membrane potential after return from refractoriness. More...
 
double_t get_V_m_ () const
 Read out the real membrane potential. More...
 
Interface functions
Note
These functions are private, so that they can be accessed only through a Node*. Node::init() etc are public virtual functions in class Node, so they are publicly accessible through Node pointers.
void init_state_ (const Node &proto)
 Private function to initialize the state of a node to model defaults. More...
 
void init_buffers_ ()
 Private function to initialize the buffers of a node. More...
 
void calibrate ()
 Re-calculate dependent parameters of the node. More...
 
void update (Time const &origin, const long_t from, const long_t to)
 Time Evolution Operator. More...
 

Private Attributes

Parameters_ P_
 
State_ S_
 
Variables_ V_
 
Buffers_ B_
 

Static Private Attributes

static RecordablesMap
< iaf_psc_alpha_presc
recordablesMap_
 Mapping of recordables names to access functions. More...
 

Friends

class RecordablesMap< iaf_psc_alpha_presc >
 
class UniversalDataLogger< iaf_psc_alpha_presc >
 

Threshold-crossing interpolation

These functions determine the time of threshold crossing using interpolation, one function per interpolation order.

thresh_find() is the driver function and the only one to be called directly.

enum  interpOrder {
  NO_INTERPOL, LINEAR, QUADRATIC, CUBIC,
  END_INTERP_ORDER
}
 Interpolation orders. More...
 
double_t thresh_find_ (const double_t) const
 Localize threshold crossing. More...
 
double_t thresh_find1_ (const double_t) const
 
double_t thresh_find2_ (const double_t) const
 
double_t thresh_find3_ (const double_t) const
 

Additional Inherited Members

- Static Public Member Functions inherited from nest::Node
static Networknetwork ()
 Return pointer to network driver class. More...
 
- Protected Member Functions inherited from nest::Node
virtual size_t num_thread_siblings_ () const
 Return the number of thread siblings in SiblingContainer. More...
 
virtual Nodeget_thread_sibling_ (index) const
 Return the specified member of a SiblingContainer. More...
 
virtual Nodeget_thread_sibling_safe_ (index) const
 Return specified member of a SiblingContainer, with access control. More...
 
Modelget_model_ () const
 
void set_frozen_ (bool frozen)
 Mark node as frozen. More...
 
template<typename ConcreteNode >
const ConcreteNode & downcast (const Node &)
 Auxiliary function to downcast a Node to a concrete class derived from Node. More...
 
- Static Protected Attributes inherited from nest::Node
static Networknet_ =NULL
 Pointer to global network driver. More...
 

Detailed Description

Leaky iaf neuron, alpha PSC synapses, canonical implementation.

Note
Inherit privately from Node, so no classes can be derived from this one.
Todo:
Implement current input in consistent way.

Member Enumeration Documentation

Interpolation orders.

Enumerator
NO_INTERPOL 
LINEAR 
QUADRATIC 
CUBIC 
END_INTERP_ORDER 

Constructor & Destructor Documentation

nest::iaf_psc_alpha_presc::iaf_psc_alpha_presc ( )

Basic constructor.

This constructor should only be used by GenericModel to create model prototype instances.

References recordablesMap_.

nest::iaf_psc_alpha_presc::iaf_psc_alpha_presc ( const iaf_psc_alpha_presc n)

Copy constructor.

GenericModel::allocate_() uses the copy constructor to clone actual model instances from the prototype instance.

Note
The copy constructor MUST NOT be used to create nodes based on nodes that have been placed in the network.

Member Function Documentation

void nest::iaf_psc_alpha_presc::calibrate ( )
privatevirtual

Re-calculate dependent parameters of the node.

This function is called each time a simulation is begun/resumed. It must re-calculate all internal Variables of the node required for spike handling or updating the node.

Implements nest::Node.

References assert(), numerics::e, numerics::expm1(), nest::Time::get_ms(), nest::Time::get_resolution(), and nest::Time::get_steps().

nest::Time nest::iaf_psc_alpha_presc::get_spiketime ( ) const
inlineprivate

References nest::Time::step.

void nest::iaf_psc_alpha_presc::get_status ( DictionaryDatum d) const
inline
double_t nest::iaf_psc_alpha_presc::get_V_m_ ( ) const
inlineprivate
void nest::iaf_psc_alpha_presc::handle ( SpikeEvent e)
virtual

Handle incoming spike events.

Default implementation of event handlers just throws an UnexpectedEvent exception.

Parameters
thrdId of the calling thread.
eEvent object.

This handler has to be implemented if a Node should accept spike events.

See also
class SpikeEvent
class UnexpectedEvent
Exceptions
UnexpectedEventThis is the default event to throw.

Reimplemented from nest::Node.

References assert(), nest::names::dt, numerics::expm1(), nest::Event::get_delay(), nest::SpikeEvent::get_multiplicity(), nest::Event::get_offset(), nest::Event::get_rel_delivery_steps(), and nest::Event::get_weight().

void nest::iaf_psc_alpha_presc::handle ( CurrentEvent e)
virtual

Handler for current events.

See also
handle(thread, SpikeEvent&)
Exceptions
UnexpectedEvent

Reimplemented from nest::Node.

References assert(), nest::names::c, nest::CurrentEvent::get_current(), nest::Event::get_delay(), nest::Event::get_rel_delivery_steps(), nest::Event::get_weight(), and nest::names::w.

void nest::iaf_psc_alpha_presc::handle ( DataLoggingRequest e)
virtual

Handler for universal data logging request.

See also
handle(SpikeEvent&)
Exceptions
UnexpectedEvent

Reimplemented from nest::Node.

port nest::iaf_psc_alpha_presc::handles_test_event ( SpikeEvent ,
rport  receptor_type 
)
inlinevirtual

Check if the node can handle a particular event and receptor type.

This function is called upon connection setup by send_test_event().

handles_test_event() function is used to verify that the receiver can handle the event. It can also be used by the receiver to return information to the sender in form of the returned port. The default implementation throws an IllegalConnection exception. Any node class should define handles_test_event() functions for all those event types it can handle.

See Kunkel et al, Front Neuroinform 8:78 (2014), Sec 3.

Note
The semantics of all other handles_test_event() functions is identical.
Exceptions
IllegalConnection

Reimplemented from nest::Node.

References nest::Node::get_name().

port nest::iaf_psc_alpha_presc::handles_test_event ( CurrentEvent ,
rport  receptor_type 
)
inlinevirtual

Reimplemented from nest::Node.

References nest::Node::get_name().

port nest::iaf_psc_alpha_presc::handles_test_event ( DataLoggingRequest dlr,
rport  receptor_type 
)
inlinevirtual
void nest::iaf_psc_alpha_presc::init_buffers_ ( )
privatevirtual

Private function to initialize the buffers of a node.

This function, which must be overloaded by all derived classes, provides the implementation for initializing the buffers of a node.

See also
Node::init_buffers()

Implements nest::Node.

void nest::iaf_psc_alpha_presc::init_state_ ( const Node )
privatevirtual

Private function to initialize the state of a node to model defaults.

This function, which must be overloaded by all derived classes, provides the implementation for initializing the state of a node to the model defaults; the state is the set of observable dynamic variables.

Parameters
Referenceto model prototype object.
See also
Node::init_state()
Note
To provide a reasonable behavior during the transition to the new scheme, init_state_() has a default implementation calling init_dynamic_state_().

Implements nest::Node.

References S_.

bool nest::iaf_psc_alpha_presc::is_off_grid ( ) const
inlinevirtual

Returns true if the node if it sends/receives -grid events This is used to discriminate between different types of nodes, when adding new nodes to the network.

Reimplemented from nest::Node.

port nest::iaf_psc_alpha_presc::send_test_event ( Node receiving_node,
rport  receptor_type,
synindex  syn_id,
bool  dummy_target 
)
inlinevirtual

Send an event to the receiving_node passed as an argument.

Default implementation of check_connection just throws UnexpectedEvent.

This is required during the connection handshaking to test, if the receiving_node can handle the event type and receptor_type sent by the source node.

If dummy_target is true, this indicates that receiving_node is derived from ConnTestDummyNodeBase and used in the first call to send_test_event(). This can be ignored in most cases, but Nodes sending DS*Events to their own event hooks and then *Events to their proper targets must send DS*Events when called with the dummy target, and *Events when called with the real target, see #478.

Reimplemented from nest::Node.

References numerics::e, nest::Node::handles_test_event(), and nest::Event::set_sender().

void nest::iaf_psc_alpha_presc::set_spiketime ( Time const &  now)
inlineprivate
void nest::iaf_psc_alpha_presc::set_status ( const DictionaryDatum d)
inline
nest::double_t nest::iaf_psc_alpha_presc::thresh_find1_ ( const double_t  dt) const
private

References nest::names::tau.

nest::double_t nest::iaf_psc_alpha_presc::thresh_find2_ ( const double_t  dt) const
private
nest::double_t nest::iaf_psc_alpha_presc::thresh_find3_ ( const double_t  dt) const
private
nest::double_t nest::iaf_psc_alpha_presc::thresh_find_ ( const double_t  dt) const
inlineprivate

Localize threshold crossing.

Driver function to invoke the correct interpolation function for the chosen interpolation order.

Parameters
Timeconst &
Returns
time from previous event to threshold crossing

References nest::names::dt, and SLIInterpreter::M_ERROR.

void nest::iaf_psc_alpha_presc::update ( Time const &  origin,
const long_t  from,
const long_t  to 
)
privatevirtual

Time Evolution Operator.

update() promotes the state of the neuron from origin+from to origin+to. It does so in steps of the resolution h. Within each step, time is advanced from event to event, as retrieved from the spike queue.

Return from refractoriness is handled as a special event in the queue, which is marked by a weight that is GSL_NAN. This greatly simplifies the code.

For steps, during which no events occur, the precomputed propagator matrix is used. For other steps, the propagator matrix is computed as needed.

While the neuron is refractory, membrane potential (y3_) is clamped to U_reset_.

Implements nest::Node.

References assert(), nest::Scheduler::get_min_delay(), nest::Time::get_steps(), and nest::Event::set_offset().

nest::double_t nest::iaf_psc_alpha_presc::update_y3_delta_ ( ) const
private

Compute membrane potential after return from refractoriness.

References nest::names::dt, and numerics::expm1().

Friends And Related Function Documentation

friend class RecordablesMap< iaf_psc_alpha_presc >
friend
friend class UniversalDataLogger< iaf_psc_alpha_presc >
friend

Member Data Documentation

nest::RecordablesMap< nest::iaf_psc_alpha_presc > nest::iaf_psc_alpha_presc::recordablesMap_
staticprivate

Mapping of recordables names to access functions.

Referenced by get_status(), handles_test_event(), and iaf_psc_alpha_presc().


The documentation for this class was generated from the following files: