Emitters API¶
Neuron models and emitter implementations for neural dynamics simulation.
Izhikevich Model¶
jaxfne.set_emitter("izhikevich", preset="cortical_eig")
The Izhikevich neuron model is a phenomenological spiking neuron model with two state variables (v, u). It provides a good balance between computational efficiency and biological realism for tutorial-scale simulations.
State Variables¶
v(mV): Membrane potential (-90 to 30 mV typical range)u(µA): Membrane recovery variable (adaptation/refractory effects)
Dynamics¶
dv/dt = 0.04*v² + 5*v + 140 - u + I
du/dt = a*(b*v - u)
If v ≥ 30 mV, spike occurs and states reset:
v ← c
u ← u + d
Parameters¶
Parameters are organized in IzhikevichParams dataclass:
a(float): Recovery timescale (0.02 typical)b(float): Coupling strength (0.2 typical)c(float): Reset voltage (-65 mV typical)d(float): Recovery reset (6 µA typical)I_injected(float): Injected current baseline (optional)
Presets¶
Available presets define different neuron behaviors:
| Preset | Behavior | Use Case |
|---|---|---|
"cortical_eig" |
Regular spiking, moderate firing | Tutorial default |
"tonic_spiking" |
Continuous firing | Sustained activity |
"phasic_spiking" |
Burst then adapt | Transient responses |
"fast_spiking" |
High-frequency spikes | Inhibitory interneurons |
"chattering" |
Burst patterns | Bursting neurons |
Example:
cfg = jtfne.Configuration()
cfg = cfg.set_emitter("izhikevich", "cortical_eig")
IzhikevichParams¶
jaxfne.IzhikevichParams
Parameter container for Izhikevich neuron model.
Attributes¶
a(float): Recovery timescaleb(float): Coupling strengthc(float): Reset voltage (mV)d(float): Recovery reset (µA)
Methods¶
class_method(class_label: str) -> IzhikevichParams¶
Create parameters for a specific neuron class.
Parameters:
- class_label (str): Neuron class (e.g., "excitatory", "inhibitory", "fast_spiking")
Returns: IzhikevichParams with preset values
Example:
exc_params = jtfne.IzhikevichParams.class_method("excitatory")
ReceptorSpec¶
jaxfne.ReceptorSpec
Specification for synaptic receptor types and kinetics.
Attributes¶
name(str): Receptor name (e.g., "AMPA", "NMDA", "GABA_A")tau_decay(float): Time constant (ms)reversal(float): Reversal potential (mV)conductance_scaling(float): Weight factor
Standard Receptors¶
Access via jaxfne.standard_receptor_specs():
- AMPA: Fast excitatory (1–2 ms)
- NMDA: Slow excitatory (100 ms)
- GABA_A: Fast inhibitory (5–10 ms)
- GABA_B: Slow inhibitory (100–200 ms)
Example:
receptors = jtfne.standard_receptor_specs()
SynapseSpec¶
jaxfne.SynapseSpec
Specification for synaptic connections between neurons.
Attributes¶
source_idx(int): Source neuron indextarget_idx(int): Target neuron indexreceptor(str): Receptor type (e.g., "AMPA", "GABA_A")weight(float): Synaptic strength (conductance)delay(float, optional): Transmission delay (ms)
EIGNetwork¶
jaxfne.EIGNetwork
Excitatory-Inhibitory-Gap junction network representation.
Attributes¶
n_exc(int): Number of excitatory neuronsn_inh(int): Number of inhibitory neuronssynapse_specs(list[SynapseSpec]): Connection listgap_specs(list[SynapseSpec], optional): Gap junction connections
Methods¶
to_dense() -> dict¶
Convert to dense adjacency matrix representation.
Returns: Dictionary with connectivity matrices
Example:
network = jtfne.EIGNetwork(n_exc=100, n_inh=20)
dense = network.to_dense()
EdgeList¶
jaxfne.EdgeList
Sparse edge list representation of network connectivity.
Attributes¶
edges(jax.Array): Connection indices [2, num_edges]weights(jax.Array): Synaptic weights [num_edges]
Methods¶
from_dense(adj_matrix: jax.Array) -> EdgeList¶
Create EdgeList from dense adjacency matrix.
Parameters:
- adj_matrix (jax.Array): Dense connectivity matrix
Returns: EdgeList
Example:
dense = jnp.ones((100, 100))
edges = jtfne.EdgeList.from_dense(dense)
Emitter Functions¶
simulate_eig_izhikevich(cfg, I_ext, seed) -> (spikes, V_m, u)¶
Simulate Excitatory-Inhibitory-Gap junction network with Izhikevich dynamics.
Parameters:
- cfg (Configuration): Network configuration
- I_ext (jax.Array): External input current [time, neurons]
- seed (int): Random seed
Returns: Tuple of (spikes, membrane voltage, recovery variable)
Example:
spikes, V_m, u = jtfne.simulate_eig_izhikevich(cfg, I_ext, seed=7)
make_eig_network(n_exc, n_inh, ...) -> EIGNetwork¶
Create an Excitatory-Inhibitory-Gap junction network structure.
Parameters:
- n_exc (int): Number of excitatory neurons
- n_inh (int): Number of inhibitory neurons
- Additional connectivity parameters
Returns: EIGNetwork object
Example:
network = jtfne.make_eig_network(n_exc=80, n_inh=20)
standard_receptor_specs() -> dict[str, ReceptorSpec]¶
Get standard synaptic receptor specifications.
Returns: Dictionary of receptor type → ReceptorSpec
Available types: AMPA, NMDA, GABA_A, GABA_B
Example:
receptors = jtfne.standard_receptor_specs()
print(receptors["AMPA"])
Scope Notes¶
- Izhikevich model is phenomenological: Not a detailed Hodgkin-Huxley model; suitable for tutorial and prototyping workflows
- Spike threshold (v ≥ 30 mV): Fixed threshold; not voltage-dependent channels
- Synaptic kinetics: Exponential decay; suitable for learning-scale simulations
- Network connectivity: Declared via configuration; not learned (unless using optimization workflow)