Tuesday, December 29, 2020

Active Recovery Day with HRV Logger

After doing some tough intervals and testing yesterday, my goal today was to just take it easy and recover with 90 minutes of easy cycling.  I also wanted to try the HRV Logger  "exercise mode", using the more aggressive artifact correction method of the software.  Test conditions were still the same, but the ride was essentially 155 watts (well below VT1) for the entire time except for an 8 minute block at about VT1 power (or slightly above it).

First the Logger View:


  • We can see that DFA a1 is well into the low intensity zone with well correlated values showing good fractal behavior (>1).  
  • The first red circle is the 8 minute interval at VT1, and indeed, the DFA a1 drops to below (or at) .75.  
  • After the interval, power resumed at very easy intensity but about 6 minutes later, the DFA a1 dropped unexpectedly.  After the brief drop, the values resumed their normal levels well above 1.  More about that later. 

 

Comparison with Kubios:


  • The agreement appears good between both methods.  Yes, it would be nice to have more points on the HRV Logger, but it provides useful information and helps one stay within their zone 1 range.  
  • The 8 minute interval does have finer detail in Kubios, but again, for practical purposes the Logger conveys the correct data.
  • The artifact (or whatever it is) is seen with both software methods - which is comforting.  What does that drop represent?  Is it an APC, VPC or something else?

I looked at the ECG (from the Movesense unit) and there was no arrhythmia.  In addition, the Kubios time varying plot of the DFA a1 shows exactly the same dip in values:

Whatever caused the dip in DFA a1 was present in both recordings and with no ECG abnormality.  Therefore the HRV Logger algorithm was not at fault!

 

Conclusions

  • Tracking of DFA a1 with the HRV Logger continues to provide accurate real time low intensity exercise information and should help with enforcing zone 1 training.  The observation of DFA a1 while doing a training session takes the guess work out of low to moderate intensity training.
  • The more aggressive artifact correction mode ("workout") seems to show good agreement with Kubios auto correction.  Further study of the effects of aggressive correction on DFA a1 would be of interest.
  • Occasional dips in DFA a1 can occur for no apparent reason, but they are transient, of short duration and are isolated.   

DFA a1 and exercise intensity FAQ 


Monday, December 28, 2020

Real time Aerobic thresholds and polarized training with HRV Logger

 Part 1 - Review of HRV Logger

Part 3 - Active Recovery with HRV Logger 

The road from research to practical implementation is sometimes difficult.  However, in this post we will see that our ideas about using DFA a1 as a measure of the transition through the aerobic threshold (AT) can be done in real time, without a PC, without Kubios software and most importantly be accomplished during a simple low intensity training session.  The same test conditions were present as with my HRV Logger review.  Although some recommend using the "workout" mode for artifact correction, my initial DFA a1 values were suppressed with low intensity warmups using this setting.  I switched back to the 20% mode for the testing.

Ramp Procedures 

The first ramp was my usual 130 to 230 watt span but done over 10 minutes (not 20).  This was suggested to keep the time commitment short.  The other added benefit (if it works) is that time spent over the AT is minimized.

The second ramp was done about 10 minutes after the first.  It consisted of 3 intervals done without trainer guidance, to simulate outdoor riding.  The wattage varied somewhat but the average power was 155, 190 and 214 watts each for 5 minutes.

Whole ride results:

 



The ramps are circled in blue.  In the middle is a 3 minute x 110% VO2 max interval and towards the end are 2 x Wingate 30s intervals.  The green line is the average HR for each 2 minute window, black is DFA a1 via Kubios and red is DFA a1 from HRV logger.

  • Both ramps appear relatively linear (first > second) with fair agreement between Kubios and Logger.  Since the HRV Logger only displays a value every 2 minutes, we lose some fine granularity.

 

Ramp comparison for HR

To calculate the HRVT, one of our methods is to plot the linear drop of DFA a1 against the HR rise.  Below is a graph of Kubios (every 5 sec) vs HRV Logger (every 2 min):



  • The results were essentially the same, despite the lack of points in the Logger.

 

Next was a 3 interval constant power session, 155, 190 and 214 watts.


 

  • I called this a "simulated road ramp" because anyone can do this on the road.  
  • Here we see DFA a1 drops below .75 at 214 watts, but was well above it at 190 watts.  Therefore the HRVT was somewhere in between.  If a finer degree of resolution was needed, additional intervals around 200 watts could have been done.
  • One could also look at the HR for equivalent threshold values.

 

How did this look in real time?  

As I was doing the ramp, my eyes were glued to my ipad mini.

After passing 200 watts (my usual HRVT), the Logger showed that the DFA a1 did drop below .75 for the first time:


  • The first ramp is on the left (I labeled the 200 watt point where DFA a1 is about .71).
  • The "road ramp", with 3 constant power intervals is on the right.  Note that DFA a1 was above .75 until the last section (214 watts).

There were no APCs according to my also worn Movesense ECG (which if present could have lead to abnormal DFA a1 values from faulty artifact correction :


 


Real time Polarized training

Training intensity distribution is very important to both know and implement.  I'm a fan of the polarized approach, which is especially important in older athletes.  One of my usual practices is to do a 3 or 5 minute near max interval at or just above VO2 max power.  We know that this HIT interval is at zone 3 (any max interval below 20 min should be zone 3).  The question is, what happens to your "internal intensity load" measures post interval.  For instance, below is a look at lactate after one of the above HIT intervals


  • After the 3 minute max, the lactate was over 10 mmol (with suppressed DFA a1 on the bottom panel).  Toward the end, I did 500w for 1 minute, then just easy pedaling for about 15 minutes.
  • Despite that active recovery, the lactate was still 4.2 at the session end and it was associated with a suppressed DFA a1 (yellow circle below).
  • This is why we say that DFA a1 is a marker of internal load rather than external.  The bike power (external load) was well into my zone 1 but the lactate and DFA a1 (both internal load markers) showed a higher intensity state.

Back to real time DFA a1...

With the above example in mind, several implications are possible.  After the HIT interval is over, do we use the internal or external load measures to compute our polarized (or even pyramidal) ratios?  Does the post HIT lactate or DFA a1 indication of intensity affect the next interval quality?  Without sufficient recovery, you won't be able to achieve full HIT power nor interval duration.  The following are a couple of observations post HIT.

Post 110% VO2 max:


 

  • As in my lactate example above, the DFA a1 stays down post interval in both the Logger and Kubios.  I watched this for awhile and finally dialed down the effort after 10 minutes (even though I was not really tired).

Post 30s Wingate x 2:


 

In a similar fashion, the DFA a1 was down after the HIT intervals (even though the HR was not high and power was well below the AT).  Only at the end of the entire ride did the DFA a1 rise.

The entire session on the Logger:

  •  Two ramps, two HIT and the post HIT suppression noted.

 

Conclusions

  • The ability to follow DFA a1 in real time has great value.  Not only can you obtain your personal aerobic threshold, but you are able to do so immediately without a PC, Kubios or Excel software.
  • Observation of real time DFA a1 is an ideal way to enforce polarized training - simply by making sure that your values stay above .75.
  • Recovery post HIT.  Persistent DFA a1 suppression may be associated with residual high levels of internal load (lactate).  This may or may not be desirable.  On one hand if you wanted to enhance lactate disposal, keeping the DFA a1 down by being guided with the real time display may be helpful.  Conversely, if a true recovery segment is desired, allowing DFA a1 to rise above .75 could be helpful.
  • HRV Logger derived DFA a1 appears to strongly correspond to values derived from Kubios.  Although this is N=1 data, it appears a promising modality for athletic monitoring and training.


DFA a1 and exercise intensity FAQ 


Saturday, December 26, 2020

HRV Logger for iOS - review of real time DFA a1 metrics

Over the past several months both a perspective review and validation study have been published detailing the usage of the HRV index DFA a1 as a potential means of defining the aerobic threshold for zone 1 training purposes.  Ideally, a real time look at this index would be quite helpful.  Since it is dimensionless and already "calibrated" to exercise effort, it should be able to inform the athlete about their current intensity load.  The iPhone/iPad app, HRV logger was recently upgraded to take advantage of this scenario.  The following post is an introductory look at how HRV Logger stacks up to Kubios in terms of DFA a1 during an exercise ramp.  In a previous post we looked at a comparison of the python based algorithm used in HRV Logger to that of Kubios and they were very close.  However, the question is how well the app will do when presented with the usual artifacts seen with moderate exercise as well as usability issues.  

Test setup and settings:  After a 20 minute warmup, a cycling ramp was done (Zwift controlled) from 130 to 230 watts (5w/min).  The app settings were a 20% artifact threshold and 2 minute measurement windows.  A Polar H10 chest belt was used with concurrent recording to a Garmin watch.



Results:

Before going over the results, a look at artifact correction effects should be done.  HRV Logger does correct for artifact.  This entails finding aberrant beats based on timing errors, then inserting a beat based on an educated guess (most commonly simple linear interpolation).   That usually works well especially for as missed beat, but not so well for APCs (since they may not flag as an error given the close timing to "normal").  Below is my ramp, first with "threshold correction" then with the newer "auto" correction (premium version only).

 


Notice the yellowed area (caused by 1 APC on each section), there is a dramatic drop that is not present in the "auto" corrected mode:

 

If your tracing does not contain beats such as this, there won't be an issue with "threshold" type corrections.  However, if it does - be aware of this issue.

Lets' now look at my ramp comparing Kubios (extracted from Polar H10 to Garmin .fit then processed with Kubios auto correction method) vs HRV Logger (Polar H10 to ipad mini running HRV Logger):

The green line is heart rate, showing the rise during the ramp. Blue is Kubios output (2 min windows but recalculation every 5 sec) and red is HRV Logger (2 min windows without overlapping recalculation).  For the most part, the agreement seems quite good.  The output of HRV Logger has timing markers but not matching HR per measurement window so I matched up as well as I could, but it could be off several seconds.

 

Getting back to the comparison, look at the circle I placed around the comment - (possible artifact).  That corresponds to the drop in DFA a1 seen with the Kubios threshold correction (which is why I went to trouble of explaining this).  

Why is that drop important to note?  If one were using this as a monitor of intensity during an exercise session, certain degrees and types of artifact can alter the DFA a1 value substantially.  Therefore if values suddenly don't make sense, consider the above possibility.

How well does HRV logger correct for missed beat artifact?  Actually very well!  Below is a Kubios tracing of the "cleaned" RR values from HRV Logger (using HRV Logger correction) alongside the raw Garmin data (using Kubios auto correction).  This was done over 2 hours including a ramp and some HIT intervals.  Unfortunately, I used the wrong window setting (30s instead of 2 min) so the DFA a1 values are not valid and not shown.


What this tells us is that the HRV Logger is able to handle moderate artifacts as well as the Kubios threshold method.  At very high artifact levels (seen at high HR), or during an APC activity the Kubios "auto" method may be better (but only available in the costly premium version).

HRVT difference

The heart rate variability threshold (aerobic threshold surrogate) calculation between the Kubios data and HRV Logger were very close:

Here we are graphing DFA a1 over time.  Since we know the cycling power over time, the point at which DFA a1 crosses .75 can be back calculated and converted into watts.  Although it would have been nice to have more points to play with, the Logger is within just several watts to that of Kubios.

 

Conclusions:

  • HRV Logger for iOS devices is a powerful and generally accurate means of measuring DFA a1 in real time or in a retrospective manner.
  • Artifact correction is similar to the "threshold" method of Kubios.  However, both methods are prone to error with even 1 or 2 atrial premature beats.  When doing a session, be mindful of a sudden drop of DFA a1 then a rise at the same exercise intensity.
  • Price point?  A steal!  Kubios premium is about 400$ initially then 80$ a year.  Sure, you could use the free version but still not get real time DFA a1 on a mobile device.

Wish list:

  • Separation of measurement window choice (should be 2 min) with "grid interval" (rolling recalculation time).  I know the app can handle a recalculation every 30 seconds since I used that already (but that time is too short for measurement accuracy).  Finer granularity in ramp or constant power sessions is helpful for aerobic threshold determination and was our method of choice in the validation study.  In fact, I think we were the first to use this technique. 
  • Real time and historic graphing of HR and DFA a1.  Since many users will be runners, knowing heart rate "breakpoints" would be helpful. Having the DFA a1 and HR side by side on the same graph and .CSV would facilitate that.  This is not as needed using a bike on a trainer doing constant power intervals.
  • Indication of degree of artifact per measurement window.  High artifact associated data should be suspect even with correction.
  • Perhaps some UI changes to account for usage either riding on a bike or running.  Note should be made that the DFA a1 concept was added on to an app that is mainly used at rest.  Hopefully the developer will consider a spinoff app aimed as a real time DFA a1 display with appropriate additional metrics for both threshold concepts and training intensity monitoring.

Real time Aerobic thresholds and polarized training with HRV Logger  

Active Recovery with HRV Logger 

DFA a1 and exercise intensity FAQ 

Saturday, December 19, 2020

Frontiers in Physiology - Validation of DFA a1 as a marker of VT1

Although many prior posts in this blog assumed DFA a1 reached VT1 at about .75, until yesterday, no published peer reviewed data existed to verify this concept.  However, we now have a high quality validation study published in Frontiers in Physiology confirming that.  Before getting into a brief summary of our findings I would like to thank both my co authors, the Frontiers reviewers (Drs Lars Brechtel, Daniel Boullosa) and Editor (Dr Clint Bellenger).  We were very fortunate in having reviewers who were both knowledgeable in HRV and exercise physiology (which is not a common skill set) who understood what we were trying to accomplish.  It was an incredible experience (and much fun) to work with Dave, Nick, Olaf and of course my very good friend Thomas. 

The article:

 

The full version is in the "production department" at this point, therefore I need to wait until it is in final form to get into more detail, review some interesting figures, stats and correlations with gas exchange.  However, the abstract should provide more assurance for using DFA a1 to help determine your VT1 and assist with the low intensity portion of zone training. 

In the meantime, the following posts should help guide implementation of using the index in practical terms:

Heart rate variability during dynamic exercise

 

Thursday, December 17, 2020

DFA a1 calculation - Kubios vs Python (with Marco Altini HRV calculation) mini validation

Just his past week, Marco Altini a prominent HRV advocate and researcher created a python based process to take an RR data series and output DFA a1/HR related values.  Although python is not part of my skill set (as in the old Star Trek line - "I'm a doctor not a ...."), some friends at Suunto happened to be working on something similar and we decided to take a look.  The idea was to test the "agreement" between the gold standard Kubios to that of a python derived DFA a1.  To do so we used the Polar H10 recorded running ramp from the prior post.  The RR time series was fed through a python based program with the following settings:

  • hrvanalysis.remove_outliers(low_rri=300, high_rri=2000)
  • hrvanalysis.interpolate_nan_values(interpolation_method="linear")
  • hrvanalysis.remove_ectopic_beats(method="malik")
  • hrvanalysis.interpolate_nan_values
  • Basic script from here
  • DFA a1 package here 
  • This is not the software from Marco Altini's site but it does use many of the same Python tools

In summary, we have the same Polar H10 RR series, comparing Kubios (auto correction mode) with the Python method.  I'm going to comment up front that artifact identification and correction methods are going to be different.  This could have a major impact on DFA a1 values.

Results:

Time varying output (2 min windows with recalculation every 5 sec)


  • If this looks like the graph from the last post, it's not your imagination.  This is the same data, but now the Python derived DFA a1 is added in purple triangles.
  • There is reasonable (but not perfect) tracking of each data point.

How does this look with regression analysis.  Here is a pair by pair plot of DFA a1 at all values:

R squared is .85 which is decent (but not excellent) and the slope is .82 indicating possible bias.

This was confirmed in a Bland Altman analysis:

I circled the area of concern, at DFA a1 below.75, the bias (relative difference between paired values) and standard deviation (scatter) becomes much larger.  This could be related to a few more artifacts in this region (zero to 1%) or simply the underlying method of calculation.

Aerobic threshold calculations

Does the 20% bias at DFA a1 < .75 affect the HRVT (the VT1 related heart rate variability threshold)?

  • Not really.
  • Although the values are different in the DFA a1 1.5 to .3 region, the HRVT is quite close, only about 2 bpm divergent.  There was more of a differential with lines drawn from 1.0 to .3, but still within several bpm.

Some observations:

  • Kubios is and remains a gold standard for HRV and DFA a1 calculation. 
  • The above python implementation seems (based on very limited data) to parallel that of Kubios.  
  • A time varying look at DFA a1 using python scripting has enormous potential to help guide ones training regime.  Both a retrospective look at an exercise session as well as a real time mini app on a smartwatch or phone may even be possible.  One of my wish list items is a simple green, yellow, red marker on your watch indicating what your last 2 minute DFA a1 result was (with some sort of "confidence indicator" for artifacts).
  • Issues to be worked out include artifact identification and correction (not necessarily the same thing) and more validation study.
  • Many thanks to Olli-Pekka Koistinen and the Suunto team for the python calculations and background scripting information.  
  • Thanks to Marco Altini for increasing awareness of nonlinear HRV related fractal correlation properties as a tool to help guide training intensity distribution and measurement of the aerobic threshold.

  

Addendum 12/20/2020

With the help of Marco Altini we now have another Python based implementation comparison.  He was kind enough to take the exact RR series as above and put it through his HRV software based process and send me the resultant DFA a1 values.  The following figures will compare the Suunto python method, Marco's method and of course the gold standard Kubios.


Bland Altman Difference analysis:

  • The Python based algorithm used by HRV logger yields similar results as the method used by the engineers at Suunto to compute DFA a1.
  • Although further study and verification is needed, this is an exciting development for athletic intensity modulation and zone identification.
  • Thanks to Marco Altini for processing the above RR series file and developing an app for mobile DFA a1 computation.


Frontiers in Physiology - Validation of DFA a1 as a marker of VT1 

Real time Aerobic thresholds and polarized training with HRV Logger 

Active Recovery with HRV Logger  

DFA a1 and exercise intensity FAQ  

Tuesday, December 15, 2020

DFA a1 - running ramp and sample rate observations with the Movesense ECG

This post will attempt to kill two birds with one stone - a look at how a reasonable quality running ramp can be used to denote a "heart rate variability threshold" as well as the issues with heart rate/ECG recording device sample rates.

As part of our exploration into DFA a1 behavior during an exercise ramp, let's look at some recent data that may help some potential users.  Although limited data exists on DFA a1 decline during running vs cycling, in my prior experience they seem to be similar.  A friend decided to do some testing, using the Movesense ECG module worn concurrently with a Polar H10.  He was kind to share the data and the analysis is below.

Here is the protocol he followed:

5 min walking at around 100bpm 

3 min running at around 130bpm

3 min running at around 150bpm

3 min running at around 170bpm

First, lets look at the ECG waveform. This was recorded at a sample rate of 512Hz using an iPhone and the Movesense showcase app (should be in the app store).


Definitely a very nice symmetrical wave and sharp R peak.

A plot of DFA a1 and HR over time for each device.  This is a time varying extraction from Kubios (window width 2 min, grid interval 5 sec - in other words the DFA a1 and HR are calculated from a 2 minute measurement window and recalculated every 5 seconds).

Polar H10 in red, ECG in black, HR in yellow.

 

If we look at the "agreement" between the ECG and the Polar belt, they are pretty good but not perfect.  Below is a Bland Altman analysis of each data pair (looking for proportional bias - more or less bias depending on the DFA a1):


It appears that the agreement is pretty good as long as DFA a1 is above .5, which works well for us since we use values between .5 and 1 to calculate the "heart rate variability threshold" (HRVT, which we feel is a surrogate for VT1 or the aerobic threshold).  However, there is a difference at DFA a1 values below .5 as seen on the t testing below:

 

Now for the "HRVT" calculation.  To do this we graph the DFA a1 vs the HR, look for the linear portion of the decline, create an equation and back-solve it for HR (see previous posts):

Movesense ECG:

Polar H10 data:



Conclusions:  

  • A simple three stage running ramp provides an adequate look at DFA a1 behavior and calculation of the VT1 associated HRVT.
  • An ECG module with a sample rate of 512 yielded similar results as a Polar H10 in the range of interest.  At lower ranges there was some bias and since we did not have a gold standard comparative recording,  it's impossible to say which is more valid.

Can we get similar results with Kubios free version?

The premium version of Kubios allows one to get the time varying data graphs.  However, we can come close to this in the free version.  In this case, you will need to manually create 2 minute windows and overlap them to get enough data points.  Here is an example using the exact file as above:

The overlap windows are in the top panel, the DFA a1 values will appear in the panel below it (in yellow).  I copied the numbers down by hand (on the left side) and put them into Excel to graph:


 


  • Although the HRVT heart rate is somewhat different than above, by spacing the overlaps closer together, you would approach the same result as in the time varying.  After all, the time varying is simply this technique with a user defined overlap (5 sec in my case) and then an easy text file output.

 

The issue of sample rates:

Although the Polar H10 uses a sample rate that is quite high (1000 Hz), can we get by with lower rates?  I have shown some data using the Movesense ECG at 250 Hz that appears very close to the Polar but what about at even lower rates.  Can a sample rate of 125 Hz give us reasonable results?  This will be of interest when the Movesense unit becomes more widely available since only some devices can handle rates above a 250 Hz bluetooth transmission speed.

The test - my typical cycling ramp (130 to 230 watts over 20 min using Zwift as the trainer power control), Movesense ECG on upper chest (<1% artifact), Polar H10 in usual location under the pectorals (artifact below 4%).

The results:

Waveform:

Loss of R peak definition noted!  The true R peak could be buried in that flat top portion.

Data comparison:

 

During the warmup, the low sample rate ECG may be reading lower, however, the ramp appears much closer:



 What about the HRVT portion (used to calculate the VT1 surrogate):

 

Bland Altman Difference plot


  • It does appear that the DFA a1 results are about 7 to 10% lower than that of the H10 in most ranges.  Remember that the H10 was already lower than the 512 Hz sample rate ECG at very low DFA a1 values, so this would translate to an even larger change between 512 and 125 Hz sample rates

Bottom line:

  • There may be bias related to lower sample rates, especially at 125 Hz.  
  • Sample rates do seem to matter in the HRVT calculation, however, there does not seem to be a huge real life difference in cycling power as a result.  Although the time was 25 seconds different between devices, at just a 5 watt per minute increment, that's only about 2-3 watts.

How can we explain lower DFA a1 values related to both low sample rates as well as waveform deformity?  

Not long ago, a colleague of mine presented a very clever study.  


 

The aim was to see what happened to various HRV indexes if there was loss of RR precision.  In other words, would the HRV index change if the R peaks were not precise.  That's going to happen in either low sample rate conditions or with waveform distortion (see older posts).  Their data showed downward bias in the DFA a1 during light exercise (intensity below VT1 with DFA a1 baseline about 1).  The bias was not as severe with a resting RR tracing.  I suspect that with DFA a1 values near .5, the bias would be even worse than noted.


What does this mean on a practical basis?  It appears that inaccurate assessment of the R peak by either ECG distortion/low sample rate or by a conventional chest belt can impact the precision of the DFA a1 measurement.  This is not something that can be necessarily corrected by software since it's essentially based upon the loss of information.  For example, a blurry photo can't be corrected by Photoshop (ask any good photographer).  DFA a1 is based on fractal correlation properties of the RR times series.  As in a detailed map of a coastline, loss of the map's dot to dot precision will change the fractal nature of that given coastline.  Since we are at the very beginning of really understanding the specific use case prerequisites in having one achieve a valid HRVT, further work needs to be done to address these issues.  One scenario is clear, use of optical based RR data should not be deemed trustworthy until proved otherwise.


Heart rate variability during dynamic exercise