Skip to main content

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:

  1. Install as a python package using pip (see Installing the openOFM Python package)
  2. 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:

  1. version can be set to “1.0” or “1.1”.
  2. data_dir is the name of subject folder relative to the root
  3. file_name is the name of the .c3d to process
  4. use_settings controls whether to use the subject parameters and processing settings from a .c3d file or a settings.yml file defined by the user
  5. make_plot (openOFM_dynamic.py only). 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.

  1. Create environment: conda create --name openOFM python=3.11 -y
  2. Activate environment: conda activate openOFM
  3. Change directory to python subdirectory of the openOFM repository: cd ...\openOFM\python
  4. Install packages: conda install --y --file requirements.txt
  5. 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:

  1. Download the openOFM repository to a location of your choice
  2. Change the working directory to the Matlab subfolder of the repository
  3. Add the Matlab folder and its subfolders to the Matlab path
  4. Run the openOFM process.m or openOFM_validate.m script

openOFM process.m

  1. Set the desired version ’1.0’ or ’1.1’ on line 8
  2. 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)
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openofm-1.1.3.tar.gz (10.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openofm-1.1.3-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file openofm-1.1.3.tar.gz.

File metadata

  • Download URL: openofm-1.1.3.tar.gz
  • Upload date:
  • Size: 10.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for openofm-1.1.3.tar.gz
Algorithm Hash digest
SHA256 c96f5d0a5d245fda68634080d4b11b3828acf0ee4fa2c306b5400ec5ec7383ad
MD5 c8ba315868a34346de68285359acda09
BLAKE2b-256 6afbf96a36f4a331b12dab26fdc96760b07036083395e1cb12e7e4fe775aeed5

See more details on using hashes here.

File details

Details for the file openofm-1.1.3-py3-none-any.whl.

File metadata

  • Download URL: openofm-1.1.3-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for openofm-1.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c5e5a12f4563a4981d578ad48d087e31c53257cec579aecb2a2bfa248d0986d4
MD5 c32068be1b1570bce570f2824aa01492
BLAKE2b-256 2664ec7af1e2ef44343b7a8c31f42d496fd21d6dfed590fc91259b4b06bf954f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page