Climate Scientist, ETH Zürich
Home     |     Group     |     Research     |     Publications     |     Teaching     |     Code     |     ForceSMIP     |      Photography

All code described here (and more) is available on GitHub: This page is meant to provide additional context and references for key codes I have developed or helped develop.

Low-Frequency Component Analysis (LFCA)

Low-frequency component analysis (LFCA) is a method that transforms the leading empirical orthogonal functions (EOFs) of a data set in order to identify a pattern with the maximum ratio of low-frequency to total variance (based on application of a lowpass filter). The resulting low-frequency patterns (LFPs) and low-frequency components (LFCs) isolate low-frequency climate variability and are useful in diagnosing the corresponding mechanisms. This method is presented in Wills et al. (2018, GRL). Matlab and Python code for LFCA is available on GitHub: You can also find an example of how to apply LFCA to an ensemble of climate models on Github (Ensemble LFCA Example), as part of the repository for Wills et al. (2021, J. Climate).


Wills, R.C., T. Schneider, J.M. Wallace, D.S. Battisti, and D.L. Hartmann, 2018: Disentangling global warming, multidecadal variability, and El Niño in Pacific temperatures. Geophysical Research Letters, 45, 2487–2496. [PDF] [SI] [Official version] [Code] [Science Editor's Note] [PCC Research Highlight]

Wills, R.C.J., K.C. Armour, D.S. Battisi, C. Proistosescu, and L.A. Parsons, 2021: Slow modes of global temperature variability and their impact on climate sensitivity estimates. Journal of Climate, 34, 8717–8738. [PDF] [Official Version] [Corrigendum] [Presentation in ECS and Cloud Feedback symposium, April 2022]


Signal-to-Noise-Maximizing Pattern Filtering (S/NP Filtering)

Signal-to-noise-maximizing pattern filtering is a method to identify spatial patterns (linear combinations of empirical orthogonal functions (EOFs)) with the maximum ratio of signal to noise (with signal defined as variance that is agreed upon across an ensemble). The resulting forced patterns (S/NPs) isolate the patterns of forced change within climate model ensembles (where each simulation is subject to the same external forcing). This method is presented in Wills et al. (2020, J. Climate), and you can find a shorter broader overview of how this method compares to other methods of isolating the forced response in climate data in Wills et al. (2020, US CLIVAR Variations). Matlab and Python code for S/NP filtering is available on GitHub:


Wills, R.C.J., D.S. Battisti, K.C. Armour, T. Schneider, and C. Deser, 2020: Pattern recognition methods to separate forced responses from internal variability in climate model ensembles and observations. Journal of Climate, 33, 8693–8719. [PDF] [SI] [Official Version] [PCC Research Highlight]

Wills, R.C.J., S. Sippel, and E. A. Barnes, 2020: Separating forced and unforced components of climate change: The utility of pattern recognition methods in large ensembles and observations. US CLIVAR Variations, 18, 1–10. [PDF] [Official version] [Webinar Presentation, September 2020]


Idealized GCM

I have made extensive use of an idealized general circulation model (GCM) based on the dynamical core from NOAA's Geophysical Fluid Dynamics Laboratory (GFDL) Flexible Modeling System (FMS), in particular the moist atmospheric model version coupled to a slab ocean. I have also made (small) contributions to its continued development, specifically, developing an option to provide output on pressure levels instead of sigma levels. A detailed description of the idealized GCM is available here: The code is available on GitHub: