Reproduction of the landmark 1981 study by John D. Horel and John M. Wallace on "Planetary-Scale Atmospheric Phenomena Associated with the Southern Oscillation" using modern ERA-5 reanalysis data.
This project provides a complete, reproducible workflow for analyzing the Southern Oscillation (now known as ENSO - El NiΓ±o Southern Oscillation) and its global teleconnections using state-of-the-art climate reanalysis data.
Original Paper: Horel, J. D., and J. M. Wallace, 1981: Planetary-Scale Atmospheric Phenomena Associated with the Southern Oscillation. Monthly Weather Review, 109, 813-829.
- π Comprehensive Analysis: Reproduces all major figures from the original 1981 paper
- π Modern Data: Uses ERA-5 reanalysis (1950-present) from Copernicus Climate Data Store
- π§ MCP Server: Custom server for efficient ERA-5 data access and caching
- π Interactive Notebook: Jupyter notebook with detailed explanations and visualizations
- π¨ Publication-Quality Figures: All figures saved in high-resolution format
- π§© Extensible: Easy to modify time periods, regions, and analysis methods
- Python 3.9 or higher
- Copernicus Climate Data Store Account
- Register at https://cds.climate.copernicus.eu
- Get your API key from https://cds.climate.copernicus.eu/user
# Clone the repository
git clone https://github.com/yourusername/southern-oscillation-demo.git
cd southern-oscillation-demo
# Create conda environment
conda env create -f environment.yml
conda activate southern-oscillation
# Configure CDS API key
echo "url: https://cds.climate.copernicus.eu/api/v2" > ~/.cdsapirc
echo "key: YOUR_UID:YOUR_API_KEY" >> ~/.cdsapirc# Clone the repository
git clone https://github.com/yourusername/southern-oscillation-demo.git
cd southern-oscillation-demo
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Configure CDS API key (same as above)# Start Jupyter notebook
jupyter notebook notebooks/southern_oscillation_reproduction.ipynbOr run from command line:
python -m notebooks.southern_oscillation_reproductionsouthern-oscillation-demo/
βββ CLAUDE.MD # Detailed project documentation
βββ README.md # This file
βββ LICENSE # MIT License
βββ environment.yml # Conda environment
βββ requirements.txt # Python dependencies
βββ .gitignore # Git ignore rules
β
βββ mcp_server/ # MCP server for ERA-5 data
β βββ __init__.py
β βββ era5_server.py # Main server implementation
β βββ config.json # Server configuration
β βββ README.md # Server documentation
β
βββ notebooks/ # Jupyter notebooks
β βββ southern_oscillation_reproduction.ipynb
β
βββ skills/ # Custom analysis skills
β βββ climate_analysis/
β β βββ SKILL.md # Climate analysis methods
β βββ teleconnection_viz/
β βββ SKILL.md # Visualization methods
β
βββ data/ # Data directory (gitignored)
β βββ era5/ # Downloaded ERA-5 data
β βββ station/ # Station data
β βββ processed/ # Processed datasets
β
βββ figures/ # Generated figures
β βββ reproductions/ # Reproduced figures
β
βββ tests/ # Unit tests
βββ test_analysis.py
- EOF Analysis: Empirical Orthogonal Function analysis of Pacific SST
- Seasonal Averaging: DJF (December-January-February) means computation
- Normalization: Standardized anomalies for comparison
- Correlation Analysis: Spatial correlation maps
- Composite Analysis: Warm vs cold episode composites
- Teleconnection Indices: PNA, WP, SOI computation
- Figure 1: EOF of Pacific SST and time series
- Figure 2: Normalized SST Index
- Figure 3: Rainfall at equatorial Pacific stations
- Figure 4: Southern Oscillation Index
- Figure 5: Station location map
- Figure 6: 200 mb height time series at stations
- Figure 7: Tropical 200 mb height index
- Figure 8: Composite 200 mb height maps
- Figure 9: Correlation maps (700 mb height)
- Figure 10: Teleconnection pattern indices
The Southern Oscillation is a large-scale atmospheric pressure pattern in the tropical Pacific that is coupled with El NiΓ±o/La NiΓ±a ocean temperature variations. Key features:
-
Warm Episodes (El NiΓ±o):
- Above-normal SST in equatorial Pacific
- Weakening of trade winds
- Enhanced rainfall in central Pacific
- Teleconnections to mid-latitudes
-
Cold Episodes (La NiΓ±a):
- Below-normal SST in equatorial Pacific
- Strengthening of trade winds
- Suppressed rainfall in central Pacific
- Opposite teleconnection patterns
The original 1981 paper was groundbreaking because it:
- Documented global-scale atmospheric response to tropical SST
- Established teleconnection patterns for seasonal forecasting
- Provided physical basis for ENSO prediction
- Connected tropical and extratropical variability
- SST EOF1: Explains ~23% of variance in Pacific SST
- SOI Correlation: r β 0.80 with SST Index
- Warm Episodes: 1951-53, 1957-59, 1963-64, 1965-66, 1969-70, 1972-73, 1977-78
- 200 mb Height: Above-normal throughout tropics during warm episodes
- Teleconnections: Strong PNA and WP patterns during El NiΓ±o
# In notebook configuration cell
START_YEAR = 1979
END_YEAR = 2023# Download other ERA-5 variables
await era5_server.download_monthly_means(
variable='u_component_of_wind',
pressure_level=200,
years=YEARS
)# Focus on Indian Ocean
DOMAIN = [30, 40, -30, 120] # [north, west, south, east]# Analyze JJA (June-July-August) instead
SEASON_MONTHS = [6, 7, 8]pytest tests/Detailed documentation is available in:
CLAUDE.MD- Complete project overview and methodologymcp_server/README.md- MCP server usageskills/climate_analysis/SKILL.md- Analysis methodsskills/teleconnection_viz/SKILL.md- Visualization techniques
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
Areas for contribution:
- Additional validation against original results
- Optimization of data processing
- Enhanced visualizations
- Documentation improvements
- Bug fixes
If you use this code in your research, please cite:
@article{horel1981southern,
title={Planetary-Scale Atmospheric Phenomena Associated with the Southern Oscillation},
author={Horel, John D and Wallace, John M},
journal={Monthly Weather Review},
volume={109},
number={4},
pages={813--829},
year={1981}
}This project is licensed under the MIT License - see the LICENSE file for details.
- Original Authors: John D. Horel and John M. Wallace for their pioneering work
- Copernicus Climate Data Store: For providing ERA-5 reanalysis data
- xarray Community: For excellent climate data tools
- Cartopy Team: For geospatial visualization capabilities
For questions or issues:
- Open an issue on GitHub
- Email: your.email@example.com
Note: First data download may take significant time. Subsequent runs will use cached data for much faster execution.