Skip to content
Taiyou edited this page Jan 27, 2026 · 5 revisions

gait-dynamics-features Wiki

Feature extraction toolbox for gait dynamics analysis.

Pages

Links

Overview

This toolbox provides two categories of features:

Recurrence Analysis Classes

Class Purpose
RecurrenceAnalyzer RQA for single time series (9 measures)
CrossRecurrenceAnalyzer CRQA for two coupled time series (8 measures)
RecurrencePlotter Recurrence plots and comparison charts

Gait-Specific Feature Classes

Class Purpose
PoincareAnalyzer Poincare plot SD1/SD2 for stride interval series
HarmonicRatioAnalyzer Harmonic ratio for gait symmetry
AttractorComplexityIndex Long-term divergence exponent (ACI)
StrideVariability CV, MAD, IQR, asymmetry index
GaitFeatureExtractor Unified sklearn-compatible extractor

Why These Features?

The gait-specific classes implement measures not available in standard Python libraries (nolds, antropy, neurokit2, EntropyHub):

  • Poincare SD1/SD2: neurokit2 has this only for HRV (requires R-peaks), not for arbitrary stride intervals
  • Harmonic Ratio: gait-domain-specific, no library provides it
  • ACI: requires long-term fitting on Rosenstein divergence curve, not exposed by nolds
  • Stride Variability: unified API for standard gait variability descriptors

For measures that ARE available in existing libraries (Sample Entropy, DFA, Lyapunov, etc.), GaitAnalysisPipeline wraps them automatically.

Unified Analysis Pipeline

Class Purpose
GaitAnalysisPipeline Single interface for all features (up to 30)

Integrates internal features (RQA, Poincare, ACI, Variability) with external libraries:

Library Features Added
nolds (optional) Sample Entropy, DFA, Lyapunov, Hurst, Correlation Dimension
antropy (optional) Permutation/SVD/Approximate Entropy, Higuchi/Katz FD, DFA
neurokit2 (optional) Multiscale Entropy
from src import GaitAnalysisPipeline

pipeline = GaitAnalysisPipeline(embedding_dim=3, time_delay=5, target_rr=0.05)
results = pipeline.analyze(stride_intervals)
print(pipeline.summary())

# Bilateral coupling
bilateral = pipeline.analyze_bilateral(left, right)

Recurrence Plots

Recurrence Plots

Installation

git clone https://github.com/Taiyou/gait-dynamics-features.git
cd gait-dynamics-features
pip install -e .

Minimal Example

import numpy as np
from src import RecurrenceAnalyzer, GaitFeatureExtractor

# RQA
signal = np.sin(np.linspace(0, 10 * np.pi, 500))
analyzer = RecurrenceAnalyzer(embedding_dim=3, time_delay=10, theiler_window=1)
eps = analyzer.auto_threshold(signal, target_rr=0.05)
measures = analyzer.compute_rqa_measures(signal, threshold=eps)

# Gait features
stride_intervals = 1.1 + 0.03 * np.random.randn(200)
extractor = GaitFeatureExtractor(embedding_dim=3, time_delay=10)
features = extractor.compute_all(stride_intervals)

Clone this wiki locally