Module cvtool.CMORlib.variable_autotest
Expand source code
import cmor
import numpy as np
def lmap(f, x):
"""
Apply function `f` to each element of iterable `x` and return the results as a list.
Parameters:
f (callable): A function to be applied to each element.
x (iterable): An iterable containing elements to be processed.
Returns:
list: A list containing the results of applying function `f` to each element of `x`.
"""
return list(map(f, x))
def main(dataset_in,table):
cmor.setup(
inpath = baseLocation, #'Tables',
netcdf_file_action = cmor.CMOR_REPLACE_4,
set_verbosity= cmor.CMOR_QUIET
)
cmor.dataset_json(dataset_in)
cmor.load_table(table)
inputDict= json.load(open(dataset_in))
coordDict = json.load(open(inputDict["_AXIS_ENTRY_FILE"]))["axis_entry"]
tableDict = json.load(open(f'{baseLocation}{table}'))
vars = tableDict['variable_entry']
data = []
axis = []
for dims in vars[v]['dimensions'].split():
print('-', dims, '-')
d = coordDict[dims]
if 'time' in dims:
ax = dict(table_entry=dims, units='days since 2000-01-01 00:00:00')
print(ax)
axis_id = cmor.axis(**ax)
axis.append(axis_id)
data.append(1.)
else:
try:
bounds = [float(d['valid_min']), float(d['valid_max'])]
data.append(sum(bounds) / 2.)
ax = dict(table_entry=dims, units=d['units'], cell_bounds=bounds, coord_vals=[sum(bounds) / 2.])
print(ax)
axis_id = cmor.axis(**ax)
axis.append(axis_id)
except Exception as e:
print(e)
...
ivar = cmor.variable(v, units=vars[v]['units'], axis_ids=axis)
cmor.write(ivar, data)
axis,data,vars[v]['units']
cmor.close()
if __name__ == '__main__':
import argparse
defaults = {
'MIPname': 'input4MIPs',
'baseLocation': '../Tables/',
'writeLocation': './InputFiles/',
'sourceId': 'CCSM4-rcp26-1-0',
'activityId': 'input4MIPs',
'region': 'antarctica',
'experimentId': 'testingtestingtesting'
}
parser = argparse.ArgumentParser()
parser.add_argument('--MIPname', default=defaults['MIPname'], help='MIP name')
parser.add_argument('--baseLocation', default=defaults['baseLocation'], help='Base location')
parser.add_argument('--writeLocation', default=defaults['writeLocation'], help='Write location')
parser.add_argument('--sourceId', default=defaults['sourceId'], help='Source ID')
parser.add_argument('--activityId', default=defaults['activityId'], help='Activity ID')
parser.add_argument('--region', default=defaults['region'], help='Region')
parser.add_argument('--experimentId', default=defaults['experimentId'], help='Experiment ID')
args = parser.parse_args()
MIPname = args.MIPname
baseLocation = args.baseLocation
writeLocation = args.writeLocation
sourceId = args.sourceId
activityId = args.activityId
region = args.region
experimentId = args.experimentId
table = f"{MIPname}_Omon.json"
# I create a new input file for testing/
from new_Input import create
newinput = create(MIPname,sourceId,experimentId,activityId, region, baseLocation,writeLocation)
main(newinput,table)
Functions
def lmap(f, x)-
Apply function
fto each element of iterablexand return the results as a list.Parameters: f (callable): A function to be applied to each element. x (iterable): An iterable containing elements to be processed.
Returns: list: A list containing the results of applying function
fto each element ofx.Expand source code
def lmap(f, x): """ Apply function `f` to each element of iterable `x` and return the results as a list. Parameters: f (callable): A function to be applied to each element. x (iterable): An iterable containing elements to be processed. Returns: list: A list containing the results of applying function `f` to each element of `x`. """ return list(map(f, x)) def main(dataset_in, table)-
Expand source code
def main(dataset_in,table): cmor.setup( inpath = baseLocation, #'Tables', netcdf_file_action = cmor.CMOR_REPLACE_4, set_verbosity= cmor.CMOR_QUIET ) cmor.dataset_json(dataset_in) cmor.load_table(table) inputDict= json.load(open(dataset_in)) coordDict = json.load(open(inputDict["_AXIS_ENTRY_FILE"]))["axis_entry"] tableDict = json.load(open(f'{baseLocation}{table}')) vars = tableDict['variable_entry'] data = [] axis = [] for dims in vars[v]['dimensions'].split(): print('-', dims, '-') d = coordDict[dims] if 'time' in dims: ax = dict(table_entry=dims, units='days since 2000-01-01 00:00:00') print(ax) axis_id = cmor.axis(**ax) axis.append(axis_id) data.append(1.) else: try: bounds = [float(d['valid_min']), float(d['valid_max'])] data.append(sum(bounds) / 2.) ax = dict(table_entry=dims, units=d['units'], cell_bounds=bounds, coord_vals=[sum(bounds) / 2.]) print(ax) axis_id = cmor.axis(**ax) axis.append(axis_id) except Exception as e: print(e) ... ivar = cmor.variable(v, units=vars[v]['units'], axis_ids=axis) cmor.write(ivar, data) axis,data,vars[v]['units'] cmor.close()