How to create a JSON file?
JSON is an open standard file format an data interchange format that uses human-readable text to store and transmit data object.
You can click here to find more information of JSON.
Please check here for CESM1 variables and here for CESM2 variables
{
"model": "cesm1",
"urban_type": "md",
"city_loc": {"lat": 40.1164, "lon": -88.2434},
"l_component": "lnd",
"a_component": "atm",
"experiment": "RCP85",
"frequency": "daily",
"cam_ls": ["TREFHT", "TREFHTMX", "FLNS", "FSNS", "PRECSC", "PRECSL", "PRECT", "QBOT", "UBOT", "VBOT"],
"clm_ls": ["TREFMXAV_U"],
"forcing_variant": "cmip6",
"time_start": "2081-01-02",
"time_end": "2100-12-31",
"member_id": [2],
"estimator_list": ["lgbm", "xgboost", "rf", "extra_tree"],
"time_budget": 15,
"features": ["FLNS", "FSNS", "PRECT", "PRSN", "QBOT", "TREFHT", "UBOT", "VBOT"],
"label": ["TREFMXAV_U"]
}
where
model : string
"cesm1" or "cesm2"
urban_type : string
e.g., "tbd" (Tall Building District), "hd" (High Density), and "md" (Medium Density)
city_loc : dict
a dict of a city's lat and lon that we are interested in , e.g., {'lat': 40.1164, 'lon': -88.2434}
l_component : str, optional
component name of CLM, by default "lnd"
a_component : str, optional
component name of CAM, by default "atm"
experiment : string
e.g., "RCP85" (RCP 8.5 runs)
frequency : string
e.g., "daily" or "monthly"
cam_ls : a list of string
CAM (atmospheric forcing) variables, e.g., ["TREFHT", "TREFHTMX", "FLNS", "FSNS"]
clm_ls : a list of string
CLM (land) variables, e.g., ["TREFMXAV_U"] (Urban daily maximum of average 2-m temperature)
forcing_variant : string
the biomass forcing variant, e.g.,
"cmip6" (the default in the cmip6 runs),
"smbb" (smoothed biomass burning)
time_start: string
start date, e.g., "2081-01-02"
time_end: string
end date, e.g., "2100-12-31"
member_id : a list of int
CESM1 large ensemble member ID, e.g., [2,3]
estimator_list : a list of string
a list of strings for estimator names, e.g., ["lgbm", "xgboost", "rf", "extra_tree"], or 'auto'
time_budget : int
total running time in seconds, e.g., 15
features : a list of string
features (predictors) for machine learning, it should be a subset of "cam_ls"
label: a list of string (currently we only support a single element within the list)
label for machine learning, "label" means something we want to predict, e.g., ["TREFMXAV_U"]
How to save a JSON file using Python
Note: please pay attention to the difference between CESM1 and CESM2
[1]:
import json
# CESM1
cesm1 = {
"model": "cesm1",
"urban_type": "md",
"city_loc": {"lat": 40.1164, "lon": -88.2434},
"l_component": "lnd",
"a_component": "atm",
"experiment": "RCP85",
"frequency": "daily",
"cam_ls": ["TREFHT", "TREFHTMX", "FLNS", "FSNS", "PRECSC", "PRECSL", "PRECT", "QBOT", "UBOT", "VBOT"],
"clm_ls": ["TREFMXAV_U"],
"forcing_variant": "cmip6",
"time_start": "2081-01-02",
"time_end": "2100-12-31",
"member_id": [2],
"estimator_list": ["lgbm", "xgboost", "rf", "extra_tree"],
"time_budget": 15,
"features": ["FLNS", "FSNS", "PRECT", "PRSN", "QBOT", "TREFHT", "UBOT", "VBOT"],
"label": ["TREFMXAV_U"]
}
# CESM2
cesm2 = {
"model": "cesm2",
"urban_type": "md",
"city_loc": {"lat": 40.1164, "lon": -88.2434},
"l_component": "lnd",
"a_component": "atm",
"experiment": "ssp370",
"frequency": "daily",
"cam_ls": ["TREFHT", "TREFHTMX", "FLNS", "FSNS", "PRECSC", "PRECSL", "PRECC", "PRECL"],
"clm_ls": ["TREFMXAV"],
"forcing_variant": "cmip6",
"time_start": "2081-01-02",
"time_end": "2100-12-31",
"member_id": ["r1i1231p1f1"],
"estimator_list": ["lgbm", "xgboost", "rf", "extra_tree"],
"time_budget": 15,
"features": ["FLNS", "FSNS", "PRECT", "PRSN", "TREFHT"],
"label": ["TREFMXAV"]
}
with open("./config_cesm1.json", "w") as outfile:
json.dump(cesm1, outfile, indent=4)
with open("./config_cesm2.json", "w") as outfile:
json.dump(cesm2, outfile, indent=4)
How to load a JSON file using Python
[2]:
# CESM 1
with open("./config_cesm1.json",'r') as load_f:
param = json.load(load_f)
param
[2]:
{'model': 'cesm1',
'urban_type': 'md',
'city_loc': {'lat': 40.1164, 'lon': -88.2434},
'l_component': 'lnd',
'a_component': 'atm',
'experiment': 'RCP85',
'frequency': 'daily',
'cam_ls': ['TREFHT',
'TREFHTMX',
'FLNS',
'FSNS',
'PRECSC',
'PRECSL',
'PRECT',
'QBOT',
'UBOT',
'VBOT'],
'clm_ls': ['TREFMXAV_U'],
'forcing_variant': 'cmip6',
'time_start': '2081-01-02',
'time_end': '2100-12-31',
'member_id': [2],
'estimator_list': ['lgbm', 'xgboost', 'rf', 'extra_tree'],
'time_budget': 15,
'features': ['FLNS',
'FSNS',
'PRECT',
'PRSN',
'QBOT',
'TREFHT',
'UBOT',
'VBOT'],
'label': ['TREFMXAV_U']}