Metadata-Version: 2.4
Name: openofm
Version: 1.1.3
Summary: Python implementation of the Oxford Foot Model (OFM) gait analysis pipeline
Project-URL: Homepage, https://github.com/mcgillmotionlab/openOFM
Project-URL: Documentation, https://mcgillmotionlab.github.io/openOFM
Project-URL: Repository, https://github.com/mcgillmotionlab/openOFM
Project-URL: Bug Tracker, https://github.com/mcgillmotionlab/openOFM/issues
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: ezc3d>=1.5.9
Requires-Dist: matplotlib>=3.8
Requires-Dist: numpy>=1.26
Requires-Dist: pyyaml>=6.0
Requires-Dist: requests>=2.34.2
Requires-Dist: scipy>=1.13
Description-Content-Type: text/markdown

# 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
