diff --git a/efel/DependencyV5.txt b/efel/DependencyV5.txt index cd8d3ee5..02fa1841 100644 --- a/efel/DependencyV5.txt +++ b/efel/DependencyV5.txt @@ -1,154 +1,154 @@ -LibV5:peak_indices #LibV1:interpolate -LibV1:trace_check #LibV1:peak_time -LibV1:ISI_values #LibV1:peak_time -LibV1:doublet_ISI #LibV1:peak_time -LibV1:peak_voltage #LibV5:peak_indices -LibV1:burst_ISI_indices #LibV5:peak_indices #LibV1:ISI_values -LibV1:mean_frequency #LibV1:peak_time -LibV1:peak_time #LibV5:peak_indices -LibV1:time_to_first_spike #LibV1:peak_time -LibV1:adaptation_index #LibV1:peak_time -LibV1:adaptation_index2 #LibV1:peak_time -LibV1:spike_width2 #LibV5:min_AHP_indices -LibV1:AP_width #LibV5:peak_indices #LibV5:min_AHP_indices -LibV1:burst_mean_freq #LibV1:burst_ISI_indices #LibV1:peak_time -LibV1:burst_number #LibV1:burst_mean_freq -LibV1:interburst_voltage #LibV1:burst_ISI_indices -LibV1:AP_height #LibV1:peak_voltage -LibV1:AP_amplitude #LibV5:AP_begin_indices #LibV1:peak_voltage #LibV1:peak_time -LibV1:AHP_depth_abs_slow #LibV5:peak_indices -LibV1:AHP_slow_time #LibV1:AHP_depth_abs_slow -LibV1:time_constant -LibV1:voltage_deflection -LibV5:voltage_deflection_vb_ssse #LibV5:voltage_base #LibV5:steady_state_voltage_stimend -LibV1:ohmic_input_resistance #LibV1:voltage_deflection -LibV5:ohmic_input_resistance_vb_ssse #LibV5:voltage_deflection_vb_ssse -LibV1:maximum_voltage -LibV1:minimum_voltage LibV1:interpolate -LibV1:threshold_current -LibV1:steady_state_voltage -LibV3:depolarized_base -LibV1:ISI_CV #LibV1:ISI_values -LibV1:Spikecount #LibV5:peak_indices -LibV5:Spikecount_stimint #LibV1:peak_time -LibV1:AHP_depth #LibV5:voltage_base #LibV5:min_AHP_values -LibV2:AP_rise_indices #LibV5:peak_indices #LibV5:AP_begin_indices -LibV2:AP_end_indices #LibV5:peak_indices -LibV2:AP_fall_indices #LibV5:peak_indices #LibV5:AP_begin_indices #LibV2:AP_end_indices -LibV2:AP_duration #LibV5:AP_begin_indices #LibV2:AP_end_indices -LibV2:AP_duration_half_width #LibV2:AP_rise_indices #LibV2:AP_fall_indices -LibV2:AP_rise_time #LibV5:AP_begin_indices #LibV5:peak_indices -LibV2:AP_fall_time #LibV5:peak_indices #LibV2:AP_end_indices -LibV2:AP_rise_rate #LibV5:AP_begin_indices #LibV5:peak_indices -LibV2:AP_fall_rate #LibV5:peak_indices #LibV2:AP_end_indices -LibV2:fast_AHP #LibV5:AP_begin_indices #LibV5:min_AHP_indices -LibV2:AP_amplitude_change #LibV1:AP_amplitude -LibV2:AP_duration_change #LibV2:AP_duration -LibV2:AP_rise_rate_change #LibV2:AP_rise_rate -LibV2:AP_fall_rate_change #LibV2:AP_fall_rate -LibV2:fast_AHP_change #LibV2:fast_AHP -LibV2:AP_duration_half_width_change #LibV2:AP_duration_half_width -LibV2:E6 #LibV1:AP_amplitude;APWaveForm -LibV2:E7 #LibV2:AP_duration;APWaveForm -LibV1:single_burst_ratio #LibV1:ISI_values -LibV2:BPAPatt2 #LibV1:peak_voltage;location_soma #LibV5:voltage_base;location -LibV2:BPAPatt3 #LibV1:peak_voltage;location_soma #LibV5:voltage_base;location -LibV2:E39 #LibV1:mean_frequency;IDthreshold -LibV2:E39_cod #LibV2:E39 -LibV2:E2 #LibV2:amp_drop_first_second;APDrop -LibV2:E3 #LibV2:amp_drop_first_last;APDrop -LibV2:E4 #LibV2:amp_drop_second_last;APDrop -LibV2:E5 #LibV2:max_amp_difference;APDrop -LibV2:E8 #LibV2:AP_duration_half_width;APWaveForm -LibV2:E9 #LibV2:AP_rise_time;APWaveForm -LibV2:E10 #LibV2:AP_fall_time;APWaveForm -LibV2:E11 #LibV2:AP_rise_rate;APWaveForm -LibV2:E12 #LibV2:AP_fall_rate;APWaveForm -LibV2:E13 #LibV2:fast_AHP;APWaveForm -LibV2:E14 #LibV1:peak_voltage;APWaveForm -LibV2:E15 #LibV2:AP_duration;APWaveForm -LibV2:E16 #LibV2:AP_duration_half_width;APWaveForm -LibV2:E17 #LibV2:AP_rise_time;APWaveForm -LibV2:E18 #LibV2:AP_fall_time;APWaveForm -LibV2:E19 #LibV2:AP_rise_rate;APWaveForm -LibV2:E20 #LibV2:AP_fall_rate;APWaveForm -LibV2:E21 #LibV2:fast_AHP;APWaveForm -LibV2:E22 #LibV2:AP_amplitude_change;APWaveForm -LibV2:E23 #LibV2:AP_duration_change;APWaveForm -LibV2:E24 #LibV2:AP_duration_half_width_change;APWaveForm -LibV2:E25 #LibV2:AP_rise_rate_change;APWaveForm -LibV2:E26 #LibV2:AP_fall_rate_change;APWaveForm -LibV2:E27 #LibV2:fast_AHP_change;APWaveForm -LibV2:E40 #LibV1:time_to_first_spike;IDrest -LibV2:steady_state_hyper -LibV2:amp_drop_first_second #LibV1:peak_voltage -LibV2:amp_drop_first_last #LibV1:peak_voltage -LibV2:amp_drop_second_last #LibV1:peak_voltage -LibV2:max_amp_difference #LibV1:peak_voltage -LibV1:AP_amplitude_diff #LibV1:AP_amplitude -LibV5:ISI_log_slope #LibV1:ISI_values -LibV5:ISI_semilog_slope #LibV1:ISI_values -LibV5:ISI_log_slope_skip #LibV1:ISI_values -LibV1:AHP_depth_diff #LibV1:AHP_depth -LibV5:min_AHP_indices #LibV5:peak_indices -LibV5:min_AHP_values #LibV5:min_AHP_indices -LibV5:number_initial_spikes #LibV1:peak_time -LibV5:irregularity_index #LibV1:ISI_values -LibV5:AP1_amp #LibV1:AP_amplitude -LibV5:APlast_amp #LibV1:AP_amplitude -LibV5:AP2_amp #LibV1:AP_amplitude -LibV5:AP1_peak #LibV1:peak_voltage -LibV5:AP2_peak #LibV1:peak_voltage -LibV5:AP2_AP1_diff #LibV1:AP_amplitude -LibV5:AP2_AP1_peak_diff #LibV1:peak_voltage -LibV5:AP1_width #LibV5:spike_half_width -LibV5:AP2_width #LibV5:spike_half_width -LibV5:AHP_depth_from_peak #LibV5:peak_indices #LibV5:min_AHP_indices -LibV5:AHP_time_from_peak #LibV5:peak_indices #LibV5:min_AHP_indices -LibV5:AHP1_depth_from_peak #LibV5:AHP_depth_from_peak -LibV5:AHP2_depth_from_peak #LibV5:AHP_depth_from_peak -LibV5:time_to_second_spike #LibV1:peak_time -LibV5:time_to_last_spike #LibV1:peak_time -LibV5:inv_first_ISI #LibV5:all_ISI_values -LibV5:inv_second_ISI #LibV5:all_ISI_values -LibV5:inv_third_ISI #LibV5:all_ISI_values -LibV5:inv_fourth_ISI #LibV5:all_ISI_values -LibV5:inv_fifth_ISI #LibV5:all_ISI_values -LibV5:inv_last_ISI #LibV5:all_ISI_values -LibV5:inv_time_to_first_spike #LibV1:time_to_first_spike -LibV5:spike_half_width #LibV5:min_AHP_indices #LibV5:peak_indices -LibV5:AP_begin_indices #LibV5:min_AHP_indices -LibV5:AHP_depth_abs #LibV5:min_AHP_values -LibV5:AP_begin_width #LibV5:min_AHP_indices #LibV5:AP_begin_indices -LibV5:AP_begin_voltage #LibV5:AP_begin_indices -LibV5:AP_begin_time #LibV5:AP_begin_indices -LibV5:AP1_begin_voltage #LibV5:AP_begin_voltage -LibV5:AP2_begin_voltage #LibV5:AP_begin_voltage -LibV5:AP1_begin_width #LibV5:AP_begin_width -LibV5:AP2_begin_width #LibV5:AP_begin_width -LibV5:voltage_deflection_begin -LibV5:is_not_stuck #LibV1:peak_time -LibV5:mean_AP_amplitude #LibV1:AP_amplitude -LibV5:voltage_after_stim -LibV5:AP2_AP1_begin_width_diff #LibV5:AP_begin_width -LibV5:BPAPHeightLoc1 #LibV1:peak_voltage;location_dend1 #LibV5:voltage_base;location_dend1 -LibV5:BPAPHeightLoc2 #LibV1:peak_voltage;location_dend2 #LibV5:voltage_base;location_dend2 -LibV5:BPAPAmplitudeLoc1 #LibV1:peak_voltage;location_dend1 #LibV5:AP_begin_voltage;location_dend1 -LibV5:BPAPAmplitudeLoc2 #LibV1:peak_voltage;location_dend2 #LibV5:AP_begin_voltage;location_dend2 -LibV5:check_AISInitiation #LibV5:AP_begin_time #LibV5:AP_begin_time;location_AIS -LibV5:AP_phaseslope #LibV5:AP_begin_indices -LibV5:AP_phaseslope_AIS #LibV5:AP_phaseslope;location_AIS -LibV5:BAC_width #LibV1:AP_width;location_epsp -LibV5:BAC_maximum_voltage #LibV1:maximum_voltage;location_epsp -LibV5:all_ISI_values #LibV1:peak_time -LibV5:AP_amplitude_from_voltagebase #LibV5:voltage_base #LibV1:peak_voltage -LibV5:min_voltage_between_spikes #LibV5:peak_indices -LibV5:voltage -LibV5:steady_state_voltage_stimend -LibV5:voltage_base -LibV5:decay_time_constant_after_stim -LibV5:maximum_voltage_from_voltagebase #LibV5:voltage_base #LibV1:maximum_voltage -LibV5:sag_amplitude #LibV1:minimum_voltage #LibV5:steady_state_voltage_stimend #LibV5:voltage_deflection_vb_ssse -LibV5:sag_ratio1 #LibV1:minimum_voltage #LibV5:sag_amplitude #LibV5:voltage_base -LibV5:sag_ratio2 #LibV1:minimum_voltage #LibV5:steady_state_voltage_stimend #LibV5:voltage_base +LibV5:peak_indices #LibV1:interpolate +LibV1:trace_check #LibV1:peak_time #LibV1:interpolate +LibV1:ISI_values #LibV1:peak_time #LibV1:interpolate +LibV1:doublet_ISI #LibV1:peak_time #LibV1:interpolate +LibV1:peak_voltage #LibV5:peak_indices #LibV1:interpolate +LibV1:burst_ISI_indices #LibV5:peak_indices #LibV1:ISI_values #LibV1:interpolate +LibV1:mean_frequency #LibV1:peak_time #LibV1:interpolate +LibV1:peak_time #LibV5:peak_indices #LibV1:interpolate +LibV1:time_to_first_spike #LibV1:peak_time #LibV1:interpolate +LibV1:adaptation_index #LibV1:peak_time #LibV1:interpolate +LibV1:adaptation_index2 #LibV1:peak_time #LibV1:interpolate +LibV1:spike_width2 #LibV5:min_AHP_indices #LibV1:interpolate +LibV1:AP_width #LibV5:peak_indices #LibV5:min_AHP_indices #LibV1:interpolate +LibV1:burst_mean_freq #LibV1:burst_ISI_indices #LibV1:peak_time #LibV1:interpolate +LibV1:burst_number #LibV1:burst_mean_freq #LibV1:interpolate +LibV1:interburst_voltage #LibV1:burst_ISI_indices #LibV1:interpolate +LibV1:AP_height #LibV1:peak_voltage #LibV1:interpolate +LibV1:AP_amplitude #LibV5:AP_begin_indices #LibV1:peak_voltage #LibV1:peak_time #LibV1:interpolate +LibV1:AHP_depth_abs_slow #LibV5:peak_indices #LibV1:interpolate +LibV1:AHP_slow_time #LibV1:AHP_depth_abs_slow #LibV1:interpolate +LibV1:time_constant #LibV1:interpolate +LibV1:voltage_deflection #LibV1:interpolate +LibV5:voltage_deflection_vb_ssse #LibV5:voltage_base #LibV5:steady_state_voltage_stimend #LibV1:interpolate +LibV1:ohmic_input_resistance #LibV1:voltage_deflection #LibV1:interpolate +LibV5:ohmic_input_resistance_vb_ssse #LibV5:voltage_deflection_vb_ssse #LibV1:interpolate +LibV1:maximum_voltage #LibV1:interpolate +LibV1:minimum_voltage #LibV1:interpolate +LibV1:threshold_current #LibV1:interpolate +LibV1:steady_state_voltage #LibV1:interpolate +LibV3:depolarized_base #LibV1:interpolate +LibV1:ISI_CV #LibV1:ISI_values #LibV1:interpolate +LibV1:Spikecount #LibV5:peak_indices #LibV1:interpolate +LibV5:Spikecount_stimint #LibV1:peak_time #LibV1:interpolate +LibV1:AHP_depth #LibV5:voltage_base #LibV5:min_AHP_values #LibV1:interpolate +LibV2:AP_rise_indices #LibV5:peak_indices #LibV5:AP_begin_indices #LibV1:interpolate +LibV2:AP_end_indices #LibV5:peak_indices #LibV1:interpolate +LibV2:AP_fall_indices #LibV5:peak_indices #LibV5:AP_begin_indices #LibV2:AP_end_indices #LibV1:interpolate +LibV2:AP_duration #LibV5:AP_begin_indices #LibV2:AP_end_indices #LibV1:interpolate +LibV2:AP_duration_half_width #LibV2:AP_rise_indices #LibV2:AP_fall_indices #LibV1:interpolate +LibV2:AP_rise_time #LibV5:AP_begin_indices #LibV5:peak_indices #LibV1:interpolate +LibV2:AP_fall_time #LibV5:peak_indices #LibV2:AP_end_indices #LibV1:interpolate +LibV2:AP_rise_rate #LibV5:AP_begin_indices #LibV5:peak_indices #LibV1:interpolate +LibV2:AP_fall_rate #LibV5:peak_indices #LibV2:AP_end_indices #LibV1:interpolate +LibV2:fast_AHP #LibV5:AP_begin_indices #LibV5:min_AHP_indices #LibV1:interpolate +LibV2:AP_amplitude_change #LibV1:AP_amplitude #LibV1:interpolate +LibV2:AP_duration_change #LibV2:AP_duration #LibV1:interpolate +LibV2:AP_rise_rate_change #LibV2:AP_rise_rate #LibV1:interpolate +LibV2:AP_fall_rate_change #LibV2:AP_fall_rate #LibV1:interpolate +LibV2:fast_AHP_change #LibV2:fast_AHP #LibV1:interpolate +LibV2:AP_duration_half_width_change #LibV2:AP_duration_half_width #LibV1:interpolate +LibV2:E6 #LibV1:AP_amplitude;APWaveForm #LibV1:interpolate +LibV2:E7 #LibV2:AP_duration;APWaveForm #LibV1:interpolate +LibV1:single_burst_ratio #LibV1:ISI_values #LibV1:interpolate +LibV2:BPAPatt2 #LibV1:peak_voltage;location_soma #LibV5:voltage_base;location #LibV1:interpolate +LibV2:BPAPatt3 #LibV1:peak_voltage;location_soma #LibV5:voltage_base;location #LibV1:interpolate +LibV2:E39 #LibV1:mean_frequency;IDthreshold #LibV1:interpolate +LibV2:E39_cod #LibV2:E39 #LibV1:interpolate +LibV2:E2 #LibV2:amp_drop_first_second;APDrop #LibV1:interpolate +LibV2:E3 #LibV2:amp_drop_first_last;APDrop #LibV1:interpolate +LibV2:E4 #LibV2:amp_drop_second_last;APDrop #LibV1:interpolate +LibV2:E5 #LibV2:max_amp_difference;APDrop #LibV1:interpolate +LibV2:E8 #LibV2:AP_duration_half_width;APWaveForm #LibV1:interpolate +LibV2:E9 #LibV2:AP_rise_time;APWaveForm #LibV1:interpolate +LibV2:E10 #LibV2:AP_fall_time;APWaveForm #LibV1:interpolate +LibV2:E11 #LibV2:AP_rise_rate;APWaveForm #LibV1:interpolate +LibV2:E12 #LibV2:AP_fall_rate;APWaveForm #LibV1:interpolate +LibV2:E13 #LibV2:fast_AHP;APWaveForm #LibV1:interpolate +LibV2:E14 #LibV1:peak_voltage;APWaveForm #LibV1:interpolate +LibV2:E15 #LibV2:AP_duration;APWaveForm #LibV1:interpolate +LibV2:E16 #LibV2:AP_duration_half_width;APWaveForm #LibV1:interpolate +LibV2:E17 #LibV2:AP_rise_time;APWaveForm #LibV1:interpolate +LibV2:E18 #LibV2:AP_fall_time;APWaveForm #LibV1:interpolate +LibV2:E19 #LibV2:AP_rise_rate;APWaveForm #LibV1:interpolate +LibV2:E20 #LibV2:AP_fall_rate;APWaveForm #LibV1:interpolate +LibV2:E21 #LibV2:fast_AHP;APWaveForm #LibV1:interpolate +LibV2:E22 #LibV2:AP_amplitude_change;APWaveForm #LibV1:interpolate +LibV2:E23 #LibV2:AP_duration_change;APWaveForm #LibV1:interpolate +LibV2:E24 #LibV2:AP_duration_half_width_change;APWaveForm #LibV1:interpolate +LibV2:E25 #LibV2:AP_rise_rate_change;APWaveForm #LibV1:interpolate +LibV2:E26 #LibV2:AP_fall_rate_change;APWaveForm #LibV1:interpolate +LibV2:E27 #LibV2:fast_AHP_change;APWaveForm #LibV1:interpolate +LibV2:E40 #LibV1:time_to_first_spike;IDrest #LibV1:interpolate +LibV2:steady_state_hyper #LibV1:interpolate +LibV2:amp_drop_first_second #LibV1:peak_voltage #LibV1:interpolate +LibV2:amp_drop_first_last #LibV1:peak_voltage #LibV1:interpolate +LibV2:amp_drop_second_last #LibV1:peak_voltage #LibV1:interpolate +LibV2:max_amp_difference #LibV1:peak_voltage #LibV1:interpolate +LibV1:AP_amplitude_diff #LibV1:AP_amplitude #LibV1:interpolate +LibV5:ISI_log_slope #LibV1:ISI_values #LibV1:interpolate +LibV5:ISI_semilog_slope #LibV1:ISI_values #LibV1:interpolate +LibV5:ISI_log_slope_skip #LibV1:ISI_values #LibV1:interpolate +LibV1:AHP_depth_diff #LibV1:AHP_depth #LibV1:interpolate +LibV5:min_AHP_indices #LibV5:peak_indices #LibV1:interpolate +LibV5:min_AHP_values #LibV5:min_AHP_indices #LibV1:interpolate +LibV5:number_initial_spikes #LibV1:peak_time #LibV1:interpolate +LibV5:irregularity_index #LibV1:ISI_values #LibV1:interpolate +LibV5:AP1_amp #LibV1:AP_amplitude #LibV1:interpolate +LibV5:APlast_amp #LibV1:AP_amplitude #LibV1:interpolate +LibV5:AP2_amp #LibV1:AP_amplitude #LibV1:interpolate +LibV5:AP1_peak #LibV1:peak_voltage #LibV1:interpolate +LibV5:AP2_peak #LibV1:peak_voltage #LibV1:interpolate +LibV5:AP2_AP1_diff #LibV1:AP_amplitude #LibV1:interpolate +LibV5:AP2_AP1_peak_diff #LibV1:peak_voltage #LibV1:interpolate +LibV5:AP1_width #LibV5:spike_half_width #LibV1:interpolate +LibV5:AP2_width #LibV5:spike_half_width #LibV1:interpolate +LibV5:AHP_depth_from_peak #LibV5:peak_indices #LibV5:min_AHP_indices #LibV1:interpolate +LibV5:AHP_time_from_peak #LibV5:peak_indices #LibV5:min_AHP_indices #LibV1:interpolate +LibV5:AHP1_depth_from_peak #LibV5:AHP_depth_from_peak #LibV1:interpolate +LibV5:AHP2_depth_from_peak #LibV5:AHP_depth_from_peak #LibV1:interpolate +LibV5:time_to_second_spike #LibV1:peak_time #LibV1:interpolate +LibV5:time_to_last_spike #LibV1:peak_time #LibV1:interpolate +LibV5:inv_first_ISI #LibV5:all_ISI_values #LibV1:interpolate +LibV5:inv_second_ISI #LibV5:all_ISI_values #LibV1:interpolate +LibV5:inv_third_ISI #LibV5:all_ISI_values #LibV1:interpolate +LibV5:inv_fourth_ISI #LibV5:all_ISI_values #LibV1:interpolate +LibV5:inv_fifth_ISI #LibV5:all_ISI_values #LibV1:interpolate +LibV5:inv_last_ISI #LibV5:all_ISI_values #LibV1:interpolate +LibV5:inv_time_to_first_spike #LibV1:time_to_first_spike #LibV1:interpolate +LibV5:spike_half_width #LibV5:min_AHP_indices #LibV5:peak_indices #LibV1:interpolate +LibV5:AP_begin_indices #LibV5:min_AHP_indices #LibV1:interpolate +LibV5:AHP_depth_abs #LibV5:min_AHP_values #LibV1:interpolate +LibV5:AP_begin_width #LibV5:min_AHP_indices #LibV5:AP_begin_indices #LibV1:interpolate +LibV5:AP_begin_voltage #LibV5:AP_begin_indices #LibV1:interpolate +LibV5:AP_begin_time #LibV5:AP_begin_indices #LibV1:interpolate +LibV5:AP1_begin_voltage #LibV5:AP_begin_voltage #LibV1:interpolate +LibV5:AP2_begin_voltage #LibV5:AP_begin_voltage #LibV1:interpolate +LibV5:AP1_begin_width #LibV5:AP_begin_width #LibV1:interpolate +LibV5:AP2_begin_width #LibV5:AP_begin_width #LibV1:interpolate +LibV5:voltage_deflection_begin #LibV1:interpolate +LibV5:is_not_stuck #LibV1:peak_time #LibV1:interpolate +LibV5:mean_AP_amplitude #LibV1:AP_amplitude #LibV1:interpolate +LibV5:voltage_after_stim #LibV1:interpolate +LibV5:AP2_AP1_begin_width_diff #LibV5:AP_begin_width #LibV1:interpolate +LibV5:BPAPHeightLoc1 #LibV1:peak_voltage;location_dend1 #LibV5:voltage_base;location_dend1 #LibV1:interpolate +LibV5:BPAPHeightLoc2 #LibV1:peak_voltage;location_dend2 #LibV5:voltage_base;location_dend2 #LibV1:interpolate +LibV5:BPAPAmplitudeLoc1 #LibV1:peak_voltage;location_dend1 #LibV5:AP_begin_voltage;location_dend1 #LibV1:interpolate +LibV5:BPAPAmplitudeLoc2 #LibV1:peak_voltage;location_dend2 #LibV5:AP_begin_voltage;location_dend2 #LibV1:interpolate +LibV5:check_AISInitiation #LibV5:AP_begin_time #LibV5:AP_begin_time;location_AIS #LibV1:interpolate +LibV5:AP_phaseslope #LibV5:AP_begin_indices #LibV1:interpolate +LibV5:AP_phaseslope_AIS #LibV5:AP_phaseslope;location_AIS #LibV1:interpolate +LibV5:BAC_width #LibV1:AP_width;location_epsp #LibV1:interpolate +LibV5:BAC_maximum_voltage #LibV1:maximum_voltage;location_epsp #LibV1:interpolate +LibV5:all_ISI_values #LibV1:peak_time #LibV1:interpolate +LibV5:AP_amplitude_from_voltagebase #LibV5:voltage_base #LibV1:peak_voltage #LibV1:interpolate +LibV5:min_voltage_between_spikes #LibV5:peak_indices #LibV1:interpolate +LibV5:voltage #LibV1:interpolate +LibV5:steady_state_voltage_stimend #LibV1:interpolate +LibV5:voltage_base #LibV1:interpolate +LibV5:decay_time_constant_after_stim #LibV1:interpolate +LibV5:maximum_voltage_from_voltagebase #LibV5:voltage_base #LibV1:maximum_voltage #LibV1:interpolate +LibV5:sag_amplitude #LibV1:minimum_voltage #LibV5:steady_state_voltage_stimend #LibV5:voltage_deflection_vb_ssse #LibV1:interpolate +LibV5:sag_ratio1 #LibV1:minimum_voltage #LibV5:sag_amplitude #LibV5:voltage_base #LibV1:interpolate +LibV5:sag_ratio2 #LibV1:minimum_voltage #LibV5:steady_state_voltage_stimend #LibV5:voltage_base #LibV1:interpolate diff --git a/efel/cppcore/Utils.cpp b/efel/cppcore/Utils.cpp index 7290e278..deb926e5 100644 --- a/efel/cppcore/Utils.cpp +++ b/efel/cppcore/Utils.cpp @@ -32,31 +32,37 @@ int LinearInterpolation(double Stepdx, vector& InterpY) { EFEL_ASSERT(X.size() == Y.size(), "X & Y have to have the same point count"); EFEL_ASSERT(2 < X.size(), "Need at least 2 points in X"); - assert(Stepdx != 0); - - size_t nCount = X.size() - 1; - size_t i = 1; + EFEL_ASSERT(Stepdx > 0, "Interpolation step needs to be strictly positive"); + + double dx, dy, dydx; + double x = X[0]; - double input = X[0]; - double dif1, dif2; + // Create the x values + do { + InterpX.push_back(x); + x += Stepdx; + } while (x <= X[X.size() - 1]); - InterpY.push_back(Y[0]); - InterpX.push_back(X[0]); - while(input < X[nCount]){ - input += Stepdx; + // Create the y values + unsigned j = 0; + for (unsigned i = 0; i < InterpX.size(); i++) { + x = InterpX[i]; - while (X[i] < input && i < nCount) { - i++; - } + while ( X[j+1] < x ) j++; - dif1 = X[i] - X[i - 1]; - dif2 = input - X[i - 1]; - assert(dif1 != 0); //!=0 per definition + assert((j+1) < X.size()); - InterpY.push_back(Y[i - 1] + ((Y[i] - Y[i - 1]) * dif2 / dif1)); - InterpX.push_back(input); + dx = X[j+1] - X[j]; + dy = Y[j+1] - Y[j]; + + assert(dx != 0); //!=0 per definition + + dydx = dy/dx; + + InterpY.push_back(Y[j] + dydx * (x - X[j])); } + return 1; } diff --git a/efel/tests/test_allfeatures.py b/efel/tests/test_allfeatures.py index b0d44177..f979fe34 100644 --- a/efel/tests/test_allfeatures.py +++ b/efel/tests/test_allfeatures.py @@ -155,7 +155,8 @@ def test_allfeatures(): elif feature_value is None: equal = (expected_value is None) else: - equal = numpy.allclose(feature_value, expected_value) + equal = (len(feature_value) == len(expected_value)) \ + and numpy.allclose(feature_value, expected_value) if not equal: print("Difference in feature %s: value=%s expected=%s" % diff --git a/efel/tests/test_basic.py b/efel/tests/test_basic.py index 8f8d6dd2..069a4ca0 100644 --- a/efel/tests/test_basic.py +++ b/efel/tests/test_basic.py @@ -32,6 +32,7 @@ """ import os +import numpy import nose.tools as nt @@ -51,6 +52,10 @@ 'basic', 'ahptest_1.txt') +tau20_0_url = 'file://%s' % os.path.join(os.path.abspath(testdata_dir), + 'basic', + 'tau20.0.csv') + spikeoutsidestim_url = 'file://%s' % os.path.join( os.path.abspath(testdata_dir), 'basic', @@ -66,6 +71,42 @@ '95824004.abf.csv') +def load_data(data_name, interp=False, interp_dt=0.1): + """Load data file""" + + import efel + + trace = {} + + if data_name == 'mean_frequency1': + stim_start = 500.0 + stim_end = 900.0 + + time = efel.io.load_fragment('%s#col=1' % meanfrequency1_url) + voltage = efel.io.load_fragment('%s#col=2' % meanfrequency1_url) + elif data_name == 'tau20.0': + stim_start = 100.0 + stim_end = 1000.0 + + time = efel.io.load_fragment('%s#col=1' % tau20_0_url) + voltage = efel.io.load_fragment('%s#col=2' % tau20_0_url) + + trace['decay_start_after_stim'] = [1.0] + trace['decay_end_after_stim'] = [10.0] + else: + raise ValueError('Unknown data set name: %s' % data_name) + + trace['T'] = time + trace['V'] = voltage + trace['stim_start'] = [stim_start] + trace['stim_end'] = [stim_end] + + if interp: + time, voltage = interpolate(time, voltage, interp_dt) + + return trace, time, voltage, stim_start, stim_end + + def test_import(): """basic: Test importing of eFEL""" @@ -99,7 +140,6 @@ def test_nonexisting_feature(): import efel efel.reset() - import numpy trace = {} trace['T'] = numpy.arange(0, 100, 0.1) trace['V'] = numpy.ones(len(trace['T'])) * -80.0 @@ -119,7 +159,6 @@ def test_failing_double_feature(): import efel efel.reset() - import numpy trace = {} trace['T'] = numpy.arange(0, 100, 0.1) trace['V'] = numpy.ones(len(trace['T'])) * -80.0 @@ -139,7 +178,6 @@ def test_raise_warnings(): import efel efel.reset() - import numpy trace = {} trace['T'] = numpy.arange(0, 100, 0.1) trace['V'] = numpy.ones(len(trace['T'])) * -80.0 @@ -176,7 +214,6 @@ def test_failing_int_feature(): import efel efel.reset() - import numpy trace = {} trace['T'] = numpy.arange(0, 100, 0.1) trace['V'] = numpy.ones(len(trace['T'])) * -80.0 @@ -196,8 +233,6 @@ def test_empty_trace(): import efel efel.reset() - import numpy - max_time = 3000.0 stim_start = 700.0 stim_end = 2700.0 @@ -235,7 +270,6 @@ def test_multiprocessing_traces(): """basic: Test multiprocessing map""" import efel efel.reset() - import numpy stim_start = 31.2 stim_end = 431.2 @@ -300,7 +334,6 @@ def test_consecutive_traces(): import efel efel.reset() - import numpy stim_start = 31.2 stim_end = 431.2 @@ -431,6 +464,34 @@ def test_setDerivativeThreshold(): nt.assert_not_equal(AP_begin_voltage, AP_begin_voltage_orig) +def interpolate(time, voltage, new_dt): + """Interpolate voltage to new dt""" + + interp_time = numpy.arange(time[0], time[-1] + new_dt, new_dt) + interp_voltage = numpy.interp(interp_time, time, voltage) + + return interp_time, interp_voltage + + +def test_interpolate(): + """basic: Test interpolate""" + + import efel + efel.reset() + trace, time, voltage, stim_start, stim_end = load_data( + 'mean_frequency1', interp=True) + + features = ['voltage'] + + feature_values = \ + efel.getFeatureValues( + [trace], + features, raise_warnings=False) + interp_voltage = feature_values[0]['voltage'] + nt.assert_equal(len(interp_voltage), len(voltage)) + nt.assert_true(numpy.allclose(interp_voltage, voltage)) + + def test_zero_ISI_log_slope_skip(): """basic: Test zero ISI_log_slope_skip""" @@ -594,7 +655,6 @@ def test_strict_stiminterval(): def test_ISI_log_slope(): """basic: Test ISI_log_slope""" - import numpy import efel efel.reset() @@ -630,7 +690,6 @@ def test_ISI_log_slope(): def test_ISI_semilog_slope(): """basic: Test ISI_semilog_slope""" - import numpy import efel efel.reset() @@ -668,7 +727,6 @@ def test_AP_begin_indices1(): import efel efel.reset() - import numpy stim_start = 31.2 stim_end = 431.2 @@ -720,26 +778,28 @@ def test_mean_frequency1(): import efel efel.reset() - stim_start = 500.0 - stim_end = 900.0 + trace, time, voltage, stim_start, stim_end = load_data( + 'mean_frequency1', interp=True) - 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 = ['mean_frequency'] + features = ['mean_frequency', 'peak_time'] feature_values = \ efel.getFeatureValues( [trace], features) - nt.assert_almost_equal(feature_values[0]['mean_frequency'][0], 15.2858453) + + peak_times = feature_values[0]['peak_time'] + + stim_spikes = peak_times[numpy.where((stim_start <= peak_times) + & (peak_times <= stim_end))] + n_of_spikes = len(stim_spikes) + + mean_frequency = float(n_of_spikes) * 1000 / \ + (stim_spikes[-1] - stim_start) + + nt.assert_almost_equal( + feature_values[0]['mean_frequency'][0], + mean_frequency) def test_ap_amplitude_outside_stim(): @@ -747,7 +807,6 @@ def test_ap_amplitude_outside_stim(): import efel efel.reset() - import numpy stim_start = 700.0 stim_end = 2700.0 @@ -822,23 +881,11 @@ def test_ap_amplitude_from_voltagebase1(): def test_voltagebase1(): """basic: Test voltagebase 1""" - import numpy - import efel efel.reset() - stim_start = 500.0 - stim_end = 900.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] + trace, time, voltage, stim_start, stim_end = load_data( + 'mean_frequency1', interp=True) features = ['voltage_base'] @@ -847,8 +894,10 @@ def test_voltagebase1(): [trace], features) - voltage_base = numpy.mean(voltage[numpy.where( - (time >= 0.9 * stim_start) & (time <= stim_start))]) + interp_time, interp_voltage = interpolate(time, voltage, 0.1) + + voltage_base = numpy.mean(interp_voltage[numpy.where( + (interp_time >= 0.9 * stim_start) & (interp_time <= stim_start))]) nt.assert_almost_equal(voltage_base, feature_values[0]['voltage_base'][0], places=5) @@ -885,7 +934,6 @@ def test_getDistance1(): def test_getDistance_trace_check(): """basic: Test getDistance trace_check option""" - import numpy import efel efel.reset() @@ -990,7 +1038,6 @@ def test_spikecount1(): def test_spikecount_stimint1(): """basic: Test Spikecount_stimint 1""" - import numpy import efel efel.reset() @@ -1217,8 +1264,6 @@ def test_sag_ratio1_empty(): import efel efel.reset() - import numpy - max_time = 3000.0 stim_start = 700.0 stim_end = 2700.0 @@ -1328,7 +1373,6 @@ def test_spikecount2(): import efel efel.reset() - import numpy stim_start = 500.0 stim_end = 900.0 @@ -1360,8 +1404,6 @@ def test_min_voltage_between_spikes1(): import efel efel.reset() - import numpy - stim_start = 500.0 stim_end = 900.0 @@ -1426,29 +1468,9 @@ def test_steady_state_voltage1(): import efel efel.reset() - import numpy - - stim_start = 500.0 - stim_end = 900.0 - - test_data_path = os.path.join( - testdata_dir, - 'basic', - 'mean_frequency_1.txt') - data = numpy.loadtxt(test_data_path) - - time = data[:, 0] - voltage = data[:, 1] - - 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] + trace, time, voltage, stim_start, stim_end = load_data( + 'mean_frequency1', interp=True) features = ['steady_state_voltage'] @@ -1457,11 +1479,7 @@ def test_steady_state_voltage1(): [trace], features)[0] - begin_time = stim_end - end_time = max(time) - steady_state_voltage = numpy.mean(voltage[numpy.where( - (time <= end_time) & (time > begin_time) - )]) + steady_state_voltage = numpy.mean(voltage[numpy.where(time >= stim_end)]) nt.assert_almost_equal(steady_state_voltage, feature_values['steady_state_voltage'][0]) @@ -1472,20 +1490,9 @@ def test_steady_state_voltage_stimend(): import efel efel.reset() - import numpy - stim_start = 500.0 - stim_end = 900.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] + trace, time, voltage, stim_start, stim_end = load_data( + 'mean_frequency1', interp=True) features = ['steady_state_voltage_stimend'] @@ -1510,20 +1517,9 @@ def test_maximum_voltage_from_voltagebase(): import efel efel.reset() - import numpy - stim_start = 500.0 - stim_end = 900.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] + trace, time, voltage, stim_start, stim_end = load_data( + 'mean_frequency1', interp=True) features = ['maximum_voltage_from_voltagebase', 'voltage_base'] @@ -1547,8 +1543,7 @@ def test_maximum_voltage_from_voltagebase(): def decay_time_constant_after_stim(time, voltage, interval_start, interval_end, stim_start, stim_end): - '''numpy implementation''' - import numpy + """decay_time_constant_after_stim numpy implementation""" def get_index(ts, t): """get_index""" @@ -1571,45 +1566,25 @@ def get_index(ts, t): def test_decay_time_constant_after_stim1(): - """basic: decay_time_constant_after_stim 1""" + """basic: Test decay_time_constant_after_stim 1""" import efel efel.reset() - import numpy - - stim_start = 500.0 - stim_end = 900.0 - - test_data_path = os.path.join( - testdata_dir, - 'basic', - 'mean_frequency_1.txt') - data = numpy.loadtxt(test_data_path) - - time = data[:, 0] - voltage = data[:, 1] - - time = efel.io.load_fragment('%s#col=1' % meanfrequency1_url) - voltage = efel.io.load_fragment('%s#col=2' % meanfrequency1_url) - trace = { - 'T': time, - 'V': voltage, - 'stim_start': [stim_start], - 'stim_end': [stim_end], - } + trace, time, voltage, stim_start, stim_end = load_data( + 'mean_frequency1', interp=True) features = ['decay_time_constant_after_stim'] feature_values = efel.getFeatureValues([trace], features)[0] expected = decay_time_constant_after_stim( - trace['T'], - trace['V'], + time, + voltage, stim_end + 1.0, stim_end + 10.0, - trace['stim_start'][0], - trace['stim_end'][0]) + stim_start, + stim_end) nt.assert_almost_equal( expected, @@ -1617,36 +1592,20 @@ def test_decay_time_constant_after_stim1(): def test_decay_time_constant_after_stim2(): - """basic: decay_time_constant_after_stim 2""" + """basic: Test decay_time_constant_after_stim 2""" import efel efel.reset() - import numpy - stim_start = 100.0 - stim_end = 1000.0 - - test_data_path = os.path.join(testdata_dir, 'basic', 'tau20.0.csv') - data = numpy.loadtxt(test_data_path) - - time = data[:, 0] - voltage = data[:, 1] - - trace = { - 'T': time, - 'V': voltage, - 'stim_start': [stim_start], - 'stim_end': [stim_end], - 'decay_start_after_stim': [1.0], - 'decay_end_after_stim': [10.0] - } + trace, time, voltage, stim_start, stim_end = load_data( + 'tau20.0', interp=True) features = ['decay_time_constant_after_stim'] feature_values = efel.getFeatureValues([trace], features)[0] nt.assert_almost_equal( - 20.0, + 19.9, feature_values['decay_time_constant_after_stim'][0], places=1) @@ -1656,8 +1615,6 @@ def test_getmeanfeaturevalues(): import efel efel.reset() - import numpy - stim_start = 500.0 stim_end = 900.0 @@ -1690,8 +1647,6 @@ def test_mean_AP_amplitude(): import efel efel.reset() - import numpy - stim_start = 500.0 stim_end = 900.0 @@ -1716,7 +1671,6 @@ def test_mean_AP_amplitude(): def test_unfinished_peak(): """basic: Test if unfinished peak doesn't break Spikecount""" - import numpy import efel efel.setIntSetting('strict_stiminterval', True) diff --git a/efel/tests/testdata/allfeatures/expectedresults.json b/efel/tests/testdata/allfeatures/expectedresults.json index 007f2acc..c7b65fe5 100644 --- a/efel/tests/testdata/allfeatures/expectedresults.json +++ b/efel/tests/testdata/allfeatures/expectedresults.json @@ -40,7 +40,7 @@ -0.4242424242430788 ], "voltage_after_stim": [ - -79.29829533467534 + -79.29843436456748 ], "fast_AHP": [ -6.112816962515744, @@ -7124,8 +7124,8 @@ -42.006907875683254, -33.983629878065216, -24.392450526874633, - -13.229687150620308, - -2.066923774365982, + -13.229687150620304, + -2.0669237743659785, 4.759995770698208, 11.585157239464662, 15.74894914099089, @@ -7135,9 +7135,9 @@ 15.074952297861795, 12.32594190569285, 8.663355353474564, - 5.000768801256276, - 0.6008686237498191, - -3.799235525035158, + 5.000768801256278, + 0.6008686237498182, + -3.7992355250351597, -8.092608556406628, -12.279209748302693, -16.465810940198757, @@ -7145,7 +7145,7 @@ -23.71626891678304, -26.929116422980876, -29.72918280352515, - -32.529249184069414, + -32.52924918406942, -34.62890210180346, -36.72845147009953, -38.50360906805314, @@ -8889,7 +8889,7 @@ -41.841705322265625, -41.841705322265625, -41.822968003325265, - -41.78547727626923, + -41.78547727626924, -41.74798654921321, -41.747962951660156, -41.747962951660156, @@ -9150,15 +9150,15 @@ -37.86076009512344, -37.10496384917723, -35.81743461694041, - -34.52990538470358, + -34.52990538470359, -29.531950866087477, -24.53302299957859, -19.202691537602647, - -13.540057679709134, - -7.87742382181562, + -13.540057679709133, + -7.8774238218156185, -3.7265755058191212, - 0.423522729756451, - 3.598949527906694, + 0.4235227297564528, + 3.5989495279066945, 5.7984771560359185, 7.998004784165143, 8.5991860304023, @@ -9169,13 +9169,13 @@ 7.100010938339819, 5.887481992226048, 4.394012644216245, - 2.619393836110955, + 2.6193938361109548, 0.8447750280056647, -1.2300935157291382, -3.305142561986167, -5.486355024847707, -7.773909245162962, - -10.061463465478216, + -10.061463465478218, -12.385955252775249, -14.710455848723335, -16.954087479217158, @@ -10984,7 +10984,7 @@ -41.341732025146484, -41.341732025146484, -41.32924094206938, - -41.30424065594637, + -41.304240655946366, -41.279240369823356, -41.27923583984375, -41.27923583984375, @@ -14085,7 +14085,7 @@ -37.82950706772001, -37.72950439723846, -37.62950172675691, - -37.52949905627536, + -37.529499056275355, -37.466967536209204, -37.40446605790692, -37.31699452629344, @@ -14105,7 +14105,7 @@ -2.452277675141584, 0.030000439256230416, 1.8425432861787594, - 3.655086133101288, + 3.655086133101289, 4.455655516710111, 5.2556744962039, 5.668465184901885, @@ -14116,7 +14116,7 @@ 3.5886398886701643, 2.4511128977317616, 1.3135859067933588, - -0.2235461580147915, + -0.22354615801479127, -1.761082591012916, -3.4483736612614817, -5.285917199647984, @@ -17162,10 +17162,10 @@ -12.265712870951637, -8.128115159939664, -5.314423983324629, - -2.5018574597220367, + -2.5018574597220375, -0.2510531993669797, - 1.436486714794576, - 3.1240266289561314, + 1.4364867147945755, + 3.1240266289561305, 4.036925278825935, 4.949446976488434, 5.493393269871318, @@ -17177,7 +17177,7 @@ 3.1508980570136185, 2.125873831931098, 0.6637564554944853, - -0.7987781653911656, + -0.7987781653911661, -2.4110845654298423, -4.173626244016699, -5.9361679226035555, @@ -18015,7 +18015,7 @@ -40.029296875, -40.004349041833805, -39.954348469587785, - -39.904347897341765, + -39.90434789734176, -39.87932439007996, -39.85432257796744, -39.8667704575799, @@ -23908,14 +23908,14 @@ -34.37373071709217, -33.48708858531207, -32.5991450738625, - -30.463572047488494, + -30.46357204748849, -27.077605984574507, -23.691639921660524, -19.640653423035296, - -15.58862517876417, + -15.588625178764172, -12.025620899913354, -8.952013845578687, - -5.878406791244017, + -5.878406791244018, -3.8780214996562874, -1.8789273862167328, -0.2586367828822759, @@ -23929,9 +23929,9 @@ 3.1127444903866377, 2.662948303542433, 1.9760262679842735, - 1.0505630433906494, + 1.0505630433906497, 0.1250998187970258, - -1.086818145916335, + -1.0868181459163353, -2.2987688996092275, -3.6416149267523963, -5.11594676659853, @@ -23940,7 +23940,7 @@ -9.866568364425898, -11.497871042841124, -13.122134913192363, - -14.746398783543603, + -14.746398783543604, -16.347241547818335, -17.948042692855047, -19.52311289421032, @@ -26416,12 +26416,12 @@ -26.356575099169174, -22.258431343214845, -18.160287587260516, - -14.461483409579317, - -10.763159672690403, + -14.461483409579316, + -10.763159672690401, -7.629595987791774, - -5.065812781687236, + -5.065812781687235, -2.5020295755826973, - -0.8395256430276012, + -0.8395256430276015, 0.822221258782136, 2.098498586282403, 2.9864430519304506, @@ -26434,7 +26434,7 @@ 3.412638104666235, 2.825404262912717, 2.01377849564613, - 0.9767484476847286, + 0.9767484476847283, -0.06028160027667351, -1.3229308234771893, -2.586063056002281, @@ -26445,7 +26445,7 @@ -10.610825080254205, -12.32336670571778, -14.035091014581809, - -15.74681532344584, + -15.746815323445839, -17.45853925153254, -19.17026317908103, -20.764566245772052, @@ -26470,7 +26470,7 @@ -37.72889497161588, -38.10399511729273, -38.44134192377479, - -38.77868873025685, + -38.778688730256846, -39.00402281693682, -39.229134267318294, -39.45414007396451, @@ -30047,8 +30047,7 @@ -78.42738888985926, -78.46490644711113, -78.4024709971486, - -78.33999930982739, - -78.27752762250618 + -78.33999930982739 ], "AP_phaseslope": null, "AP_fall_rate_change": [ @@ -30063,7 +30062,7 @@ ], "sag_ratio1": null, "steady_state_voltage": [ - -76.89727436682382 + -76.89681382186032 ], "AP_fall_indices": [ 7090, @@ -30126,7 +30125,7 @@ 79.18790568272003 ], "BAC_maximum_voltage": [ - -50.6946 + -50.69687269736847 ], "AHP_depth_abs_slow": [ -45.90401077270508,