Added components for the temperature features extraction.
parent
1902d02a86
commit
393dab72f5
23
config.yaml
23
config.yaml
|
@ -495,9 +495,17 @@ EMPATICA_TEMPERATURE:
|
|||
CONTAINER: TEMP
|
||||
PROVIDERS:
|
||||
DBDP:
|
||||
COMPUTE: False
|
||||
COMPUTE: True
|
||||
FEATURES: ["maxtemp", "mintemp", "avgtemp", "mediantemp", "modetemp", "stdtemp", "diffmaxmodetemp", "diffminmodetemp", "entropytemp"]
|
||||
SRC_SCRIPT: src/features/empatica_temperature/dbdp/main.py
|
||||
CF:
|
||||
COMPUTE: True
|
||||
FEATURES: ["autocorrelations", "countAboveMean", "countBelowMean", "maximum", "minimum", "meanAbsChange", "longestStrikeAboveMean",
|
||||
"longestStrikeBelowMean", "stdDev", "median", "meanChange", "numberOfZeroCrossings", "absEnergy", "linearTrendSlope",
|
||||
"ratioBeyondRSigma", "binnedEntropy", "numOfPeaksAutocorr", "numberOfZeroCrossingsAutocorr", "areaAutocorr",
|
||||
"calcMeanCrossingRateAutocorr", "countAboveMeanAutocorr", "sumPer", "sumSquared", "squareSumOfComponent",
|
||||
"sumOfSquareComponents"]
|
||||
SRC_SCRIPT: src/features/empatica_temperature/cf/main.py
|
||||
|
||||
# See https://www.rapids.science/latest/features/empatica-electrodermal-activity/
|
||||
EMPATICA_ELECTRODERMAL_ACTIVITY:
|
||||
|
@ -509,14 +517,11 @@ EMPATICA_ELECTRODERMAL_ACTIVITY:
|
|||
SRC_SCRIPT: src/features/empatica_electrodermal_activity/dbdp/main.py
|
||||
CF:
|
||||
COMPUTE: True
|
||||
FEATURES: ['mean', 'std', 'q25', 'q75', 'qd', 'deriv', 'power', 'numPeaks', 'ratePeaks', 'powerPeaks',
|
||||
'sumPosDeriv', 'propPosDeriv', 'derivTonic', 'sigTonicDifference', 'freqFeats',
|
||||
'maxPeakAmplitudeChangeBefore', 'maxPeakAmplitudeChangeAfter',
|
||||
'avgPeakAmplitudeChangeBefore', 'avgPeakAmplitudeChangeAfter', 'avgPeakChangeRatio',
|
||||
'maxPeakIncreaseTime', 'maxPeakDecreaseTime', 'maxPeakDuration', 'maxPeakChangeRatio',
|
||||
'avgPeakIncreaseTime', 'avgPeakDecreaseTime', 'avgPeakDuration', 'maxPeakResponseSlopeBefore',
|
||||
'maxPeakResponseSlopeAfter', 'signalOverallChange', 'changeDuration', 'changeRate',
|
||||
'significantIncrease', 'significantDecrease']
|
||||
FEATURES: ['mean', 'std', 'q25', 'q75', 'qd', 'deriv', 'power', 'numPeaks', 'ratePeaks', 'powerPeaks', 'sumPosDeriv', 'propPosDeriv', 'derivTonic',
|
||||
'sigTonicDifference', 'freqFeats','maxPeakAmplitudeChangeBefore', 'maxPeakAmplitudeChangeAfter', 'avgPeakAmplitudeChangeBefore',
|
||||
'avgPeakAmplitudeChangeAfter', 'avgPeakChangeRatio', 'maxPeakIncreaseTime', 'maxPeakDecreaseTime', 'maxPeakDuration', 'maxPeakChangeRatio',
|
||||
'avgPeakIncreaseTime', 'avgPeakDecreaseTime', 'avgPeakDuration', 'maxPeakResponseSlopeBefore', 'maxPeakResponseSlopeAfter', 'signalOverallChange',
|
||||
'changeDuration', 'changeRate', 'significantIncrease', 'significantDecrease']
|
||||
SRC_SCRIPT: src/features/empatica_electrodermal_activity/cf/main.py
|
||||
|
||||
# See https://www.rapids.science/latest/features/empatica-blood-volume-pulse/
|
||||
|
|
|
@ -13,34 +13,22 @@ dependencies:
|
|||
- attrs=20.3.0
|
||||
- binaryornot=0.4.4
|
||||
- blas=1.0
|
||||
- brotli=1.0.9
|
||||
- brotlipy=0.7.0
|
||||
- bzip2=1.0.8
|
||||
- ca-certificates=2022.2.1
|
||||
- certifi=2021.10.8
|
||||
- ca-certificates=2021.7.5
|
||||
- certifi=2021.5.30
|
||||
- cffi=1.14.4
|
||||
- chardet=3.0.4
|
||||
- click=7.1.2
|
||||
- colorama=0.4.4
|
||||
- cookiecutter=1.6.0
|
||||
- cryptography=3.3.1
|
||||
- cycler=0.11.0
|
||||
- datrie=0.8.2
|
||||
- dbus=1.13.18
|
||||
- docutils=0.16
|
||||
- expat=2.4.4
|
||||
- fontconfig=2.13.1
|
||||
- fonttools=4.25.0
|
||||
- freetype=2.11.0
|
||||
- future=0.18.2
|
||||
- giflib=5.2.1
|
||||
- gitdb=4.0.5
|
||||
- gitdb2=4.0.2
|
||||
- gitpython=3.1.11
|
||||
- glib=2.69.1
|
||||
- gst-plugins-base=1.14.0
|
||||
- gstreamer=1.14.0
|
||||
- icu=58.2
|
||||
- idna=2.10
|
||||
- imbalanced-learn=0.6.2
|
||||
- importlib-metadata=2.0.0
|
||||
|
@ -49,10 +37,7 @@ dependencies:
|
|||
- jinja2=2.11.2
|
||||
- jinja2-time=0.2.0
|
||||
- joblib=1.0.0
|
||||
- jpeg=9d
|
||||
- jsonschema=3.2.0
|
||||
- kiwisolver=1.3.2
|
||||
- lcms2=2.12
|
||||
- ld_impl_linux-64=2.36.1
|
||||
- libblas=3.8.0
|
||||
- libcblas=3.8.0
|
||||
|
@ -66,38 +51,24 @@ dependencies:
|
|||
- libgfortran
|
||||
- liblapack=3.8.0
|
||||
- libopenblas=0.3.10
|
||||
- libpng=1.6.37
|
||||
- libstdcxx-ng=11.2.0
|
||||
- libtiff=4.2.0
|
||||
- libuuid=1.0.3
|
||||
- libwebp=1.2.2
|
||||
- libwebp-base=1.2.2
|
||||
- libxcb=1.14
|
||||
- libxgboost=0.90
|
||||
- libxml2=2.9.12
|
||||
- libzlib=1.2.11
|
||||
- lightgbm=3.1.1
|
||||
- llvm-openmp=10.0.0
|
||||
- lz4-c=1.9.3
|
||||
- markupsafe=1.1.1
|
||||
- matplotlib=3.5.1
|
||||
- matplotlib-base=3.5.1
|
||||
- mkl
|
||||
- mkl-service=2.3.0
|
||||
- mkl_fft=1.2.0
|
||||
- mkl_random=1.1.1
|
||||
- more-itertools=8.6.0
|
||||
- munkres=1.1.4
|
||||
- ncurses=6.2
|
||||
- numpy=1.19.2
|
||||
- numpy-base=1.19.2
|
||||
- openblas=0.3.4
|
||||
- openssl=1.1.1m
|
||||
- packaging=21.3
|
||||
- openssl=1.1.1k
|
||||
- pandas=1.1.5
|
||||
- pbr=5.5.1
|
||||
- pcre=8.45
|
||||
- pillow=9.0.1
|
||||
- pip=20.3.3
|
||||
- plotly=4.14.1
|
||||
- poyo=0.5.0
|
||||
|
@ -106,28 +77,24 @@ dependencies:
|
|||
- pycparser=2.20
|
||||
- pyerfa=1.7.1.1
|
||||
- pyopenssl=20.0.1
|
||||
- pyqt=5.9.2
|
||||
- pysocks=1.7.1
|
||||
- python=3.7.9
|
||||
- python-dateutil=2.8.1
|
||||
- python_abi=3.7
|
||||
- pytz=2020.4
|
||||
- pyyaml=5.3.1
|
||||
- qt=5.9.7
|
||||
- readline=8.0
|
||||
- requests=2.25.0
|
||||
- retrying=1.3.3
|
||||
- scikit-learn=0.23.2
|
||||
- scipy=1.5.2
|
||||
- setuptools=51.0.0
|
||||
- sip=4.19.8
|
||||
- six=1.15.0
|
||||
- smmap=3.0.4
|
||||
- smmap2=3.0.1
|
||||
- sqlite=3.33.0
|
||||
- threadpoolctl=2.1.0
|
||||
- tk=8.6.10
|
||||
- tornado=6.1
|
||||
- tqdm=4.62.0
|
||||
- urllib3=1.25.11
|
||||
- wheel=0.36.2
|
||||
|
@ -138,23 +105,26 @@ dependencies:
|
|||
- yaml=0.2.5
|
||||
- zipp=3.4.0
|
||||
- zlib=1.2.11
|
||||
- zstd=1.4.9
|
||||
- pip:
|
||||
- amply==0.1.4
|
||||
- bidict==0.21.4
|
||||
- bidict==0.22.0
|
||||
- biosppy==0.8.0
|
||||
- build==0.7.0
|
||||
- cached-property==1.5.2
|
||||
- calculatingfeatures==0.1.1
|
||||
- configargparse==0.15.1
|
||||
- cycler==0.11.0
|
||||
- decorator==4.4.2
|
||||
- fonttools==4.31.2
|
||||
- h5py==3.6.0
|
||||
- ipython-genutils==0.2.0
|
||||
- jupyter-core==4.6.3
|
||||
- kiwisolver==1.4.1
|
||||
- matplotlib==3.5.1
|
||||
- nbformat==5.0.7
|
||||
- opencv-python==4.5.5.64
|
||||
- packaging==21.3
|
||||
- peakutils==1.3.3
|
||||
- pep517==0.12.0
|
||||
- pillow==9.0.1
|
||||
- pulp==2.4
|
||||
- pyparsing==2.4.7
|
||||
- pyrsistent==0.15.5
|
||||
|
@ -162,7 +132,7 @@ dependencies:
|
|||
- ratelimiter==1.2.0.post0
|
||||
- shortuuid==1.0.8
|
||||
- snakemake==5.30.2
|
||||
- tomli==2.0.1
|
||||
- toposort==1.5
|
||||
- traitlets==4.3.3
|
||||
- typing-extensions==4.1.1
|
||||
prefix: /opt/conda/envs/rapids
|
||||
|
|
|
@ -18,7 +18,7 @@ def extractEDAFeaturesFromIntradayData(eda_intraday_data, features, time_segment
|
|||
|
||||
eda_intraday_features = pd.DataFrame()
|
||||
|
||||
# apply a method from calculate features module
|
||||
# apply methods from calculate features module
|
||||
eda_intraday_features = \
|
||||
eda_intraday_data.groupby('local_segment').apply(\
|
||||
lambda x: calculateFeatures(convertInputInto2d(x['electrodermal_activity'], x.shape[0]), fs=4, featureNames=features))
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
import pandas as pd
|
||||
from scipy.stats import entropy
|
||||
|
||||
from CalculatingFeatures.helper_functions import convert1DEmpaticaToArray, convertInputInto2d, genericFeatureNames
|
||||
from CalculatingFeatures.calculate_features import calculateFeatures
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
def extractTempFeaturesFromIntradayData(temperature_intraday_data, features, time_segment, filter_data_by_segment):
|
||||
temperature_intraday_features = pd.DataFrame(columns=["local_segment"] + features)
|
||||
|
||||
if not temperature_intraday_data.empty:
|
||||
temperature_intraday_data = filter_data_by_segment(temperature_intraday_data, time_segment)
|
||||
|
||||
if not temperature_intraday_data.empty:
|
||||
|
||||
temperature_intraday_features = pd.DataFrame()
|
||||
|
||||
# apply methods from calculate features module
|
||||
temperature_intraday_features = \
|
||||
temperature_intraday_data.groupby('local_segment').apply(\
|
||||
lambda x: calculateFeatures(convertInputInto2d(x['temperature'], x.shape[0]), fs=4, featureNames=features))
|
||||
|
||||
temperature_intraday_features.reset_index(inplace=True)
|
||||
|
||||
return temperature_intraday_features
|
||||
|
||||
|
||||
def cf_features(sensor_data_files, time_segment, provider, filter_data_by_segment, *args, **kwargs):
|
||||
temperature_intraday_data = pd.read_csv(sensor_data_files["sensor_data"])
|
||||
|
||||
requested_intraday_features = provider["FEATURES"]
|
||||
# name of the features this function can compute
|
||||
base_intraday_features_names = genericFeatureNames
|
||||
# the subset of requested features this function can compute
|
||||
intraday_features_to_compute = list(set(requested_intraday_features) & set(base_intraday_features_names))
|
||||
|
||||
# extract features from intraday data
|
||||
temperature_intraday_features = extractTempFeaturesFromIntradayData(temperature_intraday_data,
|
||||
intraday_features_to_compute, time_segment,
|
||||
filter_data_by_segment)
|
||||
|
||||
return temperature_intraday_features
|
Loading…
Reference in New Issue