Seven not-so-obvious features

21 October, 2013 by David Johnstone

The “selection” concept

On a “ride” page, a selection can be made on the main ride chart by clicking and dragging. This shows a summary of the selection, but this “selection” is shared across the entire page and used in a number of ways:

  • The selection itself and summary statistics are shown on the ride chart.
  • The path on the map turns blue.
  • Histograms are shown for the selection.
  • The selection is indicated in red in the power vs. cadence chart.
  • The URL has a fragment like #24m31s-29m13s appended. If this URL is directly visited, the selection is made when the page loads.

There are also a number of ways to create a selection:

  • Clicking and dragging on the ride chart.
  • Clicking on a lap selects the lap.
  • Clicking on the power curve selects the part of the ride where the highest average power was sustained.

continue reading

The bike on the front page

16 October, 2013 by David Johnstone

There’s a new picture of a bike on the front page, and it’s a good looking one.

This bike is Alfred Basa’a Crumpton Corsa Team with Enve 6.7 wheels. The photo is by Matt Bice. Read more about it (and see more pictures) on Cycling Tips, where it has been featured as one of the bikes of the bunch. Thanks Al!

Assorted updates

14 October, 2013 by David Johnstone

A variety of changes have happened recently. Highlights include improved summary data, UK units, power variability, power and heart rate zones charts in ride summaries, Flexicharts and API improvements, and account deletion. Read on for more details.

The way ride times are calculated has changed. Previously, there was duration and riding time, where duration was the length of ride from start to finish, and riding time was the time spent moving. These have been renamed to total time and moving time, and a new value called duration has been added, which is intended to be the best approximation of the actual length of the ride. Read How everything is calculated for more details about this and the rest of the summary data.

As a result of the ride duration changes, training load and TRIMP values have changed in some cases. When they have changed, they will be a few percent higher, and this in turn affects the numbers on the training load chart.

The variability of power output is now calculated and shown in ride summaries. As effective power takes high power outputs into account to work out a “this ride would be as hard as riding at this power continuously” figure, a ride with a constant average power will have the same effective power, but the more varied the power output, the higher the effective power will be relative to the average power. Consequently, variability is defined as effective power / average power, where a value of 100% requires a perfectly constant power output, and higher values will be seen when the power output is more variable.

The other change in ride summaries is that the heart rate and power zones are now displayed as a chart instead of a table. Moving the mouse over the chart shows information about each zone.

continue reading

How everything is calculated

14 October, 2013 by David Johnstone

There’s lots of numbers on this site, but it’s not obvious how many of them are calculated. In fact, even the simplest ones end up being a lot less simple when you think about it. Does average power include zeros? Does average cadence? And why are there three times for the ride? Read on and be illuminated.

  • Total time — The time between the start of recording and end of recording. Simple, but misleading if your ride involves riding to work, working eight hours, and then riding home.
  • Duration — The time between the start of movement and end of movement, with all gaps larger than three minutes reduced to three minutes. You are counted as moving when speed is above 3km/h, as GPS errors can creep in here, or when power is greater than zero. This is intended to be the closest approximation to how long the ride actually was, although there isn’t a perfect way of measuring this, as the time you want depends on what you want to know the time for. Thus, this is intended to be how long the ride was according to your body, and it is used to calculate training load and TRIMP, which both calculate how taxing the ride was based on the time and an intensity factor. Gaps aren’t completely eliminated, as they allow for recovery between efforts. Three minutes is a somewhat arbitrary cut-off point for gaps, but there is always going to be arbitrariness — for example: why should rolling down a mountain for 15 minutes count if you don’t do any pedalling?, or, what’s the difference between coming to a complete stop after a hard interval and rolling at 15km/h? Gaps are shortened below three minutes if the recording device was stopped for the duration of the gap. If there is no speed data, this is the same as total time.
  • Moving time — The amount of time that you are moving. As with duration, you are counted as moving when your speed is above 3km/h (to cater for GPS errors) or when power is greater than zero. If there is no speed data, this is the same as total time.
  • Distance — How far you went. This one’s easy.
  • Climbing — How many metres/feet were climbed in the ride. This is actually quite difficult to properly define for reasons related to the… continue reading

The Cycling Analytics API

19 September, 2013 by David Johnstone

Cycling Analytics now has an API. This provides a programatic interface to this website, which means other websites, mobile apps etc. can read, modify and create users’ data. This has been a work in progress for some time — observant users may have noticed the link to the developer page in the footer or the “developer mode” option in profile settings in the past few months — but it’s now ready for general use.

The API can be used for many things, such as mobile apps to record rides and directly upload them, websites that do novel things with ride data, scripts to automatically upload rides, and much more. The documentation is much more thorough, but here’s a few things worth noting:

  • The first step in using the API is getting an authentication key, which effectively says “this user has given you permission to use the API on their behalf”.
  • For personal use, authentication keys can be created in the API console (which is also useful for playing around with the API).
  • There are much more convenient ways to get authentication keys if you are making something that other people are going to use.
  • If those convenient ways of getting an authentication key are going to be used, an app must be registered. Developer mode must first be activated, and… continue reading

Garmin Vector mini review

11 September, 2013 by David Johnstone

The Garmin Vector is finally out, and I have one. I’ve spent about an hour riding with it so far, so I don’t have any large scale data comparisons (you’ll need to wait for DC Rainmaker’s review for that), but I do have a few thoughts.

Installing it wasn’t too complicated, although I did watch a few of the videos, mostly to make sure I didn’t do anything silly, but they did explain what the washers were for (which is to create a gap between the side of the pod and the pedal).

Although my pedals came with the latest firmware, I had to use the updater to tell them that my crank length was 175mm. They default to 172.5mm, which can be changed with Garmin Edge 810 and 510 head units, but I only have a Garmin Edge 500, so I needed to install the program which connects to the Vector using the included ANT+ USB stick.

The main issue I have faced is that my FSA SL-K Light carbon cranks are right at the limit of how wide cranks can be with the pods. Apparently the Vector supports cranks up to 38mm wide and 15mm thick, and my cranks are about that wide.

continue reading

Left/ride power balance metrics

11 September, 2013 by David Johnstone

Just in time for the Garmin Vector, Cycling Analytics now supports the left/right power balance metrics that some recent power meters produce.

The left/right power balance appears in three places.

Firstly, there’s an overall left/right balance for the entire ride in the ride summary. However, it’s a bit like average power in that it means something, but there are many situations where it doesn’t say as much as it could.

Secondly, the main ride chart shows the power balance as points. You’ll first need to click “L/R balance” in the legend to make it visible. The average is also shown for selections when they are made. Note that the centre grid line is at 50%, and the percentage refers to the proportion of power coming from the left leg (so pedalling with only the left leg will result in points on the top of the chart).

Finally, there’s a power versus left/right balance chart at the bottom of the page. This is an x-y scatter plot that shows the power and power balance for each second of the ride. This is useful as it gives a better understanding of what your power balance looks like.

continue reading

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

Page 1 2 3 4 5 6 7

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.