Would it be possible to make that chart work based on resprate alone? I know that the results will be way less accurate (compared to including tidal volume and minute ventilation), but there seems to be more and more consent that VT1 can be extracted, to a certain degree, from breathing rate alone.
I just don’t have the knowledge to detect trend changes automatically with JS.
Add that Tymeware sensor provides very accurate respiration rate data; however is difficult to accurately derive full tidal volume, which requires integrating both chest and abdominal expansion (due to technological constraints in measuring abdominal movement with a chest strap).
Respiration from tymewear should hopefully be better.
Question is if we can use DFA a1 for threshold detection …?
Yes. I had a very narrow VE range which made using it quite difficult VT1-30, BP-35,VT2-40 so I thought I just see what happened if I moved it lower and put it outside by bib short straps. I’ll be doing another ramp test with it in the new position.
Could anyone give me an idea of where my VT1 is from these charts
Start 70W 4 minute steps at 15W stages.
The last step is NOT VO2max but 1 step above where I believe my FTP to be.
I’ve removed the 30 minute warm up and cool down
My thoughts are just before to 25m mark
If I try to estimate the ventilatory thresholds visually, VT1 looks to be around 160 watts with VE about 24–25 (which seems too low), and VT2 looks to be around 190 watts with VE close to 30.
For my control rides and ventilation analysis, I use a fairly detailed prompt for GPT-5.2 and I get very high-quality outputs from it. If you want, I can try to run the raw data exported from the FIT file and estimate where the thresholds might be. Ideally, this should be done with a full step test where at least three stages are below the expected first threshold.
Overall, my expectations for the new sensor are very positive. The results from the ventilation tests look very similar to what I see in my lactate tests. I regularly do a step test with lactate every 2–3 months for both cycling and running, and I also calibrate intensity with lactate on almost every workout.
Would you mind sharing that? Here or per PM?
I do not claim this is perfect, but based on my data I obtained quite reasonable values and conclusions. They are much more comprehensive than what is currently available on the Tymewear website. Of course, I calibrate everything using lactate data, and only after that do I adjust the threshold values. And one more point — this prompt is intended specifically for the analysis of the formal Tymewear test protocol.
For exploratory analysis or self-designed protocols, it obviously makes sense to further adapt and refine it.
PROMPT: Ventilation-Based Threshold Analysis Using Tymewear Data
1. Analyst Role
You act as an academic sports physiologist specializing in the analysis of stepwise exercise tests using high-resolution ventilatory data.
All physiological thresholds (VT1, BP, VT2) are determined exclusively from the ventilatory response.
Power and Heart Rate (HR) are used only for secondary interpretation, not for defining thresholds or training zones.
2. Input Data
The file contains 1 Hz time-series data with the following fields:
timestamppowerheart_ratecadenceVE(minute ventilation)BR(breaths per minute)VT(tidal volume)x_tyme_protocol— string label of the current test stage
Rules:
- Test start = first row where
x_tyme_protocolis not empty - Stage duration = 3 minutes (180 s)
- Only stages with ≥ 60 s of data are included
- Use actual recorded power, not protocol target power
3. Full Data Processing
3.1 Noise Filtering
Apply median filters:
VE_f = median_filter(VE, window=3)
BR_f = median_filter(BR, window=3)
VT_f = median_filter(VT, window=3)
HR_f = median_filter(heart_rate, window=5)
P_f = median_filter(power, window=3)
3.2 Outlier Removal
Remove rows if any of the following conditions are met:
VE_f < 5orVE_f > 230BR_f < 5orBR_f > 65VT_f < 50orVT_f > 500
3.3 Stage Segmentation
Use changes in x_tyme_protocol as the primary segmentation key.
3.4 Stage-Level Aggregation
For each valid stage compute:
Mean_VE = mean(VE_f)
Mean_BR = mean(BR_f)
Mean_VT = mean(VT_f)
Mean_HR = mean(HR_f)
Mean_P = mean(P_f)
VE_per_P = Mean_VE / Mean_P
BreathingPower = Mean_VE * Mean_BR
HR of the last 60 seconds (“HR_corr”):
HR_corr = mean(HR_f[last 60 seconds])
These values are used for threshold and zone determination.
4. Ventilatory Threshold Detection (VT1, BP, VT2)
4.1 VE Slope Calculation
slope_VE[i] = (VE[i+1] - VE[i]) / (P[i+1] - P[i])
4.2 VT2 Criteria
A stage is classified as VT2 if all of the following are observed:
slope_VE > 0.5 L·min⁻¹·W⁻¹- VE demonstrates exponential growth
- BR shows a step-like increase (typically +3–5 breaths·min⁻¹)
- VT plateaus or begins to decline
4.3 VT1 Criteria
The last stage before VT2 where:
slope_VEfirst exceeds 0.25 L·min⁻¹·W⁻¹- A consistent breakpoint in VE linearity is observed
VE_per_Pstops decreasing or begins to rise- BR increases linearly, without exponential behavior
- VT remains stable or increases moderately
4.4 Balance Point (BP)
BP = stage with minimal VE_per_P between VT1 and VT2
5. VE-Centric Training Zones
Ventilatory anchors:
VE@VT1 = VE(VT1)
VE@BP = VE(BP)
VE@VT2 = VE(VT2)
Zones:
-
Zone 1:
VE < VE@VT1
Power/HR = values atVE@VT1 -
Zone 2:
VE@VT1 − 1 → VE@VT1 -
Zone 3:
VE@VT1 + 1 → VE@BP -
Zone 4:
VE@BP + 1 → VE@VT2 -
Zone 5:
VE > VE@VT2 → VE_peak
6. VO₂max Estimation via Ventilation
6.1 VE_peak
VE_peak = percentile(VE_f, 98)
6.2 VO₂max
VO2max_L_min = VE_peak / 30
VO2max_ml_kg_min = VO2max_L_min * 1000 / body_mass
6.3 Power@VO₂max
Power of the last fully completed stage.
7. Durability / Drift Analysis
For each key stage (VT1, BP, VT2, VO₂max), compute:
Drift_HR% = (HR_last60 - HR_first60) / HR_first60 * 100
Drift_VEperP% = (VEperP_last60 - VEperP_first60) / VEperP_first60 * 100
Drift_BR% = (BR_last60 - BR_first60) / BR_first60 * 100
Drift_BreathPow% = (BP_last60 - BP_first60) / BP_first60 * 100
8. Ventilatory Reserve (VR)
VE_max_pred = 40 * age
VR = 1 - VE_peak / VE_max_pred
VR_pct = VR * 100
Interpretation:
VR < 15%→ ventilatory limitationVR > 50%→ ventilation is not a limiting factor
9. Room To Improve (RTI)
pct_VT1 = Power_VT1 / Power_VO2max * 100
pct_BP = Power_BP / Power_VO2max * 100
pct_VT2 = Power_VT2 / Power_VO2max * 100
RTI_VT1 = 65 - pct_VT1
RTI_BP = 75 - pct_BP
RTI_VT2 = 85 - pct_VT2
Interpretation:
RTI > 0→ remaining adaptation potentialRTI < 0→ threshold exceeds normative range- Used to identify limiting systems (cardiovascular, metabolic, ventilatory)
10. Final Summary Table (Word / Excel)
| Parameter | VT1 | BP | VT2 | VO₂max |
|---|---|---|---|---|
| Power | … | … | … | … |
| HR_corr | … | … | … | … |
| VE | … | … | … | … |
| BR | … | … | … | … |
| VT | … | … | … | … |
| VE_per_P | … | … | … | … |
| BreathingPower | … | … | … | … |
| %VO₂max | … | … | … | 100 |
| Drift (HR / VE / P / BR / BP) | … | … | … | … |
| Ventilatory Reserve | … | … | … | … |
11. Mandatory Final Conclusions
- VT1, BP, VT2, VO₂max values
- Physiological interpretation of each threshold
- Fractional utilization (%VO₂max)
- Room To Improve assessment
- Primary limiting factor
- Durability profile across stages
- Comparison with previous tests
- VE-centric training recommendations
Thank you. I am holiday at the moment. When I return after Xmas I will perform a full ramp test as per the Tymewear protocol ie 3min steps and 20W increments. If you could run it through you LLM I would be very grateful
Have you updated this based on the new Tymewear logic?


