1 month worth of no power meter - estimate TSS

397 views
Skip to first unread message

Ashley Bernes

unread,
Sep 24, 2016, 5:42:15 PM9/24/16
to golden-cheetah-users
Is there a way GC can estimate my TSS scores based on HR data? 

I have 1 month worth of training where I did not have a power meter and I'm faced with having to go in and manually estimate these numbers, interested to know if there is a rough metric GC can give me.
Thanks in advance.

Pontus

unread,
Sep 25, 2016, 1:42:39 AM9/25/16
to golden-cheetah-users
I suggest you use TRIMP zonal points for the rides where you do not have any power data. See here:

Chris Cleeland

unread,
Sep 25, 2016, 9:20:02 PM9/25/16
to Ashley Bernes, golden-cheetah-users
Something worth asking is whether that data is really really important.  If you are at the end of your season and about to go into the off-season, then by the time the details really start to matter your missing month won't be contributing very much to the analysis.


--
_______________________________________________
Golden-Cheetah-Users mailing list
golden-cheetah-users@googlegroups.com
http://groups.google.com/group/golden-cheetah-users?hl=en
---
You received this message because you are subscribed to the Google Groups "golden-cheetah-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golden-cheetah-users+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Chris Cleeland

Darin Alleman

unread,
Sep 26, 2016, 4:57:18 AM9/26/16
to golden-cheetah-users
I have a working beta Java applet that will do this for you - given that you have a .fit file. I had the same problem as you and couldn't find anywhere in GC that could do it, so I wrote it myself. 

I took the basic idea from Joe Friel's blog post on the subject and went from there. Let me know if you're interested and I can help you out. 

For anyone actively involved with development of GC: I would really like to try to try my hand at adding this functionality to GC and submitting a pull request - but it all seems quite daunting not knowing any of the code structure or code requirements. Is there more information available somewhere? 

Mark Liversedge

unread,
Sep 26, 2016, 5:05:32 AM9/26/16
to golden-cheetah-users
On Monday, 26 September 2016 09:57:18 UTC+1, Darin Alleman wrote:
I have a working beta Java applet that will do this for you - given that you have a .fit file. I had the same problem as you and couldn't find anywhere in GC that could do it, so I wrote it myself. 

I took the basic idea from Joe Friel's blog post on the subject and went from there. Let me know if you're interested and I can help you out. 

For anyone actively involved with development of GC: I would really like to try to try my hand at adding this functionality to GC and submitting a pull request - but it all seems quite daunting not knowing any of the code structure or code requirements. Is there more information available somewhere? 

Happy to add an estimate TSS/IF/NP from HR data if someone can point to a procedure that works...

Mark

Matthew Walker

unread,
Sep 26, 2016, 5:44:26 AM9/26/16
to golden-cheetah-users
I have been estimating TSS based on a couple of methods for when I ride MTB or bikes without power meters.

I used to have a Suunto HRM that output energy consumed ie, calories burnt
From this I get a measure of intensity in kJ/min - I'm kinda used to the numbers so I stuck with it.

Lately I have been using the Strava calories burnt number (after altitude "correction"), I see a close correlation with actual TSS.
I know from my power data that my FTP is around a burn of 52kJ/min, so 52kJ per minute for 60 min is 100 TSS points.

for example;
last Thursday, I rode for 101 minutes and I consumed 1067 cal according to Strava, after some units translation this gives an average intensity of 44kJ/min. Divided by 52kJ/min = 0.849 (intensity).
using the TSS formula: Intensity^2 * time(hrs) *100 = 121 the actual TSS for the ride using the powertap was 120.

I also have a graph of HR data vs calories burnt - but this is no where near as accurate (+/- 20%?) it is not a straight line and and it takes a whole lot of data crunching to build up. HR is very much your own personal data as everyone's HR data is very different and some days it can be very different to others.

- Matthew

Mark Liversedge

unread,
Sep 26, 2016, 6:03:16 AM9/26/16
to golden-cheetah-users
I'll look at a regression for KJ above *and* below CP vs TSS and see if there is a generalisation we could use.
I may need to take duration into account since TSS is broken wrt that.

Mark Liversedge

unread,
Sep 26, 2016, 6:04:13 AM9/26/16
to golden-cheetah-users
Of course that regression is where we have power and hr data!

Ashley Bernes

unread,
Sep 26, 2016, 9:03:27 AM9/26/16
to Mark Liversedge, golden-cheetah-users
Thanks all. I ended up going with Trimp Zonal points for a finger in the wind mindset. 

Its true the data wasn't critical although I did have a 4 day stage race about 2 weeks after I got back by that point the data didn't matter I just wanted to tidy up my PMC.

Would love to see some estimates make it into the a dev build,

Thanks again

Darin Alleman

unread,
Sep 26, 2016, 9:52:20 AM9/26/16
to golden-cheetah-users
As long as your HR zones are fairly accurate, it may be possible to create a regression chart of how much TSS is accumulated per second at a certain heart rate. 

Here's the source to my current calculations. It's been fairly accurate for me. Given a 45 minute crit, the estimated TSS from heart rate was only 5 under the actual TSS from power. 

Mark Liversedge

unread,
Sep 26, 2016, 10:01:20 AM9/26/16
to golden-cheetah-users
On Monday, 26 September 2016 14:52:20 UTC+1, Darin Alleman wrote:
Here's the source to my current calculations. It's been fairly accurate for me. Given a 45 minute crit, the estimated TSS from heart rate was only 5 under the actual TSS from power. 

Happy to give it a try, would you mind just explaining the zone boundaries you used?

Mark 

Darin Alleman

unread,
Sep 26, 2016, 10:09:51 AM9/26/16
to golden-cheetah-users
The zone boundaries are just how I placed which zone the heart rate was in. 

I'm assuming that there is one heart rate record per second. So for each heart rate, put it in a "bin" for all heart rates in a specific zone based on the chart at the bottom of this page from Joe Friel. It's basically breaking up the 5-zone system that the user has into the 10 zones outlined by the chart. 

Mark Liversedge

unread,
Sep 26, 2016, 10:16:06 AM9/26/16
to golden-cheetah-users
On Monday, 26 September 2016 15:09:51 UTC+1, Darin Alleman wrote:
The zone boundaries are just how I placed which zone the heart rate was in. 

I'm assuming that there is one heart rate record per second. So for each heart rate, put it in a "bin" for all heart rates in a specific zone based on the chart at the bottom of this page from Joe Friel. It's basically breaking up the 5-zone system that the user has into the 10 zones outlined by the chart. 

Ah, great, a source is useful, so will reference it.
Will add a postprocessor for cycling activities to override TSS if HR is present but no power.

Mark 

Darin Alleman

unread,
Sep 26, 2016, 10:43:34 AM9/26/16
to golden-cheetah-users
I don't quite have the math smarts to be able to figure it out, but I think it would be a lot more accurate if instead of using a fixed chart like that, it instead created some curve based on the relationship between HR and TSS.

Piotr Kubica

unread,
Sep 27, 2016, 3:03:41 AM9/27/16
to golden-cheetah-users
Hi Mark,

It would also be helpful to add TSS estimation based on RPE (Rate of Perceived Exertion) and duration (http://home.trainingpeaks.com/blog/article/estimating-training-stress-score-tss). It would be fallback mechanism for calculating TSS if HR is not present. 
So basicaly: calculate TSS based on Pwr (if not present then calculate TSS based on HR (if not present then calculate TSS based on RPE or set 0)))

PS. Since I've had some issues compiling GC I am cosidering writing an external tool in Ruby which would take the .json files calculate TSS (as mentioned above) and overwrite the .json file, but I know users would be much better off if it would be done implemented in GC.

Cheers!
Reply all
Reply to author
Forward
0 new messages