Every summer, an area the size of New Jersey suffocates in the Gulf of Mexico.

This project models the seasonal collapse and recovery of the Gulf of Mexico’s hypoxic “dead zone” using 40 years of oceanographic data. It combines annual cruise measurements, river nutrient loading, and sea surface temperature to predict dead zone size and tell the story of how Midwest farming shows up in the ocean.
A hypoxic zone (dead zone) forms when dissolved oxygen drops below 2 mg/L, too low to support fish, shrimp, or bottom-dwelling life. The Gulf of Mexico dead zone forms every summer near the Mississippi River delta, driven by nitrogen and phosphorus runoff from agriculture across 40% of the continental U.S.
Since 1985, NOAA and LUMCON scientists have measured its size every July. The average is roughly 5,200 km². The record was set in 2017 at 22,720 km², larger than New Jersey.
| Dataset | Source | Variable |
|---|---|---|
| Annual dead zone size (1985-2024) | LUMCON / NOAA NCCOS | Area in km² |
| World Ocean Atlas 2023 | NOAA NCEI | Dissolved oxygen (µmol/kg) |
| Mississippi River nutrient flux | USGS | Spring nitrogen load |
| Sea surface temperature | NOAA OISST | Monthly SST (°C) |
deadzone/
├── data/ # Raw data files (not tracked by git)
│ └── woa23_all_o00_01.nc
├── notebooks/
│ ├── 01_explore.ipynb # Data loading and first look
│ ├── 02_features.ipynb # Feature engineering
│ ├── 03_model.ipynb # Regression and anomaly detection
│ └── 04_visualize.ipynb # Animated charts and dashboard
├── outputs/ # Saved plots and exports
└── README.md
xarray - multidimensional oceanographic arrays (NetCDF)
pandas - tabular feature table
scikit-learn - Random Forest regression, anomaly detection
matplotlib - static plots and animations
cartopy - geographic map projections
The dead zone is a direct consequence of industrial agriculture in the American Midwest. Nitrogen fertilizer applied to cornfields in Iowa and Illinois drains into the Mississippi, travels 1,500 miles south, and triggers algal blooms in the Gulf. When the algae die and decompose, they consume all available oxygen and suffocate everything on the seafloor.
This project traces the full causal chain: farm to river to ocean to dead zone.
# Clone the repo
git clone https://github.com/YOUR_USERNAME/deadzone.git
cd deadzone
# Create environment
conda create -n deadzones python=3.11
conda activate deadzones
conda install -c conda-forge xarray netcdf4 rasterio geopandas cartopy scipy numpy pandas matplotlib jupyter
pip install plotly dash streamlit scikit-learn xgboost seaborn
# Launch Jupyter
jupyter notebook
Open notebooks/01_explore.ipynb to start.
Raw NetCDF files are not tracked in this repo due to file size. Download them from:
Place downloaded files in the data/ directory.