Source code for PseudoNetCDF.camxfiles.temperature.Write

import numpy as np
from PseudoNetCDF._getwriter import registerwriter

"""
hour,idate,((temps(i,j),i=1,nx),j=1,ny)
Loop from 1 to nlay layers:
    hour,idate,((temp(i,j,k),i=1,nx),j=1,ny)
"""


[docs] def ncf2temperature(ncffile, outpath): outfile = open(outpath, 'wb') sfc = ncffile.variables['SURFTEMP'] air = ncffile.variables['AIRTEMP'] nz, nr, nc = air.shape[-3:] nelem = nr * nc * 4 + 8 for di, (d, t) in enumerate(ncffile.variables['TFLAG'][:, 0]): t = np.array(t / 100, ndmin=1, dtype='>f') d = np.array(d, ndmin=1).astype('>i') d = (d % (d // 100000 * 100000)).astype('>i') buf = np.array(nelem, dtype='>i').tobytes() outfile.write(buf) t.tofile(outfile) d.tofile(outfile) sfc[di].astype('>f').tofile(outfile) outfile.write(buf) for zi in range(nz): outfile.write(buf) t.tofile(outfile) d.tofile(outfile) air[di, zi].astype('>f').tofile(outfile) outfile.write(buf) outfile.flush() return outfile
registerwriter('camxfiles.temperature', ncf2temperature) registerwriter('temperature', ncf2temperature)