{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from glob import glob\n", "import xarray as xr\n", "import cftime\n", "import nc_time_axis\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "pd.options.display.max_rows = 200\n", "import intake, intake_esm\n", "! pip install cmip6_preprocessing\n", "from cmip6_preprocessing.preprocessing import (correct_units,rename_cmip6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Functions for preprocessing CMIP6 data " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def chunk_time(ds):\n", " if 'time' in ds.dims:\n", " ds = ds.chunk({'time':1})\n", " return ds" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# Necessary for creating a common time axis for all models\n", "# We want to create a common time axis so there will be no gaps when plotting the results \n", "\n", "def fix_time(ds):\n", " \"\"\" force calendar to noleap\"\"\"\n", " import xarray as xr\n", " \n", " if \"time\" not in ds.dims:\n", " return ds\n", " \n", " if (\"calendar\" not in ds[\"time\"].attrs): \n", " ds[\"time\"].attrs.update({\"calendar\": \"noleap\"})\n", " \n", " if ds[\"time\"].attrs[\"calendar\"] not in [\"noleap\", \"NOLEAP\", \"365_day\"]:\n", " ds[\"time\"].attrs.update({\"calendar\": \"noleap\"})\n", " \n", " ds = xr.decode_cf(ds)\n", " return ds" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# Pass this function for preprocessing thetao data \n", "def pp_thetao(ds):\n", " ds = rename_cmip6(ds)\n", " ds = fix_time(ds)\n", " ds = correct_units(ds)\n", " return ds" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Pass this function for preprocessing volcello and areacello data\n", "def pp_volcello(ds):\n", " ds = rename_cmip6(ds)\n", " ds = chunk_time(ds)\n", " ds = fix_time(ds)\n", " ds = correct_units(ds)\n", " return ds" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# Use this function to reconstruct areacello \n", "def compute_area_regular_grid(ds, Rearth=6378e3):\n", " \"\"\" compute the cells area on a regular grid \"\"\"\n", "\n", " rfac = 2 * np.pi * Rearth / 360\n", "\n", " dx1d = rfac * 1 \n", " dy1d = rfac * 1\n", "\n", " dx2d, dy2d = np.meshgrid(dx1d, dy1d)\n", " _, lat2d = np.meshgrid(ds[\"x\"].values, ds[\"y\"].values)\n", "\n", " dx = dx2d * np.cos(2 * np.pi * lat2d / 360)\n", " dy = dy2d\n", " area = dx * dy\n", " return xr.DataArray(area, dims=('y', 'x'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load the catalog with Intake-ESM" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "col_url = \"https://raw.githubusercontent.com/aradhakrishnanGFDL/gfdl-aws-analysis/community/esm-collection-spec-examples/esgf-world.json\"" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "

gfdltest catalog with 9266 dataset(s) from 956306 asset(s):

\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
unique
project1
institute38
model106
experiment_id217
frequency2
modeling_realm3
mip_table37
ensemble_member2725
grid_label13
variable738
temporal subset25151
version510
path956306
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "col = intake.open_esm_datastore(col_url)\n", "esmcol_data = col.esmcol_data\n", "col" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "#def latest_version(ds):\n", "# \"\"\"filters latest DRS versions of datasets only\"\"\"\n", "# ds=ds.df.sort_values(['version'],ascending=False).groupby(['temporal subset','model','mip_table',\n", "# 'institute','variable','ensemble_member',\n", "# 'grid_label','experiment_id'],as_index=False)#.head(1)\n", "# return ds\n", "\n", "def latest_version(cat):\n", " \"\"\"\n", " input\n", " cat: esmdatastore \n", " output\n", " esmdatastore with latest DRS versions\n", " \"\"\"\n", " \n", " latest_cat = cat.df.sort_values(by=['version','path']).drop_duplicates(['temporal subset','model','mip_table',\n", " 'institute','variable','ensemble_member',\n", " 'grid_label','experiment_id'],keep='last')\n", " return latest_cat" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/srv/conda/envs/notebook/lib/python3.8/site-packages/intake_esm/search.py:102: UserWarning: Query returned zero results.\n", " warn(message)\n" ] } ], "source": [ "\n", "# gn_models = ['ACCESS-ESM1-5','BCC-CSM2-MR','BCC-ESM1','CAMS-CSM1-0','EC-Earth3',\n", "# 'EC-Earth3-Veg','FIO-ESM-2-0','GISS-E2-1-G','GISS-E2-1-G-CC','NESM3','ACCESS-CM2','CIESM','SAM0-UNICON','MPI-ESM1-2-HR',\n", "# 'CanESM5','FGOALS-f3-L','IPSL-CM6A-LR','MIROC6','MPI-ESM-1-2-HAM','MPI-ESM1-2-LR']\n", "gn_models = ['CESM2', 'CESM2-FV2', 'CESM2-WACCM-FV2','IPSL-CM6A-LR','MPI-ESM1-2-HR','MPI-ESM1-2-LR','MIROC6','CanESM5',\n", " 'MPI-ESM-1-2-HAM','MRI-ESM2-0','SAM0-UNICON']\n", "\n", "cat_T_gn = col.search(experiment_id=['historical'],\n", " mip_table='Omon',\n", " ensemble_member=[\"r1i1p1f1\"],\n", " model=gn_models,\n", " grid_label=['gn'],\n", " variable=[\"thetao\"])\n", "\n", "cat_VOmon_gn = col.search(experiment_id=['historical'],\n", " mip_table=['Omon'],\n", " ensemble_member=\"r1i1p1f1\",\n", " model=gn_models,\n", " grid_label='gn',\n", " variable=[\"volcello\"])\n", "\n", "cat_VOfx_gn = col.search(experiment_id=['historical'],\n", " mip_table=['Ofx'],\n", " ensemble_member=\"r1i1p1f1\",\n", " model=gn_models,\n", " grid_label='gn',\n", " variable=[\"volcello\"])\n", "\n", "\n", "cat_A_gn = col.search(experiment_id=['historical'],\n", " mip_table=['Omon','Ofx'],\n", " ensemble_member=\"r1i1p1f1\",\n", " model=gn_models,\n", " grid_label='gn',\n", " variable=['areacello'])" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
projectinstitutemodelexperiment_idfrequencymodeling_realmmip_tableensemble_membergrid_labelvariabletemporal subsetversionpath
0CMIP6MPI-MMPI-ESM1-2-HRhistoricalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190710s3://esgf-world/CMIP6/CMIP/MPI-M/MPI-ESM1-2-HR...
1CMIP6NCARCESM2-FV2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20191120s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-FV2/hist...
2CMIP6NCARCESM2-WACCM-FV2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20191120s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-WACCM-FV...
3CMIP6NCARCESM2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190308s3://esgf-world/CMIP6/CMIP/NCAR/CESM2/historic...
4CMIP6SNUSAM0-UNICONhistoricalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190323s3://esgf-world/CMIP6/CMIP/SNU/SAM0-UNICON/his...
\n", "
" ], "text/plain": [ " project institute model experiment_id frequency modeling_realm \\\n", "0 CMIP6 MPI-M MPI-ESM1-2-HR historical NaN NaN \n", "1 CMIP6 NCAR CESM2-FV2 historical NaN NaN \n", "2 CMIP6 NCAR CESM2-WACCM-FV2 historical NaN NaN \n", "3 CMIP6 NCAR CESM2 historical NaN NaN \n", "4 CMIP6 SNU SAM0-UNICON historical NaN NaN \n", "\n", " mip_table ensemble_member grid_label variable temporal subset version \\\n", "0 Ofx r1i1p1f1 gn volcello NaN v20190710 \n", "1 Ofx r1i1p1f1 gn volcello NaN v20191120 \n", "2 Ofx r1i1p1f1 gn volcello NaN v20191120 \n", "3 Ofx r1i1p1f1 gn volcello NaN v20190308 \n", "4 Ofx r1i1p1f1 gn volcello NaN v20190323 \n", "\n", " path \n", "0 s3://esgf-world/CMIP6/CMIP/MPI-M/MPI-ESM1-2-HR... \n", "1 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-FV2/hist... \n", "2 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-WACCM-FV... \n", "3 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2/historic... \n", "4 s3://esgf-world/CMIP6/CMIP/SNU/SAM0-UNICON/his... " ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_VOfx_gn.df" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "cat_T_gn_latest = latest_version(cat_T_gn)\n", "cat_VOmon_gn_latest = latest_version(cat_VOmon_gn)\n", "cat_VOfx_gn_latest = latest_version(cat_VOfx_gn)\n", "cat_A_gn_latest = latest_version(cat_A_gn)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
projectinstitutemodelexperiment_idfrequencymodeling_realmmip_tableensemble_membergrid_labelvariabletemporal subsetversionpath
3CMIP6NCARCESM2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190308s3://esgf-world/CMIP6/CMIP/NCAR/CESM2/historic...
4CMIP6SNUSAM0-UNICONhistoricalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190323s3://esgf-world/CMIP6/CMIP/SNU/SAM0-UNICON/his...
0CMIP6MPI-MMPI-ESM1-2-HRhistoricalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190710s3://esgf-world/CMIP6/CMIP/MPI-M/MPI-ESM1-2-HR...
1CMIP6NCARCESM2-FV2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20191120s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-FV2/hist...
2CMIP6NCARCESM2-WACCM-FV2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20191120s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-WACCM-FV...
\n", "
" ], "text/plain": [ " project institute model experiment_id frequency modeling_realm \\\n", "3 CMIP6 NCAR CESM2 historical NaN NaN \n", "4 CMIP6 SNU SAM0-UNICON historical NaN NaN \n", "0 CMIP6 MPI-M MPI-ESM1-2-HR historical NaN NaN \n", "1 CMIP6 NCAR CESM2-FV2 historical NaN NaN \n", "2 CMIP6 NCAR CESM2-WACCM-FV2 historical NaN NaN \n", "\n", " mip_table ensemble_member grid_label variable temporal subset version \\\n", "3 Ofx r1i1p1f1 gn volcello NaN v20190308 \n", "4 Ofx r1i1p1f1 gn volcello NaN v20190323 \n", "0 Ofx r1i1p1f1 gn volcello NaN v20190710 \n", "1 Ofx r1i1p1f1 gn volcello NaN v20191120 \n", "2 Ofx r1i1p1f1 gn volcello NaN v20191120 \n", "\n", " path \n", "3 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2/historic... \n", "4 s3://esgf-world/CMIP6/CMIP/SNU/SAM0-UNICON/his... \n", "0 s3://esgf-world/CMIP6/CMIP/MPI-M/MPI-ESM1-2-HR... \n", "1 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-FV2/hist... \n", "2 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-WACCM-FV... " ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_VOfx_gn_latest.head()" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
projectinstitutemodelexperiment_idfrequencymodeling_realmmip_tableensemble_membergrid_labelvariabletemporal subsetversionpath
0CMIP6MPI-MMPI-ESM1-2-HRhistoricalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190710s3://esgf-world/CMIP6/CMIP/MPI-M/MPI-ESM1-2-HR...
1CMIP6NCARCESM2-FV2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20191120s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-FV2/hist...
2CMIP6NCARCESM2-WACCM-FV2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20191120s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-WACCM-FV...
3CMIP6NCARCESM2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190308s3://esgf-world/CMIP6/CMIP/NCAR/CESM2/historic...
4CMIP6SNUSAM0-UNICONhistoricalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190323s3://esgf-world/CMIP6/CMIP/SNU/SAM0-UNICON/his...
\n", "
" ], "text/plain": [ " project institute model experiment_id frequency modeling_realm \\\n", "0 CMIP6 MPI-M MPI-ESM1-2-HR historical NaN NaN \n", "1 CMIP6 NCAR CESM2-FV2 historical NaN NaN \n", "2 CMIP6 NCAR CESM2-WACCM-FV2 historical NaN NaN \n", "3 CMIP6 NCAR CESM2 historical NaN NaN \n", "4 CMIP6 SNU SAM0-UNICON historical NaN NaN \n", "\n", " mip_table ensemble_member grid_label variable temporal subset version \\\n", "0 Ofx r1i1p1f1 gn volcello NaN v20190710 \n", "1 Ofx r1i1p1f1 gn volcello NaN v20191120 \n", "2 Ofx r1i1p1f1 gn volcello NaN v20191120 \n", "3 Ofx r1i1p1f1 gn volcello NaN v20190308 \n", "4 Ofx r1i1p1f1 gn volcello NaN v20190323 \n", "\n", " path \n", "0 s3://esgf-world/CMIP6/CMIP/MPI-M/MPI-ESM1-2-HR... \n", "1 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-FV2/hist... \n", "2 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-WACCM-FV... \n", "3 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2/historic... \n", "4 s3://esgf-world/CMIP6/CMIP/SNU/SAM0-UNICON/his... " ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_VOfx_gn.df" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "cat_T_gn = intake.open_esm_datastore(cat_T_gn_latest,esmcol_data=esmcol_data)\n", "cat_VOmon_gn = intake.open_esm_datastore(cat_VOmon_gn_latest,esmcol_data=esmcol_data)\n", "cat_VOfx_gn = intake.open_esm_datastore(cat_VOfx_gn_latest,esmcol_data=esmcol_data)\n", "cat_A_gn = intake.open_esm_datastore(cat_A_gn_latest,esmcol_data=esmcol_data)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
projectinstitutemodelexperiment_idfrequencymodeling_realmmip_tableensemble_membergrid_labelvariabletemporal subsetversionpath
3CMIP6NCARCESM2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190308s3://esgf-world/CMIP6/CMIP/NCAR/CESM2/historic...
4CMIP6SNUSAM0-UNICONhistoricalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190323s3://esgf-world/CMIP6/CMIP/SNU/SAM0-UNICON/his...
0CMIP6MPI-MMPI-ESM1-2-HRhistoricalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20190710s3://esgf-world/CMIP6/CMIP/MPI-M/MPI-ESM1-2-HR...
1CMIP6NCARCESM2-FV2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20191120s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-FV2/hist...
2CMIP6NCARCESM2-WACCM-FV2historicalNaNNaNOfxr1i1p1f1gnvolcelloNaNv20191120s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-WACCM-FV...
\n", "
" ], "text/plain": [ " project institute model experiment_id frequency modeling_realm \\\n", "3 CMIP6 NCAR CESM2 historical NaN NaN \n", "4 CMIP6 SNU SAM0-UNICON historical NaN NaN \n", "0 CMIP6 MPI-M MPI-ESM1-2-HR historical NaN NaN \n", "1 CMIP6 NCAR CESM2-FV2 historical NaN NaN \n", "2 CMIP6 NCAR CESM2-WACCM-FV2 historical NaN NaN \n", "\n", " mip_table ensemble_member grid_label variable temporal subset version \\\n", "3 Ofx r1i1p1f1 gn volcello NaN v20190308 \n", "4 Ofx r1i1p1f1 gn volcello NaN v20190323 \n", "0 Ofx r1i1p1f1 gn volcello NaN v20190710 \n", "1 Ofx r1i1p1f1 gn volcello NaN v20191120 \n", "2 Ofx r1i1p1f1 gn volcello NaN v20191120 \n", "\n", " path \n", "3 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2/historic... \n", "4 s3://esgf-world/CMIP6/CMIP/SNU/SAM0-UNICON/his... \n", "0 s3://esgf-world/CMIP6/CMIP/MPI-M/MPI-ESM1-2-HR... \n", "1 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-FV2/hist... \n", "2 s3://esgf-world/CMIP6/CMIP/NCAR/CESM2-WACCM-FV... " ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_VOfx_gn_latest" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
projectinstitutemodelexperiment_idfrequencymodeling_realmmip_tableensemble_membergrid_labelvariabletemporal subsetpath
version
v2019030611111111111717
v2019042911111111111717
\n", "
" ], "text/plain": [ " project institute model experiment_id frequency \\\n", "version \n", "v20190306 1 1 1 1 1 \n", "v20190429 1 1 1 1 1 \n", "\n", " modeling_realm mip_table ensemble_member grid_label variable \\\n", "version \n", "v20190306 1 1 1 1 1 \n", "v20190429 1 1 1 1 1 \n", "\n", " temporal subset path \n", "version \n", "v20190306 17 17 \n", "v20190429 17 17 " ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "cat_T_gn.df[cat_T_gn.df['model']=='CanESM5'].groupby(['version']).nunique() #one distinct version only, latest one.\n" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
projectinstitutemodelexperiment_idfrequencymodeling_realmmip_tableensemble_membergrid_labelvariabletemporal subsetpath
version
v2019042911111111111717
\n", "
" ], "text/plain": [ " project institute model experiment_id frequency \\\n", "version \n", "v20190429 1 1 1 1 1 \n", "\n", " modeling_realm mip_table ensemble_member grid_label variable \\\n", "version \n", "v20190429 1 1 1 1 1 \n", "\n", " temporal subset path \n", "version \n", "v20190429 17 17 " ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_T_gn_latest[cat_T_gn_latest['model']=='CanESM5'].groupby(['version']).nunique() #one distinct version only, latest one." ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
projectinstituteexperiment_idfrequencymodeling_realmmip_tableensemble_membergrid_labelvariabletemporal subsetversionpath
model
CESM2111111111111
CESM2-FV2111111111414
CESM2-WACCM-FV2111111111414
CanESM511111111117234
IPSL-CM6A-LR111111111212
MIROC611111111117117
MPI-ESM-1-2-HAM111111111919
MPI-ESM1-2-HR11111111133133
MPI-ESM1-2-LR111111111919
MRI-ESM2-0111111111313
SAM0-UNICON11111111117117
\n", "
" ], "text/plain": [ " project institute experiment_id frequency modeling_realm \\\n", "model \n", "CESM2 1 1 1 1 1 \n", "CESM2-FV2 1 1 1 1 1 \n", "CESM2-WACCM-FV2 1 1 1 1 1 \n", "CanESM5 1 1 1 1 1 \n", "IPSL-CM6A-LR 1 1 1 1 1 \n", "MIROC6 1 1 1 1 1 \n", "MPI-ESM-1-2-HAM 1 1 1 1 1 \n", "MPI-ESM1-2-HR 1 1 1 1 1 \n", "MPI-ESM1-2-LR 1 1 1 1 1 \n", "MRI-ESM2-0 1 1 1 1 1 \n", "SAM0-UNICON 1 1 1 1 1 \n", "\n", " mip_table ensemble_member grid_label variable \\\n", "model \n", "CESM2 1 1 1 1 \n", "CESM2-FV2 1 1 1 1 \n", "CESM2-WACCM-FV2 1 1 1 1 \n", "CanESM5 1 1 1 1 \n", "IPSL-CM6A-LR 1 1 1 1 \n", "MIROC6 1 1 1 1 \n", "MPI-ESM-1-2-HAM 1 1 1 1 \n", "MPI-ESM1-2-HR 1 1 1 1 \n", "MPI-ESM1-2-LR 1 1 1 1 \n", "MRI-ESM2-0 1 1 1 1 \n", "SAM0-UNICON 1 1 1 1 \n", "\n", " temporal subset version path \n", "model \n", "CESM2 1 1 1 \n", "CESM2-FV2 4 1 4 \n", "CESM2-WACCM-FV2 4 1 4 \n", "CanESM5 17 2 34 \n", "IPSL-CM6A-LR 2 1 2 \n", "MIROC6 17 1 17 \n", "MPI-ESM-1-2-HAM 9 1 9 \n", "MPI-ESM1-2-HR 33 1 33 \n", "MPI-ESM1-2-LR 9 1 9 \n", "MRI-ESM2-0 3 1 3 \n", "SAM0-UNICON 17 1 17 " ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_T_gn.df.groupby(['model']).nunique()" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
projectinstituteexperiment_idfrequencymodeling_realmmip_tableensemble_membergrid_labelvariabletemporal subsetversionpath
model
CESM2111001111011
CESM2-FV2111001111011
CESM2-WACCM-FV2111001111011
CanESM5111001111011
IPSL-CM6A-LR111001111011
MIROC6111001111011
MPI-ESM-1-2-HAM111001111011
MPI-ESM1-2-HR111001111011
MPI-ESM1-2-LR111001111011
MRI-ESM2-0111001111011
SAM0-UNICON111001111011
\n", "
" ], "text/plain": [ " project institute experiment_id frequency modeling_realm \\\n", "model \n", "CESM2 1 1 1 0 0 \n", "CESM2-FV2 1 1 1 0 0 \n", "CESM2-WACCM-FV2 1 1 1 0 0 \n", "CanESM5 1 1 1 0 0 \n", "IPSL-CM6A-LR 1 1 1 0 0 \n", "MIROC6 1 1 1 0 0 \n", "MPI-ESM-1-2-HAM 1 1 1 0 0 \n", "MPI-ESM1-2-HR 1 1 1 0 0 \n", "MPI-ESM1-2-LR 1 1 1 0 0 \n", "MRI-ESM2-0 1 1 1 0 0 \n", "SAM0-UNICON 1 1 1 0 0 \n", "\n", " mip_table ensemble_member grid_label variable \\\n", "model \n", "CESM2 1 1 1 1 \n", "CESM2-FV2 1 1 1 1 \n", "CESM2-WACCM-FV2 1 1 1 1 \n", "CanESM5 1 1 1 1 \n", "IPSL-CM6A-LR 1 1 1 1 \n", "MIROC6 1 1 1 1 \n", "MPI-ESM-1-2-HAM 1 1 1 1 \n", "MPI-ESM1-2-HR 1 1 1 1 \n", "MPI-ESM1-2-LR 1 1 1 1 \n", "MRI-ESM2-0 1 1 1 1 \n", "SAM0-UNICON 1 1 1 1 \n", "\n", " temporal subset version path \n", "model \n", "CESM2 0 1 1 \n", "CESM2-FV2 0 1 1 \n", "CESM2-WACCM-FV2 0 1 1 \n", "CanESM5 0 1 1 \n", "IPSL-CM6A-LR 0 1 1 \n", "MIROC6 0 1 1 \n", "MPI-ESM-1-2-HAM 0 1 1 \n", "MPI-ESM1-2-HR 0 1 1 \n", "MPI-ESM1-2-LR 0 1 1 \n", "MRI-ESM2-0 0 1 1 \n", "SAM0-UNICON 0 1 1 " ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_A_gn.df.groupby(['model']).nunique() " ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
projectinstituteexperiment_idfrequencymodeling_realmmip_tableensemble_membergrid_labelvariabletemporal subsetversionpath
model
CESM2111001111011
CESM2-FV2111001111011
CESM2-WACCM-FV2111001111011
CanESM5111001111011
IPSL-CM6A-LR111001111011
MIROC6111001111011
MPI-ESM-1-2-HAM111001111011
MPI-ESM1-2-HR111001111011
MPI-ESM1-2-LR111001111011
MRI-ESM2-0111001111011
SAM0-UNICON111001111011
\n", "
" ], "text/plain": [ " project institute experiment_id frequency modeling_realm \\\n", "model \n", "CESM2 1 1 1 0 0 \n", "CESM2-FV2 1 1 1 0 0 \n", "CESM2-WACCM-FV2 1 1 1 0 0 \n", "CanESM5 1 1 1 0 0 \n", "IPSL-CM6A-LR 1 1 1 0 0 \n", "MIROC6 1 1 1 0 0 \n", "MPI-ESM-1-2-HAM 1 1 1 0 0 \n", "MPI-ESM1-2-HR 1 1 1 0 0 \n", "MPI-ESM1-2-LR 1 1 1 0 0 \n", "MRI-ESM2-0 1 1 1 0 0 \n", "SAM0-UNICON 1 1 1 0 0 \n", "\n", " mip_table ensemble_member grid_label variable \\\n", "model \n", "CESM2 1 1 1 1 \n", "CESM2-FV2 1 1 1 1 \n", "CESM2-WACCM-FV2 1 1 1 1 \n", "CanESM5 1 1 1 1 \n", "IPSL-CM6A-LR 1 1 1 1 \n", "MIROC6 1 1 1 1 \n", "MPI-ESM-1-2-HAM 1 1 1 1 \n", "MPI-ESM1-2-HR 1 1 1 1 \n", "MPI-ESM1-2-LR 1 1 1 1 \n", "MRI-ESM2-0 1 1 1 1 \n", "SAM0-UNICON 1 1 1 1 \n", "\n", " temporal subset version path \n", "model \n", "CESM2 0 1 1 \n", "CESM2-FV2 0 1 1 \n", "CESM2-WACCM-FV2 0 1 1 \n", "CanESM5 0 1 1 \n", "IPSL-CM6A-LR 0 1 1 \n", "MIROC6 0 1 1 \n", "MPI-ESM-1-2-HAM 0 1 1 \n", "MPI-ESM1-2-HR 0 1 1 \n", "MPI-ESM1-2-LR 0 1 1 \n", "MRI-ESM2-0 0 1 1 \n", "SAM0-UNICON 0 1 1 " ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_A_gn_latest.groupby(['model']).nunique() #.nunique()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:notebook] *", "language": "python", "name": "conda-env-notebook-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 5 }