sPyNNaker neural_modelling 7.2.2
|
STDP-with-neuromodulation implementation. More...
#include "post_events_with_da.h"
#include "synapse_dynamics_stdp_common.h"
#include "stdp_typedefs.h"
Go to the source code of this file.
Data Structures | |
struct | neuromodulation_data_t |
struct | neuromodulated_synapse_t |
struct | nm_update_state_t |
struct | nm_final_state_t |
struct | synapse_row_plastic_data_t |
The format of the plastic data region of a synaptic row. More... | |
struct | nm_params_t |
union | synapse_row_plastic_data_t.__unnamed10__ |
struct | synapse_row_plastic_data_t.__unnamed10__.__unnamed12__ |
Macros | |
#define | DECAY_LOOKUP_TAU_C(time) maths_lut_exponential_decay(time, tau_c_lookup) |
#define | DECAY_LOOKUP_TAU_D(time) maths_lut_exponential_decay(time, tau_d_lookup) |
Functions | |
static nm_update_state_t | get_nm_update_state (neuromodulated_synapse_t synapse, index_t synapse_type) |
static nm_final_state_t | get_nm_final_state (nm_update_state_t update_state) |
static neuromodulated_synapse_t | get_nm_final_synaptic_word (nm_final_state_t final_state) |
static post_event_window_t | get_post_event_window (const post_event_history_t *post_event_history, const uint32_t delayed_pre_time, const uint32_t delayed_last_pre_time, const uint32_t delay_dendritic) |
static accum | get_weight_update (int16_t decay_eligibility_trace, int16_t decay_dopamine_trace, int16_t last_dopamine_trace, accum eligibility_weight) |
static nm_final_state_t | izhikevich_neuromodulation_plasticity_update_synapse (const uint32_t time, const uint32_t last_pre_time, const pre_trace_t last_pre_trace, const pre_trace_t new_pre_trace, const uint32_t delay_dendritic, const uint32_t delay_axonal, nm_update_state_t current_state, const post_event_history_t *post_event_history) |
Synapse update loop core. | |
bool | synapse_dynamics_initialise (address_t address, uint32_t n_neurons, uint32_t n_synapse_types, uint32_t *ring_buffer_to_input_buffer_left_shifts) |
Initialise the synapse dynamics. | |
void | synapse_dynamics_print_plastic_synapses (synapse_row_plastic_data_t *plastic_region_data, synapse_row_fixed_part_t *fixed_region, uint32_t *ring_buffer_to_input_buffer_left_shifts) |
Print the synapse dynamics. | |
static index_t | sparse_axonal_delay (uint32_t x) |
Get the axonal delay. | |
void | synapse_dynamics_process_post_synaptic_event (uint32_t time, index_t neuron_index) |
Inform the synapses that the neuron fired. | |
static neuromodulated_synapse_t | process_plastic_synapse (uint32_t control_word, uint32_t last_pre_time, pre_trace_t last_pre_trace, pre_trace_t new_pre_trace, weight_t *ring_buffers, uint32_t time, uint32_t colour_delay, neuromodulated_synapse_t synapse) |
static void | process_neuromodulation (synapse_row_plastic_data_t *plastic_region_address, synapse_row_fixed_part_t *fixed_region, uint32_t time) |
bool | synapse_dynamics_process_plastic_synapses (synapse_row_plastic_data_t *plastic_region_address, synapse_row_fixed_part_t *fixed_region, weight_t *ring_buffers, uint32_t time, uint32_t colour_delay, bool *write_back) |
Process the dynamics of the synapses. | |
static neuromodulated_synapse_t * | get_plastic_synapses (synaptic_row_t row) |
bool | synapse_dynamics_find_neuron (uint32_t id, synaptic_row_t row, weight_t *weight, uint16_t *delay, uint32_t *offset, uint32_t *synapse_type) |
Search the synaptic row for the the connection with the specified post-synaptic ID. | |
bool | synapse_dynamics_remove_neuron (uint32_t offset, synaptic_row_t row) |
Remove the entry at the specified offset in the synaptic row. | |
bool | synapse_dynamics_add_neuron (uint32_t id, synaptic_row_t row, weight_t weight, uint32_t delay, uint32_t type) |
Add an entry in the synaptic row. | |
Variables | |
static nm_params_t | nm_params |
static int16_lut * | tau_c_lookup |
static int16_lut * | tau_d_lookup |
static uint32_t * | nm_weight_shift |
uint32_t | skipped_synapses |
STDP-with-neuromodulation implementation.
Definition in file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
struct neuromodulation_data_t |
Definition at line 23 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
Data Fields | ||
---|---|---|
uint32_t | synapse_type:30 | |
uint32_t | is_reward:1 | |
uint32_t | is_neuromodulation: 1 |
struct neuromodulated_synapse_t |
Definition at line 29 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
Data Fields | ||
---|---|---|
weight_t | weight | |
plastic_synapse_t | eligibility_synapse |
struct nm_update_state_t |
Definition at line 34 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
Data Fields | ||
---|---|---|
accum | weight | |
uint32_t | weight_shift | |
update_state_t | eligibility_state |
struct nm_final_state_t |
Definition at line 40 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
Data Fields | ||
---|---|---|
weight_t | weight | |
final_state_t | final_state |
struct synapse_row_plastic_data_t |
The format of the plastic data region of a synaptic row.
Definition at line 45 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
Data Fields | ||
---|---|---|
union synapse_row_plastic_data_t.__unnamed10__ | __unnamed__ | |
pre_event_history_t | history | The pre-event history. |
plastic_synapse_t | synapses[] | The per-synapse information. |
struct nm_params_t |
Definition at line 58 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
Data Fields | ||
---|---|---|
accum | weight_update_constant_component | Constant part of weight update. |
accum | max_weight | Maximum of weight after update. |
accum | min_weight | Minimum of weight after update (must be >= 0) |
union synapse_row_plastic_data_t.__unnamed10__ |
Definition at line 46 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
Data Fields | ||
---|---|---|
struct synapse_row_plastic_data_t.__unnamed10__.__unnamed12__ | __unnamed__ | |
neuromodulation_data_t | neuromodulation | Neuromodulation data. |
struct synapse_row_plastic_data_t.__unnamed10__.__unnamed12__ |
Definition at line 47 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
Data Fields | ||
---|---|---|
pre_event_history_t | history | The pre-event history. |
neuromodulated_synapse_t | synapses[] | The per-synapse information. |
#define DECAY_LOOKUP_TAU_C | ( | time | ) | maths_lut_exponential_decay(time, tau_c_lookup) |
Definition at line 81 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
#define DECAY_LOOKUP_TAU_D | ( | time | ) | maths_lut_exponential_decay(time, tau_d_lookup) |
Definition at line 83 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 86 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 98 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 112 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 122 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 148 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Synapse update loop core.
[in] | time | The current time |
[in] | last_pre_time | The time of the last previous pre-event |
[in] | last_pre_trace | The last previous pre-trace |
[in] | new_pre_trace | The new pre-trace |
[in] | delay_dendritic | The dendritic delay for the synapse |
[in] | delay_axonal | The axonal delay for the synapse |
[in] | current_state | The current state |
[in] | post_event_history | The history |
Definition at line 177 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
bool synapse_dynamics_initialise | ( | address_t | address, |
uint32_t | n_neurons, | ||
uint32_t | n_synapse_types, | ||
uint32_t * | ring_buffer_to_input_buffer_left_shifts | ||
) |
Initialise the synapse dynamics.
[in] | address | Where the configuration data is |
[in] | n_neurons | Number of neurons |
[in] | n_synapse_types | Number of synapse types |
[in] | ring_buffer_to_input_buffer_left_shifts | How to interpret the values from the ring buffers |
Definition at line 276 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
void synapse_dynamics_print_plastic_synapses | ( | synapse_row_plastic_data_t * | plastic_region_data, |
synapse_row_fixed_part_t * | fixed_region, | ||
uint32_t * | ring_buffer_to_input_buffer_left_shifts | ||
) |
Print the synapse dynamics.
[in] | plastic_region_data | Where the plastic data is |
[in] | fixed_region | Where the fixed data is |
[in] | ring_buffer_to_input_buffer_left_shifts | How to interpret the values from the ring buffers |
Definition at line 315 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Get the axonal delay.
[in] | x | The packed plastic synapse control word |
Definition at line 361 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
void synapse_dynamics_process_post_synaptic_event | ( | uint32_t | time, |
index_t | neuron_index | ||
) |
Inform the synapses that the neuron fired.
[in] | time | The current simulation time |
[in] | neuron_index | Which neuron are we processing |
Definition at line 372 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 391 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 423 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
bool synapse_dynamics_process_plastic_synapses | ( | synapse_row_plastic_data_t * | plastic_region_data, |
synapse_row_fixed_part_t * | fixed_region, | ||
weight_t * | ring_buffers, | ||
uint32_t | time, | ||
uint32_t | colour_delay, | ||
bool * | write_back | ||
) |
Process the dynamics of the synapses.
[in,out] | plastic_region_data | Where the plastic data is |
[in] | fixed_region | Where the fixed data is |
[in,out] | ring_buffers | The ring buffers |
[in] | time | The current simulation time |
[out] | Whether | to write back anything |
Definition at line 460 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 506 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
bool synapse_dynamics_find_neuron | ( | uint32_t | id, |
synaptic_row_t | row, | ||
weight_t * | weight, | ||
uint16_t * | delay, | ||
uint32_t * | offset, | ||
uint32_t * | synapse_type | ||
) |
Search the synaptic row for the the connection with the specified post-synaptic ID.
[in] | id | the (core-local) ID of the neuron to search for in the synaptic row |
[in] | row | the core-local address of the synaptic row |
[out] | weight | address to contain the weight of the connection |
[out] | delay | address to contain the delay of the connection |
[out] | offset | address to contain the offset of the connection |
[out] | synapse_type | the synapse type of the connection |
Definition at line 512 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
bool synapse_dynamics_remove_neuron | ( | uint32_t | offset, |
synaptic_row_t | row | ||
) |
Remove the entry at the specified offset in the synaptic row.
[in] | offset | the offset in the row at which to remove the entry |
[in] | row | the core-local address of the synaptic row |
Definition at line 542 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
bool synapse_dynamics_add_neuron | ( | uint32_t | id, |
synaptic_row_t | row, | ||
weight_t | weight, | ||
uint32_t | delay, | ||
uint32_t | type | ||
) |
Add an entry in the synaptic row.
[in] | id | the (core-local) ID of the post-synaptic neuron to be added |
[in] | row | the core-local address of the synaptic row |
[in] | weight | the initial weight associated with the connection |
[in] | delay | the delay associated with the connection |
[in] | type | the type of the connection (e.g. inhibitory) |
Definition at line 560 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
static |
Definition at line 71 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
static |
Definition at line 73 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
static |
Definition at line 75 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
static |
Definition at line 77 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
extern |
Count of the synapses that have been skipped because the delay wasn't big enough given how long the spike took to arrive
Definition at line 84 of file synapses.c.