xCDAT

xCDAT: A Python Package for Simple and Robust Analysis of Climate Data - Published in JOSS (2024)

https://github.com/xcdat/xcdat

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    3 of 8 committers (37.5%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

cdat cf-conventions climate-analysis climate-data climate-data-analysis climate-research climate-science climate-sciences cmip cmip6 e3sm earth-system earth-system-data earth-system-science pcmdi python xarray xcdat
Last synced: 4 months ago · JSON representation ·

Repository

An extension of xarray for climate data analysis on structured grids.

Basic Info
Statistics
  • Stars: 135
  • Watchers: 10
  • Forks: 16
  • Open Issues: 52
  • Releases: 19
Topics
cdat cf-conventions climate-analysis climate-data climate-data-analysis climate-research climate-science climate-sciences cmip cmip6 e3sm earth-system earth-system-data earth-system-science pcmdi python xarray xcdat
Created over 4 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Zenodo Notice

README.rst

.. raw:: html

   

xCDAT logo

.. container:: .. raw:: html

Xarray Climate Data Analysis Tools +--------------------+------------------------------------------------------+ | | Badges | +====================+======================================================+ | Distribution | |conda-forge| |platforms| |conda-downloads| | +--------------------+------------------------------------------------------+ | Citation | |zenodo-doi| |joss| | +--------------------+------------------------------------------------------+ | DevOps | |CI/CD Build Workflow| |codecov| |docs| | +--------------------+------------------------------------------------------+ | Quality Assurance | |pre-commit| |ruff| |mypy| | +--------------------+------------------------------------------------------+ .. raw:: html

.. |conda-forge| image:: https://img.shields.io/conda/vn/conda-forge/xcdat.svg :target: https://anaconda.org/conda-forge/xcdat .. |platforms| image:: https://img.shields.io/conda/pn/conda-forge/xcdat.svg :target: https://anaconda.org/conda-forge/xcdat .. |conda-downloads| image:: https://anaconda.org/conda-forge/xcdat/badges/downloads.svg :target: https://anaconda.org/conda-forge/xcdat .. |zenodo-doi| image:: https://zenodo.org/badge/354103918.svg :target: https://zenodo.org/badge/latestdoi/354103918 .. |joss| image:: https://joss.theoj.org/papers/10.21105/joss.06426/status.svg :target: https://doi.org/10.21105/joss.06426 .. |CI/CD Build Workflow| image:: https://github.com/xCDAT/xcdat/actions/workflows/build_workflow.yml/badge.svg :target: https://github.com/xCDAT/xcdat/actions/workflows/build_workflow.yml .. |docs| image:: https://readthedocs.org/projects/xcdat/badge/?version=latest :target: https://xcdat.readthedocs.io/en/latest/?badge=latest .. |codecov| image:: https://codecov.io/gh/xCDAT/xcdat/branch/main/graph/badge.svg?token=UYF6BAURTH :target: https://codecov.io/gh/xCDAT/xcdat .. |pre-commit| image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white :target: https://github.com/pre-commit/pre-commit .. |ruff| image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json :target: https://github.com/astral-sh/ruff .. |mypy| image:: http://www.mypy-lang.org/static/mypy_badge.svg :target: http://mypy-lang.org/ xCDAT is an extension of `xarray`_ for climate data analysis on structured grids. It serves as a modern successor to the Community Data Analysis Tools (`CDAT`_) library. **Useful links**: `Documentation `__ | `Code Repository `__ | `Issues `__ | `Discussions `__ | `Releases `__ | `Mailing List `__ Project Motivation ------------------ The goal of xCDAT is to provide generalizable features and utilities for simple and robust analysis of climate data. xCDAT’s scope focuses on routine climate research analysis operations such as loading, averaging, and regridding data on structured grids (e.g., rectilinear, curvilinear). Some key xCDAT features are inspired by or ported from the core CDAT library, while others leverage powerful libraries in the xarray ecosystem (e.g., `xESMF`_, `xgcm`_) to deliver robust APIs. xCDAT has the ability to operate generally across model and observational datasets that follow the `CF Metadata Convention`_ by interpreting CF Metadata through the `cf_xarray`_ package. The xCDAT core team's mission is to provide a maintainable and extensible package that serves the needs of the climate community in the long-term. We are excited to be working on this project and hope to have you onboard! .. _xarray: https://github.com/pydata/xarray .. _CDAT: https://github.com/CDAT/cdat Getting Started --------------- The best resource for getting started is the `xCDAT documentation website`_. Our documentation provides general guidance for setting up xCDAT in an Anaconda environment on your local `computer`_ or on an `HPC/Jupyter`_ environment. We also include an `API Overview`_ and `Gallery`_ to highlight xCDAT functionality. .. _xCDAT documentation website: https://xcdat.readthedocs.io/en/stable/ .. _computer: https://xcdat.readthedocs.io/en/stable/getting-started.html .. _HPC/Jupyter: https://xcdat.readthedocs.io/en/stable/getting-started-hpc-jupyter.html .. _API Overview: https://xcdat.readthedocs.io/en/stable/api.html .. _Gallery: https://xcdat.readthedocs.io/en/stable/gallery.html Community --------- xCDAT is a community-driven open source project. We encourage discussion on topics such as version releases, feature suggestions, and architecture design on the `GitHub Discussions`_ page. Subscribe to our `mailing list`_ for news and announcements related to xCDAT, such as software version releases or future roadmap plans. Please note that xCDAT has a `Code of Conduct`_. By participating in the xCDAT community, you agree to abide by its rules. .. _GitHub Discussions: https://github.com/xCDAT/xcdat/discussions .. _Code of Conduct: CODE-OF-CONDUCT.rst .. _mailing list: https://groups.google.com/g/xcdat Contributing ------------ We welcome and appreciate contributions to xCDAT. Users and contributors can view and open issues on our `GitHub Issue Tracker`_. For more instructions on how to contribute, please checkout our `Contributing Guide`_. .. _GitHub Issue Tracker: https://github.com/xCDAT/xcdat/issues .. _Contributing Guide: https://xcdat.readthedocs.io/en/stable/contributing.html Features -------- * Extension of xarray's ``open_dataset()`` and ``open_mfdataset()`` with post-processing options * Generate bounds for axes supported by ``xcdat`` if they don't exist in the Dataset * Optional selection of single data variable to keep in the Dataset (bounds are also kept if they exist) * Optional decoding of time coordinates * In addition to CF time units, also decodes common non-CF time units ("months since ...", "years since ...") * Optional centering of time coordinates using time bounds * Optional conversion of longitudinal axis orientation between [0, 360) and [-180, 180) * Temporal averaging * Time series averages (single snapshot and grouped), climatologies, and departures * Weighted or unweighted * Optional seasonal configuration (e.g., DJF vs. JFD, custom seasons) * Geospatial weighted averaging * Supports rectilinear grid * Optional specification of regional domain * Horizontal structured regridding * Supports rectilinear and curvilinear grids * Extends the `xESMF`_ horizontal regridding API * Python implementation of `regrid2`_ for handling cartesian latitude longitude grids * Vertical structured regridding * Support rectilinear and curvilinear grids * Extends the `xgcm`_ vertical regridding API Things We Are Striving For -------------------------- * xCDAT supports CF compliant datasets, but will also strive to support datasets with common non-CF compliant metadata (e.g., time units in "months since ..." or "years since ...") * xCDAT leverages `cf_xarray`_ to interpret CF attributes on ``xarray`` objects * Refer to `CF Metadata Convention`_ for more information on CF attributes * Robust handling of dimensions and their coordinates and coordinate bounds * Coordinate variables are retrieved with ``cf_xarray`` using CF axis names or coordinate names found in xarray object attributes. Refer to `Metadata Interpretation`_ for more information. * Bounds are retrieved with ``cf_xarray`` using the ``"bounds"`` attr * Ability to operate on both longitudinal axis orientations, [0, 360) and [-180, 180) * Support for parallelism using `dask`_ where it is both possible and makes sense .. _Metadata Interpretation: https://xcdat.readthedocs.io/en/stable/faqs.html#metadata-interpretation .. _xESMF: https://xesmf.readthedocs.io/en/latest/ .. _regrid2: https://cdms.readthedocs.io/en/latest/regrid2.html .. _xgcm: https://xgcm.readthedocs.io/en/latest/index.html .. _dask: https://dask.org/ .. _cf_xarray: https://cf-xarray.readthedocs.io/en/latest/index.html .. _CF Metadata Convention: http://cfconventions.org/ Releases -------- xCDAT (released as ``xcdat``) follows a feedback-driven release cycle using continuous integration/continuous deployment. Software releases are performed based on the bandwidth of the development team, the needs of the community, and the priority of bug fixes or feature updates. After releases are performed on `GitHub Releases`_, the corresponding ``xcdat`` package version will be available to download through Anaconda `conda-forge`_ usually within a day. Subscribe to our `mailing list`_ to stay notified of new releases. .. _conda-forge: https://anaconda.org/conda-forge/xcdat .. _GitHub Releases: https://anaconda.org/conda-forge/xcdat Useful Resources ----------------- We highly encourage you to checkout the awesome resources below to learn more about Xarray and Xarray usage in climate science! - `Official Xarray Tutorials `_ - `Xarray GitHub Discussion Forum `_ - `Pangeo Forum `_ - `Project Pythia `_ Projects Using xCDAT -------------------- xCDAT is actively being integrated as a core component of the `Program for Climate Model Diagnosis and Intercomparison (PCMDI) Metrics Package`_ and the `Energy Exascale Earth System Model Diagnostics (E3SM) Package`_. xCDAT is also included in the `E3SM Unified Anaconda Environment`_ that is deployed on various U.S. Department of Energy supercomputers to run E3SM software tools. .. _Program for Climate Model Diagnosis and Intercomparison (PCMDI) Metrics Package: https://pcmdi.github.io/pcmdi_metrics/ .. _Energy Exascale Earth System Model Diagnostics (E3SM) Package: https://e3sm-project.github.io/e3sm_diags/_build/html/main/index.html .. _E3SM Unified Anaconda Environment: https://e3sm.org/resources/tools/other-tools/e3sm-unified-environment/ Acknowledgement --------------- xCDAT is jointly developed by scientists and developers from the Energy Exascale Earth System Model (`E3SM`_) Project and Program for Climate Model Diagnosis and Intercomparison (`PCMDI`_). The work is performed for the E3SM project, which is sponsored by Earth System Model Development (`ESMD`_) program, and the Simplifying ESM Analysis Through Standards (`SEATS`_) project, which is sponsored by the Regional and Global Model Analysis (`RGMA`_) program. ESMD and RGMA are programs for the Earth and Environmental Systems Sciences Division (`EESSD`_) in the Office of Biological and Environmental Research (`BER`_) within the `Department of Energy`_'s `Office of Science`_. .. _E3SM: https://e3sm.org/ .. _PCMDI: https://pcmdi.llnl.gov/ .. _SEATS: https://www.seatstandards.org/ .. _ESMD: https://climatemodeling.science.energy.gov/program/earth-system-model-development .. _RGMA: https://climatemodeling.science.energy.gov/program/regional-global-model-analysis .. _EESSD: https://science.osti.gov/ber/Research/eessd .. _BER: https://science.osti.gov/ber .. _Department of Energy: https://www.energy.gov/ .. _Office of Science: https://science.osti.gov/ .. raw:: html

E3SM logo PCMDI logo SEATS logo

Contributors ------------ Thank you to all of our contributors! .. image:: https://contrib.rocks/image?repo=xCDAT/xcdat :alt: xCDAT contributors :target: https://github.com/xCDAT/xcdat/graphs/contributors Endorsements ------------ xCDAT is proudly endorsed by the `Xarray ecosystem`_, the `Pangeo community`_, and the `World Climate Research Programme (WCRP)`_ as a recommended tool for geoscience and climate data analysis. .. _Xarray ecosystem: https://docs.xarray.dev/en/stable/user-guide/ecosystem.html#geosciences .. _Pangeo community: https://www.pangeo.io/#ecosystem .. _World Climate Research Programme (WCRP): https://wcrp-cmip.org/tools/ .. raw:: html

Xarray logo Pangeo logo WRCP logo

License ------- xCDAT is licensed under the terms of the Apache License (Version 2.0 with LLVM exception). All new contributions must be made under the Apache-2.0 with LLVM exception license. See `LICENSE`_ and `NOTICE`_ for details. .. _LICENSE: https://github.com/xCDAT/xcdat/blob/main/LICENSE .. _NOTICE: https://github.com/xCDAT/xcdat/blob/main/NOTICE SPDX-License-Identifier: Apache-2.0 ``LLNL-CODE-846944``

Owner

  • Name: xCDAT
  • Login: xCDAT
  • Kind: organization

Xarray Climate Data Analysis Tools

JOSS Publication

xCDAT: A Python Package for Simple and Robust Analysis of Climate Data
Published
June 29, 2024
Volume 9, Issue 98, Page 6426
Authors
Tom Vo ORCID
Lawrence Livermore National Lab, Livermore, USA
Stephen Po-Chedley ORCID
Lawrence Livermore National Lab, Livermore, USA
Jason Boutte ORCID
Lawrence Livermore National Lab, Livermore, USA
Jiwoo Lee ORCID
Lawrence Livermore National Lab, Livermore, USA
Chengzhu Zhang ORCID
Lawrence Livermore National Lab, Livermore, USA
Editor
Arfon Smith ORCID
Tags
python xarray climate science climate research climate data climate data analysis

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use xCDAT in your research, please cite it as below."
title: "xCDAT: Xarray Climate Data Analysis Tools"
abstract: "xCDAT is an open-source Python package that extends Xarray for climate data analysis on structured grids. It simplifies common analysis operations such as spatial and temporal averaging, climatology calculations, and regridding, promoting software sustainability and scientific reproducibility."
doi: 10.5281/zenodo.7216173
license: Apache-2.0
repository-code: "https://github.com/XCDAT/xcdat"
url: "https://xcdat.readthedocs.io/"
authors:
    - family-names: "Vo"
      given-names: "Tom"
      orcid: "https://orcid.org/0000-0002-2461-0191"
      affiliation: "Lawrence Livermore National Laboratory"
    - family-names: "Po-Chedley"
      given-names: "Stephen"
      orcid: "https://orcid.org/0000-0002-0390-238X"
      affiliation: "Lawrence Livermore National Laboratory"
    - family-names: "Boutte"
      given-names: "Jason"
      orcid: "https://orcid.org/0009-0009-3996-3772"
      affiliation: "Lawrence Livermore National Laboratory"
    - family-names: "Lee"
      given-names: "Jiwoo"
      orcid: "https://orcid.org/0000-0002-0016-7199"
      affiliation: "Lawrence Livermore National Laboratory"
    - family-names: "Zhang"
      given-names: "Chengzhu"
      orcid: "https://orcid.org/0000-0002-9632-0716"
      affiliation: "Lawrence Livermore National Laboratory"
preferred-citation:
    type: article
    title: "xCDAT: A Python Package for Simple and Robust Analysis of Climate Data"
    authors:
        - family-names: "Vo"
          given-names: "Tom"
          orcid: "https://orcid.org/0000-0002-2461-0191"
        - family-names: "Po-Chedley"
          given-names: "Stephen"
          orcid: "https://orcid.org/0000-0002-0390-238X"
        - family-names: "Boutte"
          given-names: "Jason"
          orcid: "https://orcid.org/0009-0009-3996-3772"
        - family-names: "Lee"
          given-names: "Jiwoo"
          orcid: "https://orcid.org/0000-0002-0016-7199"
        - family-names: "Zhang"
          given-names: "Chengzhu"
          orcid: "https://orcid.org/0000-0002-9632-0716"
    journal: "Journal of Open Source Software"
    volume: 9
    issue: 98
    pages: "6426"
    year: 2024
    month: 6
    doi: "10.21105/joss.06426"
    url: "https://joss.theoj.org/papers/10.21105/joss.06426"

GitHub Events

Total
  • Create event: 29
  • Release event: 4
  • Issues event: 53
  • Watch event: 20
  • Delete event: 25
  • Issue comment event: 244
  • Push event: 237
  • Pull request review event: 123
  • Pull request review comment event: 100
  • Pull request event: 64
  • Fork event: 4
Last Year
  • Create event: 29
  • Release event: 4
  • Issues event: 53
  • Watch event: 20
  • Delete event: 25
  • Issue comment event: 244
  • Push event: 237
  • Pull request review event: 123
  • Pull request review comment event: 100
  • Pull request event: 64
  • Fork event: 4

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 289
  • Total Committers: 8
  • Avg Commits per committer: 36.125
  • Development Distribution Score (DDS): 0.19
Past Year
  • Commits: 44
  • Committers: 6
  • Avg Commits per committer: 7.333
  • Development Distribution Score (DDS): 0.182
Top Committers
Name Email Commits
Tom Vo t****r@g****m 234
pochedls p****y@g****m 20
Jason Boutte j****5 18
Jiwoo Lee l****3 9
Paul J. Durack d****1@l****v 3
Jill Chengzhu Zhang z****0@l****v 3
will-s-hart w****t@m****k 1
Ana Ordonez 1****z 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 379
  • Total pull requests: 332
  • Average time to close issues: 2 months
  • Average time to close pull requests: 19 days
  • Total issue authors: 29
  • Total pull request authors: 10
  • Average comments per issue: 2.65
  • Average comments per pull request: 2.8
  • Merged pull requests: 302
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 41
  • Pull requests: 70
  • Average time to close issues: 25 days
  • Average time to close pull requests: 14 days
  • Issue authors: 12
  • Pull request authors: 6
  • Average comments per issue: 2.17
  • Average comments per pull request: 2.1
  • Merged pull requests: 53
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • tomvothecoder (233)
  • pochedls (45)
  • lee1043 (21)
  • jypeter (16)
  • durack1 (12)
  • chengzhuzhang (8)
  • bosup (4)
  • acordonez (3)
  • mgrover1 (3)
  • jasonb5 (3)
  • oliviermarti (3)
  • arfriedman (2)
  • DamienIrving (2)
  • mzelinka (2)
  • ShihengDuan (2)
Pull Request Authors
  • tomvothecoder (285)
  • pochedls (29)
  • jasonb5 (24)
  • lee1043 (14)
  • chengzhuzhang (6)
  • durack1 (3)
  • will-s-hart (2)
  • acordonez (2)
  • pyup-bot (1)
  • renovate[bot] (1)
Top Labels
Issue Labels
Type: Enhancement (77) Type: Documentation (76) Type: Bug (64) type: enhancement (41) type: bug (41) Priority: High (29) type: docs (29) Type: DevOps (28) Priority: Medium (15) good-first-issue (8) Priority: Low (6) breaking change (5) project: seats-fy25 (4) priority: now (4) type: devops (4) Type: Feature (4) work: obvious (3) project: seats-fy24 (3) project: seats-year5 (3) Priority: Critical (2) type: dev-day (2) Type: Planning (2) type: feature (1) question (1) Type: User Engagement (1) priority: soon (1) minor (1) work: complex (1)
Pull Request Labels
Type: Documentation (86) type: docs (64) Priority: High (52) Priority: Medium (48) Type: Bug (44) Type: Enhancement (43) Type: DevOps (37) type: enhancement (30) type: bug (24) type: devops (17) minor (15) Type: Release (13) breaking change (9) Priority: Low (9) Priority: Critical (8) patch (7) good-first-issue (6) project: seats-fy24 (3) project: seats-year5 (3) priority: now (2) priority: soon (2) Type: Feature (1)

Packages

  • Total packages: 3
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 2
    (may contain duplicates)
  • Total versions: 43
proxy.golang.org: github.com/xcdat/xcdat
  • Versions: 18
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago
proxy.golang.org: github.com/xCDAT/xcdat
  • Versions: 18
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago
conda-forge.org: xcdat

An extension of xarray with generalizable climate domain specific functions and utilities.

  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 2
Rankings
Dependent repos count: 20.3%
Stargazers count: 38.2%
Average: 41.6%
Dependent packages count: 51.6%
Forks count: 56.5%
Last synced: 4 months ago

Dependencies

.github/workflows/build_workflow.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • codecov/codecov-action v3 composite
  • conda-incubator/setup-miniconda v2 composite
  • fkirc/skip-duplicate-actions master composite
  • pre-commit/action v3.0.0 composite
.github/workflows/release-drafter.yml actions
  • release-drafter/release-drafter v5 composite
pyproject.toml pypi
setup.py pypi