Source code for PseudoNetCDF.camxfiles.humidity.Memmap

__all__ = ['humidity']
__doc__ = """
.. _Memmap
:mod:`Memmap` -- humidity Memmap interface
============================================

.. module:: Memmap
   :platform: Unix, Windows
   :synopsis: Provides :ref:`PseudoNetCDF` memory map for CAMx
              humidity files.  See PseudoNetCDF.sci_var.PseudoNetCDFFile
              for interface details
.. moduleauthor:: Barron Henderson <barronh@unc.edu>
"""

# Distribution packages
import unittest
import struct

# Site-Packages
from numpy import zeros, array

# This Package modules
from PseudoNetCDF.camxfiles.one3d.Memmap import one3d

# for use in identifying uncaught nan
listnan = struct.unpack('>f', b'\xff\xc0\x00\x00')[0]
checkarray = zeros((1,), 'f')
checkarray[0] = listnan
array_nan = checkarray[0]


[docs] class humidity(one3d): """ humidity provides a PseudoNetCDF interface for CAMx humidity files. Where possible, the inteface follows IOAPI conventions (see www.baronams.com). ex: >>> humidity_path = 'camx_humidity.bin' >>> rows,cols = 65,83 >>> humidityfile = humidity(humidity_path,rows,cols) >>> humidityfile.variables.keys() ['TFLAG', 'HUM'] >>> v = humidityfile.variables['HUM'] >>> tflag = humidityfile.variables['TFLAG'] >>> tflag.dimensions ('TSTEP', 'VAR', 'DATE-TIME') >>> tflag[0,0,:] array([2005185, 0]) >>> tflag[-1,0,:] array([2005185, 240000]) >>> v.dimensions ('TSTEP', 'LAY', 'ROW', 'COL') >>> v.shape (25, 28, 65, 83) >>> humidityfile.dimensions {'TSTEP': 25, 'LAY': 28, 'ROW': 65, 'COL': 83} """ var_name = 'HUM' units = 'ppm'
class TestMemmap(unittest.TestCase): def runTest(self): pass def setUp(self): pass def testHUM(self): import PseudoNetCDF.testcase humfile = humidity( PseudoNetCDF.testcase.camxfiles_paths['humidity'], 4, 5) humfile.variables['TFLAG'] checkv = array([3.38721924e+01, 3.40657959e+01, 3.41392822e+01, 3.42358398e+01, 3.42543945e+01, 3.38868408e+01, 3.40622559e+01, 3.42358398e+01, 3.44768066e+01, 3.46112061e+01, 3.37558594e+01, 3.39323730e+01, 3.42663574e+01, 3.46854248e+01, 3.48144531e+01, 3.39472656e+01, 3.41900635e+01, 3.46160889e+01, 3.48209229e+01, 3.47874756e+01, 8.18692688e+02, 8.31423950e+02, 8.35911926e+02, 8.41317688e+02, 8.42154602e+02, 8.19450806e+02, 8.31168518e+02, 8.42139709e+02, 8.57428589e+02, 8.65724854e+02, 8.10228210e+02, 8.21361023e+02, 8.42930908e+02, 8.71891541e+02, 8.80794861e+02, 8.22559692e+02, 8.37773499e+02, 8.67419128e+02, 8.81912903e+02, 8.79253235e+02, 6.78652344e+01, 6.82532959e+01, 6.84020996e+01, 6.85950928e+01, 6.86304932e+01, 6.78945312e+01, 6.82465820e+01, 6.85941162e+01, 6.90783691e+01, 6.93474121e+01, 6.76313477e+01, 6.79859619e+01, 6.86558838e+01, 6.94960938e+01, 6.97552490e+01, 6.80159912e+01, 6.85028076e+01, 6.93570557e+01, 6.97674561e+01, 6.97009277e+01, 3.38721924e+01, 3.40657959e+01, 3.41392822e+01, 3.42358398e+01, 3.42543945e+01, 3.38868408e+01, 3.40622559e+01, 3.42358398e+01, 3.44768066e+01, 3.46112061e+01, 3.37558594e+01, 3.39323730e+01, 3.42663574e+01, 3.46854248e+01, 3.48144531e+01, 3.39472656e+01, 3.41900635e+01, 3.46160889e+01, 3.48209229e+01, 3.47874756e+01, 8.18909973e+02, 8.31444763e+02, 8.36043457e+02, 8.42020325e+02, 8.42962769e+02, 8.19678955e+02, 8.31006470e+02, 8.42196716e+02, 8.58089050e+02, 8.66791565e+02, 8.10734680e+02, 8.21652527e+02, 8.43171753e+02, 8.72346680e+02, 8.81473267e+02, 8.23317078e+02, 8.38317505e+02, 8.67773499e+02, 8.82287720e+02, 8.79729065e+02, 6.78652344e+01, 6.82532959e+01, 6.84020996e+01, 6.85950928e+01, 6.86304932e+01, 6.78945312e+01, 6.82465820e+01, 6.85941162e+01, 6.90783691e+01, 6.93474121e+01, 6.76313477e+01, 6.79859619e+01, 6.86558838e+01, 6.94960938e+01, 6.97552490e+01, 6.80159912e+01, 6.85028076e+01, 6.93570557e+01, 6.97674561e+01, 6.97009277e+01], dtype='f').reshape(2, 3, 4, 5) self.assertTrue((humfile.variables['HUM'] == checkv).all()) def testNCF2HUM(self): import PseudoNetCDF.testcase from PseudoNetCDF.pncgen import pncgen import os inpath = PseudoNetCDF.testcase.camxfiles_paths['humidity'] outpath = PseudoNetCDF.testcase.camxfiles_paths['humidity'] + '.check' infile = humidity(inpath, 4, 5) pncgen(infile, outpath, format='camxfiles.humidity') orig = open(inpath, 'rb').read() new = open(outpath, 'rb').read() assert (orig == new) os.remove(outpath) if __name__ == '__main__': unittest.main()