Skip to main content

Tide prediction library

Reason this release was yanked:

missing tide.py

Project description

tide-prediction

Tidal prediction library for French Atlantic and English Channel ports. Computes high/low water times, heights, tidal coefficients, and full height curves — all from a fast Rust core exposed via Python bindings.

Disclaimer

This library is provided AS IS, without warranty of any kind. It is not intended for navigation, maritime safety, or any use where inaccurate predictions could cause harm to persons, property, or the environment. Predictions are produced from a simplified 13-constituent harmonic model and do not account for meteorological effects (storm surge, wind, barometric pressure) or exceptional astronomical events. Typical residual RMSE is 0.10–0.25 m; local error may be larger.

For official tidal predictions in France, refer to the SHOM. The author disclaims all liability arising from the use of this software. By using this library you do so at your own risk and sole responsibility.

Installation

pip install tide-prediction

The package is imported as import tide (not tide_prediction).

Quick start

import tide

# Predict a full day
pred = tide.predict_day("FR-BREST", "2024-06-15")

from datetime import datetime, timezone

for e in pred.extremes:
    kind = "HW" if e.is_high_water else "LW"
    coef = f"  coef={e.coefficient}" if e.coefficient else ""
    dt = datetime.fromtimestamp(e.time, tz=timezone.utc).strftime("%H:%M")
    print(f"{kind}  {dt}  {e.height:.2f} m{coef}")

# HW  00:26  4.83 m  coef=39
# LW  06:41  2.40 m
# HW  13:07  4.80 m  coef=42
# LW  19:07  2.61 m

API

tide.predict_day(port_id, date) → DayPrediction

Returns high/low water extremes and a 10-minute height curve for a single day.

  • port_id — port identifier (e.g. "FR-BREST")
  • date — date string "YYYY-MM-DD" (UTC)

tide.predict_range(port_id, from_date, to_date) → list[DayPrediction]

Same as predict_day over a date range (inclusive).

tide.height_at(port_id, timestamp) → float

Instantaneous water height in metres at a given Unix UTC timestamp.

from datetime import datetime, timezone

ts = int(datetime(2024, 6, 15, 12, 0, tzinfo=timezone.utc).timestamp())
h = tide.height_at("FR-BREST", ts)
print(f"{h:.3f} m")  # 4.607 m

Port discovery

# List all available ports
ports = tide.list_ports()

# Search by name
results = tide.search_ports("saint")

# Get a specific port
port = tide.get_port("FR-BREST")
print(port.name, port.latitude, port.longitude)

Data model

DayPrediction
├── port_id        str
├── date           str          "YYYY-MM-DD"
├── extremes       list[TidalExtreme]
│   ├── time           int      Unix timestamp UTC
│   ├── height         float    metres
│   ├── is_high_water  bool
│   └── coefficient    int|None 20–120, Atlantic/Channel HW only
└── heights        list[HeightPoint]
    ├── timestamp   int          every 10 minutes
    └── height      float        metres

Available ports

ID Port Calibration
FR-BREST Brest (coefficient reference) REFMAR 5 yr
FR-PORT-TUDY Port Tudy (Île de Groix) REFMAR 5 yr
FR-CONCARNEAU Concarneau REFMAR 5 yr
FR-SAINT-NAZAIRE Saint-Nazaire REFMAR 5 yr
FR-LA-ROCHELLE La Rochelle — La Pallice REFMAR 5 yr
FR-ROSCOFF Roscoff REFMAR 5 yr
FR-SAINT-MALO Saint-Malo REFMAR 5 yr
FR-CHERBOURG Cherbourg REFMAR 5 yr
FR-LE-HAVRE Le Havre REFMAR 5 yr
FR-DIEPPE Dieppe REFMAR 5 yr
FR-DUNKERQUE Dunkerque REFMAR 5 yr
FR-BAYONNE Boucau-Bayonne REFMAR 5 yr
FR-ARCACHON Arcachon REFMAR 5 yr
FR-PORT-NAVALO Port-Navalo (Golfe du Morbihan) SHOM SPM 3 yr
FR-ARRADON Arradon (Golfe du Morbihan) SHOM SPM 3 yr
FR-AURAY Auray — Saint-Goustan SHOM SPM 3 yr
FR-ETEL Entrée rivière d'Étel SHOM SPM 3 yr

Tidal coefficients

Coefficients (20–120) are computed for Atlantic and English Channel high waters relative to the Brest reference tidal range, following the French SHOM convention. They are only available for high water (is_high_water = True) at ports on the Atlantic/Channel coast.

Requirements

  • Python ≥ 3.8
  • Currently tested on Linux x86-64 (manylinux). macOS and Windows wheels may be added in future releases.

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

tide_prediction-1.2.1.tar.gz (48.3 kB view details)

Uploaded Source

Built Distribution

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

tide_prediction-1.2.1-py3-none-manylinux_2_34_x86_64.whl (340.5 kB view details)

Uploaded Python 3manylinux: glibc 2.34+ x86-64

File details

Details for the file tide_prediction-1.2.1.tar.gz.

File metadata

  • Download URL: tide_prediction-1.2.1.tar.gz
  • Upload date:
  • Size: 48.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for tide_prediction-1.2.1.tar.gz
Algorithm Hash digest
SHA256 a662374e48dc4e19b197eba684a2db9b37fa69e07aff05effd865d1074333b2c
MD5 3238a143ee42162c7c96e5b9729064ab
BLAKE2b-256 598b928fb6ae1b851fe550db8574140f708f5df9289ea17b1b2aa95a36ce811e

See more details on using hashes here.

File details

Details for the file tide_prediction-1.2.1-py3-none-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for tide_prediction-1.2.1-py3-none-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ecd6143abfa1ec8bdce8ef0adfcb7509a217851397aa04f3ca13ce47eec04149
MD5 ec88fca4f0ae868b1580d99a593b4a57
BLAKE2b-256 7dea843181ef058b9e63771cdf643ae76b1a21332a97a9025cb64f54d9244e4a

See more details on using hashes here.

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