3  Loading All Variables, Scenarios and Models

In this section, we show how to load all variables, models and scenarios available with the CMIP6 data. .

3.0.1 Notebook Code

3.0.2 Import Required libraries

import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime
import OpenVisus as ov
import os
os.environ["VISUS_CACHE"]="./visus_cache_can_be_erased"

3.1 List of all available variables, models, scenarios

#Options
varlist = ["hurs","huss","pr","rlds","rsds","sfcWind","tas","tasmax","tasmin"]
cmaps     = ["YlGnBu","YlGnBu","Blues","rainbow","rainbow","turbo","Reds","Reds","Reds"]
modellist=["CESM2","ACCESS-CM2","CMCC-CM2-SR5","INM-CM5-0","CanESM5","MRI-ESM2-0","MPI-ESM1-2-HR","MIROC6","IPSL-CM6A-LR","GFDL-ESM4"]
scenariolist =["historical","ssp585","ssp370","ssp245"]

3.2 Script to convert dates to array indices (DONT CHANGE THIS)

def calculate_day_of_year(date_str):
    date = datetime.strptime(date_str, '%Y-%m-%d')
    start_of_year = datetime(date.year, 1, 1)
    day_of_year = (date - start_of_year).days   
    return day_of_year
def get_timestep(date_str):
    date = datetime.strptime(date_str, '%Y-%m-%d')
    day_of_year = calculate_day_of_year(date_str)
    total_days = 365 + (1 if (date.year % 4 == 0 and date.year % 100 != 0) or (date.year % 400 == 0) else 0)
    return f"{date.year*total_days+day_of_year}"

3.2.1 Select your timestamp (yyyy-mm-dd)

timestamp='1950-01-01'

3.2.2 Choose the appropriate variable

fname=[]

# This runs all variables for model ACCESS-CM2
for v in varlist:
    field_ = f"{v}_day_{modellist[1]}_{scenariolist[0]}_r1i1p1f1_gn"
    fname.append(field_)
    print(field_)
hurs_day_ACCESS-CM2_historical_r1i1p1f1_gn
huss_day_ACCESS-CM2_historical_r1i1p1f1_gn
pr_day_ACCESS-CM2_historical_r1i1p1f1_gn
rlds_day_ACCESS-CM2_historical_r1i1p1f1_gn
rsds_day_ACCESS-CM2_historical_r1i1p1f1_gn
sfcWind_day_ACCESS-CM2_historical_r1i1p1f1_gn
tas_day_ACCESS-CM2_historical_r1i1p1f1_gn
tasmax_day_ACCESS-CM2_historical_r1i1p1f1_gn
tasmin_day_ACCESS-CM2_historical_r1i1p1f1_gn
db = ov.LoadDataset("http://atlantis.sci.utah.edu/mod_visus?dataset=nex-gddp-cmip6&cached=arco")

3.2.3 To see all combinations of fields available, uncomment the line below.. We are in the process of adding all models and variables

# print(db.getDatasetBody().toString())
data=db.read(time=int(get_timestep(timestamp)),quality=0,field=fname[0])

3.2.4 Plotting all variables for model ACCESS-CM2

for f in fname:
    data=db.read(time=int(get_timestep(timestamp)),quality=0,field=f)
    plt.title(f)
    plt.imshow(data,origin='lower')
    plt.colorbar()
    plt.show()

fname=[]

for m in modellist:
    if m  in ['CESM2'] :
        run= 'r4i1p1f1'
    else:
        run=  'r1i1p1f1'
    field_ = f"{varlist[0]}_day_{m}_{scenariolist[0]}_{run}_gn"
    fname.append(field_)
    print(field_)
hurs_day_CESM2_historical_r4i1p1f1_gn
hurs_day_ACCESS-CM2_historical_r1i1p1f1_gn
hurs_day_CMCC-CM2-SR5_historical_r1i1p1f1_gn
hurs_day_INM-CM5-0_historical_r1i1p1f1_gn
hurs_day_CanESM5_historical_r1i1p1f1_gn
hurs_day_MRI-ESM2-0_historical_r1i1p1f1_gn
hurs_day_MPI-ESM1-2-HR_historical_r1i1p1f1_gn
hurs_day_MIROC6_historical_r1i1p1f1_gn
hurs_day_IPSL-CM6A-LR_historical_r1i1p1f1_gn
hurs_day_GFDL-ESM4_historical_r1i1p1f1_gn

3.2.5 Plotting all available models for variable ‘hurs’

for f in fname:
    data=db.read(time=int(get_timestep(timestamp)),quality=0,field=f)
    
    plt.title(f)
    plt.imshow(data,origin='lower')
    plt.colorbar()
    plt.show()