From a3417c182ae8d597e9e10cb63f28e36e7657a7bc Mon Sep 17 00:00:00 2001 From: junos Date: Fri, 11 Jun 2021 16:34:09 +0200 Subject: [PATCH] Add a function to determine EMA session time. --- features/esm.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/features/esm.py b/features/esm.py index 3dd6bff..5707936 100644 --- a/features/esm.py +++ b/features/esm.py @@ -65,7 +65,7 @@ def preprocess_esm(df_esm: pd.DataFrame) -> pd.DataFrame: return df_esm.join(df_esm_json) -def classify_sessions_adherence(df_esm_preprocessed: pd.DataFrame) -> pd.DataFrame: +def classify_sessions_by_completion(df_esm_preprocessed: pd.DataFrame) -> pd.DataFrame: """ For each distinct EMA session, determine how the participant responded to it. Possible outcomes are: SESSION_STATUS_UNANSWERED, SESSION_STATUS_DAY_FINISHED, and SESSION_STATUS_COMPLETE @@ -143,3 +143,25 @@ def classify_sessions_adherence(df_esm_preprocessed: pd.DataFrame) -> pd.DataFra ] = SESSION_STATUS_COMPLETE return df_session_counts + + +def classify_sessions_by_time(df_esm_preprocessed: pd.DataFrame) -> pd.DataFrame: + """ + For each EMA session, determine the time of the first user answer and its time type (morning, workday, or evening.) + + Parameters + ---------- + df_esm_preprocessed: pd.DataFrame + A preprocessed dataframe of esm data, which must include the session ID (esm_session). + + Returns + ------- + df_session_time: pd.DataFrame + A dataframe of all sessions (grouped by GROUP_SESSIONS_BY) with their time type and timestamp of first answer. + """ + df_session_time = ( + df_esm_preprocessed.sort_values(["participant_id", "datetime_lj"]) + .groupby(GROUP_SESSIONS_BY) + .first()[["time", "datetime_lj"]] + ) + return df_session_time