Calculation Methods
Standalone web version of the bundled PRhealthier Lactate Test reference document.
This section describes the calculation pipeline applied to each lactate test, from raw step data to training-zone boundaries.
Citations are explicitly divided into:
- Literature/framework sources → support physiological concepts or established methods
- App implementation sources → describe how the current system operationalizes those concepts
This distinction is critical: not all implementation choices are directly supported by literature, and where this occurs, it is explicitly stated.
Pipeline Overview
Test steps (raw data)
│
├─► Data preprocessing (sort, find nadir, enforce monotonic rise)
│
├─► Fixed-reference thresholds ── LT1 (2.0 mmol/L) and LT2 (4.0 mmol/L)
│
├─► LT1 (Individualized) ── tiered baseline chain → semi-log rescue → fixed 2.0 fallback
│ └─► Semi-log breakpoint ── diagnostic LT1 companion + optional rescue
│
├─► LT2 (Individualized) ── Modified Dmax → Classic Dmax → fixed 4.0 fallback
│ └─► Dmax variants ── diagnostic LT2 companions
│
├─► Derived metrics ── Predicted VO₂max, FTP Estimate
│
├─► Uncertainty (bootstrap) ── percentile bands (implementation-defined)
│
├─► Zones ── Calculated LT1/LT2 model (default) or framework-style models
│
└─► Disclosure surfaces ── confidence tier, warnings, and method transparency
Philosophy: Transparent Degradation
The system is designed to produce usable output even when test quality is suboptimal. When ideal conditions are not met, the engine:
- Computes the best available estimate using fallback methods
- Rates the confidence of the result
- Discloses limitations and improvement strategies
All fallback behavior is explicitly surfaced-no silent adjustments.
Step 1 – Data Preprocessing
The raw data are transformed into a monotonic workload–lactate curve:
- Sort by workload (ascending)
- Identify lactate nadir
- Remove pre-nadir points
- Enforce monotonic increase post-nadir
This ensures stable input for all downstream methods.
These transformations are implementation decisions, not directly prescribed in the literature. [12]
Step 2 – Fixed-Reference Thresholds
LT1 – 2.0 mmol/L
- Represents a widely used fixed aerobic threshold reference
- Supported as a conventional landmark in lactate-threshold literature [3]
LT2 – 4.0 mmol/L
- Represents OBLA (Onset of Blood Lactate Accumulation)
- Common but not universal proxy for MLSS or second threshold [3][7]
Note: These fixed thresholds serve as practical anchors rather than individualized physiological truths. They provide reproducible reference points across tests and between athletes; they are not equivalent to an individual athlete’s true aerobic or anaerobic transition workload.
Step 3 – LT1 (Individualized)
A tiered detection strategy identifies the first sustained rise above baseline.
Tiered detection
| Tier | Method |
|---|---|
| 1–3 | Baseline rise detection (strict → lenient) |
| 4 | Semi-log breakpoint (rescue) |
| 5 | Fixed 2.0 mmol/L fallback |
Tiers 1–3 reflect common interpretations of the first lactate rise above baseline described in threshold literature [3].
Semi-log Breakpoint
- Based on log-transformed lactate modeling [4]
- Used here as:
- A diagnostic LT1 estimator
- A fallback when baseline methods fail
Note on terminology and method: The app implements a semi-log fit – workload (linear axis) versus log(lactate) – with two-segment linear regression to identify a breakpoint. Beaver et al. (1985) [4] originally described a log-log transformation (log workload vs. log lactate). The shared principle is two-segment linear regression on log-transformed lactate; the specific axis transformation differs. The app’s implementation should therefore be understood as inspired by, not equivalent to, the Beaver et al. method. [4][12]
Semi-log Rescue (Implementation)
The use of semi-log breakpoint as a fallback:
- Is not explicitly defined in literature
- Is an app-specific design choice
It is therefore:
- Supported conceptually by threshold modeling literature [3][4]
- Operationally defined by the app [12]
Step 4 – LT2 (Individualized)
A curve-shape–based detection using Dmax methods.
Tiered fallback
| Tier | Method |
|---|---|
| 1 | Modified Dmax |
| 2 | Classic Dmax |
| 3 | Fixed 4.0 mmol/L |
Dmax Methods
- Classic Dmax: maximal perpendicular distance from the discrete step points to the chord drawn from the first processed point to the last processed point [5]
- Modified Dmax: variant definition (implementation-dependent; literature varies). In this app, preprocessing trims the curve to the lactate nadir before both Dmax variants run, so the chord effectively starts at the rise-above-baseline anchor [5][6]
Curve-fit policy (important):
- Dmax in this app is computed on the discrete measured step points. No third-order polynomial, exponential, or spline is fit to the data before drawing the perpendicular.
- Each candidate threshold is therefore always one of the actual sampled stages, never an interpolated workload between stages.
- This is a deliberate departure from the published Bishop / Jenkins / Mackinnon 1998 cubic-Dmax variant. Polynomial fits to 6–8 sparse, near-S-shaped step-test points are under-constrained at the highest order term, so the analytical Dmax of the fitted curve can land at a basis artifact rather than the physiological elbow. We prefer the discrete formulation, whose resolution is honestly bounded by the step protocol’s granularity, over a smooth fit that would hide the same uncertainty behind continuous output.
- Practical implication: the resolution of LT2 (Individualized) is bounded by step spacing — narrower steps give sharper threshold detection. The bootstrap range surfaced alongside the estimate partially reflects this.
Note on interpretation:
- The literature supports Dmax as a threshold estimation method, not as a universal definition of LT2.
- In this app, Dmax serves as an operational LT2 estimate rather than a definitive physiological boundary.
LT2 ≥ LT1 Guard (Implementation)
The constraint that LT2 must exceed LT1:
- Not a literature requirement
- A physiological consistency rule implemented in the app [12]
Step 5 – Derived Metrics
Predicted VO₂max
Derived from performance at fixed 4.0 mmol/L:
- Running → speed-based estimate
- Cycling → power + mass estimate
Weight is not required for running because the speed-based equation already yields a relative oxygen-cost estimate in mL/kg/min. Cycling starts from absolute power in watts, so body mass is needed to convert that workload into a relative oxygen-cost estimate. [12]
Note: This is an indirect estimate derived from lactate-curve geometry; it is not equivalent to a laboratory gas-exchange VO₂max measurement. [12]
FTP Estimate (Cycling)
- Defined as power at 4.0 mmol/L
- Serves as a functional proxy
Not equivalent to classical FTP definitions (e.g., 60-min power or MLSS). [12]
Step 6 – Uncertainty (Bootstrap)
- Bootstrap resampling applied to derive uncertainty ranges
- Percentile bands (e.g., 5–95%) reported
This is a statistical implementation choice, not tied to a specific lactate-testing standard. [12][15]
Step 7 – Zones
Two categories:
1. 5-Zone (Calculated LT1/LT2) Model (Default)
Anchored on:
- LT1 (individualized)
- Dmax-derived middle boundary when that split remains trainable on the selected axis
- Fixed 4.0 mmol/L
If the Dmax-derived middle boundary collapses too close to LT1 or LT2 on a given axis, the app first falls back to the midpoint of that axis’s LT1→LT2 band. If even that midpoint is too compressed to yield trainable interior zones, the physiology model becomes unavailable on that axis rather than fabricating a false split. This minimum-gap guard is applied on the displayed axis itself: HR requires usable bpm spacing, cycling power requires usable wattage spacing, and running pace requires usable sec/km spacing before the physiology model is shown. This is a display-layer fallback for zone construction, not a change to the LT2 estimate itself. This is the only fully individualized model. [12][13]
2. Framework-style Models
Includes:
- Olympiatoppen
- Coggan-derived
- Daniels-derived
- Friel-derived
Note on framework adaptation:
These frameworks are valid in their original context [8][9][10][11]. Olympiatoppen’s current reference explicitly publishes LT2-anchored multi-axis fractions; Coggan, Daniels, and Friel do not. In this app, Coggan-, Daniels-, and Friel-based models are therefore labeled -derived, while Olympiatoppen is presented by its published name.[13]
Framework Validity vs Adaptation
| Framework | Literature supports | App modifies |
|---|---|---|
| Olympiatoppen | Lactate/HR zone models [8] | Uses published LT2-anchored fractions |
| Coggan-derived | FTP-based power zones [9] | FTP replaced with 4.0 anchor |
| Daniels-derived | VDOT/threshold pace [11] | Re-anchored to 4.0 |
| Friel-derived | LTHR-based zones [10] | Re-anchored to 4.0 |
Re-anchoring Effects
Re-anchoring may shift zone boundaries relative to the original frameworks. The app does not currently provide quantified shift estimates, because no peer-reviewed source quantifies the magnitude of these shifts across a representative athlete population. Future versions may add empirical observations as data accumulates from validated comparisons. Until then, coaches should treat re-anchored zones as approximations of the original frameworks rather than exact reproductions.
Step 8 – Disclosure and Confidence
Estimate Confidence Tier
Reflects:
- Protocol quality
- Data coverage
- Threshold resolvability
This is an interpretive system, not a standardized metric. [14]
Peak Lactate Warning
Triggered when:
- Lactate never reaches 4.0 mmol/L
Implication:
- LT2 and derived zones may be unreliable [14]
Transparency Features
- Method source labels (e.g., “Modified Dmax”)
- Fallback indicators
- Diagnostic companion rows
These are design features to support interpretability. [14][15]
Summary of What Is Supported vs Implemented
Strongly supported by literature
- Fixed lactate thresholds (2.0, 4.0 mmol/L as conventions) [3][7]
- Concept of first rise above baseline (LT1) [3]
- Log-transform threshold detection approaches [4]
- Dmax as a threshold estimation method [5][6]
Supported conceptually but implemented variably
- Individualized threshold detection strategies
- Use of multiple methods for cross-validation
- Use of lactate thresholds for training zones
App-specific (not directly supported by literature)
- Tiered fallback chains
- Semi-log “rescue” logic
- LT2 ≥ LT1 enforcement
- Re-anchoring training frameworks to 4.0 mmol/L
- Quantified crosswalk shifts
- Bootstrap configuration and thresholds
Key Takeaways for Users
- Fixed thresholds (2.0 / 4.0 mmol/L) are the most reproducible anchors
- Individualized thresholds provide better personalization but depend on curve quality
- Dmax and semi-log methods are interpretive tools, not absolute truths
- Translation frameworks retain structure but are adapted, not replicated
- All outputs should be interpreted within uncertainty bounds
References
- Aunola S, Rusko H. Reproducibility of aerobic and anaerobic thresholds in 20–50 year old men. Eur J Appl Physiol. 1984;53(3):260–266.
- Aunola S, Rusko H. Aerobic and anaerobic thresholds determined from venous lactate or from ventilation and gas exchange in relation to muscle fiber composition. Int J Sports Med. 1986;7(3):161–166.
- Faude O, Kindermann W, Meyer T. Lactate threshold concepts: how valid are they? Sports Med. 2009;39(6):469–490.
- Beaver WL, Wasserman K, Whipp BJ. Improved detection of lactate threshold during exercise using a log-log transformation. J Appl Physiol. 1985;59(6):1936–1940.
- Cheng B, Kuipers H, Snyder AC, Keizer HA, Jeukendrup A, Hesselink M. A new approach for the determination of ventilatory and lactate thresholds. Int J Sports Med. 1992;13(7):518–522.
- Bishop D, Jenkins DG, Mackinnon LT. The relationship between plasma lactate parameters, Wpeak and 1-h cycling performance in women. Med Sci Sports Exerc. 1998;30(8):1270–1275.
- Beneke R. Methodological aspects of maximal lactate steady state – implications for performance testing. Eur J Appl Physiol. 2003;89(1):95–99.
- Seiler S. What is best practice for training intensity and duration distribution in endurance athletes? Int J Sports Physiol Perform. 2010;5(3):276–291.
- Allen H, Coggan AR. Training and Racing with a Power Meter. 3rd ed. Boulder (CO): VeloPress; 2019.
- Friel J. The Triathlete’s Training Bible. 4th ed. Boulder (CO): VeloPress; 2016.
- Daniels J. Daniels’ Running Formula. 4th ed. Champaign (IL): Human Kinetics; 2021.
- PRhealthier Lactate Test source:
LactateAnalysisEngine.swift. - PRhealthier Lactate Test source:
ZoneEngine.swift;CrosswalkTables.swift. - PRhealthier Lactate Test source:
EstimateConfidenceAssessment.swift;LocalInterpretationEngine.swift. - PRhealthier Lactate Test source:
TrainingZonesSectionView.swift;ThresholdsSectionView.swift; test suite.
Notes on citation scope
Reference [8] (Seiler 2010) addresses training-intensity distribution among endurance athletes, not the specific zone-fraction structure used in the Olympiatoppen model. The Olympiatoppen 5-zone fraction boundaries (<0.78, 0.78–0.89, etc.) are institutional convention; Seiler’s paper is cited as a peer-reviewed proxy for the empirical Norwegian endurance-training context in which those fractions are used, not as a source for the specific fraction values.
References [9]–[11] are training textbooks rather than peer-reviewed journal articles. They are cited as the canonical authoritative descriptions of the Coggan, Friel, and Daniels frameworks, respectively. Public-facing summaries of these frameworks (TrainingPeaks for Coggan; joefrieltraining.com for Friel; vdoto2.com for Daniels) are widely available and reflect the same content. Readers from a strict academic background should treat references [9]–[11] as practitioner literature rather than primary-research evidence.
References [3] (Faude 2009) and [7] (Beneke 2003) are cited for threshold-validity discussion and MLSS methodology. Neither paper addresses the app’s choice to re-anchor crosswalk frameworks on the fixed 4.0 mmol/L crossing; that re-anchoring is implementation logic, documented under reference [13].
References [12]–[15] are pointers to the PRhealthier Lactate Test source code rather than published literature. They are listed because the document explicitly distinguishes between literature claims and implementation behavior; inline citations to “[12]” through “[15]” throughout the document indicate “see the implementation source for the actual behavior” rather than a literature claim.
