Crickles Activity Charts

It’s great to have charts of activity data on Strava and Garmin Connect but there are often times when you want extra capabilities. In particular, it can be useful to compare your efforts at the same event over time or to compare your performance at an event with others who did it with you. Crickles Activity Charts are specially developed for such comparisons. You can find them at charts.crickles.org and they work similarly to the Navigator.

First, choose yourself (or someone else) from the Athlete list and then choose the date range over which you want to search for activities here:

charts_top

The Date range and other controls work as described on the How to notes for the Navigator. Once you’ve picked an Athlete and a Date range the Activity drop-down will be populated appropriately. Note that activities flagged as private will not appear for selection.

Once you’ve chosen an activity two new fields will appear:

charts_metric

One is a View on Strava link; if you choose this the activity selected will appear in Strava in a new window enabling you to confirm that it’s the one you meant to choose and to see context in Strava. The other new field is a drop down list called Metric showing you what graphable data is available for the activity. In this example you can choose from altitude (which is nearly always there) and is measured in metres, cadence (in RPM), heart rate (in BPM), speed (given as kph) and power (given as watts).

This list changes from activity to activity – for example, watts requires you to have used a power meter.

Once you’ve chosen a metric you can also show how you want it to be charted using the x-axis and the Smooth? controls. For comparisons, the x-axis settings of distance and histogram are typically most helpful.

charts_x.pngThe Smooth? control is especially useful for power data, which is noisy. It’s also useful for fields such as kmh and heartrate when a comparison is being made.

Note that Smooth? will transform a histogram into a density plot.

To compare activities you simply check the Compare another? box under the first activity. This then causes a second set of controls for Athlete, Date range and Activity to appear. If you want to compare two of your own activities from different days you just select yourself as both the Athlete and the Second athlete.

Here’s an example of my own, comparing a recent 10 mile effort round Regents Park with a similar effort from last summer. The first activity is shown in blue and the second is shown in pink.

Looking at smoothed power shows that my wattage is quite a bit down:

loops_power.png

(If you’re familiar with power plots you’ll be struck by how little noise there is on this chart – normally power (viewed on a graph) continually oscillates a lot around what we might imagine to be the true signal.)

Second, we can look at a density plot of heart rate on the same two rides:

loops_hr

This shows that on the more recent ride my heart rate was centred on a 160-165 range whereas last year it was rising to the 170-175 bpm range for much of the ride.

The purpose of this example is not to propose that others should choose to ride at lower heart rate and power but to illustrate how these charts can be used to gain insights on your data. You can equally use the same functionality to compare the speeds of two competitors over the same parcours, or even – by charting altitudes – to compare the barometric/mapping fidelity of two devices.

Although not an app, Crickles Charts work well on an iPhone in the same way as the Navigator, as described here.

Only activities from 1/1/2017 are currently available for these charts – please get in touch if you’d like to select from earlier activities.

Should I screen my kids?

Unlike many on Crickles I am a long way from being a professional athlete. I ran the London Marathon in 2001 and was overtaken by a tree. At last year’s Porlock Hill Climb (which I went to, but failed to enter in time) I would not have been last. But 31 minutes is not great. Most of my sporting activity is to help my kids. My youngest likes to run – typically about 10K. My middle one loves cycling and triathlons. As they are young (11&13) I do most of their training with them. It’s getting harder, and I can see a time in the not too distant future when I won’t be able to keep up.

My day job involves many things, but I specialise in sudden cardiac death. All too often I am dealing with families who have lost someone out of the blue. Sometimes they are athletes, probably more often than chance would predict, sometimes not.

Around 1 in 50,000 athletes <35 years old die suddenly each year.

So I wonder about whether or not I should get my kids screened. Many conditions which lead to sudden cardiac death can be picked up by quite simple tests, such as electrocardiograms (ECGs). It takes 5 minutes. In countries such as Italy and France there are widespread screening programmes. I sometimes see people from the UK who have abnormalities picked up when they have  been to Europe to participate in an event, and had their mandatory ECG.

There has been a limited study in the UK, run by Sanjay Sharma, probably the best known Sports Cardiologist in the UK. They screened almost 5000 athletes between 14-35. 1 in 300 had a potentially serious underlying conditions after more complete evaluation. ECG screening seems to work. A large study in Italy demonstrated that it reduced the risk of sudden death in athletes by 90%.

But it’s not quite so easy. Athlete’s ECGs are “abnormal” anyway, and knowing what is normal for an athlete takes training. Furthermore, many people with abnormal ECGs don’t have problems after more detailed testing.

As some will know, identifying something potentially serious doesn’t mean that something serious will happen. In fact for some diagnoses, such as long QT syndrome, it is often more likely that nothing serious will happen. And then they may be banned from sporting participation, and struggle to enter certain careers. A diagnosis, which may never cause harm, can be life changing. I have all too often been unable to help families, who want to know what the future holds. I see people desperately grasping for certainty where none exists.

On the basis that I haven’t dropped dead yet, and neither has my wife, and on the basis that my kids are still amateur and have no symptoms, I think I’ll leave it a bit longer. But as data mounts, and if they become more serious, I will probably err towards organising some testing for them. Like most parents, I worry far more about them than I do myself. In the meantime I’ll be cycling with one son on Sunday on Exmoor.

If you are more interested, try starting here:

https://bjcardio.co.uk/2017/01/cardiovascular-screening-of-young-athletes-with-electrocardiography-in-the-uk-at-what-cost/

Improvements to Navigator Activities

If you’ve looked at the Activities page on the Navigator recently you will have noticed some improvements.

Layout and organisation

The columns are centred now, where appropriate, making it easier to read, especially for numeric fields. Also, activities are, by default, sorted by Date with the most recent at the top. It’s also still possible to re-sort, as explained in Using the Crickles Navigator.

It’s now also easier to search through your activities using the Search box. For example, I find this helpful if I want to compare my “Park Loops” rides.

Normalised Power

Normalised Power is now shown for each of your cycling rides where you used a power meter.

View in Strava

You can now also open an activity in Strava from the link in the Strava column.

PLEASE NOTE

The old link to the Navigator (at https://crickles.shinyapps.io/athlete_css_table/) has been online until just now but has not benefitted from any recent upgrades. I have now deleted it as an encouragement to switch to the current version at navigator.crickles.org. There was no functionality in the old version that is not also in the new one.

Getting the Navigator on your phone

I’ve found it very helpful to make the Navigator appear on my phone like an app. Here’s how you do it on an iPhone:

1. Open Safari and enter navigator.crickles.org in the address bar to open the Navigator.

2. Hit the icon at the bottom of the screen that looks like this:

MaxHR by athlete

3. Choose Add to Home Screen.

You’ll need to select yourself – or whichever other athlete you want to look at – each time but that’s easy using the alpha list. On my iPhone 7 the images are readable as either portrait or landscape.

IMG_2677

The same procedure works on the iPad but it’s not quite as neat since Safari retains desktop-like tabs on the iPad and is less app-like.

I don’t have an Android device to test on so I leave that as an exercise for the interested reader.

 

Those high heart rates you sometimes see…

The frequency of very high heart rates

A standard guideline for your likely maximum heart rate is 220 – your age. For example, someone aged 40 would be expected to have a maximum heart rate of about 180 bpm. Contrary to my belief before I started learning more about this, there is no evidence that maximum heart rate increases with fitness. It is therefore surprising to see how often heart rates much higher than this rule predicts appear on our Garmins.

In the Crickles cohort, which currently includes six women and 34 men, the maximum heart rates each of us has recorded on a Strava activity are as follows:

MaxHR by athlete

Since none of us (to my knowledge) is younger than 20, it is surprising that the majority of us have recorded heart rates of over 200 and for many of us our Garmins have at least once shown a heart rate much higher than that.

Should we be worried? The first thing to say is that the vast majority of these high heart rate readings are, we believe, strap errors. We now have access to well over 10,000 Strava activities on which the athlete used a heart rate monitor. Almost exactly 10% of these activities include a heart rate of 200 or greater. However, when we filter this to activities in which the high heart rate is reasonably sustained, it boils down to only 65 (at the time of writing). If the heart rate monitor always gave true readings, at least most of these 65 activities would warrant further examination. One third of the Crickles cohort has at least one of them to their name, and it’s fair to suppose that the Crickles group is reasonably representative of the community of very active amateur cyclists and runners.

Strap errors?

However, our sports heart rate monitors do not always give true readings! So how do we know whether a reported heart rate of, say, 225 bpm reported on our Garmin corresponded to our true heart rate or was an error from the strap? This is a question to which Mark, the Crickles cardiologist, and I have paid much attention. Let’s look at three examples…

First, here’s a recent activity of my own. Paula and I were cycling up and down the central mountain of La Gomera in the Canary Islands and my Garmin showed this:

gomera

On the ascent, it shows my heart rate as rock steady on 215 bpm. It stays at that level for the start of the descent, while we freewheeled to a cafe a little way down the hill. There, with my Garmin still showing 215 bpm, Paula took my heart rate at my wrist and found it to be 70 bpm. After our coffee stop, on the remaining descent the heart rate shown on my Garmin rose further and then fell but was still displaying over 170 bpm when we got to sea level. There, I swapped my strap for Paula’s identical Wahoo Tickr, which reported my heart rate to be half of what my own strap showed. This is a clear and complete strap failure!

Here’s our second example:

contact

We see that the rider began on an easy downhill and yet his heart rate is very quickly being reported at around 250 bpm. Just after 10 minutes there’s another spike but still the cyclist has put in little effort and again it’s on a downhill stretch; also this one is short-lived. We see many spikes like this and ascribe them to probable contact errors with the strap: the athlete may well not have built up a sweat yet and there could well be a fluttering effect on the descent. We see a third spike at just over 30 minutes. This occurs at a time of greater wattage but is also short-lived.

Here’s our final example:

ventoux

This time the athlete is progressing up a renowned arduous climb when at almost two hours into the ride his heart rate rapidly rises and stays in a range of around 200-220 bpm before rapidly falling again. While nothing is certain with sports equipment, this does not have the appearance of a strap error and merits attention from the athlete.

Going robo

When we first started Crickles we classified heart rate spikes by coding rules that encapsulated the patterns that we saw. Now that we have much more data we can use techniques of data science. The original rules have been decommissioned and now heart rate spikes are classified fully algorithmically. Does it work? It’s a developing art but already the algorithm can pick out the most concerning spikes, group together the spikes that look like contact errors and identify that the complete strap failure of our first example stands apart from all the other spikes. It also groups together other patterns that I haven’t covered here reasonably well. In short, it can analyse well over 10,000 activities, find the sustained heart rate spikes and group them as well as a lay human eventually could – all in a couple of seconds.

The work currently in hand is to improve the machine classification of spikes to capture more of Mark’s expert insight and fully utilises all of the data available in the Strava records. If everyone was a cyclist with a power meter and a reliable heart rate strap that would be much easier, but we cater for runners and rowers too and sports straps just don’t come with medical-grade quality.  We can already see that algorithms are better able to disentangle these factors than humans, especially as the volume of data increases.

It would be great to have more athlete data. For example, we so far have only one complete strap failure like the first case above. While the algorithm can easily identify it, if we had five times the amount of data and five complete strap failures we could be more confidant that the machine would correctly identify them every time. The best way you can help us is to encourage more people to sign up, either from the sidebar on this site or directly via signup.crickles.org.

When high heart rates matter

A different kind of question is how we should alert Crickles athletes to spikes that merit further attention. Currently I do this informally – but I don’t even have contact details for everyone who has signed up to Crickles. I cannot foresee that we will post such information online, at least while we have a fully open platform. It’s an important question because this analysis may potentially flag the occasional issue at a stage when it can be addressed through a reasonable change in the athlete’s exercise programme but that may later require a more dramatic decrease in exercise and/or a medical solution.

Until we have a way to communicate information about spikes, please feel free to get in touch through the Contacts page (or directly) if you have any concerns about your own high heart rate readings.

For the large majority of athletes we’re likely to find no cause for concern in most high reported heart rates. Health issues aside, continually improving the Crickles data cleaning logic will help us to keep producing better quality training metrics than are available from all the platforms that overlook the problem.

The Navigator has moved!

Today the Crickles Navigator moved to navigator.crickles.org. The links to the Navigator from this site have all been updated. If you have an old link bookmarked please replace it. Updates, including the addition of new athletes, will not be retrofitted to the previous version and I expect the old link will soon stop working.

The reason for this move is to migrate the Navigator to Amazon Web Services, which has several architectural advantages and in the short term also avoids some costs now that usage is increasing.

Relative CSS on the Navigator

The Crickles Navigator now has two new tabs: Relative CSS and Relative profile. These enable an athlete to compare their cardiac stress and its component with other athletes over the period defined by the date range (which currently defaults to six weeks).

Relative CSS ranks athletes on Crickles by total Cardiac Stress Score over the chosen period. Athletes at the high end may wish to consider whether they have built adequate recovery into their training plans, especially if they find themselves consistently accruing more cardiac stress than peers.

The obvious reason why one athlete’s total cardiac stress can be higher than another’s is that they’ve simply done more activities. However, it may also be that their activities are on average longer and/or done at higher intensity. Both duration and intensity can be explored using the Relative profile analysis. This comprises two density plots. The first chart shows the distribution of duration of the activities in the period. The green area plots this for the selected athlete, while the blue area shows this for the rest of the athletes in Crickles (excluding the athlete selected): for example, if there’s a large bulge of green over to the left of the blue area it will indicate that the chosen athlete does more short rides than the other athletes.

The second chart on Relative profile is a similar plot for intensity. This chart also has a dotted red line to highlight rides where cardiac intensity exceeds 100. This isn’t a “magic number” but large differences between the green and blue areas to the right of this will be indicative of how frequently athlete activities (in green) reach the highest cardiac intensities compared to activities of the rest of the Crickles cohort (in blue).

Using the Crickles Navigator (updated)

Anyone with a Strava account who has signed up to Crickles can see analysis of their Strava activities on the Crickles Navigator. Here’s how to use it…

First, choose an Athlete from the drop down list. Unless you asked me to change it, you’ll be identified on the list by your first name followed by your StravaID in brackets – for example, I’m Ian (301194). Your name can be reached quickly on the list by typing in the first letter of your name (e.g. “i” in my case). When you return to the Navigator (using the same device), the Athlete you last chose is remembered.

Next, if you want to navigate and compare only those athletes who share your gender or are in one of the clubs supported by Crickles you can do so by selecting it from the Groups dropdown. If you know of a club, or a group of friends, with members in Crickles whom you’d like to see as a group, or if you want to change the membership of one of the groups, please let me know. Even if you are in one of the groups, it can be useful to compare your CSS against the entire Crickles population (“All”) too.

The default page on the Navigator is now Relative CSS, which is described here. There are also several other pages, which appear as tabs. Most of the pages are incomplete until you’ve chosen an athlete. Once you do so, your activities over the past 6 weeks for which Strava has heart rate data are loaded into the Navigator.

If you want to see activities over a period other than 6 weeks, change the Date range in the left hand sidebar under Athlete. Once you get used to the date controls it’s fast to make a change. For example, if you want to set the range to start on 1st Jan, 2015 (currently the earliest available date) click in the first date field to get a widget like this:

calendar

If you click on the month/year at the top (December 2016 in this example) the widget will change to something like this:

cal month

You can hit the <<‘s at the top left to change to 2015 and then click on Jan to see a calendar for Jan 2015, from which you can select 1st Jan, 2015, as required. Play with it; it’s easy.

As you change the Date range (or indeed the Athlete) most of the results pages will update to reflect your choice.

On the CSS Map there is a dot for each activity. The size of the dot represents the duration of the activity (Moving Time on Strava) and the colour represents Cardiac Intensity. Cardiac Stress Score (CSS) is given by the vertical position on the map shows the components of CSS and the x-axis represents time.

If you want to see more detail on the activities that are shown on the CSS Map look at the Activities tab. The easiest way to explore this is to click on the column headings. For example, if you want to sort by date, click the Date heading:

cal date

Clicking it more than once alternates between an ascending and a descending sort order and the little arrows change accordingly. For example, if you see this, it shows that the table is sorted by Date in descending order:

cal date descending

You can do the same on the other columns too – for example, to find the activities with the largest CSS or HR Intensity just click on those headings until you get them in a descending sort. I’m afraid the column centring on the table isn’t great.

The This week tab shows the five most active athletes over the past seven days plus yourself (or whichever athlete you chose) if you’re not in the five most active. The athletes are colour-coded on this map and in addition activities of the chosen Athlete (typically you) appear as a triangle rather than a dot. This week does not respond to changes in Date range.

If you constantly find that your CSS values are higher than everyone else’s you might want to consider whether you’re overcooking it. It can also be interesting to compare CSS with other that of other Crickles athletes when you do the same event.

Like the CSS Map and Activities, the Fitness tab is also blank until you choose an athlete. When you do so it will chart the Crickles’ estimate of your (or the chosen athlete’s) Functional Threshold Power (FTP) and Lactate Threshold Heart Rate (LTHR) over the Date range. FTP only appears to the extent that you have cycling activities with power readings on Strava – no FTP, no green power line. LTHR is calculated from any activities (not just cycling) for which you’ve used a heart rate monitor – no HR, no red LTHR line. The Fitness tab will be re-drawn whenever you change the Date range. The earliest date for which Fitness can be shown is also currently 1/1/2015. (At the very start of this period the estimated FTP and LTHR values may not be reliable until sufficient athlete data has been captured.)

The Seasonal tab is (currently) up to eleven charts for the chosen athlete, reflecting the time spent in each HR zone for each three month season since early 2015. Like This week, Seasonal responds to the Athlete that you choose but not to the Date range.

Newer tabs give (1) a picture of your relative All-in position, as described here:

“All-in” analysis on the Navigator

and Summary values, together with a comparison of how each such value compares with the overall Crickles population or a chosen group, as explained here:

New Summary tab for the Navigator

Activities are read from Strava every few hours so may not be up to the minute with your latest uploads. The time of the last upload is shown in the side panel.

Please let me know if you should see anything wrong or missing.

If you’ve signed up to Crickles but you don’t want your activities to appear on Navigator also let me know and I’ll take them off; I’d rather you didn’t but it’s always your data!