def setKDEOrigins(self, kdeOriginX=None, kdeOriginY=None, kdeOriginZ=None, outputPath=None): """set kde origin parameters """ if outputPath: try: self.x, self.y. self.z = grdRead(os.path.join(self.outputPath, 'originPDF.txt')) except IOError: self.logger.critical('Error! Files relating to KDE of cyclone origins does not exist. Execute KDE of cyclone origins first.') raise self._calculateCDF() #calculate CDF of (x,Px) and (y,Py) elif type(kdeOriginZ) == str: try: self.x = flLoadFile(kdeOriginX) self.y = flLoadFile(kdeOriginY) self.z = flLoadFile(kdeOriginZ) except IOError: self.logger.critical('Error! Files relating to CDF of cyclone parameters do not exist. Generate KDE of cyclone parameters first.') raise self._calculateCDF() # calculate CDF of (x,Px) and (y,Py) elif type(kdeOriginZ) == ndarray: self.x, self.y, self.z = grdRead(kdeOriginZ) self._calculateCDF() # calculate CDF of (x,Px) and (y,Py) else: self.logger.error("No input arguments") raise
def setKDEOrigins(self, kdeOriginX=None, kdeOriginY=None, kdeOriginZ=None, outputPath=None): """ Set kernel density estimation origin parameters. :param kdeOriginX: x coordinates of kde result generated from :class:`KDEOrigin` :param kdeOriginY: y coordinates of kde result generated from :class:`KDEOrigin` :param kdeOriginZ: z coordinates of kde result generated from :class:`KDEOrigin` :param outputPath: Path to output folder to load PDF file. :type kdeOriginX: str or :class:`numpy.ndarray` :type kdeOriginY: str or :class:`numpy.ndarray` :type kdeOriginZ: str or :class:`numpy.ndarray` :type outputPath: str """ if outputPath: try: self.x, self.y, self.z = grdRead( pjoin(self.outputPath, 'originPDF.txt')) except IOError: LOG.critical(('Error! Files relating to KDE of cyclone ' 'origins does not exist. Execute KDE of ' 'cyclone origins first.')) raise self._calculateCDF() elif isinstance(kdeOriginZ, str): try: self.x = flLoadFile(kdeOriginX) self.y = flLoadFile(kdeOriginY) self.z = flLoadFile(kdeOriginZ) except IOError: LOG.critical(('Error! Files relating to CDF of cyclone ' 'parameters do not exist. Generate KDE of ' 'cyclone parameters first.')) raise self._calculateCDF() elif isinstance(kdeOriginZ, np.ndarray): self.x, self.y, self.z = grdRead(kdeOriginZ) self._calculateCDF() else: LOG.error("No input arguments") raise
def __init__(self, kdeOrigin=None, x=None, y=None): """ Initialise the array of probabilities of genesis, plus the lon/lat arrays. """ if isinstance(kdeOrigin, str): LOG.debug("Loading PDF from %s", kdeOrigin) try: if kdeOrigin.endswith('nc'): self.x, self.y, self.z = grdReadFromNetcdf(kdeOrigin) else: self.x, self.y, self.z = grdRead(kdeOrigin) except IOError: LOG.critical(('Error! Files relating to cdf of cyclone ' 'parameters does not exist, please ' 'generate KDE of cyclone parameters ' 'first.')) raise self._calculateCDF() elif isinstance(kdeOrigin, np.ndarray): self.x = x self.y = y self.z = kdeOrigin self._calculateCDF() else: self.x = np.array([]) self.y = np.array([]) self.z = np.array([])
def __init__(self, kdeOrigin=None, x=None, y=None): """ Initialise the array of probabilities of genesis, plus the lon/lat arrays. """ self.logger=logging.getLogger() if type(kdeOrigin) == str: self.logger.debug("Loading PDF from %s"%kdeOrigin) try: if kdeOrigin.endswith('nc'): self.x, self.y, self.z = grdReadFromNetcdf(kdeOrigin) else: self.x, self.y, self.z = grdRead(kdeOrigin) except IOError: self.logger.critical('Error! Files relating to cdf of cyclone parameters does not exist, please generate KDE of cyclone parameters first.') raise self._calculateCDF() # calculate CDF of (x,Px) and (y,Py) elif type(kdeOrigin) == np.ndarray: self.x = x self.y = y self.z = kdeOrigin self._calculateCDF() # calculate CDF of (x,Px) and (y,Py) else: self.x = np.array([]) self.y = np.array([]) self.z = np.array([])
def test_grdRead(self): """Test grid data is read correctly from ascii file""" pfile = open(os.path.join(unittest_dir, 'test_data', 'gridReadTestData.pck'),'r') pdata = cPickle.load(pfile) plon = cPickle.load(pfile) plat = cPickle.load(pfile) pfile.close() lon, lat, data = grid.grdRead(self.gridfile) self.numpyAssertAlmostEqual(pdata, data)
def setKDEOrigins(self, kdeOriginX=None, kdeOriginY=None, kdeOriginZ=None, outputPath=None): """ Set kernel density estimation origin parameters. :param kdeOriginX: x coordinates of kde result generated from :class:`KDEOrigin` :param kdeOriginY: y coordinates of kde result generated from :class:`KDEOrigin` :param kdeOriginZ: z coordinates of kde result generated from :class:`KDEOrigin` :param outputPath: Path to output folder to load PDF file. :type kdeOriginX: str or :class:`numpy.ndarray` :type kdeOriginY: str or :class:`numpy.ndarray` :type kdeOriginZ: str or :class:`numpy.ndarray` :type outputPath: str """ if outputPath: try: self.x, self.y. self.z = grdRead(os.path.join(self.outputPath, 'originPDF.txt')) except IOError: self.logger.critical('Error! Files relating to KDE of cyclone origins does not exist. Execute KDE of cyclone origins first.') raise self._calculateCDF() #calculate CDF of (x,Px) and (y,Py) elif type(kdeOriginZ) == str: try: self.x = flLoadFile(kdeOriginX) self.y = flLoadFile(kdeOriginY) self.z = flLoadFile(kdeOriginZ) except IOError: self.logger.critical('Error! Files relating to CDF of cyclone parameters do not exist. Generate KDE of cyclone parameters first.') raise self._calculateCDF() # calculate CDF of (x,Px) and (y,Py) elif type(kdeOriginZ) == np.ndarray: self.x, self.y, self.z = grdRead(kdeOriginZ) self._calculateCDF() # calculate CDF of (x,Px) and (y,Py) else: self.logger.error("No input arguments") raise
def test_grdRead(self): """Test grid data is read correctly from ascii file""" pfile = open( os.path.join(unittest_dir, 'test_data', 'gridReadTestData.pck'), 'r') pdata = cPickle.load(pfile) plon = cPickle.load(pfile) plat = cPickle.load(pfile) pfile.close() lon, lat, data = grid.grdRead(self.gridfile) self.numpyAssertAlmostEqual(pdata, data)
def setUp(self): self.filename = os.path.join(TEST_DIR, 'test_data', 'landmask.nc') # Load the data using grid.grdRead: self.lslon, self.lslat, self.lsgrid = grid.grdRead(self.filename) # Load the data using nctools.ncLoadFile and nctools.ncGetData: ncobj = nctools.ncLoadFile(self.filename) self.nclon = nctools.ncGetDims(ncobj, 'lon') self.nclat = nctools.ncGetDims(ncobj, 'lat') self.ncgrid = nctools.ncGetData(ncobj, 'landmask') ncobj.close() # Set up an instance of SampleGrid: self.sample = grid.SampleGrid(self.filename) # Sample the land-sea mask at these points around the globe: self.xlon = [100., 130., 180., 250., 300.] self.ylat = [-80., -20., 40.] # Known point values of the land-sea mask data: self.ls = [3., 0., 3., 3., 3., 0., 3., 0., 0., 3., 0., 3., 3., 3., 0.]
def test_grdReadNetCDF(self): """Test grid data is read correctly from netCDF file""" lons, lats, press = grid.grdRead(self.ncfile) self.numpyAssertAlmostEqual(self.lon_check, lons) self.numpyAssertAlmostEqual(self.lat_check, lats) self.numpyAssertAlmostEqual(self.press_check, press)
def test_grdReadNetCDF(self): """Test grid data is read correctly from netCDF file""" lons,lats,press = grid.grdRead(self.ncfile) self.numpyAssertAlmostEqual(self.lon_check,lons) self.numpyAssertAlmostEqual(self.lat_check,lats) self.numpyAssertAlmostEqual(self.press_check,press)