diff --git a/config/models.py b/config/models.py index 43da431..d1b864b 100644 --- a/config/models.py +++ b/config/models.py @@ -232,6 +232,17 @@ class ESM(Base, AWAREsensor): esm_session = Column(Integer, nullable=False) esm_notification_id = Column(Integer, nullable=False) esm_expiration_threshold = Column(SmallInteger) + ESM_TYPE = {'text': 1, + 'radio': 2, + 'checkbox': 3, + 'likert': 4, + 'quick_answers': 5, + 'scale': 6, + 'datetime': 7, + 'pam': 8, + 'number': 9, + 'web': 10, + 'date': 11} class Imperfection(Base): diff --git a/exploration/expl_esm_adherence.py b/exploration/expl_esm_adherence.py index 0d2aaf6..c86d9eb 100644 --- a/exploration/expl_esm_adherence.py +++ b/exploration/expl_esm_adherence.py @@ -184,7 +184,7 @@ import numpy as np df_session_counts = pd.DataFrame(session_counts_device).rename( columns={"id": "esm_session_count"} ) -df_session_counts["session_response"] = np.NaN +df_session_counts["session_response"] = np.nan session_group_by = df_esm_preprocessed.groupby( ["participant_id", "device_id", "esm_session"] ) diff --git a/features/esm.py b/features/esm.py index e40d4f6..b75645e 100644 --- a/features/esm.py +++ b/features/esm.py @@ -116,7 +116,7 @@ def classify_sessions_by_completion(df_esm_preprocessed: pd.DataFrame) -> pd.Dat df_session_counts = pd.DataFrame(sessions_grouped.count()["id"]).rename( columns={"id": "esm_session_count"} ) - df_session_counts["session_response"] = np.NaN + df_session_counts["session_response"] = np.nan # 1. Identify all ESMs with status other than answered. esm_not_answered = sessions_grouped.apply( @@ -249,7 +249,11 @@ def clean_up_esm(df_esm_preprocessed: pd.DataFrame) -> pd.DataFrame: [ANSWER_DAY_FINISHED, ANSWER_DAY_OFF, ANSWER_SET_EVENING] ) ] - df_esm_clean = df_esm_clean.assign( + df_esm_clean["esm_user_answer_numeric"] = np.nan + esm_type_numeric = [ESM.ESM_TYPE.get("radio"), + ESM.ESM_TYPE.get("scale"), + ESM.ESM_TYPE.get("number")] + df_esm_clean[df_esm_clean["esm_type"].isin(esm_type_numeric)] = df_esm_clean[df_esm_clean["esm_type"].isin(esm_type_numeric)].assign( esm_user_answer_numeric=lambda x: x.esm_user_answer.str.slice(stop=1).astype( int )