61 if os.environ.get(
'LIBDIR')
is not None:
62 sys.path.append(os.environ[
'LIBDIR'])
68 name =
"Example-05a-python.hdf5",
69 mode = ioda.Engines.BackendCreateModes.Truncate_If_Exists)
98 newDims = [ioda.NewDimensionScale.int32(
'nlocs', numLocs, ioda.Unlimited, numLocs),
99 ioda.NewDimensionScale.int32(
'nchans', numChans, numChans, numChans)]
108 nlocsVar = og.vars.open(
'nlocs')
109 nchansVar = og.vars.open(
'nchans')
114 p1.compressWithGZIP()
115 p1.setFillValue.float(-999)
120 tbName =
"ObsValue/brightness_temperature"
121 latName =
"MetaData/latitude"
122 lonName =
"MetaData/longitude"
126 tbVar = g.vars.create(tbName, ioda.Types.float, scales=[nlocsVar, nchansVar], params=p1)
127 latVar = g.vars.create(latName, ioda.Types.float, scales=[nlocsVar], params=p1)
128 lonVar = g.vars.create(lonName, ioda.Types.float, scales=[nlocsVar], params=p1)
132 tbVar.atts.create(
"coordinates", ioda.Types.str, [1]).writeDatum.str(
"longitude latitude nchans")
133 tbVar.atts.create(
"long_name", ioda.Types.str, [1]).writeDatum.str(
"fictional brightness temperature")
134 tbVar.atts.create(
"units", ioda.Types.str, [1]).writeDatum.str(
"K")
135 tbVar.atts.create(
"valid_range", ioda.Types.float, [2]).writeVector.float([100.0, 400.0])
137 latVar.atts.create(
"long_name", ioda.Types.str, [1]).writeDatum.str(
"latitude")
138 latVar.atts.create(
"units", ioda.Types.str, [1]).writeDatum.str(
"degrees_north")
139 latVar.atts.create(
"valid_range", ioda.Types.float, [2]).writeVector.float([-90, 90])
141 lonVar.atts.create(
"long_name", ioda.Types.str, [1]).writeDatum.str(
"degrees_east")
142 lonVar.atts.create(
"units", ioda.Types.str, [1]).writeDatum.str(
"degrees_north")
143 lonVar.atts.create(
"valid_range", ioda.Types.float, [2]).writeVector.float([-360, 360])
150 midChan = numChans / 2
155 lonData = np.fromfunction(
lambda i: 3 * (i % 8), (numLocs,), dtype=float)
156 latData = np.fromfunction(
lambda i: 3 * (i // 8), (numLocs,), dtype=float)
159 tbData = np.fromfunction(
lambda iloc, ich: 250 + (((iloc - midLoc)**2 + (ich-midChan)**2))**0.5, (numLocs, numChans), dtype=float)
162 lonVar.writeNPArray.float(lonData)
163 latVar.writeNPArray.float(latData)
164 tbVar.writeNPArray.float(tbData)
static ObsGroup generate(Group &emptyGroup, const NewDimensionScales_t &fundamentalDims, std::shared_ptr< const detail::DataLayoutPolicy > layout=nullptr)
Create an empty ObsGroup and populate it with the fundamental dimensions.
IODA_DL Group createFile(const std::string &filename, BackendCreateModes mode, HDF5_Version_Range compat=defaultVersionRange())
Create a ioda::Group backed by an HDF5 file.
Used to specify Variable creation-time properties.