GeNN
4.9.0
GPU enhanced Neuronal Networks (GeNN)
|
This module provides the GeNNModel class to simplify working with pygenn module and helper functions to derive custom model classes. More...
Classes | |
class | GeNNModel |
GeNNModel class This class helps to define, build and run a GeNN model from python. More... | |
Functions | |
def | init_var (init_var_snippet, param_space) |
This helper function creates a VarInit object to easily initialise a variable using a snippet. More... | |
def | init_connectivity (init_sparse_connect_snippet, param_space) |
This helper function creates a InitSparseConnectivitySnippet::Init object to easily initialise connectivity using a snippet. More... | |
def | init_toeplitz_connectivity (init_toeplitz_connect_snippet, param_space) |
This helper function creates a InitToeplitzConnectivitySnippet::Init object to easily initialise connectivity using a snippet. More... | |
def | create_var_ref (pop, var_name) |
This helper function creates a Models::VarReference pointing to a neuron or current source variable for initialising variable references. More... | |
def | create_psm_var_ref (sg, var_name) |
This helper function creates a Models::VarReference pointing to a postsynaptic model variable for initialising variable references. More... | |
def | create_wu_pre_var_ref (sg, var_name) |
This helper function creates a Models::VarReference pointing to a presynaptic weight update model variable for initialising variable references. More... | |
def | create_wu_post_var_ref (sg, var_name) |
This helper function creates a Models::VarReference pointing to a postsynaptic weight update model variable for initialising variable references. More... | |
def | create_wu_var_ref (g, var_name, tp_sg=None, tp_var_name=None) |
This helper function creates a Models::WUVarReference pointing to a weight update model variable for initialising variable references. More... | |
def | create_egp_ref (pop, egp_name) |
This helper function creates a Models::EGPReference pointing to a neuron, current source or custom update extra global parameter for initialising references. More... | |
def | create_psm_egp_ref (sg, egp_name) |
This helper function creates a Models::EGPReference pointing to a postsynaptic model extra global parameter for initialising references. More... | |
def | create_wu_egp_ref (sg, egp_name) |
This helper function creates a Models::EGPReference pointing to a weight update model extra global parameter for initialising references. More... | |
def | create_custom_neuron_class (class_name, param_names=None, var_name_types=None, derived_params=None, sim_code=None, threshold_condition_code=None, reset_code=None, support_code=None, extra_global_params=None, additional_input_vars=None, is_auto_refractory_required=None, custom_body=None) |
This helper function creates a custom NeuronModel class. More... | |
def | create_custom_postsynaptic_class (class_name, param_names=None, var_name_types=None, derived_params=None, decay_code=None, apply_input_code=None, support_code=None, extra_global_params=None, custom_body=None) |
This helper function creates a custom PostsynapticModel class. More... | |
def | create_custom_weight_update_class (class_name, param_names=None, var_name_types=None, pre_var_name_types=None, post_var_name_types=None, derived_params=None, sim_code=None, event_code=None, learn_post_code=None, synapse_dynamics_code=None, event_threshold_condition_code=None, pre_spike_code=None, post_spike_code=None, pre_dynamics_code=None, post_dynamics_code=None, sim_support_code=None, learn_post_support_code=None, synapse_dynamics_suppport_code=None, extra_global_params=None, is_pre_spike_time_required=None, is_post_spike_time_required=None, is_pre_spike_event_time_required=None, is_prev_pre_spike_time_required=None, is_prev_post_spike_time_required=None, is_prev_pre_spike_event_time_required=None, custom_body=None) |
This helper function creates a custom WeightUpdateModel class. More... | |
def | create_custom_current_source_class (class_name, param_names=None, var_name_types=None, derived_params=None, injection_code=None, extra_global_params=None, custom_body=None) |
This helper function creates a custom NeuronModel class. More... | |
def | create_custom_custom_update_class (class_name, param_names=None, var_name_types=None, derived_params=None, var_refs=None, update_code=None, extra_global_params=None, extra_global_param_refs=None, custom_body=None) |
This helper function creates a custom CustomUpdate class. More... | |
def | create_custom_model_class (class_name, base, param_names, var_name_types, derived_params, extra_global_params, custom_body) |
This helper function completes a custom model class creation. More... | |
def | create_dpf_class (dp_func) |
Helper function to create derived parameter function class. More... | |
def | create_cmlf_class (cml_func) |
Helper function to create function class for calculating sizes of matrices initialised with sparse connectivity initialisation snippet. More... | |
def | create_cksf_class (cks_func) |
Helper function to create function class for calculating sizes of kernels from connectivity initialiser parameters. More... | |
def | create_custom_init_var_snippet_class (class_name, param_names=None, derived_params=None, var_init_code=None, extra_global_params=None, custom_body=None) |
This helper function creates a custom InitVarSnippet class. More... | |
def | create_custom_sparse_connect_init_snippet_class (class_name, param_names=None, derived_params=None, row_build_code=None, row_build_state_vars=None, col_build_code=None, col_build_state_vars=None, calc_max_row_len_func=None, calc_max_col_len_func=None, calc_kernel_size_func=None, extra_global_params=None, custom_body=None) |
This helper function creates a custom InitSparseConnectivitySnippet class. More... | |
def | create_custom_toeplitz_connect_init_snippet_class (class_name, param_names=None, derived_params=None, diagonal_build_code=None, diagonal_build_state_vars=None, calc_max_row_len_func=None, calc_kernel_size_func=None, extra_global_params=None, custom_body=None) |
This helper function creates a custom InitToeplitzConnectivitySnippet class. More... | |
Variables | |
backend_modules = OrderedDict() | |
m = import_module(".genn_wrapper." + b + "Backend", "pygenn") | |
GeNNType = namedtuple("GeNNType", ["np_dtype", "assign_ext_ptr_array", "assign_ext_ptr_single"]) | |
This module provides the GeNNModel class to simplify working with pygenn module and helper functions to derive custom model classes.
GeNNModel should be used to configure a model, build, load and finally run it. Recording is done manually by pulling from the population of interest and then copying the values from Variable.view attribute. Each simulation step must be triggered manually by calling step_time function.
Examples
def pygenn.genn_model.create_cksf_class | ( | cks_func | ) |
Helper function to create function class for calculating sizes of kernels from connectivity initialiser parameters.
cks_func | a function which computes the kernel size and takes one arg "pars" (vector of double) |
def pygenn.genn_model.create_cmlf_class | ( | cml_func | ) |
Helper function to create function class for calculating sizes of matrices initialised with sparse connectivity initialisation snippet.
cml_func | a function which computes the length and takes three args "num_pre" (unsigned int), "num_post" (unsigned int) and "pars" (vector of double) |
def pygenn.genn_model.create_custom_current_source_class | ( | class_name, | |
param_names = None , |
|||
var_name_types = None , |
|||
derived_params = None , |
|||
injection_code = None , |
|||
extra_global_params = None , |
|||
custom_body = None |
|||
) |
This helper function creates a custom NeuronModel class.
class_name | name of the new class |
param_names | list of strings with param names of the model |
var_name_types | list of pairs of strings with varible names and types of the model |
derived_params | list of pairs, where the first member is string with name of the derived parameter and the second should be a functor returned by create_dpf_class |
injection_code | string with the current injection code |
extra_global_params | list of pairs of strings with names and types of additional parameters |
custom_body | dictionary with additional attributes and methods of the new class |
def pygenn.genn_model.create_custom_custom_update_class | ( | class_name, | |
param_names = None , |
|||
var_name_types = None , |
|||
derived_params = None , |
|||
var_refs = None , |
|||
update_code = None , |
|||
extra_global_params = None , |
|||
extra_global_param_refs = None , |
|||
custom_body = None |
|||
) |
This helper function creates a custom CustomUpdate class.
class_name | name of the new class |
param_names | list of strings with param names of the model |
var_name_types | list of tuples of strings with varible names and types of the variable |
derived_params | list of tuples, where the first member is string with name of the derived parameter and the second should be a functor returned by create_dpf_class |
var_refs | list of tuples of strings with varible names and types of variabled variable |
update_code | string with the current injection code |
extra_global_params | list of pairs of strings with names and types of additional parameters |
extra_global_param_refs | list of pairs of strings with names and types of extra global parameter references |
custom_body | dictionary with additional attributes and methods of the new class |
def pygenn.genn_model.create_custom_init_var_snippet_class | ( | class_name, | |
param_names = None , |
|||
derived_params = None , |
|||
var_init_code = None , |
|||
extra_global_params = None , |
|||
custom_body = None |
|||
) |
This helper function creates a custom InitVarSnippet class.
class_name | name of the new class |
param_names | list of strings with param names of the model |
derived_params | list of pairs, where the first member is string with name of the derived parameter and the second MUST be an instance of the pygenn.genn_wrapper.DerivedParamFunc class |
var_init_code | string with the variable initialization code |
extra_global_params | list of pairs of strings with names and types of additional parameters |
custom_body | dictionary with additional attributes and methods of the new class |
def pygenn.genn_model.create_custom_model_class | ( | class_name, | |
base, | |||
param_names, | |||
var_name_types, | |||
derived_params, | |||
extra_global_params, | |||
custom_body | |||
) |
This helper function completes a custom model class creation.
This part is common for all model classes and is nearly useless on its own unless you specify custom_body.
class_name | name of the new class |
base | base class |
param_names | list of strings with param names of the model |
var_name_types | list of pairs of strings with varible names and types of the model |
derived_params | list of pairs, where the first member is string with name of the derived parameter and the second should be a functor returned by create_dpf_class |
extra_global_params | list of pairs of strings with names and types of additional parameters |
custom_body | dictionary with attributes and methods of the new class |
def pygenn.genn_model.create_custom_neuron_class | ( | class_name, | |
param_names = None , |
|||
var_name_types = None , |
|||
derived_params = None , |
|||
sim_code = None , |
|||
threshold_condition_code = None , |
|||
reset_code = None , |
|||
support_code = None , |
|||
extra_global_params = None , |
|||
additional_input_vars = None , |
|||
is_auto_refractory_required = None , |
|||
custom_body = None |
|||
) |
This helper function creates a custom NeuronModel class.
class_name | name of the new class |
param_names | list of strings with param names of the model |
var_name_types | list of pairs of strings with varible names and types of the model |
derived_params | list of pairs, where the first member is string with name of the derived parameter and the second should be a functor returned by create_dpf_class |
sim_code | string with the simulation code |
threshold_condition_code | string with the threshold condition code |
reset_code | string with the reset code |
support_code | string with the support code |
extra_global_params | list of pairs of strings with names and types of additional parameters |
additional_input_vars | list of tuples with names and types as strings and initial values of additional local input variables |
is_auto_refractory_required | does this model require auto-refractory logic to be generated? |
custom_body | dictionary with additional attributes and methods of the new class |
def pygenn.genn_model.create_custom_postsynaptic_class | ( | class_name, | |
param_names = None , |
|||
var_name_types = None , |
|||
derived_params = None , |
|||
decay_code = None , |
|||
apply_input_code = None , |
|||
support_code = None , |
|||
extra_global_params = None , |
|||
custom_body = None |
|||
) |
This helper function creates a custom PostsynapticModel class.
class_name | name of the new class |
param_names | list of strings with param names of the model |
var_name_types | list of pairs of strings with varible names and types of the model |
derived_params | list of pairs, where the first member is string with name of the derived parameter and the second should be a functor returned by create_dpf_class |
decay_code | string with the decay code |
apply_input_code | string with the apply input code |
support_code | string with the support code |
extra_global_params | list of pairs of strings with names and types of additional parameters |
custom_body | dictionary with additional attributes and methods of the new class |
def pygenn.genn_model.create_custom_sparse_connect_init_snippet_class | ( | class_name, | |
param_names = None , |
|||
derived_params = None , |
|||
row_build_code = None , |
|||
row_build_state_vars = None , |
|||
col_build_code = None , |
|||
col_build_state_vars = None , |
|||
calc_max_row_len_func = None , |
|||
calc_max_col_len_func = None , |
|||
calc_kernel_size_func = None , |
|||
extra_global_params = None , |
|||
custom_body = None |
|||
) |
This helper function creates a custom InitSparseConnectivitySnippet class.
class_name | name of the new class |
param_names | list of strings with param names of the model |
derived_params | list of pairs, where the first member is string with name of the derived parameter and the second MUST be an instance of the class which inherits from pygenn.genn_wrapper.DerivedParamFunc |
row_build_code | string with row building initialization code |
row_build_state_vars | list of tuples of state variables, their types and their initial values to use across row building loop |
col_build_code | string with column building initialization code |
col_build_state_vars | list of tuples of state variables, their types and their initial values to use across column building loop |
calc_max_row_len_func | instance of class inheriting from CalcMaxLengthFunc used to calculate maximum row length of synaptic matrix |
calc_max_col_len_func | instance of class inheriting from CalcMaxLengthFunc used to calculate maximum col length of synaptic matrix |
calc_kernel_size_func | instance of class inheriting from CalcKernelSizeFunc used to calculate kernel dimensions |
extra_global_params | list of pairs of strings with names and types of additional parameters |
custom_body | dictionary with additional attributes and methods of the new class |
def pygenn.genn_model.create_custom_toeplitz_connect_init_snippet_class | ( | class_name, | |
param_names = None , |
|||
derived_params = None , |
|||
diagonal_build_code = None , |
|||
diagonal_build_state_vars = None , |
|||
calc_max_row_len_func = None , |
|||
calc_kernel_size_func = None , |
|||
extra_global_params = None , |
|||
custom_body = None |
|||
) |
This helper function creates a custom InitToeplitzConnectivitySnippet class.
class_name | name of the new class |
param_names | list of strings with param names of the model |
derived_params | list of pairs, where the first member is string with name of the derived parameter and the second MUST be an instance of the class which inherits from pygenn.genn_wrapper.DerivedParamFunc |
diagonal_build_code | string with diagonal building initialization code |
diagonal_build_state_vars | list of tuples of state variables, their types and their initial values to use across diagonal building loop |
calc_max_row_len_func | instance of class inheriting from CalcMaxLengthFunc used to calculate maximum row length of synaptic matrix |
calc_kernel_size_func | instance of class inheriting from CalcKernelSizeFunc used to calculate kernel dimensions |
extra_global_params | list of pairs of strings with names and types of additional parameters |
custom_body | dictionary with additional attributes and methods of the new class |
def pygenn.genn_model.create_custom_weight_update_class | ( | class_name, | |
param_names = None , |
|||
var_name_types = None , |
|||
pre_var_name_types = None , |
|||
post_var_name_types = None , |
|||
derived_params = None , |
|||
sim_code = None , |
|||
event_code = None , |
|||
learn_post_code = None , |
|||
synapse_dynamics_code = None , |
|||
event_threshold_condition_code = None , |
|||
pre_spike_code = None , |
|||
post_spike_code = None , |
|||
pre_dynamics_code = None , |
|||
post_dynamics_code = None , |
|||
sim_support_code = None , |
|||
learn_post_support_code = None , |
|||
synapse_dynamics_suppport_code = None , |
|||
extra_global_params = None , |
|||
is_pre_spike_time_required = None , |
|||
is_post_spike_time_required = None , |
|||
is_pre_spike_event_time_required = None , |
|||
is_prev_pre_spike_time_required = None , |
|||
is_prev_post_spike_time_required = None , |
|||
is_prev_pre_spike_event_time_required = None , |
|||
custom_body = None |
|||
) |
This helper function creates a custom WeightUpdateModel class.
class_name | name of the new class |
param_names | list of strings with param names of the model |
var_name_types | list of pairs of strings with variable names and types of the model |
pre_var_name_types | list of pairs of strings with presynaptic variable names and types of the model |
post_var_name_types | list of pairs of strings with postsynaptic variable names and types of the model |
derived_params | list of pairs, where the first member is string with name of the derived parameter and the second should be a functor returned by create_dpf_class |
sim_code | string with the simulation code |
event_code | string with the event code |
learn_post_code | string with the code to include in learn_synapse_post kernel/function |
synapse_dynamics_code | string with the synapse dynamics code |
event_threshold_condition_code | string with the event threshold condition code |
pre_spike_code | string with the code run once per spiking presynaptic neuron |
post_spike_code | string with the code run once per spiking postsynaptic neuron |
pre_dynamics_code | string with the code run every timestep on presynaptic neuron |
post_dynamics_code | string with the code run every timestep on postsynaptic neuron |
sim_support_code | string with simulation support code |
learn_post_support_code | string with support code for learn_synapse_post kernel/function |
synapse_dynamics_suppport_code | string with synapse dynamics support code |
extra_global_params | list of pairs of strings with names and types of additional parameters |
is_pre_spike_time_required | boolean, is presynaptic spike time required in any weight update kernels? |
is_post_spike_time_required | boolean, is postsynaptic spike time required in any weight update kernels? |
is_pre_spike_event_time_required | boolean, is presynaptic spike-like-event time required in any weight update kernels? |
is_prev_pre_spike_time_required | boolean, is previous presynaptic spike time required in any weight update kernels? |
is_prev_post_spike_time_required | boolean, is previous postsynaptic spike time required in any weight update kernels? |
is_prev_pre_spike_event_time_required | boolean, is previous presynaptic spike-like-event time required in any weight update kernels? |
custom_body | dictionary with additional attributes and methods of the new class |
def pygenn.genn_model.create_dpf_class | ( | dp_func | ) |
Helper function to create derived parameter function class.
dp_func | a function which computes the derived parameter and takes two args "pars" (vector of double) and "dt" (double) |
def pygenn.genn_model.create_egp_ref | ( | pop, | |
egp_name | |||
) |
This helper function creates a Models::EGPReference pointing to a neuron, current source or custom update extra global parameter for initialising references.
pop | population, either a NeuronGroup or CurrentSource object |
egp_name | name of extra global parameter in population to reference |
def pygenn.genn_model.create_psm_egp_ref | ( | sg, | |
egp_name | |||
) |
This helper function creates a Models::EGPReference pointing to a postsynaptic model extra global parameter for initialising references.
sg | SynapseGroup object |
egp_name | name of postsynaptic model extra global parameter in synapse group to reference |
def pygenn.genn_model.create_psm_var_ref | ( | sg, | |
var_name | |||
) |
This helper function creates a Models::VarReference pointing to a postsynaptic model variable for initialising variable references.
sg | SynapseGroup object |
var_name | name of postsynaptic model variable in synapse group to reference |
def pygenn.genn_model.create_var_ref | ( | pop, | |
var_name | |||
) |
This helper function creates a Models::VarReference pointing to a neuron or current source variable for initialising variable references.
pop | population, either a NeuronGroup or CurrentSource object |
var_name | name of variable in population to reference |
def pygenn.genn_model.create_wu_egp_ref | ( | sg, | |
egp_name | |||
) |
This helper function creates a Models::EGPReference pointing to a weight update model extra global parameter for initialising references.
sg | SynapseGroup object |
egp_name | name of weight update model extra global parameter in synapse group to reference |
def pygenn.genn_model.create_wu_post_var_ref | ( | sg, | |
var_name | |||
) |
This helper function creates a Models::VarReference pointing to a postsynaptic weight update model variable for initialising variable references.
sg | SynapseGroup object |
var_name | name of postsynaptic weight update model variable in synapse group to reference |
def pygenn.genn_model.create_wu_pre_var_ref | ( | sg, | |
var_name | |||
) |
This helper function creates a Models::VarReference pointing to a presynaptic weight update model variable for initialising variable references.
sg | SynapseGroup object |
var_name | name of presynaptic weight update model variable in synapse group to reference |
def pygenn.genn_model.create_wu_var_ref | ( | g, | |
var_name, | |||
tp_sg = None , |
|||
tp_var_name = None |
|||
) |
This helper function creates a Models::WUVarReference pointing to a weight update model variable for initialising variable references.
g | SynapseGroup or CustomUpdate object |
var_name | name of weight update model variable in synapse group to reference |
tp_sg | (optional) SynapseGroup object to copy transpose of variable to |
tp_var_name | (optional) name of weight update model variable in tranpose synapse group to copy transpose to |
def pygenn.genn_model.init_connectivity | ( | init_sparse_connect_snippet, | |
param_space | |||
) |
This helper function creates a InitSparseConnectivitySnippet::Init object to easily initialise connectivity using a snippet.
init_sparse_connect_snippet | type of the InitSparseConnectivitySnippet class as string or instance of class derived from InitSparseConnectivitySnippet::Custom. |
param_space | dict with param values for the InitSparseConnectivitySnippet class |
def pygenn.genn_model.init_toeplitz_connectivity | ( | init_toeplitz_connect_snippet, | |
param_space | |||
) |
This helper function creates a InitToeplitzConnectivitySnippet::Init object to easily initialise connectivity using a snippet.
init_toeplitz_connect_snippet | type of the InitToeplitzConnectivitySnippet class as string or instance of class derived from InitSparseConnectivitySnippet::Custom. |
param_space | dict with param values for the InitToeplitzConnectivitySnippet class |
def pygenn.genn_model.init_var | ( | init_var_snippet, | |
param_space | |||
) |
This helper function creates a VarInit object to easily initialise a variable using a snippet.
init_var_snippet | type of the InitVarSnippet class as string or instance of class derived from InitVarSnippet::Custom class. |
param_space | dict with param values for the InitVarSnippet class |
pygenn.genn_model.backend_modules = OrderedDict() |
pygenn.genn_model.GeNNType = namedtuple("GeNNType", ["np_dtype", "assign_ext_ptr_array", "assign_ext_ptr_single"]) |
pygenn.genn_model.m = import_module(".genn_wrapper." + b + "Backend", "pygenn") |