def test_setDerivativeThreshold(): """basic: Test setDerivativeThreshold""" 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] features = ['AP_begin_voltage'] feature_values = \ efel.getFeatureValues( [trace], features) AP_begin_voltage_orig = feature_values[0]['AP_begin_voltage'][1] efel.setDerivativeThreshold(5) feature_values = \ efel.getFeatureValues( [trace], features) AP_begin_voltage = feature_values[0]['AP_begin_voltage'][1] nt.assert_almost_equal(AP_begin_voltage, -51.6400489995987) nt.assert_not_equal(AP_begin_voltage, AP_begin_voltage_orig)
def test_setDerivativeThreshold(): """basic: Test setDerivativeThreshold""" import efel efel.reset() import numpy stim_start = 500.0 stim_end = 900.0 test_data_path = joinp(testdata_dir, 'basic', 'mean_frequency_1.txt') data = numpy.loadtxt(test_data_path) time = data[:, 0] voltage = data[:, 1] 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_orig = feature_values[0]['AP_begin_voltage'][1] efel.setDerivativeThreshold(5) feature_values = \ efel.getFeatureValues( [trace], features) AP_begin_voltage = feature_values[0]['AP_begin_voltage'][1] nt.assert_almost_equal(AP_begin_voltage, -51.6400489995987) nt.assert_not_equal(AP_begin_voltage, AP_begin_voltage_orig)
import efel import numpy as np import pyabf from tkinter import filedialog from matplotlib import pyplot as plt #Opens a dialog box allowing the user to select the file and removes the extension from the file name file_path = filedialog.askopenfilename() file = file_path[:-4] #Sets settings for derivative threshold, interpolation step, and calculation of RMP efel.setDoubleSetting('interp_step',0.05) #Must be set to the sampling rate (20,000 Hz = 0.05) efel.setDoubleSetting('voltage_base_start_perc',0.1) #Used for RMP calculation efel.setDoubleSetting('voltage_base_end_perc',0.8) #Used for RMP calculation efel.setDerivativeThreshold(15) #Normally set to 15 #Import ABF file and assign the corresponding data to Time and RawData variables File = pyabf.ABF(file_path) Time = (File.sweepX)*1000 RawData = File.data #Identify the number of traces in the abf file (*Note: this is designed for a 20kHz recording lasting ~10s) #Other differences in recording will need to change these values RawData = np.transpose(RawData) TraceNum = int((len(RawData) / 200000)) #Using the number of calulcated traces, split the first RawData column into equal arrays of 200000 #Then, concatenate the arrays together and segment out the first 35000 sampling points # (the last 165000 points are irrelevant) SortedData = np.split(RawData[:,0],TraceNum,0)
#*Files can be analyzed as single traces w/ graphs or an experiment as a whole #*It should be used in conjunction with the HEKAv2 MATLAB script #Install and Import these scripts import scipy.io import efel import numpy as np from tkinter import filedialog from matplotlib import pyplot as plt #Enable EFEL Settings efel.setDoubleSetting( 'interp_step', 0.05) #Must be set to the sampling rate (20,000 Hz = 0.05) efel.setDoubleSetting('voltage_base_start_perc', 0.1) efel.setDoubleSetting('voltage_base_end_perc', 0.8) efel.setDerivativeThreshold(10) #Value can be changed, but normally set to 10 efel.setThreshold(0) #Create global variable trace_results = dict() #Opens a dialog box allowing the user to select the file and removes the extension from the file name & load in the file file_path = filedialog.askopenfilename() file = file_path[:-4] mat = scipy.io.loadmat(file_path) #Depending upon the number of cells present, split the data into a list of numpy arrays based on the number of experiments print('There are ' + str(int(mat['CellNum'])) + ' cells in this file.') if mat['CellNum'] == 1: Cell1 = list(np.hsplit(mat['C1data'], int(mat['C1Expts'])))