Source code for jaxley.synapses.tanh_conductance
# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is
# licensed under the Apache License Version 2.0, see <https://www.apache.org/licenses/>
from typing import Dict, Optional
import jax.numpy as jnp
from jaxley.synapses.synapse import Synapse
[docs]
class TanhConductanceSynapse(Synapse):
"""
Compute synaptic current for a simple conductance synapse (no state).
This is just the TanhRateSynapse with current affected by the postsynaptic
conductance.
"""
def __init__(self, name: Optional[str] = None):
super().__init__(name)
prefix = self._name
self.synapse_params = {
f"{prefix}_gS": 1e-4,
f"{prefix}_e_syn": 0.0, # mV
f"{prefix}_x_offset": -70.0,
f"{prefix}_slope": 1.0,
}
self.synapse_states = {}
[docs]
def update_states(
self,
states: Dict,
delta_t: float,
pre_voltage: float,
post_voltage: float,
params: Dict,
) -> Dict:
"""Return updated synapse state and current."""
return {}
[docs]
def compute_current(
self, states: Dict, pre_voltage: float, post_voltage: float, params: Dict
) -> float:
"""Return updated synapse state and current."""
prefix = self._name
tanh_pre_voltage = jnp.tanh(
(pre_voltage - params[f"{prefix}_x_offset"]) * params[f"{prefix}_slope"]
)
current = (
tanh_pre_voltage
* params[f"{prefix}_gS"]
* (post_voltage - params[f"{prefix}_e_syn"])
)
return current