Coach mode

17 August, 2013 by David Johnstone

Are you a coach wanting to use Cycling Analytics with your clients? Today’s new feature lets you link your account with your clients so that you can use their accounts as though you were logged in as them. That is, you can upload rides, add new FTP values, and do anything else related to viewing and modifying their ride and fitness data.

To make use of this, coach mode must first be activated. There’s a checkbox for this on the profile settings page. Once activated, a Coaching heading will be visible on the sidebar on the left. Athletes can then be added by providing either their email address (the one they use to log in to Cycling Analytics with), or their user ID (which is the number in URLs like They are then sent an email that asks them to confirm that you are their coach. (They don’t need to activate coach mode themselves.)

All of your athletes are shown in a table on the coaching page:

continue reading

Flexicharts improvements and new Strava uploading

14 August, 2013 by David Johnstone

Flexicharts were introduced last month as a way to make custom charts. A number of improvements have been made to them, so it’s now possible to chart multiple things on one chart, and they now have access to power curve and PWC data. Therefore, it’s now possible to make charts like:

This chart shows the best 5 sec, 1 min, 5 min and 20 min power output for each ride (as points) and each month (as lines). This chart is created with these commands:

>>> rides.power_curve(5).points({color: 'hsla(190, 78%, 35%, 0.2)'})
>>> rides.power_curve(60).points({color: 'hsla(260, 78%, 35%, 0.2)'}).on(-1)
>>> rides.power_curve(300).points({color: 'hsla(330, 78%, 35%, 0.2)'}).on(-1)
>>> rides.power_curve(1200).points({color: 'hsla(40, 78%, 35%, 0.2)'}).on(-1)
>>> rides.power_curve(5).group_by(month).aggregate(max).line({color: 'hsla(190, 60%, 70%, 1)'}).on(-1)
>>> rides.power_curve(60).group_by(month).aggregate(max).line({color: 'hsla(260, 60%, 70%, 1)'}).on(-1)
>>> rides.power_curve(300).group_by(month).aggregate(max).line({color: 'hsla(330, 60%, 70%, 1)'}).on(-1)
>>> rides.power_curve(1200).group_by(month).aggregate(max).line({color: 'hsla(40, 60%, 70%, 1)'}).on(-1)

The new functions used here are power_curve(seconds), which shows the highest average power for a given duration in each… continue reading

Create custom charts with Flexicharts

19 July, 2013 by David Johnstone

A number of people have asked for various charts and other bits of information to be displayed. I’ve been reluctant to add most of these, because they would make the interface more cluttered with things that most people don’t use. However, at the same time, these requests have been for things that are reasonable for some to want to see, so I never wanted to say “no” and leave it at that. Therefore, today’s new feature is a way to easily make custom charts, called Flexicharts.

Flexicharts can be accessed via the link in the analysis section of the sidebar on the left, right underneath “Zones”. Going to that page brings up a prompt which can be given commands to create charts, and some explanatory text.

To create a simple chart that shows the distance of each ride, enter rides.distance() into the prompt and hit enter. This will result in a chart like the following being created:

Instead of distance, many other aspects of the rides can be charted, including duration, average heart rate, training load and maximum power (there’s a complete list of these at the bottom of the Flexicharts page). Note that, at the moment, the units displayed are always metric, so the distance is displayed in kilometres, even if you’ve set… continue reading

Strava uploading is working again

6 July, 2013 by David Johnstone

Earlier this week Strava shut down their existing API without making a new one publicly available. That caused issues here, because that API was being used here to upload rides to Strava. In light of this, the Strava uploading feature has been remade to work with the “upload by email” feature that Strava still provides.

If you want to have your rides uploaded to Strava, you will need to go to the linked accounts page and add the email address you use to sign in to Strava. (You need to do this even if you already had your account set to upload rides to Strava.) When this is done, an email is sent from the email address you provide (fun fact: an email can say it comes from any email address) to Strava with the ride file attached, and sometime in the next ten minutes or so, the ride should appear on Strava.

This approach to uploading rides isn’t as good as the previous method, as it no longer provides direct feedback to Cycling Analytics about the upload so it’s impossible to show a link to the ride on Strava. This also means that the Strava ride management tool doesn’t work any more, as it relies on the API that used to exist. Hopefully Strava will one day make an API available to the public again, but based on their communication, it probably won’t be this year.

Supported file formats

18 June, 2013 by David Johnstone

Here is a list of file formats that Cycling Analytics currently supports.

FIT — The FIT, or Flexible and Interoperable Data Transfer, file format was developed primarily by Garmin and is used by most recent Garmin devices such as the Garmin Edge 510, Garmin Edge 810, Garmin Edge 1000, Garmin Forerunner 310XT and many more. FIT files of rides are supported by Cycling Analytics (that is, if you record a ride, the FIT file should be supported; the FIT file format is vastly more complex and allows for all sorts of things beyond what bike computers create). If possible, set your device to record in one second intervals for best results.

GPX — The GPX, or GPS eXchange, format is a simple format designed to store GPS tracks, but can be extended to store information like heart rate and cadence.

TCX — The TCX, or Training Center XML, format is similar to GPX, but more advanced, and was developed by Garmin.

SRM — SRM files are created by SRM PowerControl head units. Currently, only files from PowerControl 7 devices are supported. Support for older formats will come, but I don’t have any files to test it against (get in contact if you have some). One caveat is that all rides are currently stored with a recording interval of one second in Cycling Analytics, so SRM files with a recording interval of 0.5s have every pair of records joined together (this will be changed someday).

DAT — DAT files are produced by Wattbike indoor bikes. Wattbikes record additional in-depth information about pedal strokes, although Cycling Analytics doesn’t yet do anything with this. The ride date is not contained in the file, so it must be somewhere in the filename in the format DDMMYY or YYYY-MM-DD-HH-MM-SS (i.e., “220714.dat”, “z3-workout-220714.dat” or “2014-07-22-08-35-22.dat”). If the filename doesn’t contain a date, the current date is used.

PWX — The PWX file format is similar to TCX and was developed Peaksware.

CSV — There are many different ways that CSV (or comma separated values) file formats are structured. Currently, CSV files from Cyclops Joule and iBike Newton devices are supported. For CSV files that don’t contain dates, the filename will be searched for a date as with DAT files, or the current date will be used.

BIN — BIN files produced by Cycleops Joule devices are supported.

DB — DB files are produced by Pioneer head… continue reading

Improved Strava ride management, and a few more things

14 June, 2013 by David Johnstone

There’s now a tool for managing the connection between rides here and on Strava. It can be accessed via the linked accounts page if you have set up your account to upload rides to Strava. (Here’s a direct link.) It tends to look something like this:

It’s useful for adding or removing connections between rides here and on Strava, and is handy if something has gone wrong when uploading a ride to Strava. There are more instructions at the bottom of the page.

On the topic of integration with Strava, there are a couple more changes coming soon: there will be an option to strip power and/or heart rate data from the ride that is sent to Strava; and there will be a way to only send select rides to Strava, rather than all of them (although, it’s possible to do this now by disabling automatic Strava uploading on the linked accounts page, and using the new Strava management page to upload only the rides you want).

In other news, the ride summary (at the top left of ride pages) has been updated. It’s been entirely remade, but the most notable changes are that either power or heart rate based metrics can be viewed (if both exist), power and heart rate zones are displayed… continue reading

Power zones

12 June, 2013 by David Johnstone

Cycling Analytics now does power zones properly. Power zones can now be set as a percentage of FTP, and the actual wattages used are based on the FTP that is current for the ride. Power zones can be configured on the power management page (previously, this was the FTP management page), and power zones can now be shown on the zones chart:

Fullscreen charts

10 June, 2013 by David Johnstone

Do you ever lament the fact that your massive widescreen monitor is barely used by most websites (except by some that don’t enforce a maximum width and have text running across the entire width, which doesn’t do much for readability)? Well, now it’s possible to make charts go fullscreen.

To do this, find the little grey bar on the right at the bottom the chart legend, hover the mouse over it, and then click on the fullscreen option.

As an aside, the wider grey bar on the left has a use too — clicking on it hides (or shows) the legend, which is useful for some of the charts where the legend otherwise gets in the way of what the chart is showing.

There are a few charts that don’t support this at the moment (because they’re using older charting code). Eventually they’ll be replaced.

Comparative statistics

10 June, 2013 by David Johnstone

This post might have a complicated sounding title, but most of this is pretty straight forward. One of the nice things about having a lot of data from a lot of people is that interesting things can be done with that data. Therefore, there are now a few simple charts that show Cycling Analytics users how they compare with the rest of the users. Head over to the statistics page and take a look.

The first few charts show how the user’s resting and maximum heart rates, weight and FTP compare with those of everybody else. They look something like:

This chart shows a histogram of all users’ resting and maximum heart rates, and the solid thinner lines show where this particular user (me!) lies. In the chart legend it says that 34% of users have a lower heart rate than me and 43% have a higher resting heart rate. This probably means that 23% have the same resting heart rate (that is, it’s in the same 50–54BPM grouping), except rounding errors mean these numbers don’t always add up to exactly 100%. If you hover over the chart with your mouse (on the actual page, not this picture), it shows what proportion of the users have a resting heart rate lower than where the mouse is… continue reading

Heart rate vs. power chart

8 June, 2013 by David Johnstone

Power output and heart rate have a complicated relationship. When you ride hard, your heart rate goes up. When you get tired, you find it harder to produce the same amount of power, and when you’re tired enough, you find it hard to raise your heart rate. And, all else being equal, the fitter you are, the more power you can produce at the same heart rate. Looking at power and heart rate data together can reveal more than either alone.

There is a concept in exercise science called physical working capacity (PWC), which refers to the amount of power that is produced at a specific heart rate. PWC130, PWC150 and PWC170 are the the power produced when the heart rate is raised to 130BPM, 150BPM and 170BPM. Ideally, these numbers are worked out by doing a specific test, but it’s also possible to work some things out by looking at power and heart rate from a normal ride.

Cycling Analytics now has a new chart that shows how heart rate and power are related. It is found on the pages for all rides that have power and heart rate data, and it looks something like:

Your first impression might be “that’s a big, colourful, messy set of lines and dots”, but it does… continue reading

Page 1 2 3 4 5 6 7 8

This is the blog of Cycling Analytics, a website that exists to help people manage their training and analyse their riding, with a special focus on power data.

You can follow this in your favourite feed reader, or on Facebook or Twitter.

Also, I'm on Twitter as @cyclist_dave.