Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

I Built a 170-Year Caribbean Hurricane Observatory, Alone, in Python

Description and use

CaribScope is an open‑source Caribbean hurricane observatory that aggregates 170 years of historical tracks, live seismic data, climate trends, and a Random Forest model for Saffir‑Simpson category prediction, all presented in French.

Problem

French‑speaking Caribbean media lack a localized, historical hurricane dashboard, while NOAA provides English‑only data.

Outcome

CaribScope delivers a French‑language, island‑specific hurricane observatory with historical context, live seismic data, climate trends, and ML‑based category predictions, all deployed on a single VPS.

Workflow

  • 1. Parse NOAA HURDAT2 flat text into structured data using a state machine to handle headers and data rows.
  • 2. Load live USGS earthquake feed (magnitude ≥ 2.5) via API.
  • 3. Compute climate trends (temperature, SST) over time with pandas.
  • 4. Train a Random Forest classifier (scikit‑learn) on historical storm attributes to predict Saffir‑Simpson category.
  • 5. Build 16 Streamlit pages (trajectories, seismic map, climate trends, ML prediction, Hurricane of the Day).
  • 6. Containerize with Docker (python:3.12‑slim) and deploy behind Coolify on a VPS.
  • 7. Set up CI with GitHub Actions and dependency updates with Renovate.
  • 8. Publish live app at caribscope.fwicss.fr and host source on GitHub.

Evidence

CaribScope is an open-source climate risk observatory for the Caribbean: 170 years of Atlantic hurricane tracks (NOAA HURDAT2, 1851–2022), live USGS earthquake data, sea surface temperature trends, and a Random Forest model that predicts a storm's Saffir‑Simpson category.

Source

During hurricane season, the National Hurricane Center and NOAA publish everything you'd want: forecasts, historical tracks, advisories. All of it in English, built for a US audience. French-speaking Caribbean media, creators, and residents get none of that tailored to them — no French-language dashboard, no historical context localized to Guadeloupe, Martinique, or Haiti, nothing that says "here's what a storm like this one has historically done in your part of the Caribbean."

Source

Python 3.10+, Streamlit for the app itself, Plotly for every chart and map, pandas / numpy / pyarrow for the data layer, scikit-learn for the Random Forest, pytest for tests.

Source

The prediction model takes a storm's current attributes and outputs a predicted Saffir‑Simpson category, trained on the historical HURDAT2 record. I want to be specific about what that is and isn't: it's a classifier trained on a few thousand historical storm‑observations, not a physics-based forecast model, and it will never compete with NOAA's own operational forecasts.

Source

  • Record date: 2026-11-01T09:58:43.479Z