allensdk.model.glif.glif_neuron_methods module¶
The methods in this module are used for configuring dynamics and reset rules for the GlifNeuron. For more details on how to use these methods, see Generalized LIF Models.
- class allensdk.model.glif.glif_neuron_methods.GlifNeuronMethod(method_name, method, method_params)[source]¶
Bases:
object
A simple class to keep track of the name and parameters associated with a neuron method. This class is initialized with a name, function, and parameters to pass to the function. The function then has those passed parameters fixed to a partial function using functools.partial. This class then mimics a function itself using the __call__ convention. Parameters that are not fixed in this way are assumed to be passed into the method when it is called. If the passed parameters contain an argument that is not part of the function signature, an exception will be raised.
- Parameters:
- method_namestring
A shorthand name that will be used to reference this method in the GlifNeuron.
- methodfunction
A python function to be called when this instance is called.
- method_paramsdict
A dictionary mapping function arguments to values for values that should be fixed.
- modify_parameter(param, operator)[source]¶
Modify a function parameter needs to be modified after initialization.
- Parameters:
- paramstring
the name of the parameter to modify
- operatorcallable
a function or lambda that returns the desired modified value
- Returns:
- type
the new value of the variable that was just modified.
- allensdk.model.glif.glif_neuron_methods.dynamics_AScurrent_exp(neuron, AScurrents_t0, time_step, spike_time_steps)[source]¶
Exponential afterspike current dynamics method takes a current at t0 and returns the current at a time step later.
- allensdk.model.glif.glif_neuron_methods.dynamics_AScurrent_none(neuron, AScurrents_t0, time_step, spike_time_steps)[source]¶
This method always returns zeros for the afterspike currents, regardless of input.
- allensdk.model.glif.glif_neuron_methods.dynamics_threshold_inf(neuron, threshold_t0, voltage_t0, AScurrents_t0, inj)[source]¶
Set threshold to the neuron’s instantaneous threshold.
- Parameters:
- neuronclass
- threshold_t0not used here
- voltage_t0not used here
- AScurrents_t0not used here
- injnot used here
- AScurrents_t0not used here
- injnot used here
- allensdk.model.glif.glif_neuron_methods.dynamics_threshold_spike_component(neuron, threshold_t0, voltage_t0, AScurrents_t0, inj, a_spike, b_spike, a_voltage, b_voltage)[source]¶
Analytical solution for spike component of threshold. The threshold will adapt via a component initiated by a spike which decays as an exponential. The component is in reference to threshold infinity and are recorded in the neuron’s threshold components. The voltage component of the threshold is set to zero in the threshold components because it is zero here The third component refers to th_inf which is added separately as opposed to being included in the voltage component of the threshold as is done in equation 2.1 of Mihalas and Nieber 2009. Threshold infinity is removed for simple optimization.
- Parameters:
- neuronclass
- threshold_t0float
threshold input to function
- voltage_t0float
voltage input to function
- AScurrents_t0vector
values of after spike currents
- injfloat
current injected into the neuron
- allensdk.model.glif.glif_neuron_methods.dynamics_threshold_three_components_exact(neuron, threshold_t0, voltage_t0, AScurrents_t0, inj, a_spike, b_spike, a_voltage, b_voltage)[source]¶
Analytical solution for threshold dynamics. The threshold will adapt via two mechanisms: 1. a voltage dependent adaptation. 2. a component initiated by a spike which decays as an exponential. These two component are in reference to threshold infinity and are recorded in the neuron’s threshold components. The third component refers to th_inf which is added separately as opposed to being included in the voltage component of the threshold as is done in equation 2.1 of Mihalas and Nieber 2009. Threshold infinity is removed for simple optimization.
- Parameters:
- neuronclass
- threshold_t0float
threshold input to function
- voltage_t0float
voltage input to function
- AScurrents_t0vector
values of after spike currents
- injfloat
current injected into the neuron
- allensdk.model.glif.glif_neuron_methods.dynamics_voltage_linear_exact(neuron, voltage_t0, AScurrents_t0, inj)[source]¶
(TODO) Linear voltage dynamics.
- allensdk.model.glif.glif_neuron_methods.dynamics_voltage_linear_forward_euler(neuron, voltage_t0, AScurrents_t0, inj)[source]¶
(TODO) Linear voltage dynamics.
- allensdk.model.glif.glif_neuron_methods.max_of_line_and_const(x, b, c, d)[source]¶
Find the maximum of a value and a position on a line
- Parameters:
- x: float
x position on line 1
- c: float
slope of line 1
- d: float
y-intercept of line 1
- b: float
y-intercept of line 2
- Returns:
- float
the max of a line value and a constant
- allensdk.model.glif.glif_neuron_methods.min_of_line_and_zero(x, c, d)[source]¶
Find the minimum of a value and a position on a line
- Parameters:
- x: float
x position on line 1
- c: float
slope of line 1
- d: float
y-intercept of line 1
- b: float
y-intercept of line 2
- Returns:
- float
the max of a line value and a constant
- allensdk.model.glif.glif_neuron_methods.reset_AScurrent_none(neuron, AScurrents_t0)[source]¶
Reset afterspike currents to zero.
- allensdk.model.glif.glif_neuron_methods.reset_AScurrent_sum(neuron, AScurrents_t0, r)[source]¶
Reset afterspike currents by adding summed exponentials. Left over currents from last spikes as well as newly initiated currents from current spike. Currents amplitudes in neuron.asc_amp_array need to be the amplitudes advanced though the spike cutting. I.e. In the preprocessor if the after spike currents are calculated via the GLM from spike initiation the amplitude at the time after the spike cutting needs to be calculated and neuron.asc_amp_array needs to be set to this value.
- Parameters:
- rnp.ndarray
a coefficient vector applied to the afterspike currents
- allensdk.model.glif.glif_neuron_methods.reset_threshold_inf(neuron, threshold_t0, voltage_v1)[source]¶
Reset the threshold to instantaneous threshold.
- allensdk.model.glif.glif_neuron_methods.reset_threshold_three_components(neuron, threshold_t0, voltage_v1, a_spike, b_spike)[source]¶
This method calculates the two components of the threshold: a spike (fast) component and a voltage (slow) component. The threshold_components vectors are then updated so that the traces match the voltage, current, and total threshold traces. The spike component of the threshold decays via an exponential fit specified by the amplitude a_spike and the time constant b_spike fit via the multiblip data. The voltage component does not change during the duration of the spike. The spike component are threshold component are summed along with threshold infinity to return the total threshold. Note that in the current implementation a_spike is added to the last value of the threshold_components which means that a_spike is the amplitude after spike cutting (if there is any).
- Inputs:
- neuron: class
contains attributes of the neuron
- threshold_t0, voltage_t0: float
are not used but are here for consistency with other methods
- a_spike: float
amplitude of the exponential decay of spike component of threshold after spike cutting has been implemented.
- b_spike: float
amplitude of the exponential decay of spike component of threshold
- Outputs:
- Returns: float
the total threshold which is the sum of the spike component of threshold, the voltage component of threshold and threshold infinity (with it’s corresponding coefficient)
- neuron.threshold_components: dictionary containing
- a spike: list
vector of spiking component of threshold that corresponds to the voltage, current, and total threshold traces
- b_spike: list
- vector of voltage component of threshold that corresponds to the voltage, current,
and total threshold traces.
Note that this function can be changed to use a_spike at the time of the spike and then have the the spike component plus the residual decay thought the spike. There are benefits and drawbacks to this. This potential change would be beneficial as it perhaps makes more biological sense for the threshold to go up at the time of spike if the traces are ever used. Also this would mean that a_spike would not have to be adjusted thought the spike cutting after the multiblip fit. However the current implementation makes sense in that it is similar to how afterspike currents are implemented.
- allensdk.model.glif.glif_neuron_methods.reset_voltage_v_before(neuron, voltage_t0, a, b)[source]¶
Reset voltage to the previous value with a scale and offset applied.
- Parameters:
- afloat
voltage scale constant
- bfloat
voltage offset constant
- allensdk.model.glif.glif_neuron_methods.reset_voltage_zero(neuron, voltage_t0)[source]¶
Reset voltage to zero.
- allensdk.model.glif.glif_neuron_methods.spike_component_of_threshold_exact(th0, b_spike, t)[source]¶
Spike component of threshold modeled as an exponential decay. Implemented here as exact analytical solution.
- Parameters:
- th0float
threshold input to function
- b_spikefloat
decay constant of exponential
- tfloat or array
time step if used in an Euler setup time if used analytically
- allensdk.model.glif.glif_neuron_methods.spike_component_of_threshold_forward_euler(th_t0, b_spike, dt)[source]¶
Spike component of threshold modeled as an exponential decay. Implemented here for forward Euler
- Parameters:
- th_t0float
threshold input to function
- b_spikefloat
decay constant of exponential
- dtfloat
time step
- allensdk.model.glif.glif_neuron_methods.voltage_component_of_threshold_exact(th0, v0, I, t, a_voltage, b_voltage, C, g, El)[source]¶
Note this function is the exact formulation; however, dt is used because t0 is the initial time and dt is the time the function is exactly evaluated at. Note: that here, this equation is in reference to th_inf. Therefore th0 is the total threshold-thr_inf (threshold_inf replaced with 0 in the equation to be verbose). This is done so that th_inf can be optimized without affecting this function.
- Parameters:
- th0float
threshold input to function
- v0float
voltage input to function
- Ifloat
total current entering neuron (note if there are after spike currents these must be included in this value)
- tfloat or array
time step if used in an Euler setup time if used analytically
- a_voltagefloat
constant a
- b_voltagefloat
constant b
- Cfloat
capacitance
- gfloat
conductance (1/resistance)
- Elfloat
reversal potential
- allensdk.model.glif.glif_neuron_methods.voltage_component_of_threshold_forward_euler(th_t0, v_t0, dt, a_voltage, b_voltage, El)[source]¶
Equation 2.1 of Mihalas and Nieber, 2009 implemented for use in forward Euler. Note here all variables are in reference to threshold infinity. Therefore thr_inf is zero here (replaced threshold_inf with 0 in the equation to be verbose). This is done so that th_inf can be optimized without affecting this function.
- Parameters:
- th_t0float
threshold input to function
- v_t0float
voltage input to function
- dtfloat
time step
- a_voltagefloat
constant a
- b_voltagefloat
constant b
- Elfloat
reversal potential