Пример #1
0
    def setUp(self):
        # define global variables
        self.hmet_read_directory = os.path.join(self.readDirectory,
                                                "erai_hmet_data")
        self.hmet_write_directory = os.path.join(self.writeDirectory,
                                                 "erai_hmet_data")
        self.gssha_project_folder = os.path.join(self.writeDirectory,
                                                 "gssha_project")
        # create folder to dump output HMET into
        try:
            os.mkdir(self.hmet_write_directory)
        except OSError:
            pass

        # copy gssha project & WRF data
        try:
            copytree(os.path.join(self.readDirectory, "gssha_project"),
                     self.gssha_project_folder)
        except OSError:
            pass
        try:
            copytree(os.path.join(self.readDirectory, "erai_raw_data"),
                     os.path.join(self.writeDirectory, "erai_raw_data"))
        except OSError:
            pass

        self.data_var_map_array = [
            ['precipitation_inc', 'tp'],
            ['pressure', 'sp'],
            ['relative_humidity_dew', ['d2m', 't2m']],
            ['wind_speed', ['u10', 'v10']],
            ['direct_radiation_j', ['ssrd', 'tcc']],
            ['diffusive_radiation_j', ['ssrd', 'tcc']],
            ['temperature', 't2m'],
            ['cloud_cover', 'tcc'],
        ]

        erai_folder = os.path.join(self.writeDirectory, 'erai_raw_data')
        # from datetime import datetime
        self.l2g = ERAtoGSSHA(
            gssha_project_folder=self.gssha_project_folder,
            gssha_project_file_name='grid_standard.prj',
            lsm_input_folder_path=erai_folder,
            # download_end_datetime=datetime(2016, 1, 4),
            # download_start_datetime=datetime(2016, 1, 2)
        )
Пример #2
0
    def setUp(self):
        # define global variables
        self.hmet_read_directory = os.path.join(self.readDirectory,
                                                "erai_hmet_data")
        self.hmet_write_directory = os.path.join(self.writeDirectory,
                                                 "erai_hmet_data")
        self.gssha_project_folder = os.path.join(self.writeDirectory,
                                                 "gssha_project")
        # create folder to dump output HMET into
        try:
            os.mkdir(self.hmet_write_directory)
        except OSError:
            pass

        # copy gssha project & WRF data
        try:
            copytree(os.path.join(self.readDirectory, "gssha_project"),
                     self.gssha_project_folder)
        except OSError:
            pass
        try:
            copytree(os.path.join(self.readDirectory, "erai_raw_data"),
                     os.path.join(self.writeDirectory, "erai_raw_data"))
        except OSError:
            pass

        self.data_var_map_array = [
           ['precipitation_inc', 'tp'],
           ['pressure', 'sp'],
           ['relative_humidity_dew', ['d2m','t2m']],
           ['wind_speed', ['u10', 'v10']],
           ['direct_radiation_j', ['ssrd', 'tcc']],
           ['diffusive_radiation_j', ['ssrd', 'tcc']],
           ['temperature', 't2m'],
           ['cloud_cover', 'tcc'],
        ]

        erai_folder = os.path.join(self.writeDirectory, 'erai_raw_data')
        # from datetime import datetime
        self.l2g = ERAtoGSSHA(gssha_project_folder=self.gssha_project_folder,
                              gssha_project_file_name='grid_standard.prj',
                              lsm_input_folder_path=erai_folder,
                              # download_end_datetime=datetime(2016, 1, 4),
                              # download_start_datetime=datetime(2016, 1, 2)
                              )
Пример #3
0
class TestERA5toGSSHA(TestGridTemplate):
    def setUp(self):
        # define global variables
        self.hmet_read_directory = os.path.join(self.readDirectory,
                                                "era5_hmet_data")
        self.hmet_write_directory = os.path.join(self.writeDirectory,
                                                 "era5_hmet_data")
        self.gssha_project_folder = os.path.join(self.writeDirectory,
                                                 "gssha_project")
        # create folder to dump output HMET into
        try:
            os.mkdir(self.hmet_write_directory)
        except OSError:
            pass

        # copy gssha project & WRF data
        try:
            copytree(os.path.join(self.readDirectory, "gssha_project"),
                     self.gssha_project_folder)
        except OSError:
            pass
        try:
            copytree(os.path.join(self.readDirectory, "era5_raw_data"),
                     os.path.join(self.writeDirectory, "era5_raw_data"))
        except OSError:
            pass

        self.data_var_map_array = [
            ['precipitation_inc', 'tp'],
            ['pressure', 'sp'],
            ['relative_humidity_dew', ['d2m', 't2m']],
            ['wind_speed', ['u10', 'v10']],
            ['direct_radiation_j', ['ssrd', 'tcc']],
            ['diffusive_radiation_j', ['ssrd', 'tcc']],
            ['temperature', 't2m'],
            ['cloud_cover', 'tcc'],
        ]

        era5_folder = os.path.join(self.writeDirectory, 'era5_raw_data')
        self.l2g = ERAtoGSSHA(
            gssha_project_folder=self.gssha_project_folder,
            gssha_project_file_name='grid_standard.prj',
            lsm_input_folder_path=era5_folder,
        )

    def _before_teardown(self):
        self.l2g.xd.close()
        self.l2g = None

    def test_era5_gage_file_write(self):
        """
        Test ERA5 lsm_precip_to_gssha_precip_gage write method
        """
        out_gage_file = os.path.join(self.writeDirectory, 'gage_test_era5.gag')
        self.l2g.lsm_precip_to_gssha_precip_gage(out_gage_file,
                                                 lsm_data_var='tp',
                                                 precip_type='GAGES')
        # Test
        compare_gag_file = os.path.join(self.readDirectory,
                                        'gage_test_era5.gag')
        self._compare_files(out_gage_file, compare_gag_file, precision=5)

    def test_era5_netcdf_file_write(self):
        """
        Test ERA5 lsm_data_to_subset_netcdf write method
        """
        netcdf_file_path = os.path.join(self.writeDirectory,
                                        'gssha_dynamic_era5.nc')
        self.l2g.lsm_data_to_subset_netcdf(netcdf_file_path,
                                           self.data_var_map_array)

        # compare netcdf files
        self._compare_netcdf_files("gssha_dynamic_era5", "gssha_dynamic_era5")

    def test_era5_ascii_file_write(self):
        """
        Test ERA5 lsm_data_to_arc_ascii write method
        """
        self.l2g.lsm_data_to_arc_ascii(self.data_var_map_array,
                                       self.hmet_write_directory)

        # Compare all files
        compare_directory = os.path.join(self.readDirectory, "era5_hmet_data")
        self._compare_directories(self.hmet_write_directory,
                                  compare_directory,
                                  ignore_file="hmet_file_list.txt",
                                  raster=True)
Пример #4
0
class TestERAItoGSSHA(TestGridTemplate):
    def setUp(self):
        # define global variables
        self.hmet_read_directory = os.path.join(self.readDirectory,
                                                "erai_hmet_data")
        self.hmet_write_directory = os.path.join(self.writeDirectory,
                                                 "erai_hmet_data")
        self.gssha_project_folder = os.path.join(self.writeDirectory,
                                                 "gssha_project")
        # create folder to dump output HMET into
        try:
            os.mkdir(self.hmet_write_directory)
        except OSError:
            pass

        # copy gssha project & WRF data
        try:
            copytree(os.path.join(self.readDirectory, "gssha_project"),
                     self.gssha_project_folder)
        except OSError:
            pass
        try:
            copytree(os.path.join(self.readDirectory, "erai_raw_data"),
                     os.path.join(self.writeDirectory, "erai_raw_data"))
        except OSError:
            pass

        self.data_var_map_array = [
            ['precipitation_inc', 'tp'],
            ['pressure', 'sp'],
            ['relative_humidity_dew', ['d2m', 't2m']],
            ['wind_speed', ['u10', 'v10']],
            ['direct_radiation_j', ['ssrd', 'tcc']],
            ['diffusive_radiation_j', ['ssrd', 'tcc']],
            ['temperature', 't2m'],
            ['cloud_cover', 'tcc'],
        ]

        erai_folder = os.path.join(self.writeDirectory, 'erai_raw_data')
        # from datetime import datetime
        self.l2g = ERAtoGSSHA(
            gssha_project_folder=self.gssha_project_folder,
            gssha_project_file_name='grid_standard.prj',
            lsm_input_folder_path=erai_folder,
            # download_end_datetime=datetime(2016, 1, 4),
            # download_start_datetime=datetime(2016, 1, 2)
        )

    def _before_teardown(self):
        self.l2g.xd.close()
        self.l2g = None

    @pytest.mark.xfail(reason="Arrays are not almost equal to 5 decimals.")
    def test_erai_gage_file_write(self):
        """
        Test ERA Interim lsm_precip_to_gssha_precip_gage write method
        """
        out_gage_file = os.path.join(self.writeDirectory, 'gage_test_erai.gag')
        self.l2g.lsm_precip_to_gssha_precip_gage(out_gage_file,
                                                 lsm_data_var='tp',
                                                 precip_type='GAGES')
        # Test
        compare_gag_file = os.path.join(self.readDirectory,
                                        'gage_test_erai.gag')
        self._compare_files(out_gage_file, compare_gag_file, precision=5)

    @pytest.mark.xfail(reason="Arrays are not almost equal to 4 decimals.")
    def test_erai_netcdf_file_write(self):
        """
        Test ERA Interim lsm_data_to_subset_netcdf write method
        """
        netcdf_file_path = os.path.join(self.writeDirectory,
                                        'gssha_dynamic_erai.nc')
        self.l2g.lsm_data_to_subset_netcdf(netcdf_file_path,
                                           self.data_var_map_array)

        # compare netcdf files
        self._compare_netcdf_files("gssha_dynamic_erai", "gssha_dynamic_erai")

    @pytest.mark.xfail(reason="Arrays are not almost equal to 7 decimals.")
    def test_erai_ascii_file_write(self):
        """
        Test ERA Interim lsm_data_to_arc_ascii write method
        """
        self.l2g.lsm_data_to_arc_ascii(self.data_var_map_array,
                                       self.hmet_write_directory)

        # Compare all files
        compare_directory = os.path.join(self.readDirectory, "erai_hmet_data")
        self._compare_directories(self.hmet_write_directory,
                                  compare_directory,
                                  ignore_file="hmet_file_list.txt",
                                  raster=True)

    @pytest.mark.xfail(reason="Arrays are not almost equal to 5 decimals.")
    def test_erai_grid_snow_file_write(self):
        """
        Test lsm_var_to_grid write method
        """
        out_grid_file = os.path.join(self.writeDirectory, 'swe_grid_erai.asc')
        self.l2g.lsm_var_to_grid(out_grid_file=out_grid_file,
                                 lsm_data_var='sp',
                                 gssha_convert_var='swe')

        # Test
        compare_grid_file = os.path.join(self.readDirectory,
                                         'swe_grid_erai.asc')
        self._compare_files(out_grid_file, compare_grid_file, precision=5)

    @pytest.mark.xfail(reason="Arrays are not almost equal to 5 decimals.")
    def test_erai_grid_snow_file_write_time(self):
        """
        Test WRF lsm_var_to_grid write method
        """
        out_grid_file = os.path.join(self.writeDirectory, 'swe_grid_erai.asc')
        self.l2g.lsm_var_to_grid(out_grid_file=out_grid_file,
                                 lsm_data_var='sp',
                                 gssha_convert_var='swe',
                                 time_step=datetime(2016, 1, 2))

        # Test
        compare_grid_file = os.path.join(self.readDirectory,
                                         'swe_grid_erai.asc')
        self._compare_files(out_grid_file, compare_grid_file, precision=5)
Пример #5
0
class TestERAItoGSSHA(TestGridTemplate):
    def setUp(self):
        # define global variables
        self.hmet_read_directory = os.path.join(self.readDirectory,
                                                "erai_hmet_data")
        self.hmet_write_directory = os.path.join(self.writeDirectory,
                                                 "erai_hmet_data")
        self.gssha_project_folder = os.path.join(self.writeDirectory,
                                                 "gssha_project")
        # create folder to dump output HMET into
        try:
            os.mkdir(self.hmet_write_directory)
        except OSError:
            pass

        # copy gssha project & WRF data
        try:
            copytree(os.path.join(self.readDirectory, "gssha_project"),
                     self.gssha_project_folder)
        except OSError:
            pass
        try:
            copytree(os.path.join(self.readDirectory, "erai_raw_data"),
                     os.path.join(self.writeDirectory, "erai_raw_data"))
        except OSError:
            pass

        self.data_var_map_array = [
           ['precipitation_inc', 'tp'],
           ['pressure', 'sp'],
           ['relative_humidity_dew', ['d2m','t2m']],
           ['wind_speed', ['u10', 'v10']],
           ['direct_radiation_j', ['ssrd', 'tcc']],
           ['diffusive_radiation_j', ['ssrd', 'tcc']],
           ['temperature', 't2m'],
           ['cloud_cover', 'tcc'],
        ]

        erai_folder = os.path.join(self.writeDirectory, 'erai_raw_data')
        # from datetime import datetime
        self.l2g = ERAtoGSSHA(gssha_project_folder=self.gssha_project_folder,
                              gssha_project_file_name='grid_standard.prj',
                              lsm_input_folder_path=erai_folder,
                              # download_end_datetime=datetime(2016, 1, 4),
                              # download_start_datetime=datetime(2016, 1, 2)
                              )

    def _before_teardown(self):
        self.l2g.xd.close()
        self.l2g = None

    def test_erai_gage_file_write(self):
        """
        Test ERA Interim lsm_precip_to_gssha_precip_gage write method
        """
        out_gage_file = os.path.join(self.writeDirectory, 'gage_test_erai.gag')
        self.l2g.lsm_precip_to_gssha_precip_gage(out_gage_file,
                                                 lsm_data_var='tp',
                                                 precip_type='GAGES')
        # Test
        compare_gag_file = os.path.join(self.readDirectory, 'gage_test_erai.gag')
        self._compare_files(out_gage_file, compare_gag_file, precision=5)

    def test_erai_netcdf_file_write(self):
        """
        Test ERA Interim lsm_data_to_subset_netcdf write method
        """
        netcdf_file_path = os.path.join(self.writeDirectory,
                                        'gssha_dynamic_erai.nc')
        self.l2g.lsm_data_to_subset_netcdf(netcdf_file_path,
                                           self.data_var_map_array)

        # compare netcdf files
        self._compare_netcdf_files("gssha_dynamic_erai", "gssha_dynamic_erai")

    def test_erai_ascii_file_write(self):
        """
        Test ERA Interim lsm_data_to_arc_ascii write method
        """
        self.l2g.lsm_data_to_arc_ascii(self.data_var_map_array,
                                       self.hmet_write_directory)

        # Compare all files
        compare_directory = os.path.join(self.readDirectory, "erai_hmet_data")
        self._compare_directories(self.hmet_write_directory,
                                  compare_directory,
                                  ignore_file="hmet_file_list.txt",
                                  raster=True)

    def test_erai_grid_snow_file_write(self):
        """
        Test lsm_var_to_grid write method
        """
        out_grid_file = os.path.join(self.writeDirectory, 'swe_grid_erai.asc')
        self.l2g.lsm_var_to_grid(out_grid_file=out_grid_file,
                                 lsm_data_var='sp',
                                 gssha_convert_var='swe')

        # Test
        compare_grid_file = os.path.join(self.readDirectory, 'swe_grid_erai.asc')
        self._compare_files(out_grid_file, compare_grid_file, precision=5)

    def test_erai_grid_snow_file_write_time(self):
        """
        Test WRF lsm_var_to_grid write method
        """
        out_grid_file = os.path.join(self.writeDirectory, 'swe_grid_erai.asc')
        self.l2g.lsm_var_to_grid(out_grid_file=out_grid_file,
                                 lsm_data_var='sp',
                                 gssha_convert_var='swe',
                                 time_step=datetime(2016, 1, 2))

        # Test
        compare_grid_file = os.path.join(self.readDirectory, 'swe_grid_erai.asc')
        self._compare_files(out_grid_file, compare_grid_file, precision=5)