Dryft

Dryft: A Python and MATLAB package to correct drifting ground reaction force signals during treadmill running - Published in JOSS (2019)

https://github.com/alcantarar/dryft

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: ncbi.nlm.nih.gov, joss.theoj.org
  • Committers with academic emails
    1 of 3 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Mathematics Computer Science - 84% confidence
Last synced: 6 months ago · JSON representation

Repository

Correcting drift in ground reaction force data during treadmill running

Basic Info
Statistics
  • Stars: 13
  • Watchers: 3
  • Forks: 4
  • Open Issues: 2
  • Releases: 3
Created almost 8 years ago · Last pushed almost 5 years ago
Metadata Files
Readme Funding License

README.md

dryft

visitors
Read the published manuscript in the Journal of Open Source Software:
DOI

dryft is an open-source Python package that corrects running ground reaction force (GRF) signal drift. This package was developed for biomechanical researchers using force plates or a force-measuring treadmill to collect an individual's GRF during running, but should work for split-belt treadmill walking as well. Due to the prevalence of MATLAB in the field of Biomechanics, I have also developed a set of MATLAB functions that operate like the Python package. However, this readme will focus on the use of the Python package.

Table of Contents

Dependencies

This package was designed to work with and was tested with Python 3.6.7. Other python 3.X versions may be supported, provided dependency compatibilities and requirements are met.

The package requires the following dependencies: * numpy * pandas (0.24.0 or newer) * matplotlib * scipy

Installation

Using virtualenv

On Windows: git clone https://github.com/alcantarar/dryft.git pip install virtualenv python -m venv dryft-env .\dryft-env\Scripts\activate cd dryft python setup.py install On macOS or Linux: git clone https://github.com/alcantarar/dryft.git pip install virtualenv python -m venv dryft-env source dryft-env/bin/activate cd dryft python setup.py install

Using pip:

git clone https://github.com/alcantarar/dryft.git cd dryft pip install -r requirements.txt

Using Anaconda

You can use Anaconda to setup a Python 3.6.7 environment to use this package. If you wish to setup a new environment, an Anaconda environment file is included to automatically install most dependencies. You can create/activate an anaconda environment and download dependencies using the Anaconda Prompt: git clone https://github.com/alcantarar/dryft.git cd dryft conda env create -f path\to\environment.yml conda activate dryft-env python setup.py install

How dryft Works

Running is generally characterized by two phases: a stance and aerial phase. Only one foot is on the ground at a time during stance phase and both feet are off the ground during aerial phase. The force exerted by the body on the ground during aerial phase is zero and during stance phase it is greater than zero. If drift is present in the force signal, values during the aerial phase will no longer be zero. First, dryft calculates the force occurring during each aerial phase of a continuous running trial. Then these aerial phase values are interpolated to the length of the trial using a 3rd order spline fill. Lastly, the interpolated values, which represents the signal drift over time, are subtracted from the original trial. This effectively corrects for signal drift.

Another method of correcting drift is described by Paolini et al. (2007), where the mean force measured during the aerial phase is subtracted from the following stance phase. The success of this approach is highly dependent upon the method of identifying aerial phases in the vertical ground reaction force signal. If a force threshold is used to define the boundaries of each aerial phase, parts of the neighboring stance phases may be included in the calculation of the mean (left panel in the figure above). Additionally, this approach assumes no change in drift over the duration of a stance phase. The dryft package uses the force measured at the middle of each aerial phase and spline interpolates between them to correct signal drift. This approach differs from the method described by Paolini et al. (2007) and currently available drift correction methods which can only account for linear drift or a constant offset

Using dryft

Testing

Running the following from the command line will automatically test the installation of dryft: python -m dryft.sample.test

Tutorial

A notebook of dryft.sample.test is available here as a tutorial.

Documentation

Please refer to the documentation page

Contributing

To report an problem with dryft, please create a new issue.

Contact alcantarar with any support or general questions about dryft. I also welcome meaningful contributions via pull requests.

Licensing

This package is licensed under the MIT License. Copyright 2019 Ryan Alcantara.

Owner

  • Name: Ryan Alcantara
  • Login: alcantarar
  • Kind: user
  • Location: Stanford, CA
  • Company: NMBL

Postdoc at Stanford Neuromuscular Biomechanics Lab (NMBL)

JOSS Publication

Dryft: A Python and MATLAB package to correct drifting ground reaction force signals during treadmill running
Published
December 06, 2019
Volume 4, Issue 44, Page 1910
Authors
Ryan S. Alcantara ORCID
Department of Integrative Physiology, University of Colorado Boulder, Boulder CO, USA
Editor
Kevin M. Moerman ORCID
Tags
biomechanics signal processing detrend GRF walking

GitHub Events

Total
Last Year

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 338
  • Total Committers: 3
  • Avg Commits per committer: 112.667
  • Development Distribution Score (DDS): 0.006
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
alcantarar r****a@c****u 336
bobchees3 3****3 1
agricolab r****e@g****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 23
  • Total pull requests: 22
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 21 minutes
  • Total issue authors: 4
  • Total pull request authors: 2
  • Average comments per issue: 0.61
  • Average comments per pull request: 0.09
  • Merged pull requests: 22
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • agricolab (11)
  • alcantarar (9)
  • moorepants (2)
  • mwptrsn (1)
Pull Request Authors
  • alcantarar (21)
  • agricolab (1)
Top Labels
Issue Labels
bug (2) enhancement (1)
Pull Request Labels

Dependencies

environment.yml conda
  • matplotlib
  • numpy
  • pandas >=0.24.0
  • python 3.6.*
  • scipy
requirements.txt pypi
  • matplotlib >=3.1.1
  • numpy >=1.17
  • pandas >=0.24
  • scipy >=1.3.1
setup.py pypi
  • matplotlib *
  • numpy *
  • pandas >=0.24.0
  • scipy *