00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _SPARSE_SYNAPSES_
00024 #define _SPARSE_SYNAPSES_
00025
00026 #include "synapses.h"
00027
00043 typedef struct {
00044 int neuron;
00045 int data;
00046 } aspi_sparse_item_t;
00047
00048
00052 typedef struct {
00053 aspi_synapses_t parent;
00054
00055 int n_items;
00056
00057 double * weights;
00058
00059
00060
00061 int * delays;
00062
00063
00064 aspi_trace_t * traces;
00065
00066
00067 int * sizes_post;
00068 aspi_sparse_item_t ** items_post;
00069
00070
00071 int * sizes_pre;
00072 aspi_sparse_item_t ** items_pre;
00073 } aspi_sparse_synapses_t;
00074
00075
00079 typedef struct {
00080 aspi_synapses_class_t parent;
00081 } aspi_sparse_synapses_class_t;
00082
00083
00084 aspi_class_t * aspi_sparse_synapses (void);
00085 aspi_object_t * aspi_sparse_synapses_init (aspi_object_t * self, int n_neurons, double synaptic_leak);
00086 void aspi_sparse_synapses_dtor (aspi_object_t * self);
00087
00088
00089 double aspi_sparse_synapses_get_weight (aspi_object_t * self, int pre, int post);
00090 void aspi_sparse_synapses_set_weight (aspi_object_t * self, int pre, int post, double value);
00091
00092 int aspi_sparse_synapses_get_delay (aspi_object_t * self, int pre, int post);
00093 void aspi_sparse_synapses_set_delay (aspi_object_t * self, int pre, int post, int value);
00094
00095 double aspi_sparse_synapses_get_trace (aspi_object_t * self, int pre, int post, int time);
00096 void aspi_sparse_synapses_add_to_trace (aspi_object_t * self, int pre, int post, double value, int time);
00097
00098 void aspi_sparse_synapses_apply_callback (aspi_object_t * self, aspi_object_t * network, aspi_callback_t callback, void * data);
00099 void aspi_sparse_synapses_apply_callback_post (aspi_object_t * self, aspi_object_t * network, int neuron, aspi_callback_t callback, void * data);
00100 void aspi_sparse_synapses_apply_callback_pre (aspi_object_t * self, aspi_object_t * network, int neuron, aspi_callback_t callback, void * data);
00101
00102
00103
00104
00105
00106 #define ASPI_SPARSE_SYNAPSES(x) (aspi_object_check (x, aspi_sparse_synapses ()), ((aspi_sparse_synapses_t *) x))
00107 #define ASPI_SPARSE_SYNAPSES_CLASS(x) (aspi_class_check (x, aspi_sparse_synapses ()), ((aspi_sparse_synapses_class_t *) x))
00108
00109
00114 #endif