Source code for PseudoNetCDF.camxfiles.cloud_rain.Write

__all__ = ['ncf2cloud_rain']

import numpy as np
from PseudoNetCDF._getwriter import registerwriter


[docs] def ncf2cloud_rain(ncffile, outpath, tflag='TFLAG'): outfile = open(outpath, 'wb') varkeys = [vk for vk in ['CLOUD', 'PRECIP', 'RAIN', 'SNOW', 'GRAUPEL', 'COD'] if vk in ncffile.variables.keys()] buf = np.array(len(ncffile.FILEDESC) + 12, dtype='>i').tobytes() outfile.write(buf) outfile.write(np.array(ncffile.FILEDESC, dtype='c')) nxcl = len(ncffile.dimensions['COL']) nycl = len(ncffile.dimensions['ROW']) nzcl = len(ncffile.dimensions['LAY']) outfile.write(np.array([nxcl, nycl, nzcl], dtype='>i')) outfile.write(buf) for di, (d, t) in enumerate(ncffile.variables[tflag][:, 0, :]): t = np.array(t.astype('>f') / 100, ndmin=1).astype('>f') d = np.array(d, ndmin=1).astype('>i') d = (d % (d // 100000 * 100000)).astype('>i') buf = np.array(8, dtype='>i').tobytes() outfile.write(buf + t.tobytes() + d.tobytes() + buf) for zi in range(nzcl): for varkey in varkeys: vals = ncffile.variables[varkey][di, zi].astype('>f') buf = np.array((vals.size) * 4, ndmin=1).astype('>i') buf = buf.tobytes() outfile.write(buf) vals.tofile(outfile) outfile.write(buf) outfile.flush() return outfile
registerwriter('camxfiles.cloud_rain', ncf2cloud_rain) registerwriter('cloud_rain', ncf2cloud_rain)