8 from argparse
import ArgumentParser, ArgumentDefaultsHelpFormatter
10 from pathlib
import Path
11 from datetime
import datetime
15 IODA_CONV_PATH = Path(__file__).parent/
"@SCRIPT_LIB_PATH@"
16 if not IODA_CONV_PATH.is_dir():
17 IODA_CONV_PATH = Path(__file__).parent/
'..'/
'lib-python'
18 sys.path.append(
str(IODA_CONV_PATH.resolve()))
21 import ioda_conv_ncio
as iconv
22 from orddicts
import DefaultOrderedDict
36 with open(yamlfile,
'r')
as stream:
37 yamlconfig = yaml.safe_load(stream)
38 self.
filenamefilename = yamlconfig[
'obsdataout']
41 'date_time_string': yamlconfig[
'lockeys'][
'datetime']
45 for key
in yamlconfig[
'lockeys'].keys():
46 value = yamlconfig[
'lockeys'][key]
55 value = yamlconfig[
'variable'][
'name']
56 self.
keyDictkeyDict[key][
'valKey'] = value, self.
writerwriter.OvalName()
57 self.
keyDictkeyDict[key][
'errKey'] = value, self.
writerwriter.OerrName()
58 self.
keyDictkeyDict[key][
'qcKey'] = value, self.
writerwriter.OqcName()
61 locKey = tuple(locKeys)
62 self.
datadata[0][locKey][self.
keyDictkeyDict[key][
'valKey']] = float(yamlconfig[
'variable'][
'obsvalue'])
63 self.
datadata[0][locKey][self.
keyDictkeyDict[key][
'errKey']] = float(yamlconfig[
'variable'][
'obserr'])
64 self.
datadata[0][locKey][self.
keyDictkeyDict[key][
'qcKey']] =
int(yamlconfig[
'variable'][
'preqc'])
67 (ObsVars, LocMdata, VarMdata) = self.
writerwriter.ExtractObsData(self.
datadata)
68 self.
writerwriter.BuildNetcdf(ObsVars, LocMdata, VarMdata, self.
AttrDataAttrData)
74 desc =
'Generate single observation IODA file from YAML input'
75 parser = ArgumentParser(
77 formatter_class=ArgumentDefaultsHelpFormatter)
79 '-y',
'--yaml', help=
'path to input YAML file', type=str, required=
True)
81 args = parser.parse_args()
88 if __name__ ==
'__main__':
def __init__(self, yamlfile)