IonChannel#

class braincell.IonChannel(size, name=None)#

Base class for modeling ion channel dynamics in neuronal simulations.

The IonChannel class serves as a foundation for implementing various types of ion channels, including those for specific ions (e.g., sodium, potassium) or mixtures of ions. It provides a structure for defining the behavior and properties of ion channels within a neuron model.

This class is designed to be subclassed to create specific ion channel models. Subclasses should implement the core methods to define the channel’s behavior, such as current calculation, state initialization, and derivative computation.

in_size#

The dimensions of the ion channel, representing its size (e.g., number of neurons, number of compartments).

Type:

tuple

out_size#

Same as in_size, representing the output dimensions of the channel.

Type:

tuple

name#

A name identifier for the ion channel.

Type:

str, optional

Notes

  • Subclasses should override the abstract methods (current, compute_derivative, init_state, reset_state) to define the specific behavior of the ion channel.

  • The class integrates with the broader neuron modeling framework, allowing for complex simulations of neuronal dynamics.

  • It’s designed to work within a hierarchical structure of neuronal components, as indicated by its inheritance from TreeNode.

Example

class SodiumChannel(IonChannel):
    def __init__(self, size, g_max):
        super().__init__(size)
        self.g_max = g_max

    def current(self, V, Na):
        # Implement sodium current calculation
        pass

    def compute_derivative(self, V, Na):
        # Implement derivative computation for channel states
        pass

    def init_state(self, V, Na, batch_size=None):
        # Initialize channel states
        pass

    def reset_state(self, V, Na, batch_size=None):
        # Reset channel states
        pass
compute_derivative(*args, **kwargs)[source]#

Compute the derivative of the channel’s state variables.

This method should be implemented by subclasses to calculate how the channel’s state changes over time.

Parameters:
  • *args – Variable length argument list.

  • **kwargs – Arbitrary keyword arguments.

Raises:

NotImplementedError – This method must be implemented by subclasses.

current(*args, **kwargs)[source]#

Calculate the current for this ion channel.

This method should be implemented by subclasses to compute the current based on the channel’s specific properties and state.

Parameters:
  • *args – Variable length argument list.

  • **kwargs – Arbitrary keyword arguments.

Raises:

NotImplementedError – This method must be implemented by subclasses.

init_state(*args, **kwargs)[source]#

Initialize the state of the ion channel.

This method should set up the initial state of all variables for the channel.

Parameters:
  • *args – Variable length argument list.

  • **kwargs – Arbitrary keyword arguments.

post_integral(*args, **kwargs)[source]#

Perform post-integration operations.

This method is called after the integration step in simulations. It should be used to update the channel’s state based on the results of integration.

Parameters:
  • *args – Variable length argument list.

  • **kwargs – Arbitrary keyword arguments.

Raises:

NotImplementedError – This method must be implemented by subclasses.

pre_integral(*args, **kwargs)[source]#

Perform pre-integration operations.

This method is called before the integration step in simulations. It can be used to prepare the channel’s state or perform any necessary calculations before integration.

Parameters:
  • *args – Variable length argument list.

  • **kwargs – Arbitrary keyword arguments.

reset_state(*args, **kwargs)[source]#

Reset the state of the ion channel.

This method should reset all state variables of the channel to their initial values.

Parameters:
  • *args – Variable length argument list.

  • **kwargs – Arbitrary keyword arguments.

property varshape#

Get the shape of variables in the neuron group.

Returns:

The shape of variables, typically representing the dimensions of the neuron group.

Return type:

tuple