This is a collection of tools that are helpful for gait analysis. Some are
specific to the needs of the Human Motion and Control Lab at Cleveland State
University but other portions may have potential for general use. It is
relatively modular so you can use what you want. It is primarily structured as
a Python distribution but the Octave files are also accessible independently.

You will need Python 2.7 and setuptools to install the packages. Its best to
install the dependencies first (NumPy, SciPy, matplotlib, Pandas, PyTables).
The SciPy Stack instructions are helpful for this:
http://www.scipy.org/stackspec.html.

Supported versions:

python >= 2.7

numpy >= 1.6.1

scipy >= 0.9.0

matplotlib >= 1.1.0

tables >= 2.3.1

pandas >= 0.12.0

pyyaml >= 3.10

DynamicistToolKit >= 0.3.5

oct2py >= 1.2.0

octave >= 3.8.1

We recommend installing Anaconda for users in our lab to get all of the
dependencies.

Octave can be installed from your package manager or from a downloadable
binary, for example on Debian based Linux:

$ sudo apt-get install octave

For oct2py to work, calling Octave from the command line should work after
Octave is installed. For example,

$ octave
GNU Octave, version 3.8.1
Copyright (C) 2014 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. For details, type 'warranty'.
Octave was configured for "x86_64-pc-linux-gnu".
Additional information about Octave is available at http://www.octave.org.
Please contribute if you find this software useful.
For more information, visit http://www.octave.org/get-involved.html
Read http://www.octave.org/bugs.html to learn how to submit bug reports.
For information about changes from previous versions, type 'news'.
octave:1>

The core dependencies can be installed with conda in a conda environment:

Now you have a remote called origin (the default) which points to your
Github account’s copy and a remote called upstream that points to the main
repository on the csu-hmc organization Github account.

It’s best to keep your local master branch up-to-date with the upstream master
branch and then branch locally to create new features. To update your local
master branch simply:

git checkout master
git pull upstream master

If you have access rights to the main repository simply, clone it and don’t
worry about making a fork on your Github account:

git clone git@github.com:csu-hmc/GaitAnalysisToolKit.git

Change into the directory:

cd GaitAnalysisToolKit

Now, to contribute a change to the repository you should create a new branch
off of the local master branch:

git checkout -b my-branch

Now make changes to the software and be sure to always include tests! Make sure
all tests pass on your machine with:

nosetests

Once tests pass, add any new files you created:

git add my_new_file.py

Now commit your changes:

git commit -am "Added an amazing new feature."

Push your commits to a mirrored branch on the Github repository that you
cloned:

git push origin my-branch

Now visit the repository on Github (either yours or the main one) and you
should see a “compare and pull button” to make a pull request against the main
repository. Github and Travis-CI will check for merge conflicts and run the
tests again on a cloud machine. You can ask others to review your code at this
point and if all is well, press the “merge” button on the pull request.
Finally, delete the branches on your local machine and on your Github repo:

The master branch on main repository on Github should always pass all tests
and we should strive to keep it in a stable state. It is best to not merge
contributions into master unless tests are passing, and preferably if
someone else approved your code.

In general, do not commit changes to your local master branch, always pull in
the latest changes from the master branch with gitpullupstreammaster
then checkout a new branch for your changes. This way you keep your local
master branch up-to-date with the main master branch on Github.

In general, do not push changes to the main repo master branch directly, use
branches and push the branches up with a pull request.