Swimming Metrics

840 views
Skip to first unread message

Ale Martinez

unread,
May 22, 2016, 5:39:55 PM5/22/16
to golden-cheetah-users

I was playing with a Garmin Swim and built some common swimming metrics, here are some examples tested on the last development build: the pretty common DPS, SPL and SWolf -in full cycle versions- as user defined metrics intended to be used as interval metrics:


The same metrics but as User Data to be shown as curves on "Ride" chart, since speed and cadence is the same for all samples in the same "length" the chart will have a stair for each length:

NB: Pool Length is only set for swims imported from FIT or SML files using that build and it must be added to Data Fields, otherwise just replace Pool_Length for the number of meters in the formulas.

And finally sTSS as defined here, intended to be used as Summary and/or Stress metric:


Feel free to try them and comment, and/or share your own metrics, perhaps we can agree on a set to be included in the next release.


Cheers, Ale.





Message has been deleted
Message has been deleted

Jean Div

unread,
May 23, 2016, 11:39:54 AM5/23/16
to golden-cheetah-users
Brilliant Ale! Will try it out this evening. These should eventually ship with GC as standard metrics rather than user-creatable ones.

Is there any way to use custom formula to interpolate open water training files so that you dont end up with this..?



I had previously been using the Tools-->Fix Speed from Distance, which gives you this..



Sorts out the speed (kinda), but cadence is still splotchy.

Any clues..?

Mark Liversedge

unread,
May 23, 2016, 12:06:23 PM5/23/16
to golden-cheetah-users
Just change the smoothing setting for the plot.

Ale Martinez

unread,
May 23, 2016, 1:26:10 PM5/23/16
to golden-cheetah-users
El lunes, 23 de mayo de 2016, 12:39:54 (UTC-3), Jean Div escribió:
Is there any way to use custom formula to interpolate open water training files so that you dont end up with this..?



I had previously been using the Tools-->Fix Speed from Distance, which gives you this..



Sorts out the speed (kinda), but cadence is still splotchy.

Any clues..?

Do you tried to set Smart Recording Threshold to a higher value before importing or to run Fix Gaps afterwards with a long(er) stop value?
Message has been deleted

Jean Div

unread,
May 25, 2016, 11:31:05 AM5/25/16
to golden-cheetah-users
Hey Guys

@Ale - Just tried to fix the gaps with up to 150s. Looking at the chart, I see that there are about 50s gaps, and nothing changed. I have attached a copy of a file, if you want to give it a go. Dunno If I'm doing something wrong here.

@ Mark - The trick above did not work, so If I use smoothing it rolls all the zeros in - i.e. 2s my cadence drops from 60 to 30, 3s it is 20, etc.

Knowing that all Garmin Open water swims come out like this, can there be an option to automate the fix (whatever it is) on import..?

Ta,
Jean
OpenWaterSwim.json

Ale Martinez

unread,
May 25, 2016, 12:26:51 PM5/25/16
to golden-cheetah-users
El miércoles, 25 de mayo de 2016, 12:31:05 (UTC-3), Jean Div escribió:
@Ale - Just tried to fix the gaps with up to 150s. Looking at the chart, I see that there are about 50s gaps, and nothing changed. I have attached a copy of a file, if you want to give it a go. Dunno If I'm doing something wrong here.
This json files already have the gaps filled with zeros, probably due to a provious Fix Gaps with stop < 50, so further runs of Fix Gaps will not do nothing on it, you need to re-import the original file with Smart Recording Threshold greater than 60s or run Fix Gaps with stop > 50s afterwards when the gaps still are present.
Message has been deleted

Ale Martinez

unread,
Jun 4, 2016, 10:57:34 PM6/4/16
to golden-cheetah-users
Update: some charts using these metrics are available for download from the cloud using the new V4.0 1606 Development Builds

SAM BUSH

unread,
Jun 5, 2016, 8:07:57 AM6/5/16
to golden-cheetah-users
Ale,

I have written out the metrics as you have shown but unfortunately I'm not getting anything to show up for any of my Garmin Swim workouts? The only metric that shows is Speed. Any advice?

Ale Martinez

unread,
Jun 5, 2016, 9:23:42 AM6/5/16
to golden-cheetah-users
El domingo, 5 de junio de 2016, 9:07:57 (UTC-3), SAM BUSH escribió:
Ale,

I have written out the metrics as you have shown but unfortunately I'm not getting anything to show up for any of my Garmin Swim workouts? The only metric that shows is Speed. Any advice?

Hi Sam, these formulas requires 2 pieces of data to work:
1) Cadence - check the selected activity has cadence, it should be present if you import FIT/PWX/SML files but it is not available when importing TCX files
2) Pool Length - FIT/SML files imported using the last development versions set Pool Length automatically, otherwise you need to set it manually for each activity (add Pool Length double to Workout Data Fields) or change the variable Pool_Length by a constant (25 or 50) in the formulas

Ale Martinez

unread,
Jun 6, 2016, 1:58:51 PM6/6/16
to golden-cheetah-users
El sábado, 4 de junio de 2016, 23:57:34 (UTC-3), Ale Martinez escribió:
Update: some charts using these metrics are available for download from the cloud using the new V4.0 1606 Development Builds

The use of these metrics requieres "Pool Length" definition as double on Data Fields->Fields, for new users it will be pre-defined but for now you have to define it manually, something like this:

 Then newly imported Pool Swim files will have this automatically set, otherwise you can enter a value manually:


Ale Martinez

unread,
Jun 6, 2016, 10:47:22 PM6/6/16
to golden-cheetah-users
The Swim Smooth site has a nice chart relating Pace to Stroke Rate with marked regions for too low and too high stroke rate (see http://www.swimsmooth.com/strokerate.html), I've uploaded a chart to do this analysis directly in Golden Cheetah using R:

It requires to have R installed and configured in GC plus cadence, pool length is used to adjust stroke rate and is wired to 25m for now since I haven't figured out how to acces Pool_Length from R.

tigg...@gmail.com

unread,
Jun 7, 2016, 5:02:35 PM6/7/16
to golden-cheetah-users
Thanks, that works for me.

SAM BUSH

unread,
Jun 8, 2016, 6:26:12 AM6/8/16
to golden-cheetah-users
Thanks Ale, it indeed was the Pool_Length Data Field missing from the workout Tab. Thankyou very much for this, it works very well.

Jean Div

unread,
Jun 15, 2016, 12:37:51 PM6/15/16
to golden-cheetah-users
A cool way to look at it.. had not thought of it like this before. Is each dot an interval?

The one issue (that is a bigger one to solve for swim analysis in GC) is drills and 'pool toys' (flippers, paddles, forearm fulcrums, pullbuouys).. they throw this very far off, and there is no way to mark them as different. I have taken to naming them consistently in the laps, in the hopes that one day we will find a solution and I can easily identify them (somehow).

Ale Martinez

unread,
Jun 15, 2016, 1:24:50 PM6/15/16
to golden-cheetah-users
El miércoles, 15 de junio de 2016, 13:37:51 (UTC-3), Jean Div escribió:
A cool way to look at it.. had not thought of it like this before. Is each dot an interval?

Each dot represents a sample (1 per second but all values for the same length are equal), it would be nice to have the dot size proportional to the samples with the same values, but I don't know how to do that in R yet, any help is welcome

The one issue (that is a bigger one to solve for swim analysis in GC) is drills and 'pool toys' (flippers, paddles, forearm fulcrums, pullbuouys).. they throw this very far off, and there is no way to mark them as different. I have taken to naming them consistently in the laps, in the hopes that one day we will find a solution and I can easily identify them (somehow).
Drills don't affect this chart since Cadence=0 for them and they are filtered, PB/paddles/fins or other strokes are a problem. It would be nice to plot the selected interval(s) but, for the moment, this is not available from R, AFAIK. 

Ale Martinez

unread,
Jun 21, 2016, 7:52:32 PM6/21/16
to golden-cheetah-users
El miércoles, 15 de junio de 2016, 14:24:50 (UTC-3), Ale Martinez escribió:
The one issue (that is a bigger one to solve for swim analysis in GC) is drills and 'pool toys' (flippers, paddles, forearm fulcrums, pullbuouys).. they throw this very far off, and there is no way to mark them as different. I have taken to naming them consistently in the laps, in the hopes that one day we will find a solution and I can easily identify them (somehow).
Drills don't affect this chart since Cadence=0 for them and they are filtered, PB/paddles/fins or other strokes are a problem. It would be nice to plot the selected interval(s) but, for the moment, this is not available from R, AFAIK. 

Update: I've found the compare mode can be used to plot intervals with different colors, so I've uploaded a new version for this chart which is compare-mode enabled. 

Jean Div

unread,
Jun 23, 2016, 11:49:43 AM6/23/16
to golden-cheetah-users
Thanks Ale.. will check it out over the weekend.

Quick question - with the new R charts, any chance that we could plot the Swim pace in 'm:ss' format..? If I plot it using decimals, I only get one place.. 1.1 min/100m is less specific (and not as nice) as 1:06, or 1:09.

Any chance that would work..?

Ta,
Jean 

Ale Martinez

unread,
Jun 23, 2016, 5:21:27 PM6/23/16
to golden-cheetah-users
I'm pretty sure you can do that in R, but I found simpler to use sec/100m, 66 or 69 are good enough for me. 

Jean Div

unread,
Jun 24, 2016, 4:30:52 AM6/24/16
to golden-cheetah-users
Good idea Ale. Will use that in the meantime.

Anyone out there with Knowledge of R that could help with the m:ss? Would also be great to have run pace in minutes/km! (Seconds makes less difference there)

Ale Martinez

unread,
Jul 22, 2016, 10:30:35 AM7/22/16
to golden-cheetah-users
The most common swimming metrics are now builtin, they will be available in the next development build:

Strokes Per Length: counting only the arm with the watch, pool length from metadata defaults to 50m
SWolf: Strokes Per Length plus time in seconds, pool length from metadata defaults to 50m
Stroke Rate: counting both arms for crawl/back corrected by 3m push-off when Pool Length is defined, otherwise it is just 2*Cadence
Swim Pace: average swim pace in min/100m or min/100yd when Cadence>0, to avoid kick/drill sets

Additionally the extensible data model (XData) that Mark allows to have length-by-length information for newly imported FIT pool swimming files, one record per length with 3 fields:
TYPE: 0-pause, 1-free, 2-back, 3-breast, 4-fly, 5-drill, 6-mixed, 7-IM
DURATION: seconds per length
STROKES: total strokes per length
This information can be seen in the SWIM tab on Editor chart and charted as User Data or accessed in User Metrics.

El domingo, 22 de mayo de 2016, 18:39:55 (UTC-3), Ale Martinez escribió:

Jean Div

unread,
Jul 24, 2016, 3:47:41 AM7/24/16
to golden-cheetah-users
BRILLIANT! Thanks Ale!

Ale Martinez

unread,
Aug 10, 2016, 6:24:34 PM8/10/16
to golden-cheetah-users
El viernes, 22 de julio de 2016, 11:30:35 (UTC-3), Ale Martinez escribió:
The most common swimming metrics are now builtin, they will be available in the next development build:

Strokes Per Length: counting only the arm with the watch, pool length from metadata defaults to 50m
SWolf: Strokes Per Length plus time in seconds, pool length from metadata defaults to 50m
Stroke Rate: counting both arms for crawl/back corrected by 3m push-off when Pool Length is defined, otherwise it is just 2*Cadence
Swim Pace: average swim pace in min/100m or min/100yd when Cadence>0, to avoid kick/drill sets

Additionally the extensible data model (XData) that Mark allows to have length-by-length information for newly imported FIT pool swimming files, one record per length with 3 fields:
TYPE: 0-pause, 1-free, 2-back, 3-breast, 4-fly, 5-drill, 6-mixed, 7-IM
DURATION: seconds per length
STROKES: total strokes per length
This information can be seen in the SWIM tab on Editor chart and charted as User Data or accessed in User Metrics.

When length-by-length information is available as XData we now compute 4 new metrics:
  • Swim Pace Free
  • Swim Pace Back
  • Swim Pace Breast
  • Swim Pace Fly
i.e. the average pace considering only lengths for that stroke.

Jean Div

unread,
Aug 24, 2016, 10:01:45 AM8/24/16
to golden-cheetah-users
Hey Ale

When length-by-length information is available as XData we now compute 4 new metrics:
  • Swim Pace Free
  • Swim Pace Back
  • Swim Pace Breast
  • Swim Pace Fly
A few Q's for you..
  1. Would we be able to now use to separate lanes in your 'Swim' Chart? I'm picturing something like 4 swimlanes - 1 for each stroke, and data (speed/SWOLF/SPL) will only show if I used that stroke? Something like: '(isSwim=1 && SPEED>0 &&XData=Free)..? Or do you think it would be easier if it was just included in the main pace lane in the hover-over box, or by colour coding the segments? (that way it could be applied across all)
  2. Could we show this in the interval / summary tab, only for swims? (or is that what you were saying is only coming in the next dev build?)
Ta,
Jean
 

Ale Martinez

unread,
Aug 24, 2016, 1:11:40 PM8/24/16
to golden-cheetah-users
El miércoles, 24 de agosto de 2016, 11:01:45 (UTC-3), Jean Div escribió:
Hey Ale

When length-by-length information is available as XData we now compute 4 new metrics:
  • Swim Pace Free
  • Swim Pace Back
  • Swim Pace Breast
  • Swim Pace Fly
A few Q's for you..
  1. Would we be able to now use to separate lanes in your 'Swim' Chart? I'm picturing something like 4 swimlanes - 1 for each stroke, and data (speed/SWOLF/SPL) will only show if I used that stroke? Something like: '(isSwim=1 && SPEED>0 &&XData=Free)..? Or do you think it would be easier if it was just included in the main pace lane in the hover-over box, or by colour coding the segments? (that way it could be applied across all)
 Color code in Activity chart is a nice idea, but I don't see this happening anytime soon, buy you can add a User Data curve to chart stroke type if you like.
  1. Could we show this in the interval / summary tab, only for swims? (or is that what you were saying is only coming in the next dev build?) 
You can configure them at Summary/Interval (only shown for swims) and use them in Metrics Trends charts.

Jean Div

unread,
Aug 28, 2016, 11:17:18 AM8/28/16
to golden-cheetah-users
You can configure them at Summary/Interval (only shown for swims) and use them in Metrics Trends charts.

I'm struggling a little with the syntax for the 'custom' box. I tried to base my hamfisted attempts from your 'Swimlanes'. This is what I had..

# Length seconds plus stroke cycles\

(isSwim<>0) ? Pool_Length*(1+Average_Cadence/60)/(Average_Speed/3.6) : 0

It pulls a zero. Could you point me in the right direction pls Ale..?

Ta,
Jean 

Ale Martinez

unread,
Aug 28, 2016, 6:08:31 PM8/28/16
to golden-cheetah-users
Sorry, but I don't know what are you talking about: Which 'custom' box?  Which 'Swimlanes'?

If you want to have "Length seconds plus stroke cycles" a.k.a. SWOLF at interval level you can use the builtin metric for that:


Reply all
Reply to author
Forward
0 new messages