SkillAgentSearch skills...

Rowingdata

Python tools to process rowing (the sport) data

Install / Use

/learn @sanderroosendaal/Rowingdata
About this skill

Quality Score

0/100

Supported Platforms

Universal

README


Rowingdata


============== Introduction

This is a solution for the self-tracking rowers.

Some of us use Concept2 rowing machines. Some of us are On-The-Water rowers. All of us will use smartphone apps, smart watches, fitness (GPS) watches, etc. to track our activities.

Most of them will cross-train. Bike. Run. Skate.

That means, the Concept2 logbook is not a sufficient training logbook for us.

At the same time, the Concept2 logbook is used in rankings, for challenges, and more. Many of us will want to log all our rowing on the Concept2 logbook.

So there are a couple of challenges here:

  • How do I get my erg rows on Strava/SportTracks/Garmin Connect?

    • Use an ANT+ device, like explained here: https://dr3do.wordpress.com/2015/07/09/hurray/

    • Import from RowPro to SportTracks

    • There are many smartphone apps to capture data from the PM3/4/5 erg monitor. Not many of them export in a format that is suitable for upload to the above-mentioned sites.

  • How do I get all my rows (including OTW) into the Concept2 logbook

    • For On-Water and Erg: Add them manually

    • For erg: Upload from ErgData, RowPro, Concept2 utility

This project aims at giving you ways to:

  • Upload fitness data captured in TCX format to the Concept2 logbook (implemented)

    • This should cover all your On-Water activities, whether they are captured with a SpeedCoach, a GPS fitness watch, your phone, or any other device. As long as you are able to export a valid TCX file.
  • Get erg data captured with apps that have no "upload to Concept2" functionality and upload them to the Concept2 logbook (implemented)

    • For example, painsled
  • Get erg data captured with apps that have no TCX export functionality and convert hem to TCX (implemented)

    • ErgData - downloaded to CSV, converted to TCX

    • RowPro data - exported to CSV, converted to TCX.

  • Make the data accessible in python and create useful plots. Who wants to be limited to what the on-line logbooks plot. Get your data and create:

    • Color HR band charts or Pie Charts (implemented)

    • Plot drive length, drive time, and other erg related parameters as a function of time or distance (implemented)

    • Create histograms (Do-it-yourself).

    • And much more (do-it-yourself). You've got the entire Python matplotlib at your disposal. Goodbye excel!

As soon as Crewnerd or Speedcoach can upload to C2 natively, or a web synchronization can be set up between the C2 logbook and popular fitness tracking sites, my project will lose much of its significance. But that's OK.

Well, at least the colorful plots remain.

=============== Credits

The project is based on python plotting code by Greg Smith (https://quantifiedrowing.wordpress.com/) and inspired by the RowPro Dan Burpee spreadsheet (http://www.sub7irc.com/RP_Split_Template.zip).

.. image:: C:\python\rowingdata\screenshots\image001.png

=============== To install

::

$ easy_install rowingdata

Or ::

$ pip install rowingdata

To upgrade: ::

$ pip install --upgrade rowingdata

or ::

$ easy_install --upgrade rowingdata

Numpy, SciPy and matplotlib are needed. On Linux systems, they should be installed automatically through the dependencies.

On Windows, there may be installation issues.

A workaround is to install Anaconda, as described here: https://www.scipy.org/install.html

Another option is to use official 32-bit installers:

  • http://sourceforge.net/projects/numpy/files/
  • http://sourceforge.net/projects/scipy/files/
  • http://sourceforge.net/projects/matplotlib/files/matplotlib/

Or you can fetch the unofficial but recommended Windows releases from

  • http://www.lfd.uci.edu/~gohlke/pythonlibs/ (get the MKL builds for NumPy)

====================== Command Line Tools

Beta. Use with caution.

The easiest way to use rowingdata is from the command line.

First, create a rower data file (if you don't have one yet). Just run the following command and answer a few questions about yourself. If you don't know what heart rate bands are, check here http://www.freespiritsrowing.com/content/utilities/hr-bands/ : ::

$ roweredit yourfilename.txt

You can omit the file name. This will create a file defaultrower.txt. You can always run the same command to change parameters (for example if you lost or gained weight, change the user name or password, etc.

.. image:: C:\python\rowingdata\screenshots\editrower.JPG

Now you need the data files for your row. (The install comes with a few test files.) Get a TCX file (and a CSV summary file) from CrewNerd. TCX files from other tools should also work (not tested), as long as the TCX is valid.

Or get a CSV export from painsled.

TCX files

Generic TCX ....................

If you have a generic TCX file (from a SpeedCoach, from a Garmin), the following will create plots and spit out some summary text ::

$ tcxplot tcxfile.tcx yourrower.txt

.. image:: C:\python\rowingdata\screenshots\greghoc.png

If you prefer a time based plot: ::

$ tcxplottime tcxfile.tcx yourrower.txt

Some TCX files do not have GPS position data. For example SpeedCoach with impeller. In that case: ::

$ tcxplot_nogeo tcxfile.tcx yourrower.txt
$ tcxplottime_nogeo tcxfile.tcx yourrower.txt

The following will upload your row to the Concept2 logbook, and create a file crewnerddata.tcx_o.csv that looks like a painsled csv, for future use ::

$ tcxtoc2 tcxfile.tcx yourrower.txt

Again, yourrower.txt is optional.

.. image:: C:\python\rowingdata\screenshots\otwscreenshot.JPG

Here is the row on the Concept2 logbook:

.. image:: C:\python\rowingdata\screenshots\otwlogbook.JPG

CrewNerd with summary .......................

Having a crewnerddata.csv (summary csv) and a crewnerddata.tcx, the following will create plots and spit out some summary text ::

$ crewnerdplot crewnerddata yourrower.txt

The yourrower.txt argument is the file where you keep your rower data. This is optional. If you don't provide it, the tool will look for defaultrower.txt. If it doesn't find that, it will use some default values.

The script will also spit out some statistics from the summary csv.

.. image:: C:\python\rowingdata\screenshots\woensdag.png

If you prefer a time based plot: ::

$ crewnerdplottime crewnerddata yourrower.txt

Painsled

Having painsled data in testdata.csv, the following will create plots and spit out some summary text ::

$ painsledplot testdata.csv yourrower.txt

or ::

$ painsledplottime testdata.csv yourrower.txt

The yourrower.txt argument is the file where you keep your rower data. This is optional. If you don't provide it, the tool will look for defaultrower.txt. If it doesn't find that, it will use some default values.

.. image:: C:\python\rowingdata\screenshots\2x20min.png

The following will upload your row to the Concept2 logbook: ::

$ painsledtoc2 testdata.csv yourrower.txt

Again, yourrower.txt is optional.

.. image:: C:\python\rowingdata\screenshots\screenshot.JPG

Here is the row on the Concept2 logbook

.. image:: C:\python\rowingdata\screenshots\screenshotlogbook.JPG

SpeedCoach GPS

Having SpeedCoach GPS data in testdata.csv, the following will create plots and spit out some summary text ::

$ speedcoachplot testdata.csv yourrower.txt

or ::

$ speedcoachplottime testdata.csv yourrower.txt

The yourrower.txt argument is the file where you keep your rower data. This is optional. If you don't provide it, the tool will look for defaultrower.txt. If it doesn't find that, it will use some default values.

The following will upload your row to the Concept2 logbook: ::

$ speedcoachtoc2 testdata.csv yourrower.txt '2015-11-05T13:15:30-05:00'

Again, yourrower.txt and date string are optional. Because the SpeedCoach CSV file content doesn't have the row date, you may provide a date string. The tool should be quite forgiving regarding the exact format in which you write your date/time string. However, if you input something ambiguous (time zone), the tool will guess and your row may end up on the wrong date. If nothing is provided, today's date will be taken.

RowPro

Having RowPro exported data in testdata.csv, the following will create plots and spit out some summary text ::

$ rowproplot testdata.csv yourrower.txt

or ::

$ rowproplottime testdata.csv yourrower.txt

The yourrower.txt argument is the file where you keep your rower data. This is optional. If you don't provide it, the tool will look for defaultrower.txt. If it doesn't find that, it will use some default values.

For RowPro CSV files, upload to C2 logbook is not available on the command line. You can upload to C2 directly from the RowPro application.

ErgData

If you use ErgData, you can download a CSV file from your Concept2 log. Here is how you use those data in this tool: ::

$ ergdataplot testdata.csv yourrower.txt

or ::

$ ergdataplottime testdata.csv yourrower.txt

The yourrower.txt argument is the file where you keep your rower data. This is optional. If you don't provide it, the tool will look for defaultrower.txt. If it doesn't find that, it will use some default values.

As your data are already on the Concept2 logbook, it doesn't make sense to have a script to upload them once more.

However, you may appreciate creating a TCX file for uploading to SportTracks.mobi or Strava: ::

$ ergdatatotcx testdata.csv

This will create a file testdata.csv_o.tcx which you can upload. I have tested this file on Strava and SportTracks with success. Somehow, even though the resulting file validates against the TCX Schema, I wasn't able to upload the file to Garmin Connect, because Garmin Connect rejects TCX files from non-Garmin devices.

ErgStick

If you use ErgStick, you can download a CSV file from your Concept2 log. Here is how you use those data in this tool: ::

Related Skills

View on GitHub
GitHub Stars16
CategoryDevelopment
Updated1d ago
Forks5

Languages

Python

Security Score

90/100

Audited on Mar 30, 2026

No findings