Skip to main content

Tide prediction library

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.

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

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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

tide_prediction-0.1.2-py3-none-musllinux_1_2_aarch64.whl (311.2 kB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

tide_prediction-0.1.2-py3-none-manylinux_2_34_x86_64.whl (360.7 kB view details)

Uploaded Python 3manylinux: glibc 2.34+ x86-64

tide_prediction-0.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (312.4 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

File details

Details for the file tide_prediction-0.1.2-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tide_prediction-0.1.2-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c8253e3a05c5b9e9b3fb7ec61abbd65594d583ed48e293465ee767b8b6cefa04
MD5 a4b0aeca478679bd2647bbe666e3013c
BLAKE2b-256 8913ac9d994036c3d786876181234e98f0c1437ae4331d16e95c8d804fdcf71d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tide_prediction-0.1.2-py3-none-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9a64dc409fcabaa3f626478f49351d5e3425f7be5f89f735e26ee88021067b95
MD5 fb28e865db0a209b400758573593d70c
BLAKE2b-256 4cd490efe3ea24125b67f3afa614f040e7500f30c7f380fd1622a709f3bab085

See more details on using hashes here.

File details

Details for the file tide_prediction-0.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tide_prediction-0.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 898df28f77e36a00986d14c0310f523382348ef2cecd4632c20330a901da0709
MD5 52a505987af0654fbe5ce779e95df8c9
BLAKE2b-256 9d8b34c8e0f44dd58fd95132832fe1d29379851c04b4e21b7ba8c7640285f5b6

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