{"id":13948903,"url":"https://github.com/intake/intake-esm","last_synced_at":"2025-08-26T20:51:56.932Z","repository":{"id":37939393,"uuid":"163683889","full_name":"intake/intake-esm","owner":"intake","description":"An intake plugin for parsing an Earth System Model (ESM) catalog and loading assets into xarray datasets.","archived":false,"fork":false,"pushed_at":"2025-08-15T02:00:37.000Z","size":12293,"stargazers_count":154,"open_issues_count":41,"forks_count":50,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-08-16T03:53:34.617Z","etag":null,"topics":["cesm-lens","climate-datasets","cmip6","data-access","data-catalog","earth-system-model","hacktoberfest","intake","pangeo"],"latest_commit_sha":null,"homepage":"https://intake-esm.readthedocs.io","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/intake.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-12-31T16:42:54.000Z","updated_at":"2025-08-15T02:00:40.000Z","dependencies_parsed_at":"2024-04-10T15:06:15.075Z","dependency_job_id":"88fd7cd4-6cc1-4742-a56e-0de06ecaffc5","html_url":"https://github.com/intake/intake-esm","commit_stats":{"total_commits":997,"total_committers":23,"mean_commits":43.34782608695652,"dds":0.2668004012036108,"last_synced_commit":"9894e1f16116f8ab7bc4d2a519e14a55b98471d7"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/intake/intake-esm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intake%2Fintake-esm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intake%2Fintake-esm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intake%2Fintake-esm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intake%2Fintake-esm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intake","download_url":"https://codeload.github.com/intake/intake-esm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intake%2Fintake-esm/sbom","scorecard":{"id":126200,"data":{"date":"2025-08-11","repo":{"name":"github.com/intake/intake-esm","commit":"b9c14d9414a80e8b2ec834dcad29e73e9578e4a5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.5,"checks":[{"name":"Maintained","score":10,"reason":"9 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":7,"reason":"Found 13/17 approved changesets -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yaml:1","Warn: no topLevel permission defined: .github/workflows/pypi.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/ci.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/ci.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/ci.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/pypi.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/intake/intake-esm/pypi.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/pypi.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/pypi.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/pypi.yml:68","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   1 out of   4 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-mr82-8j83-vxmv","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/pypi.yml:72"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T03:55:03.644Z","repository_id":37939393,"created_at":"2025-08-16T03:55:03.644Z","updated_at":"2025-08-16T03:55:03.644Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271436181,"owners_count":24759328,"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","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cesm-lens","climate-datasets","cmip6","data-access","data-catalog","earth-system-model","hacktoberfest","intake","pangeo"],"created_at":"2024-08-08T05:01:33.948Z","updated_at":"2025-08-26T20:51:56.921Z","avatar_url":"https://github.com/intake.png","language":"Python","readme":"# Intake-esm\n\n- [Intake-esm](#intake-esm)\n  - [Badges](#badges)\n  - [Motivation](#motivation)\n  - [Overview](#overview)\n  - [Installation](#installation)\n\n## Badges\n\n| CI           | [![GitHub Workflow Status][github-ci-badge]][github-ci-link] [![Code Coverage Status][codecov-badge]][codecov-link] [![pre-commit.ci status][pre-commit.ci-badge]][pre-commit.ci-link] |\n| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |\n| **Docs**     |                                                                     [![Documentation Status][rtd-badge]][rtd-link]                                                                     |\n| **Package**  |                                     [![Conda][conda-badge]][conda-link] [![PyPI][pypi-badge]][pypi-link] [![Versions][versions-badge]][pypi-link]                                      |\n| **License**  |                                                                         [![License][license-badge]][repo-link]                                                                         |\n| **Citation** |                                                                         [![Zenodo][zenodo-badge]][zenodo-link]                                                                         |\n\n## Motivation\n\nComputer simulations of the Earth’s climate and weather generate huge amounts of data.\nThese data are often persisted on HPC systems or in the cloud across multiple data\nassets of a variety of formats ([netCDF](https://www.unidata.ucar.edu/software/netcdf/), [zarr](https://zarr.readthedocs.io/en/stable/), etc...). Finding, investigating,\nloading these data assets into compute-ready data containers costs time and effort.\nThe data user needs to know what data sets are available, the attributes describing\neach data set, before loading a specific data set and analyzing it.\n\nFinding, investigating, loading these assets into data array containers\nsuch as xarray can be a daunting task due to the large number of files\na user may be interested in. Intake-esm aims to address these issues by\nproviding necessary functionality for searching, discovering, data access/loading.\n\n## Overview\n\n`intake-esm` is a data cataloging utility built on top of [intake](https://github.com/intake/intake), [pandas](https://pandas.pydata.org/), [polars](https://pola.rs/) and [xarray](https://xarray.pydata.org/en/stable/), and it's pretty awesome!\n\n- Opening an ESM catalog definition file: An Earth System Model (ESM) catalog file is a JSON file that conforms\n  to the [ESM Collection Specification](./docs/source/reference/esm-catalog-spec.md). When provided a link/path to an esm catalog file, `intake-esm` establishes\n  a link to a database (CSV file) that contains data assets locations and associated metadata\n  (i.e., which experiment, model, the come from). The catalog JSON file can be stored on a local filesystem\n  or can be hosted on a remote server.\n\n  ```python\n\n  In [1]: import intake\n\n  In [2]: import intake_esm\n\n  In [3]: cat_url = intake_esm.tutorial.get_url(\"google_cmip6\")\n\n  In [4]: cat = intake.open_esm_datastore(cat_url)\n\n  In [5]: cat\n  Out[5]: \u003cGOOGLE-CMIP6 catalog with 4 dataset(s) from 261 asset(s\u003e\n  ```\n\n- Search and Discovery: `intake-esm` provides functionality to execute queries against the catalog:\n\n  ```python\n  In [5]: cat_subset = cat.search(\n     ...:     experiment_id=[\"historical\", \"ssp585\"],\n     ...:     table_id=\"Oyr\",\n     ...:     variable_id=\"o2\",\n     ...:     grid_label=\"gn\",\n     ...: )\n\n  In [6]: cat_subset\n  Out[6]: \u003cGOOGLE-CMIP6 catalog with 2 dataset(s) from 67 asset(s)\u003e\n  ```\n\n- Access: when the user is satisfied with the results of their query, they can load data assets (netCDF and/or Zarr stores) into xarray datasets:\n\n  ```python\n\n    In [7]: dset_dict = cat_subset.to_dataset_dict()\n\n    --\u003e The keys in the returned dictionary of datasets are constructed as follows:\n            'activity_id.institution_id.source_id.experiment_id.table_id.grid_label'\n    |███████████████████████████████████████████████████████████████| 100.00% [2/2 00:18\u003c00:00]\n  ```\n\nSee [documentation](https://intake-esm.readthedocs.io/en/latest/) for more information.\n\n## Installation\n\nIntake-esm can be installed from PyPI with pip:\n\n```bash\npython -m pip install intake-esm\n```\n\nIt is also available from `conda-forge` for conda installations:\n\n```bash\nconda install -c conda-forge intake-esm\n```\n\n[github-ci-badge]: https://github.com/intake/intake-esm/actions/workflows/ci.yaml/badge.svg\n[github-ci-link]: https://github.com/intake/intake-esm/actions/workflows/ci.yaml\n[codecov-badge]: https://img.shields.io/codecov/c/github/intake/intake-esm.svg?logo=codecov\n[codecov-link]: https://codecov.io/gh/intake/intake-esm\n[rtd-badge]: https://readthedocs.org/projects/intake-esm/badge/?version=latest\n[rtd-link]: https://intake-esm.readthedocs.io/en/latest/?badge=latest\n[pypi-badge]: https://img.shields.io/pypi/v/intake-esm?logo=pypi\n[pypi-link]: https://pypi.org/project/intake-esm\n[conda-badge]: https://img.shields.io/conda/vn/conda-forge/intake-esm?logo=anaconda\n[conda-link]: https://anaconda.org/conda-forge/intake-esm\n[zenodo-badge]: https://img.shields.io/badge/DOI-10.5281%20%2F%20zenodo.3491062-blue.svg\n[zenodo-link]: https://doi.org/10.5281/zenodo.3491062\n[license-badge]: https://img.shields.io/github/license/intake/intake-esm\n[repo-link]: https://github.com/intake/intake-esm\n[pre-commit.ci-badge]: https://results.pre-commit.ci/badge/github/intake/intake-esm/main.svg\n[pre-commit.ci-link]: https://results.pre-commit.ci/latest/github/intake/intake-esm/main\n[versions-badge]: https://img.shields.io/pypi/pyversions/intake-esm\n","funding_links":[],"categories":["Climate Change"],"sub_categories":["Climate Data Access and Visualization"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintake%2Fintake-esm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintake%2Fintake-esm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintake%2Fintake-esm/lists"}