Comprehensive EOF analysis in Python with xarray: A versatile, multidimensional, and scalable tool for advanced climate data analysis
Project description
Versions |
|
Build & Testing |
|
Code Quality |
|
Documentation |
|
Citation & Licensing |
|
User Engagement |
Overview
xeofs is a dedicated Python package for dimensionality reduction in the realm of climate science, offering methods like PCA, known as EOF analysis within the field, and related variants. Seamlessly integrated with xarray and Dask, it’s tailored for easy handling and scalable computation on large, multi-dimensional datasets, making advanced climate data analysis both accessible and efficient.
Multi-Dimensional: Designed for xarray objects, it applies dimensionality reduction to multi-dimensional data while maintaining data labels.
Dask-Integrated: Supports large datasets via Dask xarray objects
Extensive Methods: Offers various dimensionality reduction techniques
Adaptable Output: Provides output corresponding to the type of input, whether single or list of xr.DataArray or xr.Dataset
Missing Values: Handles NaN values within the data
Bootstrapping: Comes with a user-friendly interface for model evaluation using bootstrapping
Efficient: Ensures computational efficiency, particularly with large datasets through randomized SVD
Modular: Allows users to implement and incorporate new dimensionality reduction methods
Installation
To install the package, use either of the following commands:
conda install -c conda-forge xeofs
or
pip install xeofs
Quickstart
In order to get started with xeofs, follow these simple steps:
Import the package
import xeofs as xe
EOF analysis
model = xe.models.EOF(n_modes=10)
model.fit(data, dim="time")
comps = model.components() # EOFs (spatial patterns)
scores = model.scores() # PCs (temporal patterns)
Varimax-rotated EOF analysis
rotator = xe.models.EOFRotator(n_modes=10)
rotator.fit(model)
rot_comps = rotator.components() # Rotated EOFs (spatial patterns)
rot_scores = rotator.scores() # Rotated PCs (temporal patterns)
MCA
model = xe.models.MCA(n_modes=10)
model.fit(data1, data2, dim="time")
comps1, comps2 = model.components() # Singular vectors (spatial patterns)
scores1, scores2 = model.scores() # Expansion coefficients (temporal patterns)
Varimax-rotated MCA
rotator = xe.models.MCARotator(n_modes=10)
rotator.fit(model)
rot_comps = rotator.components() # Rotated singular vectors (spatial patterns)
rot_scores = rotator.scores() # Rotated expansion coefficients (temporal patterns)
To further explore the capabilities of xeofs, check out the available documentation and examples. For a full list of currently available methods, see the Reference API.
Documentation
For a more comprehensive overview and usage examples, visit the documentation.
Contributing
Contributions are highly welcomed and appreciated. If you’re interested in improving xeofs or fixing issues, please read our Contributing Guide.
License
This project is licensed under the terms of the MIT license.
Contact
For questions or support, please open a Github issue.
Credits
Randomized PCA: scikit-learn
EOF analysis: Python package eofs by Andrew Dawson
MCA: Python package xMCA by Yefee
CCA: Python package CCA-Zoo by James Chapman
ROCK-PCA: Matlab implementation by Diego Bueso
How to cite?
When using xeofs, kindly remember to cite the original references of the methods employed in your work. Additionally, if xeofs is proving useful in your research, we’d appreciate if you could acknowledge its use with the following citation:
@software{rieger_xeofs_2023,
title = {xeofs: Comprehensive EOF analysis in Python with xarray: A versatile, multidimensional, and scalable tool for advanced climate data analysis},
url = {https://github.com/nicrie/xeofs}
version = {x.y.z},
author = {Rieger, N. and Levang, S. J.},
date = {2023},
doi = {10.5281/zenodo.6323011}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.