Source code for PseudoNetCDF.camxfiles.one3d.Write

__all__ = ['ncf2one3d']
__doc__ = """
.. _Write
:mod:`Write` -- CAMx one3d writer
============================================

.. module:: Write
   :platform: Unix, Windows
   :synopsis: Provides :ref:`PseudoNetCDF` writer for CAMx generic
              1 3D variable files.  See PseudoNetCDF.sci_var.PseudoNetCDFFile
              for interface details
.. moduleauthor:: Barron Henderson <barronh@unc.edu>
"""

from numpy import array
from PseudoNetCDF._getwriter import registerwriter


[docs] def ncf2one3d(ncffile, outpath, key=None, tflag='TFLAG'): outfile = open(outpath, 'wb') keys = ncffile.variables.keys() if key is None: key, = [k for k in keys if k != 'TFLAG'] for (d, t), v3d in zip(ncffile.variables[tflag][:, 0, :], ncffile.variables[key]): t = array(t.astype('>f') / 100, ndmin=1).astype('>f') d = array(d, ndmin=1).astype('>i') d = (d % (d // 100000 * 100000)).astype('>i') for v2d in v3d: v2d = v2d.astype('>f') buf = array((v2d.size + 2) * 4, ndmin=1).astype('>i').tobytes() outfile.write(buf + t.tobytes() + d.tobytes() + v2d.tobytes() + buf) outfile.flush() return outfile
registerwriter('camxfiles.one3d', ncf2one3d) registerwriter('one3d', ncf2one3d)