Source code for biomechzoo.statistics.lineval_wide2arrays

import numpy as np
import pandas as pd
from typing import Dict, List, Optional

[docs] def lineval_wide2arrays( df: pd.DataFrame, condition_col: str = 'condition', conditions: Optional[List[str]] = None ) -> Dict[str, np.ndarray]: """ Convert a wide-format DataFrame into arrays grouped by condition. Parameters ---------- df : pd.DataFrame DataFrame returned by `lineval(format='wide')`. Must include columns for condition and timepoints (p0...pN). condition_col : str Column name containing condition labels. Default 'condition'. conditions : list of str, optional List of condition labels in desired order. If None, will use all unique conditions sorted alphabetically. Returns ------- Dict[str, np.ndarray] Keys = condition labels Values = 2D numpy arrays (n_trials x n_timepoints) """ # Identify timepoint columns time_cols = [c for c in df.columns if c.startswith('p')] # Determine condition list if conditions is None: conditions = sorted(df[condition_col].unique()) cond_arrays = {} for cond in conditions: group = df[df[condition_col] == cond] if group.empty: raise ValueError(f"Condition '{cond}' not found in DataFrame") cond_arrays[cond] = group[time_cols].to_numpy() return cond_arrays