Project Story: ClimateWiz
About
Interactive globe + timeline for country-level temperature data. Shows absolute temperatures and anomalies vs. the 1991–2020 baseline.
Why
Climate data is abundant yet fragmented. ClimateWiz condenses it into fast, comparable visuals for evidence-based exploration.
Build
- Stack: Python (Pandas/Polars), FastAPI, Streamlit, globe.gl/WebGL, Plotly
- Pipeline: raw CSV → schema checks → country harmonization → yearly aggregation → basic tile caching
- Ops: Reproducible Conda env, lint/tests in CI; versioned
environment.yml
Methods
Anomaly
$$ A_{c,t}=T_{c,t}-\overline{T}_{c,1991{:}2020} $$
Trend & Forecasting (supervised OLS)
$$ \hat{T}_{c,t}=\hat{\alpha}_c+\hat{\beta}_c\,t \quad\Rightarrow\quad $$
$$ \hat{T}_{c,t+h}=\hat{\alpha}_c+\hat{\beta}_c\,(t+h),\; h>0 $$
We fit a supervised linear regression per country and extrapolate to forecast future annual temperatures. When needed, monthly estimates are aggregated to yearly means.
Machine Learning Aspect
- Supervised forecasting: annual temperature as target, time as feature; train on history, predict (t{+}h).
- Reproducibility: fixed data pipeline, deterministic splits, versioned environment.
- Extensibility: same pipeline can host ridge/lasso or robust estimators without UI changes.
Lessons
- Reproducible environments (pinned Python/libs; resolving
_distutils_hack) prevented dev/CI drift. - Defaults (baseline, units, palette) shape interpretation; documenting them reduces confusion.
- Small UX fixes (clickable help, legend/line linkage, reliable PNG/CSV export) improved usability.
- Data hygiene (country codes, historical splits/merges) dominated chart fidelity.
- Pre-aggregation and tile caching delivered most performance gains.
Challenges
- Inconsistent country sets and sparse years required careful harmonization and gap handling.
- UI edge cases: unresponsive buttons, trend/guide coupling, equal-month artifacts after adjustments.
- Export reliability (PNG “screenshot” vs. true render capture) across browsers/GPUs.
- Balancing interactivity with WebGL limits on lower-end hardware.
- Aligning dependencies across local setups, CI, and IDE interpreters (Conda ↔ PyCharm).
Log in or sign up for Devpost to join the conversation.