Skip to main content

An intake plugin for parsing an ESM (Earth System Model) Collection/catalog and loading assets (netCDF files and/or Zarr stores) into xarray datasets.

Project description Documentation Status Python Package Index Conda Version Zenodo



Project efforts such as the Coupled Model Intercomparison Project (CMIP) and the Community Earth System Model (CESM) Large Ensemble Project produce a huge of amount climate data persisted on tape, disk storage, object storage components across multiple (in the order of ~ 300,000) data assets. These data assets are stored in netCDF and more recently Zarr formats. Finding, investigating, loading these assets into data array containers such as xarray can be a daunting task due to the large number of files a user may be interested in. Intake-esm aims to address these issues by providing necessary functionality for searching, discovering, data access/loading.


intake-esm is a data cataloging utility built on top of intake, pandas, and xarray, and it’s pretty awesome!

  • Opening an ESM collection definition file: An ESM (Earth System Model) collection file is a JSON file that conforms to the ESM Collection Specification. When provided a link/path to an esm collection file, intake-esm establishes a link to a database (CSV file) that contains data assets locations and associated metadata (i.e., which experiement, model, the come from). The collection JSON file can be stored on a local filesystem or can be hosted on a remote server.

    >>> import intake
    >>> col_url = ""
    >>> col = intake.open_esm_datastore(col_url)
  • Search and Discovery: intake-esm provides functionality to execute queries against the database:

    >>> cat =['historical', 'ssp585'], table_id='Oyr',
    ...          variable_id='o2', grid_label='gn')
  • Access: when the user is satisfied with the results of their query, they can ask intake-esm to load data assets (netCDF/HDF files and/or Zarr stores) into xarray datasets:

    >>> dset_dict = cat.to_dataset_dict(zarr_kwargs={'consolidated': True, 'decode_times': False},
    ...                        cdf_kwargs={'chunks': {}, 'decode_times': False})

See documentation for more information.


Intake-esm can be installed from PyPI with pip:

pip install intake-esm

It is also available from conda-forge for conda installations:

conda install -c conda-forge intake-esm

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for intake-esm, version 2019.12.13
Filename, size File type Python version Upload date Hashes
Filename, size intake_esm-2019.12.13-py3-none-any.whl (17.3 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size intake-esm-2019.12.13.tar.gz (229.4 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page