[15]:
import pandas as pd
import xarray as xr
from pprint import pprint
[4]:
# Load Catalog
a=pd.read_csv('/data/keeling/a/cristi/a/esm_data/cmip6_catalog.csv')
[23]:
# Search for files to be read

            # variable in ESGF
path=a.loc[(a['variable_id']=='hur')&
           # experiment
           (a['experiment']=='AMIP')&
           # modelname
           (a['source_id'].str.contains('GFDL'))&
           # realization
           (a['variant_label'].str.contains('r1i1p1'))]['path'].to_list()

if path == []:
    print('Your search did not match any files on Keeling. Please proceed to download.')
else:
    pprint(path)
['/data/cristi/a/cristi/esm_data/cmip6/GFDL-CM4/amip/r1i1p1f1/hur_Amon_GFDL-CM4_amip_r1i1p1f1_gr1_197901-198412.nc',
 '/data/cristi/a/cristi/esm_data/cmip6/GFDL-CM4/amip/r1i1p1f1/hur_Amon_GFDL-CM4_amip_r1i1p1f1_gr1_198501-199012.nc',
 '/data/cristi/a/cristi/esm_data/cmip6/GFDL-CM4/amip/r1i1p1f1/hur_Amon_GFDL-CM4_amip_r1i1p1f1_gr1_199101-199612.nc',
 '/data/cristi/a/cristi/esm_data/cmip6/GFDL-CM4/amip/r1i1p1f1/hur_Amon_GFDL-CM4_amip_r1i1p1f1_gr1_199701-200212.nc',
 '/data/cristi/a/cristi/esm_data/cmip6/GFDL-CM4/amip/r1i1p1f1/hur_Amon_GFDL-CM4_amip_r1i1p1f1_gr1_200301-200812.nc',
 '/data/cristi/a/cristi/esm_data/cmip6/GFDL-CM4/amip/r1i1p1f1/hur_Amon_GFDL-CM4_amip_r1i1p1f1_gr1_200901-201412.nc']
[5]:
# Read the files in Xarray
ds = xr.open_mfdataset(path,combine="by_coords",use_cftime=True)
ds
[5]:
<xarray.Dataset>
Dimensions:    (bnds: 2, time: 432, plev: 19, lat: 180, lon: 288)
Coordinates:
  * bnds       (bnds) float64 1.0 2.0
  * lat        (lat) float64 -89.5 -88.5 -87.5 -86.5 ... 86.5 87.5 88.5 89.5
  * lon        (lon) float64 0.625 1.875 3.125 4.375 ... 355.6 356.9 358.1 359.4
  * plev       (plev) float64 1e+05 9.25e+04 8.5e+04 7e+04 ... 1e+03 500.0 100.0
  * time       (time) object 1979-01-16 12:00:00 ... 2014-12-16 12:00:00
Data variables:
    hur        (time, plev, lat, lon) float32 dask.array<chunksize=(72, 19, 180, 288), meta=np.ndarray>
    lat_bnds   (time, lat, bnds) float64 dask.array<chunksize=(72, 180, 2), meta=np.ndarray>
    lon_bnds   (time, lon, bnds) float64 dask.array<chunksize=(72, 288, 2), meta=np.ndarray>
    time_bnds  (time, bnds) object dask.array<chunksize=(72, 2), meta=np.ndarray>
Attributes: (12/44)
    external_variables:    areacella
    history:               File was processed by fremetar (GFDL analog of CMO...
    table_id:              Amon
    activity_id:           CMIP
    branch_method:         no parent
    branch_time_in_child:  0.0
    ...                    ...
    title:                 NOAA GFDL GFDL-CM4 model output prepared for CMIP6...
    tracking_id:           hdl:21.14100/7c27e5b3-c207-42a3-a01a-40d264a01935
    variable_id:           hur
    variant_info:          N/A
    references:            see further_info_url attribute
    variant_label:         r1i1p1f1