예제 #1
0
 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
예제 #2
0
    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
예제 #3
0
 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([])
예제 #4
0
    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([])
예제 #5
0
 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)
예제 #6
0
    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
예제 #7
0
 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)
예제 #8
0
 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.]
예제 #9
0
 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.]
예제 #10
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)
예제 #11
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)