Source code for biomechzoo.utils.combine_xsens_csv

import os

import pandas as pd


[docs] def combine_quats_to_csv( csv_files: list[str], prefixes: list[str], out_folder: str = None, out_filename: str = None ) -> str: """Concatenates time, quaternions, gyroscope, and accelerometer data from multiple CSV files into a single CSV file with prefixes defining segment.""" if out_folder is None: out_folder = "combined_csvs" if out_filename is None: out_filename = "combined_sensors.csv" root = os.getcwd() save_folder = os.path.join(root, out_folder) os.makedirs(save_folder, exist_ok=True) time_col: str = "PacketCounter" quat_cols: list[str] = ["Quat_W", "Quat_X", "Quat_Y", "Quat_Z"] gyr_cols: list[str] = ["Gyr_X", "Gyr_Y", "Gyr_Z"] acc_cols: list[str] = ["Acc_X", "Acc_Y", "Acc_Z"] first_df = pd.read_csv(csv_files[0]) time_df = first_df[[time_col]].rename(columns={time_col: "time"}) all_sensor_dfs = [] for csv_path, prefix in zip(csv_files, prefixes): df = pd.read_csv(csv_path) quat_df = df[quat_cols].rename(columns={c: f"{prefix}_{c}" for c in quat_cols}) gyr_df = df[gyr_cols].rename(columns={c: f"{prefix}_{c}" for c in gyr_cols}) acc_df = df[acc_cols].rename(columns={c: f"{prefix}_{c}" for c in acc_cols}) all_sensor_dfs.extend([quat_df, gyr_df, acc_df]) combined_df = pd.concat([time_df] + all_sensor_dfs, axis=1) out_file = os.path.join(save_folder, out_filename) combined_df.to_csv(out_file, index=False) print(f"Saved combined CSV to: {out_file}") return out_file