def test_strict_stiminterval(): """basic: Test strict_stiminterval""" import efel for strict, n_of_spikes in [(False, 5), (True, 3)]: efel.reset() efel.setIntSetting("strict_stiminterval", strict) stim_start = 600.0 stim_end = 750.0 time = efel.io.load_fragment('%s#col=1' % meanfrequency1_url) voltage = efel.io.load_fragment('%s#col=2' % meanfrequency1_url) trace = {} trace['T'] = time trace['V'] = voltage trace['stim_start'] = [stim_start] trace['stim_end'] = [stim_end] features = ['peak_indices', 'peak_time', 'Spikecount'] feature_values = \ efel.getFeatureValues( [trace], features, raise_warnings=False) peak_indices = feature_values[0]['peak_indices'] peak_time = feature_values[0]['peak_time'] spikecount = feature_values[0]['Spikecount'] nt.assert_equal(len(peak_indices), n_of_spikes) nt.assert_equal(len(peak_time), n_of_spikes) nt.assert_equal(spikecount, n_of_spikes)
def _setup_efel(self): """Set up efel before extracting the feature""" import efel efel.reset() if self.threshold is not None: efel.setThreshold(self.threshold) if self.stimulus_current is not None: efel.setDoubleSetting('stimulus_current', self.stimulus_current) if self.interp_step is not None: efel.setDoubleSetting('interp_step', self.interp_step) if self.double_settings is not None: for setting_name, setting_value in self.double_settings.items(): efel.setDoubleSetting(setting_name, setting_value) if self.int_settings is not None: for setting_name, setting_value in self.int_settings.items(): efel.setIntSetting(setting_name, setting_value) if self.string_settings is not None: for setting_name, setting_value in self.string_settings.items(): efel.setStrSetting(setting_name, setting_value)
def test_unfinished_peak(): """basic: Test if unfinished peak doesn't break Spikecount""" import efel efel.setIntSetting('strict_stiminterval', True) dt = 0.1 v = numpy.zeros(int(100 / dt)) - 70.0 v[int(20 / dt):int(25 / dt)] = 20. v[int(40 / dt):int(45 / dt)] = 20. v[int(60 / dt):int(65 / dt)] = 20. trace = {} trace['T'] = numpy.arange(len(v)) * dt trace['V'] = v trace['stim_start'] = [10] trace['stim_end'] = [70] traces_results = efel.getFeatureValues([trace], ['Spikecount']) spikecount = traces_results[0]['Spikecount'][0] nt.assert_equal(spikecount, 3) # When the signal at the end of the trace is larger than the threshold, # Spikecount and possibly other features cannont be estimated. v[int(80 / dt):] = -19 traces_results = efel.getFeatureValues([trace], ['Spikecount']) spikecount = traces_results[0]['Spikecount'][0] nt.assert_equal(spikecount, 3)
def test_min_AHP_indices_strict(): """basic: Test min_AHP_indices with strict_stiminterval""" import efel for strict, n_of_ahp in [(False, 17), (True, 16)]: efel.reset() efel.setIntSetting('strict_stiminterval', strict) stim_start = 700.0 stim_end = 2700.0 time = efel.io.load_fragment('%s#col=1' % ahptest1_url) voltage = efel.io.load_fragment('%s#col=2' % ahptest1_url) trace = {} trace['T'] = time trace['V'] = voltage trace['stim_start'] = [stim_start] trace['stim_end'] = [stim_end] features = ['min_AHP_indices', 'AHP_time_from_peak', 'peak_time'] feature_values = \ efel.getFeatureValues( [trace], features, raise_warnings=False) min_AHP_indices = feature_values[0]['min_AHP_indices'] AHP_time_from_peak = feature_values[0]['AHP_time_from_peak'] nt.assert_equal(len(min_AHP_indices), n_of_ahp) nt.assert_equal(len(AHP_time_from_peak), n_of_ahp)
def test_derivwindow1(): """basic: Test DerivativeWindow""" import efel efel.reset() stim_start = 100.0 stim_end = 1000.0 time = efel.io.load_fragment('%s#col=1' % derivwindow1_url) voltage = efel.io.load_fragment('%s#col=2' % derivwindow1_url) trace = {} trace['T'] = time trace['V'] = voltage trace['stim_start'] = [stim_start] trace['stim_end'] = [stim_end] features = ['AP_begin_voltage'] feature_values = \ efel.getFeatureValues( [trace], features) AP_begin_voltage = feature_values[0]['AP_begin_voltage'][0] nt.assert_almost_equal(AP_begin_voltage, -45.03627393790836) efel.reset() efel.setDoubleSetting('interp_step', 0.01) feature_values = \ efel.getFeatureValues( [trace], features) AP_begin_voltage = feature_values[0]['AP_begin_voltage'][0] nt.assert_almost_equal(AP_begin_voltage, -83.57661997973835) efel.reset() efel.setDoubleSetting('interp_step', 0.01) efel.setIntSetting('DerivativeWindow', 30) feature_values = \ efel.getFeatureValues( [trace], features) AP_begin_voltage = feature_values[0]['AP_begin_voltage'][0] nt.assert_almost_equal(AP_begin_voltage, -45.505521563640386)
def _setup_efel(self): """Set up efel before extracting the feature""" import efel efel.reset() if self.threshold is not None: efel.setThreshold(self.threshold) if self.stimulus_current is not None: efel.setDoubleSetting('stimulus_current', self.stimulus_current) if self.interp_step is not None: efel.setDoubleSetting('interp_step', self.interp_step) if self.double_settings is not None: for setting_name, setting_value in self.double_settings.items(): efel.setDoubleSetting(setting_name, setting_value) if self.int_settings is not None: for setting_name, setting_value in self.int_settings.items(): efel.setIntSetting(setting_name, setting_value)