Source code for brainpy._src.dyn.ions.potassium
from typing import Union, Callable, Optional
import brainpy.math as bm
from brainpy._src.dyn.base import IonChaDyn
from brainpy._src.initialize import Initializer
from brainpy.types import Shape, ArrayType
from .base import Ion
__all__ = [
'Potassium',
'PotassiumFixed',
]
[docs]
class Potassium(Ion):
"""Base class for modeling Potassium ion."""
pass
[docs]
class PotassiumFixed(Potassium):
"""Fixed Sodium dynamics.
This calcium model has no dynamics. It holds fixed reversal
potential :math:`E` and concentration :math:`C`.
"""
def __init__(
self,
size: Shape,
keep_size: bool = False,
E: Union[float, ArrayType, Initializer, Callable] = -950.,
C: Union[float, ArrayType, Initializer, Callable] = 0.0400811,
method: str = 'exp_auto',
name: Optional[str] = None,
mode: Optional[bm.Mode] = None,
**channels
):
super().__init__(size,
keep_size=keep_size,
method=method,
name=name,
mode=mode,
**channels)
self.E = self.init_param(E, self.varshape)
self.C = self.init_param(C, self.varshape)
def reset_state(self, V, C=None, E=None, batch_size=None):
C = self.C if C is None else C
E = self.E if E is None else E
nodes = self.nodes(level=1, include_self=False).unique().subset(IonChaDyn).values()
self.check_hierarchies(type(self), *tuple(nodes))
for node in nodes:
node.reset_state(V, C, E, batch_size)