Source code for neuronunit.models.static

import pickle
from neo.core import AnalogSignal
import sciunit
import sciunit.capabilities as scap
import neuronunit.capabilities as cap
import neuronunit.capabilities.spike_functions as sf


[docs]class StaticModel(sciunit.Model, cap.ReceivesSquareCurrent, cap.ProducesActionPotentials, cap.ProducesMembranePotential): """A model which produces a frozen membrane potential waveform.""" def __init__(self, vm): """Create an instace of a model that produces a static waveform. :param vm: either a neo.core.AnalogSignal or a path to a pickled neo.core.AnalogSignal """ if isinstance(vm, str): with open(vm, 'r') as f: vm = pickle.load(f) if not isinstance(vm, AnalogSignal): raise TypeError('vm must be a neo.core.AnalogSignal') self.vm = vm
[docs] def get_membrane_potential(self, **kwargs): """Return the Vm passed into the class constructor.""" return self.vm
[docs] def get_APs(self, **run_params): """Return the APs, if any, contained in the static waveform.""" vm = self.get_membrane_potential(**run_params) waveforms = sf.get_spike_waveforms(vm) return waveforms
[docs] def inject_square_current(self, current): """Static model always returns the same waveform. This method is for compatibility only.""" pass
[docs]class ExternalModel(sciunit.Model, cap.ProducesMembranePotential, scap.Runnable): """A model which produces a frozen membrane potential waveform.""" def __init__(self): """Create an instace of a model that produces a static waveform."""
[docs] def set_membrane_potential(self, vm): self.vm = vm
[docs] def set_model_attrs(self, attrs): self.attrs = attrs
[docs] def get_membrane_potential(self): return self.vm