Sunday, January 5, 2020

Measurement of Hemoglobin saturation breakpoints - use as a fitness monitoring tool

This blog was started as a source of practical guidance in using muscle O2 sensors for both weight training and endurance exercise.  In honor of the New Year, I am going to review a recent article and present a practical guide in using a Moxy, BSX or Hex sensor for monitoring the second lactate threshold otherwise known as the RCP, MLSS, or FTP.  Yes, there are small differences in these terms, but for practical purposes, let's lump them together.  
It has been well established that there are "breakpoints" in the behavior of the oxygenated and de oxygenated hemoglobin signal as measured by sensors over the rectus femoris and vastus lateralis in the leg during progressive incremental lower extremity exercise.  In other words, as one cycles or runs at higher intensity, the muscle O2 declines (or the desaturated hemoglobin rises) in certain patterns.  At about the RCP/LT2/FTP/MLSS, the pattern changes giving one an opportunity to approximate that physiologic threshold.  Some investigators have questioned how a relatively small, superficial area of muscle just happens to correlate with the RCP, but it appears to behave that way (to our benefit).  

This post aims to provide a framework and method for performing your own incremental ramp to obtain the MLSS/RCP breakpoint from muscle O2 data.

A very important observation has been that the desaturation behavior of the rectus femoris is markedly different than the vastus lateralis.  If we are going to put this into practical usage, that is critical to know.  

The rectus femoris has a gradual desaturation with increasing effort then has an acceleration at the RCP.

With the rate of change between stages showing a shift at high power outputs corresponding to the RCP:

On the other hand, the vastus lateralis progressively de-saturates (almost in a linear fashion), until there is a point where it plateaus with no further change:

Either muscle group can be used in a progressive ramp scenario.  

Can these ramps be helpful in fitness monitoring?
A recent study (by members of the same team responsible for the figures above) looked at the ability of the HHb (desaturated hemoglobin) breakpoint to track fitness changes through a cycling season in 8 male cyclists.  The question was whether the NIRS derived breakpoint was accurate enough to give meaningful information in an athletes change in RCP.  Why would this be important?  From one standpoint, it could give info on whether or not they are making progress based on a given training schedule.  Perhaps more importantly, it would guide the zone 3 power demarcation needed when adhering to a polarized training regime.
If your fitness improves, you may need to adjust upward the zone 3 cutoff, otherwise you continue to train in zone 2, which may not be wise.

Study Methods:
Over the course of the 7-month season, each participant reported to
the laboratory for 3 to 4 days of testing at 3 separate phases: PRE
(February), MID (May), and POST (August).
Ramp-Incremental Test. The first visit of each phase consisted
of a ramp-incremental test to exhaustion to determine maximal
oxygen uptake (VO2max), gas exchange threshold, RCP, and
[HHb]BP. The ramp-incremental test began with a 4-minute
warm-up at 50 W followed by a 30 W·min−1 (1 W every 2 s)
ramp. The participants were instructed to cycle at their preferred
cadence, and this was recorded and kept consistent for all testing
On successive visits, the participants
performed a 30-minute constant PO test for MLSS determination.
MLSS was defined as the highest PO at which a stable
blood lactate concentration (Δ ≤ 1.0 mmol) was measured between
the 10th and 30th minutes of the constant PO exercise.26 After a
4-minute warm-up at 80 W the PO was instantaneously increased
to a predetermined value.
 Near-infrared spectroscopy-derived [HHb] was measured in
the vastus lateralis muscle of the right leg (Oxiplex TS; ISS Inc,
Champaign, IL) at a sampling rate of 2 Hz and automatically
interpolated to 1 second by the Oxiplex software. The specifics
of this system can be found elsewhere.12 The probe was placed on
the belly of the vastus lateralis muscle midway between the inguinal
crease and the proximal border of the patella
The [HHb]–time relationship from the ramp incremental
test was modeled with the following 2-segment
(“double linear”) linear regression model, as previously described
As an aside, what does the double linear regression mean?  The original modeling was done in this article back in 2012.  Here the same group looked at desaturation kinetics in the VL and compared the fit to either an S distribution (sigmoidal) or a double linear (2 lines intersecting).
Here is the raw data from the 2012 study:
Notice again the somewhat linear rise in HHb (or fall in O2 sat), with a plateau toward the end.

And then it was plotted as a normalized set of values:
It could be argued that either model is valid and that the inflection point could have some wiggle room as well.  
I wanted to show some details since the original paper has some statistical descriptions that may be confusing to some readers.  It is a simple concept, hidden in all the math.

Back to the recent 2020 article:
To account for the muscle–lung transit delay and VO2 onset
kinetics, the mean response time of the VO2 was calculated on an
individual basis and used to align (left shift) the V˙ O2 data to its
corresponding PO as previously described.30 To retrieve the PO
corresponding to the RCP and [HHb], the MRT-corrected VO2
versus ramp PO data were linearly interpolated.
What this is referring to is the time delay of O2 usage (VO2) vs power (MRT or mean response time) seen in incremental ramps vs constant power longer intervals.  Depending on the ramp details, it may be minimal vs moderate.  Since this was a 30w per minute ramp, the effect is large:

If we were to do a slower ramp (10 watts/min = 30/3min) the effect is small (2-10 watts).  We will need to keep this in mind for our testing.

What was the correlation between cycling season RCP power and HHb breakpoints? 

Pretty good!

The coherence between the VO2 associated with the RCP,
[HHb]BP, and MLSS is retained even after training-induced improvements
in each. Importantly, changes in the VO2 associated
with each threshold parameter are proportional on an intraindividual
level and are strongly related on an interindividual level.
These findings indicate that the equivalence between RCP,
[HHb]BP, and MLSS is not coincidental
Using the HHb breakpoint is a practical way to follow the RCP over time.  

In my experience, the rectus femoris has a larger desaturation response and may be a more suitable target using recreational NIRS devices such as the Moxy and Hex that may not have the precision of higher priced units.
Rectus femoris desaturation will have a different pattern than the VL which is not an issue as long as we know what to expect.  What I would like to show next is the similarity between my RF HHb desat breakpoint with the calculated RCP/LT2 from my previous VO2 max ramp test.  
The protocol was an incremental ramp done with a 30 watt rise every 3 minutes (so about 10w/min).  Although not exactly like the MRT testing referred to above, it is close enough.  As you will see, the results are fairly good and agree with my measured LT2/RCP.

Here is a step by step guide to doing this yourself - VO2 or gas exchange testing is not needed, but you will need a cycling power meter and one of the muscle O2 sensors placed on the rectus femoris.  Make sure the sensor is secure and does not move during the test.

  • Calibrate the power meter (zero it).
  • Warm up for 30 minutes or so.
  • Check recording gear (Ipbike or Garmin watch etc) to make sure metrics are received.
  • Start pedaling at 100 watts.
  • In 3 minutes, boost power by 30 watts.
  • Continue a stable power (130w) for another 3 minutes and keep repeating the cycle (30 watt rise every 3 minutes) until exhaustion (or just before). 

End the recording, save it and import it into Golden Cheetah.  You will need to review the import and data extraction methods from this post.

Create a spreadsheet of time, power, HHb etc (see the post).
Here is an example (with other fields as well).
The goal is to get a running average of HHb over 10 seconds, extract just the 10 second averages and plot against time.
To begin with, make sure the first value in a "time" column is 1. You may need to cut the earlier data out and renumber the rows.

 Create a running 10 sec average:

How to pull just the data every 10 secs:
Make a new column next to it:
Put 9 "X" values in the rows then a "1" in row 10:

Select the 10 rows, and copy to clipboard:

Select the entire series of rows below the initial selection:

Paste the clipboard (the 9 X and 1) into the rows to get this (note Column K):

Go to Data-Standard Filter as pictured above.
Use the Column K = 1 as the filter to get just the 10 second rows to display (remember the other rows had an X in the K column).
Notice the time column - it's every 10 sec now:

We now want to make a new spreadsheet with just the time and HHb results.
Copy each column to a new sheet (important, when pasting into the new sheet, use "Paste special" to remove any formatting or calculation errors (absolute vs derived values).


Here is the final plot:
(Plotting methods here)

The breakpoint where the rate of HHb change accelerates seems clear from visual inspection at about 950 plus seconds into the test.

If we were looking at the vastus lateralis muscle, we would be looking for the plateau of HHb rise - a totally different parameter.

The 950 seconds equates to 1 minute into the 290 watt stage:

Although I did not perform interpolation, this seems to correspond to the official RCP/LT2 of 280 watts (290 minus the 10 watt MRT shift).  It also agrees with my unofficial long interval technique to determine MLSS (and here). 
If this was done running on a treadmill, heart rate can be substituted for power.


  • It is possible to do muscle desaturation ramp plots to determine MLSS as done in the literature.
  • The result should be fairly close to the "true" MLSS value and has been shown to change as fitness parameters shift.
  • Since true MLSS testing requires multiple long, intense intervals that may disrupt a training program and/or contribute to unwanted stress, alternate assessments are very attractive.
  • Longer, more gradual ramps will show less "mean response time" curve shifting.
  • When comparing your results over time, similar muscle groups and ramp protocols should be employed.  However, small sensor position change should not play much of a role here as in day to day comparisons.


  1. Hi! Do you still use this "HHb breakpoint method" to determine your LT2? Looks really interesting, I'm going to give it a try.

  2. Yes, I do. Usually rectus femoris HHb. The problem for new users is that there is only the Moxy unit available and it is pricey. If you have an older BSX or Humon give it a go.

  3. Thanks! I've created a google sheet to find the breakpoint "automatically". I hope it will be useful to find the breakpoint in the least subjective way.
    There is a moxzones app which promises that it can find LT2, but I haven't tried it yet and "noone" is using it on the internet.

  4. Another thing which is not clear: you said start pedaling at 100W and increase 30W / 3 minute. And .... your data shows 118W at 10 seconds, 142W at 20 seconds and so on 143W at 180s. :o you should have kept 100W for the first 180s. At 950s you should have been at 100 + 5x30 = 250W, but you wrote 280-290...
    Could you help me to understand this part?

    1. Those were pre Zwift days, so I was doing the intervals manually and then just averaging the power (so it is not a perfect ramp). Still it should be good enough for our purposes. If you have a smart trainer and Zwift, you can now setup a custom incremental ramp that will be much smoother.

    2. Oh, I see! Thanks a lot! :)

  5. Well... I wrote a lot... but couldn't publis. so a short summary:

    It's working fine, thank you! I found that easier to find the breakpoint if i don't use 10seconds average. I think my trainer is stable enough to get more useful data without smoothing them.

  6. Great to hear it works for you. The smoothing and averaging are certainly not needed but were used in some of the published studies so I tried to emulate that. The new smart trainers are the way to go.

  7. Its a real magic! Soooo good!!! I'm afraid, most of the people, doing FTP-tests, can not calculate regression lines etc., but my beta (preprepre alpha :) ) version google sheet do everything for me. I just have to put watt data, SmO2, tHb and tell what time the ramp started and it says the FTP.
    This automation allowed me to check how it works with pure SmO2 data! Almost the same result! Maybe harder to find the break in that case, but if you do it automatically, it will give the same result. In my case it was the same second where i found the regression breakpoint.
    I cant tell you how much you helped me!!! Thank you very much!

    ps: The truth is that Humon's Garmin data field (interval) gave me almost the same result. It became red 20 seconds before my script found my threshold! I'm going to test it with a few other guys (and girls) with different levels of fitness.

  8. Congrats. Curious how repeatable it will be for you.