Skip to main content

Cycling physics engine: power/speed solver, race-time prediction, and Garmin Power Guide FIT generation

Project description

bike-power-model

A cycling physics engine for power, speed, and race-time prediction, plus a generator for Garmin Power Guide FIT files (messages 352/353).

Pre-release. This alpha reserves the package name and wires up the build and publish pipeline. The physics solver, FIT tooling, and the full bpm command set land in a later release. Install it now if you want to track progress; the API is not stable yet.

What it does

Give it a route (GPX or FIT), a rider (weight, FTP, CdA), and conditions (wind, temperature, surface), and it predicts the power you would hold and the speed and time that follow from it. The direction matters: it solves logic to power to physics to speed, never the other way around. It does not read a speed profile off a file and back out the power.

The same engine writes Garmin Power Guide FIT files, so the plan you compute can be sideloaded onto a head unit and followed on the road.

It is calibrated and checked against real race telemetry, per rider and per terrain type (climbs, flats, descents, cobbles, gravel), not against a single averaged error number that hides where the model is wrong.

Install

pip install --pre bike-power-model

The --pre flag is required while the package is in alpha.

bpm --version
bpm status

The planning, decoding, and FIT-generation commands arrive with the engine. bpm status tells you what the current install can do.

Requirements

Python 3.11, 3.12, or 3.13. No system libraries for the core install.

Documentation

Reference docs for the physics, the FIT format, and the validation method ship with the engine.

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bike_power_model-0.0.1a0.tar.gz (31.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bike_power_model-0.0.1a0-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file bike_power_model-0.0.1a0.tar.gz.

File metadata

  • Download URL: bike_power_model-0.0.1a0.tar.gz
  • Upload date:
  • Size: 31.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bike_power_model-0.0.1a0.tar.gz
Algorithm Hash digest
SHA256 02e04a0bbea8634db86f80756bc188bf6b710354fd509bce32e998a1a3845bd9
MD5 4aa7ca842a3b4204318a355e4fd96876
BLAKE2b-256 5756dcdb822ca56bb646d665208d75c0e48548df39f19fb4b923b0eddd746748

See more details on using hashes here.

Provenance

The following attestation bundles were made for bike_power_model-0.0.1a0.tar.gz:

Publisher: release.yml on sam-dumont/bike-power-model-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bike_power_model-0.0.1a0-py3-none-any.whl.

File metadata

File hashes

Hashes for bike_power_model-0.0.1a0-py3-none-any.whl
Algorithm Hash digest
SHA256 01eb43892fb12e57e78bbdc22917039b20d26e0fd68a4ca806dc9f7cc9495ec7
MD5 9cb48aa056d900f2ef915957c36ba3d8
BLAKE2b-256 8c04a6971a032ab3503081c18366e8c20f14c80abe04ffc19c48f640aa80d165

See more details on using hashes here.

Provenance

The following attestation bundles were made for bike_power_model-0.0.1a0-py3-none-any.whl:

Publisher: release.yml on sam-dumont/bike-power-model-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page