示例#1
0
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)
示例#2
0
    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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)
示例#6
0
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)
示例#7
0
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)
示例#8
0
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)
示例#9
0
    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)