{"id":13948914,"url":"https://github.com/xCDAT/xcdat","last_synced_at":"2025-07-20T11:30:24.119Z","repository":{"id":37540657,"uuid":"354103918","full_name":"xCDAT/xcdat","owner":"xCDAT","description":"An extension of xarray for climate data analysis on structured grids.","archived":false,"fork":false,"pushed_at":"2025-07-08T18:59:04.000Z","size":13895,"stargazers_count":132,"open_issues_count":52,"forks_count":16,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-07-11T04:38:02.348Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://xcdat.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xCDAT.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.rst","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2021-04-02T18:38:33.000Z","updated_at":"2025-07-08T18:56:28.000Z","dependencies_parsed_at":"2023-09-21T19:31:55.307Z","dependency_job_id":"2a2360af-814f-4770-9bb1-9d4bf344a68f","html_url":"https://github.com/xCDAT/xcdat","commit_stats":{"total_commits":258,"total_committers":7,"mean_commits":"36.857142857142854","dds":"0.18604651162790697","last_synced_commit":"b1a72fcffd6dd01e9e8bc1e9046ef144e461e563"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/xCDAT/xcdat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xCDAT%2Fxcdat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xCDAT%2Fxcdat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xCDAT%2Fxcdat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xCDAT%2Fxcdat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xCDAT","download_url":"https://codeload.github.com/xCDAT/xcdat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xCDAT%2Fxcdat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264922866,"owners_count":23683701,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"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"],"created_at":"2024-08-08T05:01:34.203Z","updated_at":"2025-07-20T11:30:24.112Z","avatar_url":"https://github.com/xCDAT.png","language":"Python","readme":".. raw:: html\n\n   \u003cp align=\"center\"\u003e\n      \u003cimg src=\"./docs/_static/xcdat-logo.png\" alt=\"xCDAT logo\" style=\"width:450px;\"/\u003e\n   \u003c/p\u003e\n\n.. container::\n\n   .. raw:: html\n\n      \u003ch3 align=\"center\"\u003e\n\n   Xarray Climate Data Analysis Tools\n\n   +--------------------+------------------------------------------------------+\n   |                    | Badges                                               |\n   +====================+======================================================+\n   | Distribution       | |conda-forge| |platforms| |conda-downloads|          |\n   +--------------------+------------------------------------------------------+\n   | Citation           | |zenodo-doi| |joss|                                  |\n   +--------------------+------------------------------------------------------+\n   | DevOps             | |CI/CD Build Workflow| |codecov| |docs|              |\n   +--------------------+------------------------------------------------------+\n   | Quality Assurance  | |pre-commit| |ruff| |mypy|                           |\n   +--------------------+------------------------------------------------------+\n\n   .. raw:: html\n\n      \u003c/h3\u003e\n\n.. |conda-forge| image:: https://img.shields.io/conda/vn/conda-forge/xcdat.svg\n   :target: https://anaconda.org/conda-forge/xcdat\n.. |platforms| image:: https://img.shields.io/conda/pn/conda-forge/xcdat.svg\n   :target: https://anaconda.org/conda-forge/xcdat\n.. |conda-downloads| image:: https://anaconda.org/conda-forge/xcdat/badges/downloads.svg\n   :target: https://anaconda.org/conda-forge/xcdat\n.. |zenodo-doi| image:: https://zenodo.org/badge/354103918.svg\n   :target: https://zenodo.org/badge/latestdoi/354103918\n.. |joss| image:: https://joss.theoj.org/papers/10.21105/joss.06426/status.svg\n   :target: https://doi.org/10.21105/joss.06426\n.. |CI/CD Build Workflow| image:: https://github.com/xCDAT/xcdat/actions/workflows/build_workflow.yml/badge.svg\n   :target: https://github.com/xCDAT/xcdat/actions/workflows/build_workflow.yml\n.. |docs| image:: https://readthedocs.org/projects/xcdat/badge/?version=latest\n   :target: https://xcdat.readthedocs.io/en/latest/?badge=latest\n.. |codecov| image:: https://codecov.io/gh/xCDAT/xcdat/branch/main/graph/badge.svg?token=UYF6BAURTH\n   :target: https://codecov.io/gh/xCDAT/xcdat\n.. |pre-commit| image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white\n   :target: https://github.com/pre-commit/pre-commit\n.. |ruff| image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\n   :target: https://github.com/astral-sh/ruff\n.. |mypy| image:: http://www.mypy-lang.org/static/mypy_badge.svg\n   :target: http://mypy-lang.org/\n\nxCDAT is an extension of `xarray`_ for climate data analysis on structured grids. It\nserves as a modern successor to the Community Data Analysis Tools (`CDAT`_) library.\n\n**Useful links**:\n`Documentation \u003chttps://xcdat.readthedocs.io\u003e`__ |\n`Code Repository \u003chttps://github.com/xCDAT/xcdat\u003e`__ |\n`Issues \u003chttps://github.com/xCDAT/xcdat/issues\u003e`__ |\n`Discussions \u003chttps://github.com/xCDAT/xcdat/discussions\u003e`__ |\n`Releases \u003chttps://github.com/xCDAT/xcdat/releases\u003e`__ |\n`Mailing List \u003chttps://groups.google.com/g/xcdat\u003e`__\n\nProject Motivation\n------------------\n\nThe goal of xCDAT is to provide generalizable features and utilities for simple and\nrobust analysis of climate data. xCDAT’s scope focuses on routine climate research\nanalysis operations such as loading, averaging, and regridding data on structured grids\n(e.g., rectilinear, curvilinear). Some key xCDAT features are inspired by or ported from\nthe core CDAT library, while others leverage powerful libraries in the xarray ecosystem\n(e.g., `xESMF`_, `xgcm`_) to deliver robust APIs. xCDAT has the ability to operate\ngenerally across model and observational datasets that follow the `CF Metadata Convention`_\nby interpreting CF Metadata through the `cf_xarray`_ package.\n\nThe xCDAT core team's mission is to provide a maintainable and extensible package\nthat serves the needs of the climate community in the long-term. We are excited\nto be working on this project and hope to have you onboard!\n\n.. _xarray: https://github.com/pydata/xarray\n.. _CDAT: https://github.com/CDAT/cdat\n\nGetting Started\n---------------\n\nThe best resource for getting started is the `xCDAT documentation website`_.\nOur documentation provides general guidance for setting up xCDAT in an Anaconda\nenvironment on your local `computer`_ or on an `HPC/Jupyter`_ environment. We also\ninclude an `API Overview`_ and `Gallery`_ to highlight xCDAT functionality.\n\n.. _xCDAT documentation website: https://xcdat.readthedocs.io/en/stable/\n.. _computer: https://xcdat.readthedocs.io/en/stable/getting-started.html\n.. _HPC/Jupyter: https://xcdat.readthedocs.io/en/stable/getting-started-hpc-jupyter.html\n.. _API Overview: https://xcdat.readthedocs.io/en/stable/api.html\n.. _Gallery: https://xcdat.readthedocs.io/en/stable/gallery.html\n\nCommunity\n---------\n\nxCDAT is a community-driven open source project. We encourage discussion on topics such\nas version releases, feature suggestions, and architecture design on the\n`GitHub Discussions`_ page.\n\nSubscribe to our `mailing list`_ for news and announcements related to xCDAT,\nsuch as software version releases or future roadmap plans.\n\nPlease note that xCDAT has a `Code of Conduct`_. By participating in the xCDAT\ncommunity, you agree to abide by its rules.\n\n.. _GitHub Discussions: https://github.com/xCDAT/xcdat/discussions\n.. _Code of Conduct: CODE-OF-CONDUCT.rst\n.. _mailing list: https://groups.google.com/g/xcdat\n\nContributing\n------------\n\nWe welcome and appreciate contributions to xCDAT. Users and contributors can view and\nopen issues on our `GitHub Issue Tracker`_.\n\nFor more instructions on how to contribute, please checkout our `Contributing Guide`_.\n\n.. _GitHub Issue Tracker: https://github.com/xCDAT/xcdat/issues\n.. _Contributing Guide: https://xcdat.readthedocs.io/en/stable/contributing.html\n\nFeatures\n--------\n\n* Extension of xarray's ``open_dataset()`` and ``open_mfdataset()`` with post-processing options\n\n  * Generate bounds for axes supported by ``xcdat`` if they don't exist in the Dataset\n  * Optional selection of single data variable to keep in the Dataset (bounds are also\n    kept if they exist)\n  * Optional decoding of time coordinates\n\n    * In addition to CF time units, also decodes common non-CF time units\n      (\"months since ...\", \"years since ...\")\n\n  * Optional centering of time coordinates using time bounds\n  * Optional conversion of longitudinal axis orientation between [0, 360) and [-180, 180)\n\n* Temporal averaging\n\n  * Time series averages (single snapshot and grouped), climatologies, and departures\n  * Weighted or unweighted\n  * Optional seasonal configuration (e.g., DJF vs. JFD, custom seasons)\n\n* Geospatial weighted averaging\n\n  * Supports rectilinear grid\n  * Optional specification of regional domain\n\n* Horizontal structured regridding\n\n  * Supports rectilinear and curvilinear grids\n  * Extends the `xESMF`_ horizontal regridding API\n  * Python implementation of  `regrid2`_ for handling cartesian latitude longitude grids\n\n* Vertical structured regridding\n\n  * Support rectilinear and curvilinear grids\n  * Extends the `xgcm`_ vertical regridding API\n\nThings We Are Striving For\n--------------------------\n\n* xCDAT supports CF compliant datasets, but will also strive to support datasets with\n  common non-CF compliant metadata (e.g., time units in \"months since ...\" or \"years\n  since ...\")\n\n  * xCDAT leverages `cf_xarray`_ to interpret CF attributes on ``xarray`` objects\n  * Refer to `CF Metadata Convention`_ for more information on CF attributes\n\n* Robust handling of dimensions and their coordinates and coordinate bounds\n\n  * Coordinate variables are retrieved with ``cf_xarray`` using CF axis names or\n    coordinate names found in xarray object attributes. Refer to `Metadata Interpretation`_\n    for more information.\n  * Bounds are retrieved with ``cf_xarray`` using the ``\"bounds\"`` attr\n  * Ability to operate on both longitudinal axis orientations, [0, 360) and [-180, 180)\n\n* Support for parallelism using `dask`_ where it is both possible and makes sense\n\n.. _Metadata Interpretation: https://xcdat.readthedocs.io/en/stable/faqs.html#metadata-interpretation\n.. _xESMF: https://xesmf.readthedocs.io/en/latest/\n.. _regrid2: https://cdms.readthedocs.io/en/latest/regrid2.html\n.. _xgcm: https://xgcm.readthedocs.io/en/latest/index.html\n.. _dask: https://dask.org/\n.. _cf_xarray: https://cf-xarray.readthedocs.io/en/latest/index.html\n.. _CF Metadata Convention: http://cfconventions.org/\n\nReleases\n--------\nxCDAT (released as ``xcdat``) follows a feedback-driven release cycle using continuous\nintegration/continuous deployment. Software releases are performed based on the bandwidth\nof the development team, the needs of the community, and the priority of bug fixes or\nfeature updates.\n\nAfter releases are performed on `GitHub Releases`_, the corresponding ``xcdat`` package\nversion will be available to download through Anaconda `conda-forge`_ usually within a day.\n\nSubscribe to our `mailing list`_ to stay notified of new releases.\n\n.. _conda-forge: https://anaconda.org/conda-forge/xcdat\n.. _GitHub Releases: https://anaconda.org/conda-forge/xcdat\n\nUseful Resources\n-----------------\n\nWe highly encourage you to checkout the awesome resources below to learn more about\nXarray and Xarray usage in climate science!\n\n- `Official Xarray Tutorials \u003chttps://tutorial.xarray.dev/intro.html\u003e`_\n- `Xarray GitHub Discussion Forum \u003chttps://github.com/pydata/xarray/discussions\u003e`_\n- `Pangeo Forum \u003chttps://foundations.projectpythia.org/core/xarray.html\u003e`_\n- `Project Pythia \u003chttps://foundations.projectpythia.org/core/xarray.html\u003e`_\n\nProjects Using xCDAT\n--------------------\n\nxCDAT is actively being integrated as a core component of the `Program for Climate Model\nDiagnosis and Intercomparison (PCMDI) Metrics Package`_ and the `Energy Exascale Earth\nSystem Model Diagnostics (E3SM) Package`_. xCDAT is also included in the `E3SM Unified\nAnaconda Environment`_ that is deployed on various U.S. Department of Energy\nsupercomputers to run E3SM software tools.\n\n.. _Program for Climate Model Diagnosis and Intercomparison (PCMDI) Metrics Package: https://pcmdi.github.io/pcmdi_metrics/\n.. _Energy Exascale Earth System Model Diagnostics (E3SM) Package: https://e3sm-project.github.io/e3sm_diags/_build/html/main/index.html\n.. _E3SM Unified Anaconda Environment: https://e3sm.org/resources/tools/other-tools/e3sm-unified-environment/\n\nAcknowledgement\n---------------\n\nxCDAT is jointly developed by scientists and developers from the Energy Exascale\nEarth System Model (`E3SM`_) Project and Program for Climate Model Diagnosis and\nIntercomparison (`PCMDI`_). The work is performed for the E3SM project, which is\nsponsored by Earth System Model Development (`ESMD`_) program, and the Simplifying ESM\nAnalysis Through Standards (`SEATS`_) project, which is sponsored by the Regional and\nGlobal Model Analysis (`RGMA`_) program. ESMD and RGMA are programs for the Earth and\nEnvironmental Systems Sciences Division (`EESSD`_) in the Office of Biological and\nEnvironmental Research (`BER`_) within the `Department of Energy`_'s `Office of Science`_.\n\n.. _E3SM: https://e3sm.org/\n.. _PCMDI: https://pcmdi.llnl.gov/\n.. _SEATS: https://www.seatstandards.org/\n.. _ESMD: https://climatemodeling.science.energy.gov/program/earth-system-model-development\n.. _RGMA: https://climatemodeling.science.energy.gov/program/regional-global-model-analysis\n.. _EESSD: https://science.osti.gov/ber/Research/eessd\n.. _BER: https://science.osti.gov/ber\n.. _Department of Energy: https://www.energy.gov/\n.. _Office of Science: https://science.osti.gov/\n\n.. raw:: html\n\n   \u003cp align=\"center\"\u003e\n      \u003cimg style=\"display: inline-block; width:200px\" src=\"./docs/_static/e3sm-logo.jpg\" alt=\"E3SM logo\"/\u003e\n      \u003cimg style=\"display: inline-block; width:200px\" src=\"./docs/_static/pcmdi-logo.png\" alt=\"PCMDI logo\"/\u003e\n      \u003cimg style=\"display: inline-block; width:200px\" src=\"./docs/_static/seats-logo.png\" alt=\"SEATS logo\"/\u003e\n   \u003c/p\u003e\n\nContributors\n------------\n\nThank you to all of our contributors!\n\n.. image:: https://contrib.rocks/image?repo=xCDAT/xcdat\n  :alt: xCDAT contributors\n  :target: https://github.com/xCDAT/xcdat/graphs/contributors\n\n\nEndorsements\n------------\n\nxCDAT is proudly endorsed by the `Xarray ecosystem`_, the `Pangeo community`_, and the\n`World Climate Research Programme (WCRP)`_ as a recommended tool for geoscience and\nclimate data analysis.\n\n.. _Xarray ecosystem: https://docs.xarray.dev/en/stable/user-guide/ecosystem.html#geosciences\n.. _Pangeo community: https://www.pangeo.io/#ecosystem\n.. _World Climate Research Programme (WCRP): https://wcrp-cmip.org/tools/\n\n.. raw:: html\n\n   \u003cp align=\"center\"\u003e\n      \u003cimg style=\"display: inline-block; width:200px\" src=\"./docs/_static/xarray-logo.png\" alt=\"Xarray logo\"/\u003e\n      \u003cimg style=\"display: inline-block; width:200px\" src=\"./docs/_static/pangeo-logo-full.png\" alt=\"Pangeo logo\"/\u003e\n      \u003cimg style=\"display: inline-block; width:200px\" src=\"./docs/_static/wrcp-logo.png\" alt=\"WRCP logo\"/\u003e\n   \u003c/p\u003e\n\nLicense\n-------\n\nxCDAT is licensed under the terms of the Apache License (Version 2.0 with LLVM exception).\n\nAll new contributions must be made under the Apache-2.0 with LLVM exception license.\n\nSee `LICENSE`_ and `NOTICE`_ for details.\n\n.. _LICENSE: https://github.com/xCDAT/xcdat/blob/main/LICENSE\n.. _NOTICE: https://github.com/xCDAT/xcdat/blob/main/NOTICE\n\nSPDX-License-Identifier: Apache-2.0\n\n``LLNL-CODE-846944``\n","funding_links":[],"categories":["Climate Change"],"sub_categories":["Climate Data Processing and Analysis"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FxCDAT%2Fxcdat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FxCDAT%2Fxcdat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FxCDAT%2Fxcdat/lists"}