From ca6c4281f2563c06a14924dff9effb2e2d3ab9ff Mon Sep 17 00:00:00 2001 From: rchia16 <ray.chia92@gmail.com> Date: Sat, 25 Nov 2023 13:43:24 +1100 Subject: [PATCH] docs and clean up --- .regress_rr.py.swp | Bin 0 -> 163840 bytes .regress_rr.py.un~ | Bin 0 -> 81740 bytes regress_rr.py | 294 ++++++++++++++++++++++++--------------------- 3 files changed, 154 insertions(+), 140 deletions(-) create mode 100644 .regress_rr.py.swp create mode 100644 .regress_rr.py.un~ diff --git a/.regress_rr.py.swp b/.regress_rr.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..b9d193d7bc45e7dcf393b69926330b16d789ca58 GIT binary patch literal 163840 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℘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 literal 0 HcmV?d00001 diff --git a/.regress_rr.py.un~ b/.regress_rr.py.un~ new file mode 100644 index 0000000000000000000000000000000000000000..3a0d98f02392628a4baa0426a52ea550ebf900ac GIT binary patch literal 81740 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 literal 0 HcmV?d00001 diff --git a/regress_rr.py b/regress_rr.py index bfa4a0a..43729d0 100644 --- a/regress_rr.py +++ b/regress_rr.py @@ -73,16 +73,62 @@ from config import WINDOW_SIZE, WINDOW_SHIFT, IMU_FS, DATA_DIR, BR_FS\ IMU_COLS = ['acc_x', 'acc_y', 'acc_z', 'gyro_x', 'gyro_y', 'gyro_z'] def utc_to_local(utc_dt, tz=None): + """Converts UTC datetime to specified timezone + + Arguments + --------- + utc_dt : datetime + input datetime to convert + tz : pytz.timezone + timezone + + + Returns + ------- + datetime + """ return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=tz) def datetime_from_utc_to_local(utc_datetime): + """Converts UTC datetime to local time + + Arguments + --------- + utc_dt : datetime + input datetime to convert + + + Returns + ------- + datetime + """ now_timestamp = time.time() offset = datetime.fromtimestamp(now_timestamp) - datetime.utcfromtimestamp(now_timestamp) return utc_datetime + offset # Load data def load_bioharness_file(f:str, skiprows=0, skipfooter=0, **kwargs): + """ + Load and retrieve bioharness file. Interpolates any empty time rows + + Arguments + --------- + f : str + filename + skiprows : int + num. of rows to skip from top + skipfooter : int + num. of rows to skip from bottom + **kwargs + + + Returns + ------- + pandas.DataFrame + """ df_list = [] + fmt = "%d/%m/%Y %H:%M:%S.%f" + # Set keyword arguments for read_csv method = partial(pd.read_csv, skipinitialspace=True, skiprows=list(range(1, skiprows+1)), skipfooter=skipfooter, @@ -91,22 +137,38 @@ def load_bioharness_file(f:str, skiprows=0, skipfooter=0, **kwargs): ) df = method(f) if 'Time' not in df.columns.values: + # Set to datetime format df['Time'] = pd.to_datetime( df.rename(columns={'Date':'Day'})[ ['Day','Month','Year']]) \ + pd.to_timedelta(df['ms'], unit='ms') + # Interpolate empty time rows if pd.isna(df['Time']).any(): df['Time'].interpolate(inplace=True) - df['Time'] = pd.to_datetime(df['Time'], format="%d/%m/%Y %H:%M:%S.%f") - df['Time'] = df['Time'].dt.strftime("%d/%m/%Y %H:%M:%S.%f") + df['Time'] = pd.to_datetime(df['Time'], format=fmt) + df['Time'] = df['Time'].dt.strftime(fmt) return df def load_bioharness_files(f_list:list, skiprows=0, skipfooter=0, **kwargs): + """ + Appends the output for load_bioharness_file + + Arguments + --------- + f_list : list + list of bioharness files to read + skiprows : int + num. of rows to skip from top + skipfooter : int + num. of rows to skip from bottom + **kwargs + + + Returns + ------- + pandas.DataFrame + """ df_list = [] - method = partial(pd.read_csv, skipinitialspace=True, - skiprows=list(range(1, skiprows+1)), - skipfooter=skipfooter, - header=0, **kwargs) for f in f_list: df_list.append(load_bioharness_file(f)) @@ -114,12 +176,38 @@ def load_bioharness_files(f_list:list, skiprows=0, skipfooter=0, **kwargs): return df def bioharness_datetime_to_seconds(val): + """ + Converts the bioharness datetime to seconds + + Arguments + --------- + val : str + bioharness time string + + + Returns + ------- + float + """ fmt = "%d/%m/%Y %H:%M:%S.%f" dstr = datetime.strptime(val, fmt) seconds = dstr.timestamp() return seconds def load_imu_file(imu_file:str): + """ + Load and retrieve the specified tobtii imu compressed file + + Arguments + --------- + imu_file : str + Tobii Glasses IMU file to read in gzip compressed format + + + Returns + ------- + pd.DataFrame, dict + """ hdr_file = imu_file.replace('imudata.gz', 'recording.g3') df = pd.read_json(imu_file, lines=True, compression='gzip') @@ -128,6 +216,7 @@ def load_imu_file(imu_file:str): if df.empty: return df, hdr + # Create DataFrame from data column data_df = pd.DataFrame(df['data'].tolist()) df = pd.concat([df.drop('data', axis=1), data_df], axis=1) @@ -137,18 +226,22 @@ def load_imu_file(imu_file:str): start_time = datetime.fromisoformat(iso_tz[:-1]) start_time = utc_to_local(start_time, tz=tzinfo).astimezone(tzinfo) + # Drop NA rows na_inds = df.loc[pd.isna(df['accelerometer']), :].index.values df.drop(index=na_inds, inplace=True) + # Interpolate times to account for any empty rows imu_times = df['timestamp'].values df['timestamp_interp'] = imu_times df['timestamp_interp'] = df['timestamp_interp'].interpolate() imu_times = df['timestamp_interp'].values + # Convert to local time imu_datetimes = [start_time + timedelta(seconds=val) \ for val in imu_times] imu_s = np.array([time.timestamp() for time in imu_datetimes]) df['sec'] = imu_s + # Remove any rows that are beyond 3-hours, accommodating for erroneous data time_check_thold = df['sec'].min() + 3*3600 mask = df['sec'] > time_check_thold if np.any(mask): @@ -157,6 +250,18 @@ def load_imu_file(imu_file:str): return df, hdr def load_imu_files(f_list:list): + """ + Appends the output for load_imu_file + + Arguments + --------- + f_list : list + list of bioharness files to read + + Returns + ------- + pandas.DataFrame, list + """ data, hdr = [], [] tmp = [] for f in f_list: @@ -168,14 +273,26 @@ def load_imu_files(f_list:list): return data_df, hdr def load_e4_file(e4_file:str): - ''' First row is the initial time of the session as unix time. - Second row is the sample rate in Hz''' + """Loads BVP data from the specified zip compressed e4 file and the start + time and sampling frequency as a dict. + + Attributes + ---------- + e4_file : str + .zip e4 filename to load + + Returns + ------- + pandas.DataFrame, dict + """ zip_file = ZipFile(e4_file) dfs = {csv_file.filename: pd.read_csv(zip_file.open(csv_file.filename) ,header=None) for csv_file in zip_file.infolist() if csv_file.filename.endswith('.csv')} bvp = dfs["BVP.csv"] + # First row is the initial time of the session as unix time. + # Second row is the sample rate in Hz t0 = bvp.iloc[0].values[0] fs = bvp.iloc[1].values[0] nsamples = len(bvp) - 2 @@ -198,6 +315,18 @@ def load_e4_file(e4_file:str): return bvp, hdr def load_e4_files(f_list:list): + """ + Appends the output for load_e4_file + + Arguments + --------- + f_list : list + list of e4 files to read + + Returns + ------- + pandas.DataFrame, list + """ tmp = [] data = [] hdr = [] @@ -211,6 +340,20 @@ def load_e4_files(f_list:list): # Synchronising data def sync_to_ref(df0, df1): + """ + Synchronises both DataFrames + + Arguments + --------- + df0 : pandas.DataFrame + data to sync + df1 : pandas.DataFrame + data to sync + + Returns + ------- + pandas.DataFrame, pandas.DataFrame + """ dsync0 = DataSynchronizer() dsync1 = DataSynchronizer() @@ -224,80 +367,6 @@ def sync_to_ref(df0, df1): return dsync0.sync_df(df0), dsync1.sync_df(df1) -def pss_br_calculations(win, pss_df=None, br_df=None): - n_out = 5 - if win[-1] == 0: return [None]*n_out - - dsync = DataSynchronizer() - pss_fs = BR_FS - pss_col = [col for col in pss_df.columns.values if\ - 'breathing' in col.lower()][0] - pss_ms = pss_df['ms'].values - br_ms = br_df['ms'].values - t0, t1 = pss_ms[win][0], pss_ms[win][-1] - - diff = pss_ms[win][1:] - pss_ms[win][:-1] - mask = np.abs(diff/1e3) > 60 - diff_chk = np.any(mask) - if diff_chk: return [None]*n_out - - # Get pressure estimate for window - pss_win = pss_df.iloc[win] - pss_data = pss_win[pss_col] - pss_filt = pressure_signal_processing(pss_data, fs=pss_fs) - xf, yf = do_pad_fft(pss_filt, fs=pss_fs) - pss_est = xf[yf.argmax()]*60 - - # Sync and get summary br output - dsync.set_bounds(br_ms, t0, t1) - br_win = dsync.sync_df(br_df) - - br_out = np.median(br_win['BR'].values) - - # Get subject and condition - sbj_out = pss_win['subject'].values[0] - time_out = np.median(pss_win['sec'].values) - return time_out, pss_est, br_out, sbj_out, cond_out - -def get_pss_br_estimates(pss_df, br_df, window_size=12, window_shift=1): - pss_fs = BR_FS - # pss_col = [col for col in pss_df.columns.values if\ - # 'breathing' in col.lower()][0] - pss_ms = pss_df['sec'].values - br_ms = br_df['sec'].values - - inds = np.arange(0, len(pss_ms)) - vsw_out = vsw(inds, len(inds), sub_window_size=int(window_size*pss_fs), - stride_size=int(window_shift*pss_fs)) - - # dsync = DataSynchronizer() - pss_est, br_out = [], [] - cond_out, sbj_out = [], [] - func = partial(pss_br_calculations, pss_df=pss_df, br_df=br_df) - # for i, win in enumerate(vsw_out): - # tmp = func(win) - - with Pool(cpu_count()) as p: - tmp = p.map(func, vsw_out) - - time_out, pss_est, br_out, sbj_out, cond_out = zip(*tmp) - - time_array = np.array(time_out) - pss_est_array = np.array(pss_est) - br_out_array = np.array(br_out) - sbj_out_array = np.array(sbj_out) - cond_out_array = np.array(cond_out) - - df = pd.DataFrame( - np.array( - [time_array, sbj_out_array, cond_out_array, - pss_est_array, br_out_array] - ).T, - columns=['ms', 'subject', 'condition', 'pss', 'br']) - df.dropna(inplace=True) - - return df - # Multiprocessing task for windowing dataframe def imu_df_win_task(w_inds, df, i, cols): time = df['sec'].values @@ -310,11 +379,6 @@ def imu_df_win_task(w_inds, df, i, cols): if diff_chk: return - # sbj = w_df['subject'].values.astype(int) - # sbj_mask = np.any((sbj[1:] - sbj[:-1])>0) - # if sbj_mask: - # return - if cols is None: cols = IMU_COLS @@ -343,51 +407,6 @@ def imu_df_win_task(w_inds, df, i, cols): return x_out, y_out -def bvp_df_win_task(w_inds, df, i, cols): - time = df['sec'].values - - fs = PPG_FS - - if w_inds[-1] == 0: return - w_df = df.iloc[w_inds] - t0, t1 = time[w_inds][0], time[w_inds][-1] - diff = time[w_inds[1:]] - time[w_inds[0:-1]] - mask = np.abs(diff)>20 - diff_chk = np.any(mask) - if diff_chk: - return - - # sbj = w_df['subject'].values.astype(int) - # sbj_mask = np.any((sbj[1:] - sbj[:-1])>0) - # if sbj_mask: - # return - - if cols is None: - cols = ['bvp'] - - data = w_df[cols].values - - # DSP - sd_data = (data - np.mean(data, axis=0))/np.std(data, axis=0) - filt_data = bvp_signal_processing(sd_data.copy(), fs) - x_out = pd.DataFrame(filt_data, - columns=cols) - - sm_out = w_df['BR'].values - ps_out = w_df['PSS'].values - - x_vec_time = np.median(time[w_inds]) - - ps_freq = int(get_max_frequency(ps_out, fs=fs)) - - y_tmp = np.array([x_vec_time, np.nanmedian(sm_out), ps_freq]) - - x_out['sec'] = x_vec_time - x_out['id'] = i - y_out = pd.DataFrame([y_tmp], columns=['sec', 'br', 'pss']) - - return x_out, y_out - def df_win_task(w_inds, df, i, cols): time = df['sec'].values if w_inds[-1] == 0: return @@ -588,7 +607,7 @@ def load_tsfresh(xsens_df, project_dir, pd.DataFrame """ - raise NotImplementedError("To be implemented") + # raise NotImplementedError("To be implemented") assert data_cols is not None, "invalid selection for data columns" pkl_file = join(project_dir, 'tsfresh.pkl') @@ -975,12 +994,6 @@ def imu_rr_dsp(subject, # include standing or not test_df_tmp = get_test_data(cal_df, activity_df, xsens_df, test_standing) test_df = pd.concat([df for df in test_df_tmp['data']], axis=0) - x_test_df, y_test_df = get_df_windows(test_df, - imu_df_win_task, - window_size=window_size, - window_shift=window_shift, - fs=fs, - ) acc_dsp_df, acc_y_dsp_df = get_df_windows(test_df, dsp_win_func, window_size=window_size, @@ -1003,7 +1016,8 @@ def imu_rr_dsp(subject, plt.plot(gyr_y_dsp_df[lbl_str]); plt.plot(gyr_dsp_df['pred']) plt.show() - eval_handle = EvalHandler(y_test.flatten(), preds.flatten(), subject, + # TODO + eval_handle = DSPEvalHandler(y_test.flatten(), preds.flatten(), subject, pfh, None, overwrite=overwrite) eval_handle.update_eval_history() eval_handle.save_eval_history() -- GitLab