Package: cr-features
Calculating featuresUsageInstall the library with:pip install build
python -m buildAlternative:pip install pep517
python -m pep517.build .Basic usage is:fromcr_features.helper_functionsimportempatica1d_to_array,convert_to2d,frequency_features,hrv_features,gsr_featuresfromcr_features.calculate_featuresimportcalculate_featuresimportpandasaspdpathToHrvCsv="example_data/S2_E4_Data/BVP.csv"windowLength=500# get an array of values from HRV empatica filehrv_data,startTimeStamp,sampleRate=empatica1d_to_array(pathToHrvCsv)# Convert the HRV data into 2D arrayhrv_data_2D=convert_to2d(hrv_data,windowLength)# Create a list with feature namesfeatureNames=[]featureNames.extend(hrv_features)featureNames.extend(frequency_features)pd.set_option('display.max_columns',None)# Calculate featurescalculatedFeatures=calculate_features(hrv_data_2D,fs=int(sampleRate),feature_names=featureNames)More usage examples are located inusage_examples.ipynbfileFeaturesFeatures are returned (from calculateFeatures() function) in a Pandas DataFrame object.In the case if a feature couldn't be calculated (for example, if input signal is invalid), NaN value is returned.Further in this section, the list with descriptions of all possible features is presented.GSR features:These features are useful for 1D GSR(EDA) signalsmean: mean of the signalstd: standard deviation of signalq25: 0.25 quantileq75: 0.75 quantileqd: q75 - q25deriv: sum of gradients of the signalpower:  power of the signal (mean of squared signal)numPeaks: number of EDA peaksratePeaks: average number of peaks per secondpowerPeaks: power of peaks (mean of signal at indexes of peaks)sumPosDeriv: sum of positive derivatives divided by number of all derivativespropPosDeriv: proportion of positive derivatives per all derivativesderivTonic: sum of gradients of the tonicsigTonicDifference: mean of tonic subtracted from signalfreqFeats:maxPeakAmplitudeChangeBefore: maximum peak amplitude change before peakmaxPeakAmplitudeChangeAfter: maximum peak amplitude change after peakavgPeakAmplitudeChangeBefore: average peak amplitude change before peakavgPeakAmplitudeChangeAfter: average peak amplitude change after peakavgPeakChangeRatio: avg_peak_increase_time / avg_peak_decrease_timemaxPeakIncreaseTime: maximum peak increase timemaxPeakDecreaseTime: maximum peak decrease timemaxPeakDuration: maximum peak durationmaxPeakChangeRatio: max_peak_increase_time / max_peak_decrease_timeavgPeakIncreaseTime: average peak increase timeavgPeakDecreaseTime: average peak decreade timeavgPeakDuration: average peak durationmaxPeakResponseSlopeBefore: maximum peak response slope before peakmaxPeakResponseSlopeAfter: maximum peak response slope after peaksignalOverallChange: maximum difference between samples (max(sig)-min(sig))changeDuration: duration between maximum and minimum valueschangeRate: change_duration / signal_overall_changesignificantIncrease:significantDecrease:HRV features:These features are useful for 1D HRV(BVP) signals.If number of RR intervals (numRR) is less thanlength of sample / (2 * sampling rate)(30 BPM) or greater thanlength of sample / (sampling rate / 4)(240 BPM), BPM value is incorrect and thus, all other HRV features are set to NaN.meanHr: mean heart rateibi: mean interbeat intervalsdnn: standard deviation of the ibisdsd: standard deviation of the differences between all subsequent R-R intervalsrmssd: root of the mean of the list of squared differencespnn20: the proportion of NN20 intervals to all intervalspnn50: the proportion of NN50 intervals to all intervalssd:sd2:sd1/sd2: sd / sd2 rationumRR: number of RR intervalsAccelerometer features:These features are useful for 3D signals from accelerometermeanLow: mean of low-pass filtered signalareaLow: area under the low-pass filtered signaltotalAbsoluteAreaBand: sum of absolute areas under the band-pass filtered x, y and z signaltotalMagnitudeBand: square root of sum of squared band-pass filtered x, y and z componentsentropyBand: entropy of band-pass filtered signalskewnessBand: skewness of band-pass filtered signalkurtosisBand: kurtosis of band-pass filtered signalpostureDistanceLow: calculates difference between mean values for a given sensor (low-pass filtered)absoluteMeanBand: mean of band-pass filtered signalabsoluteAreaBand: area under the band-pass filtered signalquartilesBand: quartiles of band-pass filtered signalinterQuartileRangeBand: inter quartile range of band-pass filtered signalvarianceBand: variance of band-pass filtered signalcoefficientOfVariationBand: dispersion of band-pass filtered signalamplitudeBand: difference between maximum and minimum sample of band-pass filtered signaltotalEnergyBand: total magnitude of band-pass filtered signaldominantFrequencyEnergyBand: ratio of energy in dominant frequencymeanCrossingRateBand: the number of signal crossings with mean of band-pass filtered signalcorrelationBand: Pearson's correlation between band-pass filtered axisquartilesMagnitudesBand: quartiles at 25%, 50% and 75% per band-pass filtered signalinterQuartileRangeMagnitudesBand: interquartile range of band-pass filtered signalareaUnderAccelerationMagnitude: area under acceleration magnitudepeaksDataLow: number of peaks, sum of peak values, peak avg, amplitude avgsumPerComponentBand: sum per component of band-pass filtered signalvelocityBand: velocity of the band-pass filtered signalmeanKineticEnergyBand: mean kinetic energy 1/2*mV^2 of band-pass filtered signaltotalKineticEnergyBand: total kinetic energy 1/2*mV^2 for all axes (band-pass filtered)squareSumOfComponent: squared sum of componentsumOfSquareComponents: sum of squared componentsaverageVectorLength: mean of magnitude vectoraverageVectorLengthPower: square mean of magnitude vectorrollAvgLow: maximum difference of low-pass filtered roll samplespitchAvgLow: maximum difference of low-pass filtered pitch samplesrollStdDevLow: standard deviation of roll (calculated from low-pass filtered signal)pitchStdDevLow: standard deviation of pitch (calculated from low-pass filtered signal)rollMotionAmountLow: amount of wrist roll (from low-pass filtered signal) motionrollMotionRegularityLow: regularity of wrist roll motionmanipulationLow: manipulation of low-pass filtered signalsrollPeaks: number of roll peaks, sum of roll peak values, roll peak avg, roll amplitude avgpitchPeaks: number of pitch peaks, sum of pitch peak values, pitch peak avg, pitch amplitude avgrollPitchCorrelation: correlation between roll and peak (obtained from low-pass filtered signal)Gyroscope features:These features are useful for 3D signals from gyroscopemeanLow: mean of low-pass filtered signalareaLow: area under the low-pass filtered signaltotalAbsoluteAreaLow: sum of absolute areas under the low-pass filtered x, y and z signaltotalMagnitudeLow: square root of sum of squared band-pass filtered x, y and z componentsentropyLow: entropy of low-pass filtered signalskewnessLow: skewness of low-pass filtered signalkurtosisLow: kurtosis of low-pass filtered signalquartilesLow: quartiles of low-pass filtered signalinterQuartileRangeLow: inter quartile range of low-pass filtered signalvarianceLow: variance of low-pass filtered signalcoefficientOfVariationLow: dispersion of low-pass filtered signalamplitudeLow: difference between maximum and minimum sample of low-pass filtered signaltotalEnergyLow: total magnitude of low-pass filtered signaldominantFrequencyEnergyLow: ratio of energy in dominant frequencymeanCrossingRateLow: the number of signal crossings with mean of low-pass filtered signalcorrelationLow: Pearson's correlation between low-pass filtered axisquartilesMagnitudeLow: quartiles at 25%, 50% and 75% per low-pass filtered signalinterQuartileRangeMagnitudesLow: interquartile range of band-pass filtered signalareaUnderMagnitude: area under magnitudepeaksCountLow: number of peaks in low-pass filtered signalaverageVectorLengthLow: mean of low-pass filtered magnitude vectoraverageVectorLengthPowerLow: square mean of low-pass filtered magnitude vectorGeneric features:These are generic features, useful for many different types of signalsautocorrelations: autocorrelations of the given signal with lags 5, 10, 20, 30, 50, 75 and 100countAboveMean: number of values in signal that are higher than the mean of signalcountBelowMean: number of values in signal that are lower than the mean of signalmaximum: maximum value of the signalminimum: minimum value of the signalmeanAbsChange: the mean of absolute differences between subsequent time series valueslongestStrikeAboveMean: longest part of signal above meanlongestStrikeBelowMean: longest part of signal below meanstdDev: standard deviation of the signalmedian: median of the signalmeanChange: the mean over the differences between subsequent time series valuesnumberOfZeroCrossings: number of crossings of signal on 0absEnergy: the absolute energy of the time series which is the sum over the squared valueslinearTrendSlope: a linear least-squares regression for the values of the time series versus the sequence from 0 to length of the time series minus oneratioBeyondRSigma: ratio of values that are more than r*std(x) (so r sigma) away from the mean of signal. r in this case is 2.5binnedEntropy: entropy of binned valuesnumOfPeaksAutocorr: number of peaks of autocorrelationsnumberOfZeroCrossingsAutocorr: number of crossings of autocorrelations on 0areaAutocorr: area under autocorrelationscalcMeanCrossingRateAutocorr: the number of autocorrelation crossings with meancountAboveMeanAutocorr: umber of values in signal that are higher than the mean of autocorrelationsumPer: sum per componentsumSquared: squared sum per componentsquareSumOfComponent: square sum of componentsumOfSquareComponents:sum of square componentsFrequency features:These are frequency features, useful for many different types of signals. The signal is converted to power spectral density signal and features are calculated on this signalfqHighestPeakFreqs: three frequencies corresponding to the largest peaks added to featuresfqHighestPeaks: three largest peaks added to featuresfqEnergyFeat: energy calculated as the sum of the squared FFT component magnitudes, and normalizedfqEntropyFeat: entropy of the FFT of the signalfqHistogramBins: Binned distribution (histogram)fqAbsMean: absolute mean of the raw signalfqSkewness: skewness of the power spectrum of the datafqKurtosis: kurtosis of the power spectrum of the datafqInterquart: inter quartile range of the raw signalContributorsSeveral people contributed to making this library, both to its implemenetation and feature design: Vito Janko, Matjaž Bostič, Gašper Slapničar, Junoš Lukan, Nina Reščič, Simon Stankoski, Boža Cvetković, Mitja Luštrek