A complete ML research project that learns relationships between large-scale atmospheric conditions and weather patterns, producing:
- Seasonal/regional wind-pattern predictions
- Tropical cyclone formation, track, and intensity predictions
- An experimental aerospace flight-path optimizer
Note: This project uses synthetic data for development and testing. The synthetic data generator produces scientifically-realistic patterns based on real-world climate statistics, but is NOT actual observational data.
Windy/
├── config/default.yaml # Central configuration
├── data/ # Raw + processed data
├── notebooks/ # Jupyter notebooks
├── src/
│ ├── data/ # Data pipeline (synthetic, IBTrACS, ERA5 loaders)
│ ├── preprocessing/ # Cleaning, normalization, spatial/temporal
│ ├── features/ # Wind, cyclone, atmospheric features
│ ├── models/ # Baselines, linear, ensemble, neural nets
│ ├── evaluation/ # Metrics and evaluation
│ ├── visualization/ # Maps, tracks, time series
│ └── aerospace/ # Flight path optimization
├── experiments/ # Experiment scripts
├── tests/ # Unit tests
├── results/ # Generated figures and results
├── models/ # Saved model checkpoints
├── requirements.txt
├── setup.py
└── README.md
- Can ML identify atmospheric conditions associated with tropical cyclone formation?
- How accurately can ML predict regional wind patterns several weeks ahead?
- Can atmospheric reanalysis data improve cyclone track prediction?
- Can the model predict intensity changes from environmental conditions?
- How does ML compare against conventional baselines?
# Install dependencies
pip install -r requirements.txt
# Run all experiments
python experiments/run_all.py
# Run tests
pytest tests/ -v- Synthetic data generator producing ERA5-like atmospheric fields and tropical cyclone tracks
- Support for real IBTrACS and ERA5 data (opt-in)
- Efficient storage in Parquet/Zarr/NetCDF
- Global wind maps with vector fields
- SST anomaly composites (El Niño vs La Niña)
- Cyclone track density maps
- Seasonal wind variability
- ENSO index time series
- Cyclone frequency analysis
- Models: Persistence, Climatology, Ridge, Random Forest, XGBoost, LSTM
- Metrics: MAE, RMSE, R², vector wind error
- Evaluation: Temporal train/val/test split
- Models: Logistic Regression, Random Forest, XGBoost, MLP
- Features: SST, wind shear, humidity, pressure, vorticity, temperature, lat/lon, month
- Metrics: Precision, Recall, F1, ROC-AUC, PR-AUC, Brier score
- Handles class imbalance via class weighting
- Models: Persistence, Mean Motion, Linear Extrapolation, LSTM
- Predictions: Position at +6h, +12h, +24h, +48h, +72h
- Metrics: Great-circle error (km) by lead time
- Models: Persistence, Random Forest, LSTM
- Predictions: Maximum wind and minimum pressure at +12h, +24h, +48h, +72h
- Analysis: Errors during rapid intensification/weakening
- Deep ensemble (N independent models)
- Monte Carlo dropout
- Quantile regression
- Ensemble spaghetti plots and prediction intervals
- Simplified BADA-style aircraft performance model (B737/A320)
- Wind-field interpolation along flight paths
- Dynamic programming route optimizer
- Comparison: no wind vs. true wind vs. ML-predicted wind
- Fuel consumption, flight time, and route distance metrics
- Synthetic data as default: All experiments run without downloading terabytes of real data
- Temporal splitting: No future data leakage; train on past, test on future
- Baseline comparisons: Every ML model is compared against at least one baseline
- Uncertainty awareness: Predictions include confidence intervals, not point estimates
- Scientific integrity: No fabricated results; all metrics are computed from actual model outputs
- Synthetic data does not capture real-world atmospheric complexity
- No data assimilation or physics-based constraints
- Limited to North Atlantic-like patterns
- Flight optimizer is a research simulation, not an operational system
- No ensemble weather model coupling
Python, NumPy, pandas, xarray, PyTorch, scikit-learn, XGBoost, matplotlib, SciPy
Research project for educational purposes.