Python implementation of the Oxford Foot Model (OFM) gait analysis pipeline
Project description
openOFM
Code repository for the openOFM project. See the manuscript below for full mathematical details and further instructions:
Dixon, P. C., Drew, E. E., McBride, S. P., Harrington, M., Stebbins, J., & Zavatsky, A. B. (2025). OpenOFM: an open-source implementation of the multi-segment Oxford Foot Model. Computer Methods in Biomechanics and Biomedical Engineering, 1-14. https://doi.org/10.1080/10255842.2024.2448558
Overview
openOFM is an open-source toolbox for computation of multi-segment foot biomechanics according to the Oxford Foot Model.
There are 2 ways to access/interact with the toolbox:
- Install as a python package using pip (see Installing the openOFM Python package)
- Clone/download the repository directly from github: https://github.com/mcgillmotionlab/openOFM
Note: Approach 2 provides access to both Python and Matlab versions of the toolbox
Installing the openOFM Python package
openOFM is now on pypi.org, install in your environment/version of choice:
- Install the latest stable version:
pip install openofm - Install a specific version
pip install openofm==1.0.0 - Upgrade your installation to the latest version
pip install --upgrade openofm
Running the openOFM Python scripts
Users may run the Python scripts using two main approaches.
First, users may run the openOFM_static.py and openOFM_dynamic.py
files directly (also used by Nexus). Running these files without any arguments
will default to processing the data within the Data_Sample folder for version
1.0. Users may append additional flags to modify settings. For example, the
following command allows users to process a static trial using version 1.1 and
the subject parameters defined in a settings.yml file:
python openOFM_static.py --version 1.1 --use_settings
When processing data through the openOFM static or openOFM dynamic pipelines, the following arguments can be used:
versioncan be set to “1.0” or “1.1”.data_diris the name of subject folder relative to the rootfile_nameis the name of the .c3d to processuse_settingscontrols whether to use the subject parameters and processing settings from a .c3d file or a settings.yml file defined by the usermake_plot(openOFM_dynamic.pyonly). Allows users to generate a plot of results.
Options can be reviewed via the command: python openOFM_static.py --h
and python openOFM_dynamic.py --h
Second, users may run the openOFM_sample_process.py. This approach
may be more appropriate for users/developers wishing to integrate openOFM
into their analysis or modify computations.
Validating the openOFM code
An additional openOFM_validate.py script compares openOFM python
(version 1.0) and Vicon implementations using the sample data provided.
Running this script will display OFM kinematics for both implementations.
Environment setup
Python users must set up an appropriate environment to run openOFM. The following steps assume the user has installed the Anaconda or Mini- conda python distribution and has launched a terminal (Mac OS/Linux) or command prompt (PC). Similar commands can be run via Python IDEs.
- Create environment:
conda create --name openOFM python=3.14 -y - Activate environment:
conda activate openOFM - Change directory to python subdirectory of the openOFM repository:
cd ...\openOFM\python - Install packages:
conda install --y --file requirements.txt - If the ezc3d package does not install, add conda-forge to channels before
trying step 4 again:
conda config --add channels conda-forge
Running in Matlab
Although officially unsupported, the openOFM is available for use in Matlab. The following steps assume Matlab is installed with a valid lincense:
- Download the openOFM repository to a location of your choice
- Change the working directory to the Matlab subfolder of the repository
- Add the Matlab folder and its subfolders to the Matlab path
- Run the
openOFM process.moropenOFM_validate.mscript
openOFM process.m
- Set the desired version ’1.0’ or ’1.1’ on line 8
- If anthropometric measures are missing from the .c3d files, set set- tings.manualAnthro (line 9) to True, and add the measure to section 2.2 (line 30)
- Select subject folder when prompted, for example MA 00 in folder
Data Sample
Note, the openOFM_process.m should be modified for use with a user’s own
data as it defaults to running version 1.1 on the Data_Sample participant
with placeholder values in the settings.
Installing a dev environment
- conda create -n openOFM-dev python=3.11
- conda activate openOFM-dev
- cd openOFM root folder of the repository
- install the dev dependencies from the pyoproject.toml file:
pip install -e ".[dev]"
Citation
If openOFM was useful to you, please cite our work: Dixon, P. C., Drew, E. E., McBride, S. P., Harrington, M., Stebbins, J., & Zavatsky, A. B. (2025). OpenOFM: an open-source implementation of the multi-segment Oxford Foot Model. Computer Methods in Biomechanics and Biomedical Engineering, 1-14. https://doi.org/10.1080/10255842.2024.2448558
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openofm-1.1.1.tar.gz.
File metadata
- Download URL: openofm-1.1.1.tar.gz
- Upload date:
- Size: 10.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e02fd4e198f484b4ff40b679266f4c1a5174a84428ea63776f5538015ae80f43
|
|
| MD5 |
ce5d32fa92afe433e0d8879b8671cc96
|
|
| BLAKE2b-256 |
cec704de2a7f47af902e1d66492cab3cc55ace3d969362565055d8a5f9d0342d
|
File details
Details for the file openofm-1.1.1-py3-none-any.whl.
File metadata
- Download URL: openofm-1.1.1-py3-none-any.whl
- Upload date:
- Size: 50.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a033eba277255f0ab5135a496b3ace490124dd5a8f96021748fa7f36c713da9
|
|
| MD5 |
83cac7787253dd6d6014ddffe12812b8
|
|
| BLAKE2b-256 |
4dda5c1b53345611a40028ca457073661a6bf9dc67edcb03798d20caa0c01b79
|