Python library for analysis of running activity data
Project description
heartandsole: Python library for analysis of running data files
Table of Contents
Introduction
heartandsole is designed to work with running activity files.
It reads data from .fit
, .tcx
, .gpx
, and .csv
files, converts it to
pandas data structures, then performs calculations and summarizes the data,
for example:
- elevation gain
- elapsed time
- timer time
- distance from GPS coordinates
Dependencies
Pandas and NumPy are required.
A number of optional dependencies enable various features, such as reading data from specific activity file formats and performing geospatial calculations:
- fitparse allows data
to be read in from
.fit
files. - activereader allows data
to be read in from
.tcx
and.gpx
files. - pandas-xyz allows geospatial calculations, like converting GPS coordinates to distance and determining elevation gain along a route.
Installation
pip install heartandsole
to install.
Example
heartandsole provides the Activity
class.
Activities can be constructed manually with a required records DataFrame
and optional summary Series and laps DataFrame, or they can be constructed
directly from various activity file formats using Activity.from_*
class
methods.
from heartandsole import Activity
# Reading from a fit file requires the fitparse package to be
# installed.
activity = heartandsole.Activity.from_fit('my_activity.fit')
# Various field accessors provide methods related to specific data fields
# commonly found in activity files.
print(activity.time.elapsed(source='records'))
print(activity.time.timer(source='summary'))
# Geospatial calculations require pandas-xyz to be installed.
print(activity.elevation.gain(source='records')) # scalar
print(activity.distance.records_from_position()) # Series
License
This project is licensed under the MIT License. See LICENSE file for details.
Documentation
The official documentation is hosted on readthedocs.io: https://heartandsole.readthedocs.io/en/stable.
Background
My impetus for this project was to implement a version of Philip Friere Skiba's GOVSS algorithm (with tweaks to better align with the underlying research). The end result will be a free, open-source version of proprietary calculations found in platforms like Strava and Training Peaks (eventually - bear with me). My hope is that other runners will benefit as I have from taking these secret algorithms out of their black box, by understanding the science behind these calculations, and training smarter.
This package was originally forked from Michael Traver's fitanalysis package, but the two projects diverged significantly enough for me to move my fork to a separate repository. I am indebted to Michael for writing such a clean, useful, easy-to-understand package that served as heartandsole's starting point.
Contact
You can get in touch with me at the following places:
- Website: trailzealot.com
- LinkedIn: linkedin.com/in/aarondschroeder
- Twitter: @trailzealot
- Instagram: @trailzealot
- GitHub: github.com/aaron-schroeder
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
File details
Details for the file heartandsole-0.0.24.tar.gz
.
File metadata
- Download URL: heartandsole-0.0.24.tar.gz
- Upload date:
- Size: 28.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7fac7bccaa889d10864ef061c93e861b4098b56163af7841b6f75c5685e45da8 |
|
MD5 | e55a2dc2b1a9cb9fb3c8dae84bcbef61 |
|
BLAKE2b-256 | ba6b54f0e24b6ac913346c733ed1a83c37a385107eab70e3a446ee21f341c627 |
File details
Details for the file heartandsole-0.0.24-py3-none-any.whl
.
File metadata
- Download URL: heartandsole-0.0.24-py3-none-any.whl
- Upload date:
- Size: 33.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 696e738210886ea227f763ada134066910a6688260220bac06bb7037a5ea28a4 |
|
MD5 | a27f6a32a2de831b0191cd061c804160 |
|
BLAKE2b-256 | 56a3c078d1fd50e61a85233e7bf633e885cbb734383dee4589dcb3a2df317b53 |