Convenience functions for analysis of lactate-intensity curves.
Project description
lactate-thresholds
A Python package to analyze lactate values and corresponding thresholds. Typically useful in a context when used to determine workout zones.
Test out the UI here.
Installation
pip install lactate_thresholds
# OR
uv add lactate_thresholds
# OR
# install command for whatever package manager you use
Basic usage
You will need a dataframe that holds your measurement values. Let's start by importing an example dataframe.
import lactate_thresholds as lt
from lactate_thresholds.data import example_data_cycling
df = example_data_cycling()
df
step length intensity rel_power heart_rate lactate_4 lactate_8 cadence rpe
0 1 8 100 1.3 113 1.0 1.0 102 6
1 2 8 140 1.8 126 1.0 1.0 100 7
2 3 8 180 2.3 137 0.9 0.9 100 10
3 4 8 220 2.8 151 1.0 1.0 98 12
4 5 8 260 3.3 168 1.9 1.9 98 16
5 6 8 300 3.8 181 3.3 3.8 94 18
6 7 8 340 4.3 190 6.4 7.5 92 19
Note that the only cols required are step, length, intensity, heart_rate and lactate.
If your columns are not correctly named (in this example the lactate column is missing), you can specify the correct name in the following steps.
results = lt.determine(df, lactate_col='lactate_8')
The above determine function is a convenience function that runs (in the following order):
lactate_thresholds.clean_data(df)lactate_thresholds.interpolate(df_clean)lactate_thresholds.methods.determine_ltp(df_clean, df_interpolated)lactate_thresholds.methods.determine_mod_dmax(df_clean, df_interpolated)lactate_thresholds.methods.determine_loglog(df_clean, df_interpolated)lactate_thresholds.methods.determine_obla(df_interpolated, 2)lactate_thresholds.methods.determine_obla(df_interpolated, 4)lactate_thresholds.methods.determine_baseline(df_clean, df_interpolated, 0)lactate_thresholds.types.LactateThresholdResults.calc_lt1_lt2_estimates()
The returned object is an instance of LactateThresholdResults which looks more or less like:
class LactateThresholdResults(BaseModel):
clean_data: pd.DataFrame
interpolated_data: pd.DataFrame
ltp1: LactateTurningPoint | None = None
ltp2: LactateTurningPoint | None = None
mod_dmax: ModDMax | None = None
loglog: LogLog | None = None
baseline: BaseLinePlus | None = None
obla_2: OBLA | None = None
obla_4: OBLA | None = None
lt1_estimate: ThresholdEstimate | None = None
lt2_estimate: ThresholdEstimate | None = None
Plotting
Some basic plotting functionalities implemented in Altair are present, most notably:
lactate_thresholds.plot.lactate_intensity_plotlactate_thresholds.plot.heart_rate_intensity_plot
For example:
Zone calculation
Basic zone calculations (yet to be verified) are available at:
lactate_thresholds.zones.seiler_3_zoneslactate_thresholds.zones.seiler_5_zoneslactate_thresholds.zones.friel_7_zones_running
Streamlit app
There is a minimal streamlit app built in that you can use to interactively analyse your data.
The app is available through a script. Run it as follows (to be tested after first deploy to pypi):
pipx install lactate_thresholds
lt_app
# OR
uv tool install lactate_thresholds
lt_app
Note that a Dockerfile is also available that runs the streamlit app.
Acknowledgements
A big shout out to lactater that most definitely served as a strong inspiration for this package.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lactate_thresholds-0.3.8.tar.gz.
File metadata
- Download URL: lactate_thresholds-0.3.8.tar.gz
- Upload date:
- Size: 452.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.5.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a4354a51dc15eaed4b59fb02882a61c5b1948320d917362643d2ee39ff718d7
|
|
| MD5 |
131cb1a7e44f7b05278fea716240f7c6
|
|
| BLAKE2b-256 |
7dd279c96dec52a7a0e69b4fe6015186bfa7e06089be499ffc63aaf365829b04
|
File details
Details for the file lactate_thresholds-0.3.8-py3-none-any.whl.
File metadata
- Download URL: lactate_thresholds-0.3.8-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.5.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6a27e9ae0c1208d977ff894fb67dc35a409dd9778d48aa10754ad2094f811ca
|
|
| MD5 |
eef590d5ea092dac389bd27bb692dced
|
|
| BLAKE2b-256 |
419e13e0263abc2d6b8e5f331e43aa09c695e413a18aedeae69638e5879e3453
|