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.3-py3-none-musllinux_1_2_aarch64.whl (311.2 kB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

tide_prediction-0.1.3-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.3-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.3-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tide_prediction-0.1.3-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e8ed899a0771e43c46f278e8ef2d4aed5e1e154b27638f27573f7214bba4c82b
MD5 835b0b9011311b81fe1ae77875b55658
BLAKE2b-256 806a0aff2fab7ef8fcf544973d40f6ac1b2993e12f98101f5bcb3b63d0f1d81a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tide_prediction-0.1.3-py3-none-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e6f381da13d238a314434bf37f8a3e932b6701e56aaec02b0a24a3903d889c7d
MD5 c4832405fdf9a3783174a214178c0254
BLAKE2b-256 7fc0c5f2ef841d9ff563c70e37cf27a6e086b2f9a019f26c7ea6bb345db0210b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tide_prediction-0.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 11799dbb73e5aa33e79a79c35ae883835780c2badcb618b15e645e8645c4145b
MD5 6ae4434a04b518670bb819fe4f1ae421
BLAKE2b-256 65700a417fa2074ab7d43729e6e373892edbec64987bbb24a0c97187bbbb2e8f

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