calix.hagen.neuron.NeuronCalibTarget

class calix.hagen.neuron.NeuronCalibTarget(target_leak_read: Union[int, numpy.ndarray] = 120, tau_mem: quantities.quantity.Quantity = array(60.) * us, tau_syn: quantities.quantity.Quantity = array(0.32) * us, i_synin_gm: int = 450, target_noise: Optional[float] = None, synapse_dac_bias: int = 1022)

Bases: calix.common.base.CalibTarget

Target parameters for the neuron calibration.

Variables
  • target_leak_read – Target CADC read at resting potential of the membrane. Due to the low leak bias currents, the spread of resting potentials may be high even after calibration.

  • tau_mem – Targeted membrane time constant while calibrating the synaptic inputs. Too short values can not be achieved with this calibration routine. The default value of 60 us should work. If a target_noise is given (default), this setting does not affect the final leak bias currents, as those are determined by reaching the target noise.

  • tau_syn – Controls the synaptic input time constant. If set to 0 us, the minimum synaptic input time constant will be used, which means different synaptic input time constants per neuron. If a single different Quantity is given, it is used for all synaptic inputs of all neurons, excitatory and inhibitory. If an array of Quantities is given, it can be shaped (2, 512) for the excitatory and inhibitory synaptic input of each neuron. It can also be shaped (2,) for the excitatory and inhibitory synaptic input of all neurons, or shaped (512,) for both inputs per neuron.

  • i_synin_gm – Target synaptic input OTA bias current. The amplitudes of excitatory inputs using this target current are measured, and the median of all neurons’ amplitudes is taken as target for calibration of the synaptic input strengths. The inhibitory synaptic input gets calibrated to match the excitatory. Some 300 LSB are proposed here. Choosing high values yields higher noise and lower time constants on the neurons, choosing low values yields less gain in a multiplication.

  • target_noise – Noise amplitude in an integration process to aim for when searching the optimum leak OTA bias current, given as the standard deviation of successive reads in CADC LSB. Higher noise settings mean longer membrane time constants but impact reproducibility. Set target_noise to None to skip optimization of noise amplitudes entirely. In this case, the original membrane time constant calibration is used for leak bias currents.

  • synapse_dac_bias – Synapse DAC bias current that is desired. Can be lowered in order to reduce the amplitude of a spike at the input of the synaptic input OTA. This can be useful to avoid saturation when using larger synaptic time constants.

__init__(target_leak_read: Union[int, numpy.ndarray] = 120, tau_mem: quantities.quantity.Quantity = array(60.) * us, tau_syn: quantities.quantity.Quantity = array(0.32) * us, i_synin_gm: int = 450, target_noise: Optional[float] = None, synapse_dac_bias: int = 1022)None

Initialize self. See help(type(self)) for accurate signature.

Methods

__init__([target_leak_read, tau_mem, …])

Initialize self.

check_types()

Check whether the correct types are given.

check_values()

Check whether calibration targets are feasible.

Attributes

feasible_ranges

i_synin_gm

synapse_dac_bias

target_leak_read

target_noise

tau_mem

tau_syn

check_types()

Check whether the correct types are given.

Raises

TypeError – If time constants are not given with a unit from the quantities package.

check_values()

Check whether calibration targets are feasible.

Log warnings if the parameters are out of the typical range which can be calibrated and raise an error if the time constants exceed the range which can be handled by the calibration routine.

Raises

ValueError – If target parameters are outside the allowed range for hagen neuron calibration.

feasible_ranges: ClassVar[Dict[str, ParameterRange]] = {'i_synin_gm': ParameterRange(lower=30, upper=600), 'synapse_dac_bias': ParameterRange(lower=30, upper=1022), 'target_leak_read': ParameterRange(lower=100, upper=140), 'target_noise': ParameterRange(lower=1.0, upper=2.5), 'tau_mem': ParameterRange(lower=array(20.) * us, upper=array(100.) * us), 'tau_syn': ParameterRange(lower=array(0.3) * us, upper=array(20.) * us)}
i_synin_gm: int = 450
synapse_dac_bias: int = 1022
target_leak_read: Union[int, numpy.ndarray] = 120
target_noise: Optional[float] = None
tau_mem: quantities.quantity.Quantity = array(60.) * us
tau_syn: quantities.quantity.Quantity = array(0.32) * us