Wednesday, July 7, 2021

AI Endurance - DFA a1 accuracy initial review

Updated 7/13/21

It's with great pleasure that I'm updating this post after the AI Endurance team made a series of adjustments to their DFA a1 calculation methods (especially that troublemaker, detrending).  As the following data will show, their numbers are now spot on with Kubios.  The developers should be commended on this achievement and have my thanks.

A new implementation of DFA a1 has just become available through the web coaching site AI Endurance.  Since precision of DFA a1 is needed for accurate physiologic metrics (and therefore coaching suggestions) I wanted to take a quick preliminary look at their accuracy.  This was from a 2 hour session of mixed zone 1, zone 3, I did a few days ago.  For comparison sake, I included Fatmaxxer data, since from my previous testing experience, that app has the closest similarity to Kubios for DFA a1.  Artifacts were present, but below 1-2% at all times (mostly zero).  This was based on data given to me by the AI Endurance team.

Here is the DFA a1 over time:

AI Endurance:


Fatmaxxer:


  • The a1 values of AI Endurance are now essentially the same as Kubios, especially in that all important .75 area of the AeT (first blue circle).  They also reach appropriate nadir levels during HIT.
  • The post HIT fatigue induced suppression of a1 also has excellent agreement (purple circle).
  • Fatmaxxer data is very close to Kubios through the entire series as well.

A zoomed look at the all important a1 = .75 zone, during cycling near the aerobic threshold:


  • We see superb agreement between methods (Kubios premium vs AI Endurance).
  • On an interesting note, just a few watts of power is enough to knock the DFA a1 off the .75 threshold.  Without the trust in a1 calculation methodology/precision, erroneous conclusions could easily be made. 

 

Bland Altman Analysis of AI endurance

This plots the difference between each set of point pairs against the average value



Fatmaxxer for comparison
  • The correlation of AI endurance is excellent ( r of .96 and a mean difference of only about 5% at low DFA a1).
  • We can easily see that AI Endurance has very close agreement to Kubios, the 5% mean difference is trivial.
  • Job well done by the AI Endurance team!!

What about heart rate?  

Did I line the data up incorrectly?  If the data point pairs really were time shifted, we should see substantial HR discrepancy:

This looks very good (really can't do better) - r of 1.0 and about a .1 bpm mean difference!

Another days data - although I don't have the raw data, I wanted to share a look at a rough comparison of Kubios, Fatmaxxer, Runalyze and AI endurance during a session I did yesterday.  A 2 hour cycling session with 2 HIT intervals.  The important point is that the nadir values of the HIT and post HIT data are very close to Kubios in all methods.

The first is AI Endurance:

 

The others:

  • The red circles showing the DFA a1 nadirs are all very similar across methods.
  • Other portions of the data plot are also very similar.

 Update 10/23 - new findings of interest:

 Conclusion:

  • AI Endurance DFA a1 calculation appears to closely match that of Kubios premium.  This is remarkable achievement for the AI Endurance development team.  They now join the "elite club" of Runalyze and Fatmaxxer for Kubios like accuracy.
  • My compliments to the AI Endurance team for pursuing this difficult goal.
  • Since DFA a1 is a dimensionless index, trustworthy data values are essential to threshold calculation as well as monitoring health and fatigue.  Although we don't need to "calibrate" a1 to lactate or gas exchange (the blessing), we do need to have these numbers consistent with what Kubios displays (the curse) since that is what we used for threshold and other published studies.
  • See this for ramp protocol comments - Ramp slope and HRV a1 thresholds - does it matter?



Heart rate variability during dynamic exercise



Sunday, July 4, 2021

ECG artifact strips from Fatmaxxer - a guide

 Part 2 -
ECG arrhythmia and artifact visualization tips 

The latest version of Fatmaxxer has an incredibly useful feature for those of us interested in heart rate variability quality and interpretation - namely the ability to inspect the ECG details surrounding the alleged artifact.  As previously reviewed here, there are many reasons for a "beat" not to occur where it was supposed to be.  Having software tell us that there are artifacts does not "diagnose" the particular cause.  Although one can infer some causation such as missed beats (HR becomes 1/2 normal), arrhythmia can't easily be diagnosed this way.  Yes, some new algorithms have been developed to detect atrial fibrillation from HRV, but they are not "gold standard" as of yet.  As one engages in higher exercise intensity, artifacts rise and the importance of understanding the cause increases.  Are they serious or not?  In this first post on the matter, we will go through a brief guide on how to setup, record and graph the ECG extraction from Fatmaxxer.  Although Kubios premium can easily display this ECG, we will not be using that so users with simple spreadsheet software can take advantage of this feature.

Requirements - Fatmaxxer with developer settings on, "preferred device" set for the Polar H10 currently in use, Excel or similar

Use case - you have recorded a session with Fatmaxxer, there were artifacts present.  Each time Fatmaxxer detects an artifact, that series of electrical data will be written to a file with a suffix of .ecg. In addition, the app will take a baseline recording at about 10s elapsed time

Note - the following was not a true artifact, but serves as an example.  It was created by having the artifact correction threshold at the aggressive 5% during resting, where HRV is high and "false" artifacts are detected.

Step one - find and export the ECG log either through the menu system or straight out of the Android/data/online Fatmaxxer/files/logs folder



Next step - open the file with Excel:


The 4 columns represent the 

  • A - timestamp of the artifact (Unix time), 
  • B - segment (the "number" designation of the artifact - if you have 10 artifacts, you will see 0 to 9 for segment number). 
    If artifacts continue frequently enough, the segment may contain multiple instances and be longer than 10s.  About 5 s of no artifact beats are needed to "end" a particular segment.
  • C - sampleNr (the granular time of the ECG signal - since the same rate is 130Hz, each unit is 1/130 of a second) and 
  • D - yV (the ECG signal strength - in other words the mV of the signal at that particular time)

Next step is to simply graph a given segment numbers worth of data:

As an example, I chose the sampleNr and yV of segment "0" as x and y to plot, but did not include past the green line where segment 1 begins


The familiar Excel default "scatter" graph of the third (sampleNr) and forth (yV) column yields the following:


The next step is to change point size, color, add line connections, adjust axis and add some fixed time markers (arrows) to get an idea of regularity.


  • This is the entire, approximate 10s strip from Fatmaxxer.

 

Here is the same type of data in Kubios premium:

 

Zoomed Fatmaxxer ECG in Excel to explore waveform morphology:

  • Good looking narrow QRS waveform, defined P and T waves are present.
  • To do this, just change the x axis scale.

A further example of a "segment" containing an artifact.  The artifact (atrial premature complex) is not that apparent until the x axis (time) is zoomed to a smaller scale.  Then we see the early RR interval of the APC, then the delay in the next normal beat, then resumption of normal timing:


 

The APC occurs at about the 450 timing mark which is more obvious now that we know where it is (red circle):




Here is an interesting example of a recent issue with high artifacts seen with the H10.  After looking at the strip from Fatmaxxer, there were only a few APCs.

What I noticed was a very low voltage/signal strength of some of the beats (<500mV).  This could lead to the module not detecting the beat at all.  Optimization of signal strength by changing the belt position is another modality to improving HRV and HR precision.

 

Summary:

  • ECG strips of artifact related segments are now possible with Fatmaxxer.
  • This is an incredibly helpful feature for HRV, sports researchers and consumer users alike.
  • Potential capture of atrial, ventricular arrhythmia's, fibrillation and differentiation of artifact type is possible.
  • Although a great tool, avoidance of Kubios premium makes this affordable for all.
  • For the recording of accurate, finely granular time varying DFA a1 as well as pertinent ECG tracings, Fatmaxxer is a fantastic tool to have. Many thanks and compliments to the developer for this new feature.

See also - Pitfalls in DFA a1 - Polar belt position 


Heart rate variability during dynamic exercise