From cbc8ae4e03bbe6efd4ac8c9c18acd389ace16100 Mon Sep 17 00:00:00 2001 From: junos Date: Tue, 5 Apr 2022 18:58:09 +0200 Subject: [PATCH] Add necessary checks for empty data frames. --- config.yaml | 1 + rules/features.smk | 2 +- src/features/phone_esm/straw/main.py | 13 +++++++++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/config.yaml b/config.yaml index 2a38e75e..6aea7e73 100644 --- a/config.yaml +++ b/config.yaml @@ -240,6 +240,7 @@ PHONE_ESM: STRAW: COMPUTE: True SCALES: ["PANAS_positive_affect", "PANAS_negative_affect", "JCQ_job_demand", "JCQ_job_control", "JCQ_supervisor_support", "JCQ_coworker_support"] + FEATURES: [mean] SRC_SCRIPT: src/features/phone_esm/straw/main.py # See https://www.rapids.science/latest/features/phone-keyboard/ diff --git a/rules/features.smk b/rules/features.smk index 6c4a6b5d..6b417311 100644 --- a/rules/features.smk +++ b/rules/features.smk @@ -343,7 +343,7 @@ rule esm_features: scales=lambda wildcards: config["PHONE_ESM"]["PROVIDERS"][wildcards.provider_key.upper()]["SCALES"] output: "data/interim/{pid}/phone_esm_features/phone_esm_clean_{provider_key}.csv" script: - "../src/features/entry.R" + "../src/features/entry.py" rule phone_keyboard_python_features: input: diff --git a/src/features/phone_esm/straw/main.py b/src/features/phone_esm/straw/main.py index 81992be0..cc7131e8 100644 --- a/src/features/phone_esm/straw/main.py +++ b/src/features/phone_esm/straw/main.py @@ -9,9 +9,14 @@ def straw_features(sensor_data_files, time_segment, provider, filter_data_by_seg # the subset of requested features this function can compute features_to_compute = list(set(requested_features) & set(base_features_names)) esm_features = pd.DataFrame(columns=["local_segment"] + features_to_compute) + if not esm_data.empty: + esm_data = filter_data_by_segment(esm_data, time_segment) - esm_data = filter_data_by_segment(esm_data, time_segment) - esm_features["mean"] = esm_data.groupby(["local_segment"])["esm_user_score"].mean() - #TODO Create the column esm_user_score in esm_clean. Currently, this is only done when reversing. - esm_features = esm_features.reset_index() + if not esm_data.empty: + esm_features = pd.DataFrame() + + esm_features["mean"] = esm_data.groupby(["local_segment"])["esm_user_score"].mean() + #TODO Create the column esm_user_score in esm_clean. Currently, this is only done when reversing. + + esm_features = esm_features.reset_index() return esm_features