Auryn simulator  v0.8.1-206-gb56e451
Plastic Spiking Neural Network Simulator
Public Member Functions | Public Attributes | List of all members
auryn::IFGroup Class Reference

Implements the standard integrate and file model used in Auryn. More...

#include <IFGroup.h>

Inheritance diagram for auryn::IFGroup:
Inheritance graph
[legend]
Collaboration diagram for auryn::IFGroup:
Collaboration graph
[legend]

Public Member Functions

 IFGroup (NeuronID size, NodeDistributionMode distmode=AUTO)
 Default constructor. More...
 
virtual ~IFGroup ()
 
void set_tau_mem (AurynFloat taum)
 Sets the membrane time constant. More...
 
AurynFloat get_tau_mem ()
 Returns the membrane time constant. More...
 
void set_tau_ampa (AurynFloat tau)
 Sets the exponential decay time constant of the AMPA conductance (default=5ms). More...
 
AurynFloat get_tau_ampa ()
 Returns the exponential decay time constant of the AMPA conductance. More...
 
void set_tau_gaba (AurynFloat tau)
 Sets the exponential decay time constant of the GABA conductance (default=10ms). More...
 
AurynFloat get_tau_gaba ()
 Returns the exponential decay time constant of the GABA conductance. More...
 
void set_tau_nmda (AurynFloat tau)
 Sets the exponential decay time constant of the NMDA conductance (default=100ms). More...
 
void set_tau_thr (AurynFloat tau)
 Sets the exponential decay time constant of the threshold (default=5). More...
 
AurynFloat get_tau_nmda ()
 
void set_ampa_nmda_ratio (AurynFloat ratio)
 Set ratio between ampa/nmda contribution to excitatory conductance. More...
 
void set_nmda_ampa_current_ampl_ratio (AurynFloat ratio)
 Sets nmda-ampa amplitude ratio. More...
 
void clear ()
 
virtual void evolve ()
 
- Public Member Functions inherited from auryn::NeuronGroup
 NeuronGroup (NeuronID n, NodeDistributionMode mode=AUTO)
 Default constructor. More...
 
 NeuronGroup (NeuronID n, double loadmultiplier, NeuronID total)
 Old default constructor. More...
 
virtual ~NeuronGroup ()
 
void set_state (std::string name, AurynState val)
 Conveniently sets all values in a state vector identified by name in this group. More...
 
void set_state (std::string name, NeuronID i, AurynState val)
 Conveniently sets a single value of element i in a state vector identified by name in this group. More...
 
virtual AurynStateVectorget_default_exc_target ()
 Returns default exc target input. More...
 
virtual AurynStateVectorget_default_inh_target ()
 Returns default inh target input. More...
 
void random_mem (AurynState mean=-60e-3, AurynState sigma=5e-3)
 
virtual void init_state ()
 
void safe_tadd (NeuronID id, AurynWeight amount, TransmitterType t=GLUT)
 
void tadd (NeuronID id, AurynWeight amount, TransmitterType t=GLUT)
 
void tadd (AurynStateVector *state, NeuronID id, AurynWeight amount)
 
- Public Member Functions inherited from auryn::SpikingGroup
void add_state_vector (std::string key, AurynStateVector *state_vector)
 Adds a state vector passed as an argument to the dictinary. More...
 
void remove_state_vector (std::string key)
 Removes a state vector passed as an argument to the dictinary. More...
 
AurynStateVectorfind_state_vector (std::string key)
 Returns existing state vector by name or NULL if it does not exist. More...
 
AurynStateVectorget_state_vector (std::string key)
 Creates a new or returns an existing state vector by name. More...
 
AurynStateVectorget_existing_state_vector (std::string key)
 Returns an existing state with the supplied name. More...
 
AurynStateVectorcreate_state_vector (std::string key)
 Creates a new state vector and throws an exception if a vector with the same name exists. More...
 
AurynStateget_state_variable (std::string key)
 Creates a new group-wide state variable or returns an existing group-wide variable by name then returns a pointer to it. More...
 
void randomize_state_vector_gauss (std::string state_vector_name, AurynState mean, AurynState sigma, int seed=12239)
 Randomizes the content of a state vector with Gaussian random numbers. Seeding is MPI save. More...
 
 SpikingGroup (NeuronID size, NodeDistributionMode mode=AUTO)
 Default constructor. More...
 
virtual ~SpikingGroup ()
 Default destructor. More...
 
virtual void evolve_traces ()
 Evolves traces. More...
 
void set_name (std::string s)
 Set connection name. More...
 
std::string get_name ()
 Retrieves the groups name. More...
 
std::string get_file_name ()
 Extracts the class name of the connection from the file name. More...
 
std::string get_log_name ()
 Returns a string which is the combination of file and connection name for logging. More...
 
void inc_num_spike_attributes (int x)
 Instructs SpikingGroup to increase the number of spike attributes by x. More...
 
int get_num_spike_attributes ()
 
void conditional_evolve ()
 Conditional evolve functino which is called by System. More...
 
unsigned int get_locked_rank ()
 Returns locked rank for SpikingGroups which are not distributed across all ranks. More...
 
unsigned int get_locked_range ()
 Returns locked range of ranks for SpikingGroups which are not distributed across all ranks. More...
 
SpikeContainerget_spikes ()
 Returns pointer to a spike container that contains spikes which arrive in this timestep from all neurons in this group. More...
 
SpikeContainerget_spikes_immediate ()
 Returns pointer to SpikeContainer of spikes generated during the last evolve() step. More...
 
AttributeContainerget_attributes ()
 Returns pointer to Attributecontainer for usage in propagating Connection objects. Same as get_spikes_immediate(), however might be overwritten to contain Spikes that have been delayed. More...
 
AttributeContainerget_attributes_immediate ()
 Returns pointer to Attributecontainer of spikes generated during the last evolve() step. More...
 
NeuronID get_size ()
 Returns the size of the group. More...
 
NeuronID get_pre_size ()
 Returns the size of the group. More...
 
NeuronID calculate_rank_size (int rank=-1)
 Determines rank size and stores it in local variable. More...
 
NeuronID get_rank_size ()
 Returns the size on this rank. More...
 
NeuronID get_post_size ()
 Returns the size on this rank. More...
 
void set_clock_ptr (AurynTime *clock)
 
bool evolve_locally ()
 Returns true if the calling instance has units which are integrated on the current rank. More...
 
NeuronID get_uid ()
 Get the unique ID of the class. More...
 
Traceget_pre_trace (AurynFloat x)
 Returns a pre trace with time constant x. More...
 
void add_pre_trace (Trace *tr)
 Adds trace to pretrace stack of a connection. More...
 
Traceget_post_trace (AurynFloat x)
 Returns a post trace with time constant x. More...
 
void add_post_trace (Trace *tr)
 Adds trace to posttrace stack of a connection. More...
 
void push_spike (NeuronID spike)
 Pushes a local NeuronID as spike into the axonal SpikeDelay buffer. More...
 
void push_attribute (AurynFloat attrib)
 Pushes a spike attribute into the axonal SpikeDelay buffer. More...
 
void clear_spikes ()
 Clears all spikes stored in the delays which is useful to reset a network during runtime. More...
 
Traceget_post_state_trace (std::string state_name="mem", AurynFloat tau=10e-3, AurynFloat b=0.0)
 Returns a post trace of a neuronal state variable e.g. the membrane potential with time constant tau. More...
 
Traceget_post_state_trace (AurynStateVector *state, AurynFloat tau=10e-3, AurynFloat b=0.0)
 Returns a post trace of a neuronal state variable specified by pointer. More...
 
void set_delay (int d)
 Sets axonal delay for this SpikingGroup. More...
 
virtual bool write_to_file (const char *filename)
 Writes current states of SpikingGroup to human-readible textfile if implemented in derived class. More...
 
virtual bool load_from_file (const char *filename)
 Reads current states of SpikingGroup to human-readible textfile if implemented in derived class. More...
 
NeuronID ranksize ()
 Returns size (num of neurons) on the current rank. More...
 
NeuronID global2rank (NeuronID i)
 Converts global NeuronID within the SpikingGroup to the local NeuronID on this rank. More...
 
NeuronID rank2global (NeuronID i)
 Converts local NeuronID from the local rank to a global NeuronID. More...
 
bool localrank (NeuronID i)
 Checks if the global NeuronID i is integrated on this MPI rank. More...
 
NeuronID get_vector_size ()
 Rank size but rounded up to multiples of 4 (or potentially some other and larger number in future versions) for SSE compatibility. More...
 

Public Attributes

AurynFloat u_reset
 Reset voltage. More...
 
AurynFloat u_rest
 Resting potential. More...
 
AurynFloat u_inh_rev
 Inhibitory reversal potential. More...
 
- Public Attributes inherited from auryn::NeuronGroup
AurynStateVectormem
 
AurynStateVectorg_ampa
 
AurynStateVectorg_gaba
 
AurynStateVectorg_nmda
 
AurynStateVectorthr
 
- Public Attributes inherited from auryn::SpikingGroup
SpikeDelaydelay
 
bool active
 Toggles group active. More...
 
std::map< std::string, AurynStateVector * > state_vectors
 
std::map< std::string, AurynStatestate_variables
 

Additional Inherited Members

- Protected Member Functions inherited from auryn::NeuronGroup
void init ()
 
void free ()
 
- Protected Member Functions inherited from auryn::SpikingGroup
virtual void load_input_line (NeuronID i, const char *buf)
 
virtual std::string get_output_line (NeuronID i)
 
virtual void virtual_serialize (boost::archive::binary_oarchive &ar, const unsigned int version)
 Implementatinon of serialize function for writing. More...
 
virtual void virtual_serialize (boost::archive::binary_iarchive &ar, const unsigned int version)
 Implementatinon of serialize function for reading. More...
 
void free ()
 Frees potentially allocated memory. More...
 
- Protected Attributes inherited from auryn::NeuronGroup
AurynStateVectordefault_exc_target_state
 
AurynStateVectordefault_inh_target_state
 
- Protected Attributes inherited from auryn::SpikingGroup
std::vector< Trace * > pretraces
 Pretraces. More...
 
std::vector< Trace * > posttraces
 Posttraces. More...
 
std::vector< Trace * > post_state_traces
 Post state traces. More...
 
std::vector< AurynFloatpost_state_traces_spike_biases
 
std::vector< AurynStateVector * > post_state_traces_states
 
std::string group_name
 Identifying name for object. More...
 
NeuronID size
 Stores the size of the group. More...
 
NeuronID rank_size
 Stores the size of the group on this rank. More...
 
SpikeContainerspikes
 SpikeContainers to store spikes produced during one step of evolve. More...
 
AttributeContainerattribs
 
- Static Protected Attributes inherited from auryn::SpikingGroup
static AurynTimeclock_ptr = NULL
 

Detailed Description

Implements the standard integrate and file model used in Auryn.

This is the implementation of a standard leaky integrate and fire model with relative refractoriness and conductance based synapses. The model has two time constants for excitatory conductances (AMPA,NMDA). AMPA conductances are modelled as exponential decays. NMDA is implemented to have a double exponental timecourse, by low-pass filtering over the AMPA equation. The amplitude between the individual contributions can be ajusted via set_ampa_nmda_ratio. The voltage dependence of NMDA is ignored in this model.

Constructor & Destructor Documentation

◆ IFGroup()

IFGroup::IFGroup ( NeuronID  size,
NodeDistributionMode  distmode = AUTO 
)

Default constructor.

Parameters
sizethe size of the group.
distmodeNode distribution mode
30  : NeuronGroup(size, distmode)
31 {
33  if ( evolve_locally() ) init();
34 }
NeuronGroup(NeuronID n, NodeDistributionMode mode=AUTO)
Default constructor.
Definition: NeuronGroup.cpp:36
bool evolve_locally()
Returns true if the calling instance has units which are integrated on the current rank...
Definition: SpikingGroup.cpp:323
System * sys
Global pointer to instance of System which needs to be initialized in every simulation main program...
Definition: auryn_global.cpp:37
void register_spiking_group(SpikingGroup *spiking_group)
Registers an instance of SpikingGroup to the spiking_groups vector.
Definition: System.cpp:261
NeuronID size
Stores the size of the group.
Definition: SpikingGroup.h:119
Here is the call graph for this function:

◆ ~IFGroup()

IFGroup::~IFGroup ( )
virtual
85 {
86  if ( evolve_locally() ) free();
87 }
bool evolve_locally()
Returns true if the calling instance has units which are integrated on the current rank...
Definition: SpikingGroup.cpp:323
Here is the call graph for this function:

Member Function Documentation

◆ clear()

void IFGroup::clear ( )
virtual

Implements auryn::NeuronGroup.

72 {
73  clear_spikes();
74  mem->set_all(u_rest);
75  thr->set_zero();
76  g_ampa->set_zero();
77  g_gaba->set_zero();
78  g_nmda->set_zero();
79 }
void set_all(const T v)
Set all elements to value v.
Definition: AurynVector.h:232
void set_zero()
Set all elements to zero.
Definition: AurynVector.h:240
AurynStateVector * g_ampa
Definition: NeuronGroup.h:66
void clear_spikes()
Clears all spikes stored in the delays which is useful to reset a network during runtime.
Definition: SpikingGroup.cpp:339
AurynStateVector * g_nmda
Definition: NeuronGroup.h:70
AurynFloat u_rest
Resting potential.
Definition: IFGroup.h:66
AurynStateVector * g_gaba
Definition: NeuronGroup.h:68
AurynStateVector * mem
Definition: NeuronGroup.h:64
AurynStateVector * thr
Definition: NeuronGroup.h:75
Here is the call graph for this function:

◆ evolve()

void IFGroup::evolve ( )
virtual

Internally used evolve function. Called by System.

Implements auryn::SpikingGroup.

147 {
148  integrate_linear_nmda_synapses();
149  integrate_membrane();
150  check_thresholds();
151 }

◆ get_tau_ampa()

AurynFloat IFGroup::get_tau_ampa ( )

Returns the exponential decay time constant of the AMPA conductance.

172 {
173  return tau_ampa;
174 }

◆ get_tau_gaba()

AurynFloat IFGroup::get_tau_gaba ( )

Returns the exponential decay time constant of the GABA conductance.

183 {
184  return tau_gaba;
185 }

◆ get_tau_mem()

AurynFloat IFGroup::get_tau_mem ( )

Returns the membrane time constant.

161 {
162  return tau_mem;
163 }

◆ get_tau_nmda()

AurynFloat IFGroup::get_tau_nmda ( )

Returns the exponential decay time constant of the NMDA conductance. The rise is governed by tau_ampa if tau_ampa << tau_nmda.

205 {
206  return tau_nmda;
207 }

◆ set_ampa_nmda_ratio()

void IFGroup::set_ampa_nmda_ratio ( AurynFloat  ratio)

Set ratio between ampa/nmda contribution to excitatory conductance.

This sets the ratio between the integrals between the conductance kernels.

210 {
211  A_ampa = ratio/(ratio+1.0);
212  A_nmda = 1./(ratio+1.0);
213 }

◆ set_nmda_ampa_current_ampl_ratio()

void IFGroup::set_nmda_ampa_current_ampl_ratio ( AurynFloat  ratio)

Sets nmda-ampa amplitude ratio.

This sets the ratio between the amplitudes of nmda to ampa.

216 {
217  const double tau_r = tau_ampa;
218  const double tau_d = tau_nmda;
219 
220  // compute amplitude of NMDA conductance
221  const double tmax = tau_r*std::log((tau_r+tau_d)/tau_r); // argmax
222  const double ampl = (1.0-std::exp(-tmax/tau_r))*std::exp(-tmax/tau_d)*tau_r/(tau_d-tau_r);
223 
224  // set relative amplitudes
225  A_ampa = 1.0;
226  A_nmda = ratio/ampl;
227 
228  // normalize sum to one
229  const double sum = A_ampa+A_nmda;
230  A_ampa /= sum;
231  A_nmda /= sum;
232 
233  // write constants to logfile
234  logger->parameter("A_ampa", A_ampa);
235  logger->parameter("A_nmda", A_nmda);
236 }
void parameter(std::string name, T value)
Definition: Logger.h:90
Logger * logger
Global pointer to instance of Logger which needs to be initialized in every simulation main program...
Definition: auryn_global.cpp:36
Here is the call graph for this function:

◆ set_tau_ampa()

void IFGroup::set_tau_ampa ( AurynFloat  tau)

Sets the exponential decay time constant of the AMPA conductance (default=5ms).

166 {
167  tau_ampa = taum;
168  calculate_scale_constants();
169 }

◆ set_tau_gaba()

void IFGroup::set_tau_gaba ( AurynFloat  tau)

Sets the exponential decay time constant of the GABA conductance (default=10ms).

177 {
178  tau_gaba = taum;
179  calculate_scale_constants();
180 }

◆ set_tau_mem()

void IFGroup::set_tau_mem ( AurynFloat  taum)

Sets the membrane time constant.

155 {
156  tau_mem = taum;
157  calculate_scale_constants();
158 }

◆ set_tau_nmda()

void IFGroup::set_tau_nmda ( AurynFloat  tau)

Sets the exponential decay time constant of the NMDA conductance (default=100ms).

The rise is governed by tau_ampa if tau_ampa << tau_nmda.

188 {
189  if ( tau < tau_ampa ) {
190  logger->warning("tau_nmda has to be larger than tau_ampa in IFGroup");
191  return;
192  }
193  tau_nmda = tau;
194  calculate_scale_constants();
195 }
void warning(std::string text)
Definition: Logger.cpp:136
Logger * logger
Global pointer to instance of Logger which needs to be initialized in every simulation main program...
Definition: auryn_global.cpp:36
Here is the call graph for this function:

◆ set_tau_thr()

void IFGroup::set_tau_thr ( AurynFloat  tau)

Sets the exponential decay time constant of the threshold (default=5).

Reflects absolute and relative refractory period.

198 {
199  tau_thr = tau;
200  calculate_scale_constants();
201 }

Member Data Documentation

◆ u_inh_rev

AurynFloat auryn::IFGroup::u_inh_rev

Inhibitory reversal potential.

◆ u_reset

AurynFloat auryn::IFGroup::u_reset

Reset voltage.

◆ u_rest

AurynFloat auryn::IFGroup::u_rest

Resting potential.


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