odynn.neuron module

class odynn.neuron.BioNeuronTf(init_p=None, dt=0.1, fixed=(), constraints=None, groups=None, n_rand=None)[source]

Bases: odynn.models.celeg.CElegansNeuron, odynn.neuron.NeuronTf

Class representing a neuron, implemented using Tensorflow. This class allows simulation and optimization, alone and in a Circuit. It can contain several neurons at the same time. Which in turn can be optimized in parallel, or be used to represent the entire neurons in a Circuit.

Attributes:
groups

list indicating the group of each neuron

hidden_init_state

For behavioral models eg LSTM

init_params

initial model parameters

init_state

ndarray, Initial state vector

num

int, Number of neurons being modeled in this object

parameter_names
trainable

True if the object can be optimized

variables

Current variables of the models

Methods

apply_constraints(session) Apply the constraints to the object variables
build_graph([batch]) Build a tensorflow graph for running the neuron(s) on a series of input :param batch: dimension of the batch :type batch: int
calculate(i) Iterate over i (current) and return the state variables obtained after each step
get_random() Returns a dictionnary of random parameters
init(batch) Method to implement whe initialization is needed, will be called before reset
parallelize(n) Add a dimension of size n in the initial parameters and initial state
plot_output(ts, i_inj, states[, y_states, …]) Plot voltage and ion concentrations, potentially compared to a target model
plot_results(ts, i_inj_values, results[, …]) plot all dynamics
plot_vars(var_dic[, suffix, show, save, func]) plot variation/comparison/boxplots of all variables organized by categories
plot_vars_gate(name, mdp, scale, tau, fig, …) plot the gates variables
reset() rebuild tf variable graph
settings() Returns(str): string describing the object
step(X, i_inj) Integrate and update state variable (voltage and possibly others) after one time step
apply_init  
boxplot_vars  
predump  
set_init_param  
study_vars  
__init__(init_p=None, dt=0.1, fixed=(), constraints=None, groups=None, n_rand=None)[source]

Initializer :param init_p: initial parameters of the neuron(s). If init_p is a list, then this object

will model n = len(init_p) neurons
Parameters:
  • dt (float) – time step
  • fixed (set) – parameters that are fixed and will stay constant in case of optimization. if fixed == ‘all’, all parameters will be constant
  • constraints (dict of ndarray) – keys as parameters name, and values as [lower_bound, upper_bound]
apply_constraints(session)[source]

Apply the constraints to the object variables

Parameters:session – tensorflow session
build_graph(batch=None)[source]

Build a tensorflow graph for running the neuron(s) on a series of input :param batch: dimension of the batch :type batch: int

Returns:input placeholder and results of the run
Return type:tf.placeholder, tf.Tensor
calculate(i)[source]

Iterate over i (current) and return the state variables obtained after each step

Parameters:i (ndarray) – input current
Returns:state vectors concatenated [i.shape[0], len(self.init_state)(, i.shape[1]), self.num]
Return type:ndarray
groups

list indicating the group of each neuron Neurons with the same group share the same parameters

init_params

initial model parameters

parallelize(n)[source]

Add a dimension of size n in the initial parameters and initial state

Parameters:n (int) – size of the new dimension
reset()[source]

rebuild tf variable graph

set_init_param(name, value=None)[source]
settings()[source]

Returns(str): string describing the object

trainable

True if the object can be optimized

variables

Current variables of the models

class odynn.neuron.NeuronLSTM(nb_layer=1, layer_size=50, extra_ca=0, dt=0.1, vars_init=None)[source]

Bases: odynn.neuron.NeuronTf

Behavior model of a neuron using an LSTM network

Attributes:
groups

list indicating the group of each neuron

hidden_init_state

Give the initial state needed for the LSTM network

init_params

Initial model parameters

init_state

ndarray, Initial state vector

num

Number of neurons contained in the object, always 1 here

trainable

boolean stating if the neuron can be optimized

variables

dict, current Tf variables

Methods

apply_constraints(session) Apply necessary constraints to the optimized variables
apply_init(sess) Initialize the variables if loaded object
build_graph([batch]) Build the tensorflow graph.
calculate(i) Iterate over i (current) and return the state variables obtained after each step
init(batch) Method to implement whe initialization is needed, will be called before reset
plot_output(ts, i_inj, states[, y_states, …]) Plot voltage and ion concentrations, potentially compared to a target model
plot_vars(var_dic, suffix, show, save) A function to plot the variables of the optimized object
settings() Returns(str): string describing the object
step(X, hprev, i_inj) Update function
predump  
reset  
study_vars  
apply_init(sess)[source]

Initialize the variables if loaded object

Parameters:sess – tf.Session
build_graph(batch=1)[source]

Build the tensorflow graph. Take care of the loop and the initial state.

calculate(i)[source]

Iterate over i (current) and return the state variables obtained after each step

Parameters:i (ndarray) – input current
Returns:state vectors concatenated [i.shape[0], len(self.init_state)(, i.shape[1]), self.num]
Return type:ndarray
hidden_init_state

Give the initial state needed for the LSTM network

init(batch)[source]

Method to implement whe initialization is needed, will be called before reset

Parameters:batch (int) – number of batches
init_params

Initial model parameters

num

Number of neurons contained in the object, always 1 here

predump(sess)[source]
reset()[source]
settings()[source]

Returns(str): string describing the object

step(X, hprev, i_inj)[source]

Update function

Parameters:
  • X (Tensor) – not used here, classical state
  • hprev (tuple of LSTMStateTuple) – previous LSTM state
  • i_inj (Tensor) – array of input currents, dimension [batch]
Returns:

Tensor containing the voltages in the first position

Return type:

Tensor

class odynn.neuron.NeuronTf(dt=0.1)[source]

Bases: odynn.models.model.Neuron, odynn.optim.Optimized

Abstract class whose implementation allow single optimization as well as in a Circuit

Attributes:
groups

list indicating the group of each neuron

hidden_init_state

For behavioral models eg LSTM

init_params

dict, initial parameters

init_state

ndarray, Initial state vector

num

int, Number of neurons being modeled in this object

trainable

boolean stating if the neuron can be optimized

variables

dict, current Tf variables

Methods

apply_constraints(session) Apply necessary constraints to the optimized variables
build_graph([batch]) Build the tensorflow graph.
calculate(i) Iterate over i (current) and return the state variables obtained after each step
init(batch) Method to implement whe initialization is needed, will be called before reset
plot_output(ts, i_inj, states[, y_states, …]) Plot voltage and ion concentrations, potentially compared to a target model
plot_vars(var_dic, suffix, show, save) A function to plot the variables of the optimized object
settings() Give a string describing the settings Returns(str): description
step(X, i) Integrate and update state variable (voltage and possibly others) after one time step
apply_init  
predump  
study_vars  
default_init_state = array([-6.0e+01, 0.0e+00, 9.5e-01, 0.0e+00, 0.0e+00, 1.0e+00, 1.0e-07])
groups

list indicating the group of each neuron Neurons with the same group share the same parameters

hidden_init_state

For behavioral models eg LSTM

init(batch)[source]

Method to implement whe initialization is needed, will be called before reset

Parameters:batch (int) – number of batches
nb = 0
trainable

boolean stating if the neuron can be optimized

class odynn.neuron.Neurons(neurons)[source]

Bases: odynn.neuron.NeuronTf

This class allow to use neurons from different classes inheriting NeuronTf in a same Circuit

Attributes:
groups

list indicating the group of each neuron

hidden_init_state

For behavioral models eg LSTM

init_params

dict, initial parameters

init_state

ndarray, Initial state vector

num

int, Number of neurons being modeled in this object

trainable

boolean stating if the neuron can be optimized

variables

dict, current Tf variables

Methods

apply_constraints(session) Apply the constraints to the object variables
build_graph() Build the tensorflow graph.
calculate(i) Iterate over i (current) and return the state variables obtained after each step
init(batch) call init method for all contained neuron objects
plot_output(ts, i_inj, states[, y_states, …]) Plot voltage and ion concentrations, potentially compared to a target model
plot_vars(var_dic, suffix, show, save) A function to plot the variables of the optimized object
settings() Returns(str): string describing the object
step(X, hidden, i) Share the state and the input current into its embedded neurons
apply_init  
predump  
reset  
study_vars  
__init__(neurons)[source]
Parameters:neurons (list) – list of NeuronTf objects
Raises:AttributeError – If all neurons don’t share the same dt
apply_constraints(session)[source]

Apply the constraints to the object variables

Parameters:session – tensorflow session
apply_init(session)[source]
build_graph()[source]

Build the tensorflow graph. Take care of the loop and the initial state.

calculate(i)[source]

Iterate over i (current) and return the state variables obtained after each step

Parameters:i (ndarray) – input current
Returns:state vectors concatenated [i.shape[0], len(self.init_state)(, i.shape[1]), self.num]
Return type:ndarray
hidden_init_state

For behavioral models eg LSTM

init(batch)[source]

call init method for all contained neuron objects

predump(sess)[source]
reset()[source]
settings()[source]

Returns(str): string describing the object

step(X, hidden, i)[source]

Share the state and the input current into its embedded neurons

Parameters:
  • X (tf.Tensor) – precedent state vector
  • i (tf.Tensor) – input current
Returns:

next state vector

Return type:

ndarray

class odynn.neuron.PyBioNeuron(init_p=None, dt=0.1)[source]

Bases: odynn.models.celeg.CElegansNeuron

Class representing a neuron, implemented only in Python This class allows simulation but not optimization

Attributes:
init_state

ndarray, Initial state vector

num

int, Number of neurons being modeled in this object

parameter_names

Methods

calculate(i_inj) Simulate the neuron with input current i_inj and return the state vectors
get_random() Returns a dictionnary of random parameters
parallelize(n) Add a dimension of size n in the initial parameters and initial state
plot_output(ts, i_inj, states[, y_states, …]) Plot voltage and ion concentrations, potentially compared to a target model
plot_results(ts, i_inj_values, results[, …]) plot all dynamics
plot_vars(var_dic[, suffix, show, save, func]) plot variation/comparison/boxplots of all variables organized by categories
plot_vars_gate(name, mdp, scale, tau, fig, …) plot the gates variables
step(X, i_inj) Integrate and update state variable (voltage and possibly others) after one time step
boxplot_vars  
study_vars