Saturday, May 22, 2021

Best practices for Runalyze and DFA a1 thresholds

Added 8/2023 - Ramp slope and HRV a1 thresholds - does it matter?

Added 10/23 - 

As previously discussed, the web service Runalyze provides a helpful tracking feature of DFA a1 over time.  Moreover, it allows one to recalculate the index repeatedly over a user defined time span such as 5 seconds as we do in our studies.  Only Kubios premium can come close to that!  Another potentially useful feature is that the web app will automatically calculate your HRVT based on DFA a1 vs power or heart rate.  I would like to suggest some "best practices" to make this as accurate as possible for the aim of threshold determination.

Prerequisites - accurate HRM such as a Polar H10 in bluetooth mode to a recording unit (Garmin watch, HRV logger with artifact correction off, Ipbike with HRV enabled, etc).  

The ramp:

We want a progressive ramp with a reasonable dynamic range of DFA a1.  In other words we want to start with high values (>1) and end up at or below .5.  The VO2 rise should also be somewhat linear - we don't want too much time spent at a given power with a steady VO2.  Why?  As noted in some older posts, there is variation in the a1 resembling a "normal distribution" around the AeT/VT1:

The above was my data from a previous long cycling session (>1 hr) just below the AeT.  There would be a notable a1 bounce from .5 to 1.25 if I did a prolonged interval at this intensity.  Therefore, we want to have a progressive and significant rise in power/intensity to avoid this scatter.

Another example comes from our Frontiers study using Sander Berk's 6 minute data intervals.  Notice the point spread at each intensity point (circles).  

Luckily, he increased the power by 30 watts after each 6 minute interval so the overlap is not severe.  But if one were to minimally raise power by just a few watts (and only have a few sample points every 2 minutes in Logger), you can see how difficult it would be to plot a line through the points.

If you are going to use the 6 minute intervals (as suggested for a real time approach), use at least a 20 watt separation.  Below is a plot of 6 minute intervals that I did recently.  My HRVT is usually about 205 watts.  There is a red line at the a1 = .75 mark.  The plot agrees with my historic DFA a1 with values above .75 at a power below the HRVT, and a1 below .75 at the 230w power level.  There will be fluctuation especially if an artifact is present.

Suggested Runalyze ramp:

Between 5 and 10w per minute rise over 10 to 20 minutes.  This can be done manually as "step" intervals (130, 160, 190, 210w ..etc) with a change every 3 minutes or just use Zwift to create a incremental ramp (example - 130 to 230w over 20 minutes = 5w/min).

Optimizing Runalyze output:

A key component of getting accurate HRVT results from the web app is to record the ramp and only the ramp as a discrete session.  In other words, don't record the warm up or post ramp exercise.  The warm up will be skewed to the higher a1 range and the post session could have HIT/post HIT contamination.  After a HIT interval, the a1 will stay low for a variable time at easy power levels - we don't want that to interfere in our HRVT plot.

Once we get our ramp done, it's time to go to the "settings" for Runalyze to process the data - don't use the default.  We want to get a granular output with plenty of a1 points - to produce the every 5 second recalculation we need to set the window overlap field (in yellow) to 115.


Artifact correction is also very important.  Even one APC can mess up the a1 and ruin our threshold plot.  The yellow line above should be set for .01, not .10.

Here is an example of an otherwise perfect ramp marred by 1 APC that escaped correction:


With a more aggressive correction (.01), the plot is now fine for HRVT:

Let's now see how Runalyze stacks up to Kubios using the same data.  

Entire ramp:

  • There is a bit of deviation early on, but the lower, nadir values are very similar (they were not in previous versions).
  • Overall, a good enough agreement, especially in the 1.0 to .5 range.

What about the thresholds?

HRVT heart rate:

  • The HRVT heart rates are within 1 bpm of each other - excellent!

However, the official Runalyze plot yields a bit different result:



  • Probably because they incorporate values from the start of the ramp.  Perhaps they can address that in the future.  We do not want those "flat", unchanging data points (red circle) at the ramp beginning.
  • However, all in all - still very close to our hand calculations.

HRVT power

This is where Runalyze really shines - it gives us a power estimation. Since they have a comprehensive tracking database of all the metrics involved, power is displayed as well.

  • There is only a 7 watt differential which is trivial in my opinion.

Their plot does show a close value as well:

  • Although a bit skewed by that initial flat section, still overall an excellent estimate.
  • Since one is able to download the data as a .csv, recalculation to your hearts content is possible.

A friends data:

To make the comparisons more appropriate, I've included some fresh data done by a friend.  This was taken from a cycling ramp, 7.5w/min using a Polar H10 with bluetooth pairing.  Only 2 artifacts were present in the entire series.  We will compare the Kubios vs Runalyze data and HRVTs.

Entire ramp session:

  • Excellent agreement between methods, especially at the .75 level and below.
  • Nice, linear HR rise in the area of interest.


  • Each HRVT (using similar data points for plotting) yields values with 2 bpm of each other.
  • I analyzed another ramp for this athlete recently, and the HRVT HR using Kubios was an identical 144 bpm.

HRVT power:

  • HRVT power is with 5 watts of each other - again a very close fit.


  • The Runalyze developer team has really nailed the DFA a1 accuracy to a very close approximation of Kubios premium, and in a web based package.  This means it's possible to do a ramp, have automatic .fit file transfer from Garmin, then simply look at the HRVT on your smartphone browser (that's what I do).
  • For best and most accurate results, try to keep artifacts down and only use dedicated ramps for HRVT assessment.  In fact, make sure your ramp does not have a lengthy, flat DFA a1 phase like I had above.  Until that is addressed, a progressive a1 drop would yield the most precise HRVT done by Runalyze.  Of course, if you are doing the HRVT line plotting by hand, you can just skip that part of the data.
  • Try to avoid very long, "stagnant" interval steps.  We want a steady rise in VO2 (or HR) in order to not get that point scatter noted above.
  • My compliments to the Runalyze team for a fantastic job.  Given the computational power issues and programming constraints, the current implementation is an excellent compromise in accuracy and usability.
  • No other current solution is able to automatically calculate your HRVT heart rate and cycling power (including Kubios) from a ramp file.  
  • I strongly urge users to support the site by becoming members so as to encourage further development and improvements.  Considering the up front and yearly maintenance fees of Kubios premium, this is a steal.

Heart rate variability during dynamic exercise

Friday, May 21, 2021

O2 desaturation and MLSS - Gone but not forgotten?

Although I have not covered much in the way of muscle O2 desaturation literature recently, a recent article caught my eye and I wanted to share it.  The usage of muscle O2 saturation observation during ramps to determine the RCP/MLSS/VT2 is not new (see below).  Unfortunately, with both BSX and Humon sensors unavailable/unsupported, the only game in town is Moxy.  Despite the potential benefits (which have been covered), their price point is just way too high for me to recommend.  However, if you already have a unit, lets look at this new study.

Their hypothesis:

We tested the hypothesis that local muscle O2 saturation (%SmO2) from the exercising and non-exercising muscle describes the mismatch between O2 supply and utilization during whole body exercise, where %SmO2 progressively decreases when exercising above but not below CP, thus exposing sustainable from unsustainable work rates.

In other words, at a constant, steady state intensity, a declining SmO2 indicates work above the critical power (another intensity boundary term similar in magnitude to the AnT, RCP, MLSS, VT2, LT2 etc.).

Experimental Protocols

To test the general hypotheses that %SmO2 distinguishes sustainable from unsustainable work rate and predicts time to exhaustion, two independent experimental protocols were performed. Each subject participated in one of the two protocols. 

On day 1, subjects performed a graded exercise test to exhaustion on the cycle ergometer, where work rate increased by 1 Watt every 2 seconds in a continuous ramp protocol. Gas exchange threshold (GET) and maximal oxygen uptake (VO2max) determined for each subject established the domain specific power requirements for future exercise trial days. Moderate domain constant work rate exercise intensity was established as 90% of GET.  To establish exercise intensity for the trials in the heavy and severe domains, we calculated a relative difference (%Δ) between power output at GET and the power output at VO2max for each subject. Exercise at 35%Δ defined the heavy domain constant work rate trial and exercise at 65%Δ between power output at GET and VO2max specified the severe domain constant work rate trial [10, 30]. Traditional criteria verified the severe domain work rate, including a VO2 slow component and the presence of a VO2max that was not different to that seen in a ramp protocol

We can see that they used various estimates to designate intensity domain test conditions.  I wish they would not have done it this way.  IMO, just a 5-10 minute series of intervals just below, at and above the second threshold would have been easier to understand and be of more practical benefit.  

Results of SmO2:

Results show notable drop in the SmO2 in the severe intensity domain at both sites.

However, they did do some "time trials"  in a running test:

Prior to all tests, subjects performed 3 minutes of walking after which the subject abruptly ran up to the intended target speed within 2-3 seconds. Treadmill speed was manually controlled by the runner, where a large screen displayed current and target speed.  When the subject could no longer maintain within 0.5mph of the target speed during the constant velocity test (described below) despite verbal encouragement, trials were ceased. All exercise trials were performed until exhaustion was indicated by the volunteer or the prescribed exercise work rate could no longer be maintained.        The 6 study visits began first with 3 continuous exercise time trial days followed by 3 intermittent exercise time trial days (Figure 1B).  The study days were as follows:
Continuous exercise trial days 1-3
1.    5-min (5min TT) or 15-min (15min TT) time trial effort for maximum distance
2.    5min TT or 15min TT time trial effort for maximum distance (opposite of visit 1) 3. Constant work rate (CWR) for maximum distance (estimated at 10 minutes to exhaustion, described below).

Also showing SmO2 drop in the severe domain.

Their conclusion:

The present data suggest that %SmO2, and its derivatives, can be leveraged to differentiate sustainable from unsustainable exercise intensity, describe and predict the depletion and repletion of the finite work capacity above CP (i.e. W´), and accurately predict the time to exhaustion. Our findings are consistent with the idea that the balance between local muscle O2 supply and metabolic O2 demand provides a useful physiological surrogate of critical metabolic rate and W´ balance.  Combined, these data extend current understanding of factors contributing to the maximal steady state metabolic rate and, importantly, provide a useful approach to describe and predict human exercise limitations

All in all a nice study (Nike Inc was one of the co authors).



  • SmO2 does not remain stable at intensities above the CP (MLSS, RCP, LT2 etc).
  • This can be used for estimation of CP.
  • Is this new?  Yes and no.  Multiple studies have already shown this.  However, they were ramps with curve slope interpretation.  I posted this method some time ago based on the work of Murias, but it was never explored in the literature.
  • What should have been done?  A more practical method for you and I to implement.  Do we do 5 or 10 minute segments or something in between?  Slope analysis is not a user friendly approach.
  • Note - the Vastus lateralis has a different desaturation profile than the Rectus femoris - if you are going to try this - use the RF.
  • Wish list -  an SmO2 device below the 200$ price point.  The BSX unit in it's current form could probably reach this with mass production.

Further reading