From 31e36e7400d2dff152f8420d56369d2b3a8b6141 Mon Sep 17 00:00:00 2001 From: Primoz Date: Wed, 11 May 2022 08:50:15 +0000 Subject: [PATCH] Alternating Second order and full segment features corresponding to config settings. --- config.yaml | 8 ++++---- rules/features.smk | 18 ++++++------------ src/features/entry.py | 16 +++++++--------- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/config.yaml b/config.yaml index 97785709..324bba7e 100644 --- a/config.yaml +++ b/config.yaml @@ -3,7 +3,7 @@ ######################################################################################################################## # See https://www.rapids.science/latest/setup/configuration/#participant-files -PIDS: [p02, p01] +PIDS: [p01] #,p02] # See https://www.rapids.science/latest/setup/configuration/#automatic-creation-of-participant-files CREATE_PARTICIPANT_FILES: @@ -477,11 +477,11 @@ EMPATICA_ACCELEROMETER: CONTAINER: ACC PROVIDERS: DBDP: - COMPUTE: False + COMPUTE: True FEATURES: ["maxmagnitude", "minmagnitude", "avgmagnitude", "medianmagnitude", "stdmagnitude"] SRC_SCRIPT: src/features/empatica_accelerometer/dbdp/main.py CR: - COMPUTE: False + COMPUTE: True FEATURES: ["fqHighestPeakFreqs", "fqHighestPeaks", "fqEnergyFeat", "fqEntropyFeat", "fqHistogramBins","fqAbsMean", "fqSkewness", "fqKurtosis", "fqInterquart", # Freq features "meanLow", "areaLow", "totalAbsoluteAreaBand", "totalMagnitudeBand", "entropyBand", "skewnessBand", "kurtosisBand", "postureDistanceLow", "absoluteMeanBand", "absoluteAreaBand", "quartilesBand", "interQuartileRangeBand", "varianceBand", @@ -502,7 +502,7 @@ EMPATICA_HEARTRATE: CONTAINER: HR PROVIDERS: DBDP: - COMPUTE: False + COMPUTE: True FEATURES: ["maxhr", "minhr", "avghr", "medianhr", "modehr", "stdhr", "diffmaxmodehr", "diffminmodehr", "entropyhr"] SRC_SCRIPT: src/features/empatica_heartrate/dbdp/main.py diff --git a/rules/features.smk b/rules/features.smk index b72e3cbb..1b6e0ad8 100644 --- a/rules/features.smk +++ b/rules/features.smk @@ -771,8 +771,7 @@ rule empatica_accelerometer_python_features: sensor_key = "empatica_accelerometer" output: "data/interim/{pid}/empatica_accelerometer_features/empatica_accelerometer_python_{provider_key}.csv", - "data/interim/{pid}/empatica_accelerometer_features/empatica_accelerometer_python_{provider_key}_windows.csv", - "data/interim/{pid}/empatica_accelerometer_features/empatica_accelerometer_python_{provider_key}_windows_SO_features.csv" + "data/interim/{pid}/empatica_accelerometer_features/empatica_accelerometer_python_{provider_key}_windows.csv" script: "../src/features/entry.py" @@ -799,8 +798,7 @@ rule empatica_heartrate_python_features: sensor_key = "empatica_heartrate" output: "data/interim/{pid}/empatica_heartrate_features/empatica_heartrate_python_{provider_key}.csv", - "data/interim/{pid}/empatica_heartrate_features/empatica_heartrate_python_{provider_key}_windows.csv", - "data/interim/{pid}/empatica_heartrate_features/empatica_heartrate_python_{provider_key}_windows_SO_features.csv" + "data/interim/{pid}/empatica_heartrate_features/empatica_heartrate_python_{provider_key}_windows.csv" script: "../src/features/entry.py" @@ -827,8 +825,7 @@ rule empatica_temperature_python_features: sensor_key = "empatica_temperature" output: "data/interim/{pid}/empatica_temperature_features/empatica_temperature_python_{provider_key}.csv", - "data/interim/{pid}/empatica_temperature_features/empatica_temperature_python_{provider_key}_windows.csv", - "data/interim/{pid}/empatica_temperature_features/empatica_temperature_python_{provider_key}_windows_SO_features.csv" + "data/interim/{pid}/empatica_temperature_features/empatica_temperature_python_{provider_key}_windows.csv" script: "../src/features/entry.py" @@ -855,8 +852,7 @@ rule empatica_electrodermal_activity_python_features: sensor_key = "empatica_electrodermal_activity" output: "data/interim/{pid}/empatica_electrodermal_activity_features/empatica_electrodermal_activity_python_{provider_key}.csv", - "data/interim/{pid}/empatica_electrodermal_activity_features/empatica_electrodermal_activity_python_{provider_key}_windows.csv", - "data/interim/{pid}/empatica_electrodermal_activity_features/empatica_electrodermal_activity_python_{provider_key}_windows_SO_features.csv" + "data/interim/{pid}/empatica_electrodermal_activity_features/empatica_electrodermal_activity_python_{provider_key}_windows.csv" script: "../src/features/entry.py" @@ -883,8 +879,7 @@ rule empatica_blood_volume_pulse_python_features: sensor_key = "empatica_blood_volume_pulse" output: "data/interim/{pid}/empatica_blood_volume_pulse_features/empatica_blood_volume_pulse_python_{provider_key}.csv", - "data/interim/{pid}/empatica_blood_volume_pulse_features/empatica_blood_volume_pulse_python_{provider_key}_windows.csv", - "data/interim/{pid}/empatica_blood_volume_pulse_features/empatica_blood_volume_pulse_python_{provider_key}_windows_SO_features.csv" + "data/interim/{pid}/empatica_blood_volume_pulse_features/empatica_blood_volume_pulse_python_{provider_key}_windows.csv" script: "../src/features/entry.py" @@ -911,8 +906,7 @@ rule empatica_inter_beat_interval_python_features: sensor_key = "empatica_inter_beat_interval" output: "data/interim/{pid}/empatica_inter_beat_interval_features/empatica_inter_beat_interval_python_{provider_key}.csv", - "data/interim/{pid}/empatica_inter_beat_interval_features/empatica_inter_beat_interval_python_{provider_key}_windows.csv", - "data/interim/{pid}/empatica_inter_beat_interval_features/empatica_inter_beat_interval_python_{provider_key}_windows_SO_features.csv" + "data/interim/{pid}/empatica_inter_beat_interval_features/empatica_inter_beat_interval_python_{provider_key}_windows.csv" script: "../src/features/entry.py" diff --git a/src/features/entry.py b/src/features/entry.py index 26aa1adc..5517cdcc 100644 --- a/src/features/entry.py +++ b/src/features/entry.py @@ -11,7 +11,7 @@ calc_windows = False try: calc_windows = provider["WINDOWS"]["COMPUTE"] except KeyError: - print("Compute window key not found in config.yaml!") + print("WINDOWS COMPUTE key not found in config.yaml!") if sensor_key == "all_cleaning_individual" or sensor_key == "all_cleaning_overall": @@ -23,16 +23,14 @@ else: time_segments_file = snakemake.input["time_segments_labels"] if calc_windows: - first_order_features, second_order_features = fetch_provider_features(provider, provider_key, sensor_key, sensor_data_files, time_segments_file, calc_windows=calc_windows) - first_order_features.to_csv(snakemake.output[1], index=False) - second_order_features.to_csv(snakemake.output[2], index=False) - calc_windows = False + window_features, second_order_features = fetch_provider_features(provider, provider_key, sensor_key, sensor_data_files, time_segments_file, calc_windows=True) + second_order_features.to_csv(snakemake.output[0], index=False) + window_features.to_csv(snakemake.output[1], index=False) elif "empatica" in sensor_key: pd.DataFrame().to_csv(snakemake.output[1], index=False) - pd.DataFrame().to_csv(snakemake.output[2], index=False) - sensor_features = fetch_provider_features(provider, provider_key, sensor_key, sensor_data_files, time_segments_file, calc_windows=calc_windows) + sensor_features = fetch_provider_features(provider, provider_key, sensor_key, sensor_data_files, time_segments_file, calc_windows=False) - -sensor_features.to_csv(snakemake.output[0], index=False) +if not calc_windows: + sensor_features.to_csv(snakemake.output[0], index=False)