Пример #1
0
def _get_pathless_single_field_file_name(init_time_unix_sec,
                                         lead_time_hours=None,
                                         model_name=None,
                                         grid_id=None,
                                         grib1_field_name=None):
    """Returns pathless name for file with a single field.

    "Single field" = one variable at one time step and all grid cells.

    :param init_time_unix_sec: Model-initialization time (Unix format).
    :param lead_time_hours: Lead time (valid time minus init time).  If model is
        a reanalysis, you can leave this as None (always zero).
    :param model_name: Name of model.
    :param grid_id: String ID for model grid.
    :param grib1_field_name: Field name in grib1 format.
    :return: pathless_file_name: Expected pathless file name.
    """

    nwp_model_utils.check_model_name(model_name)
    if model_name == nwp_model_utils.NARR_MODEL_NAME:
        lead_time_hours = 0

    return '{0:s}_{1:s}_{2:s}_{3:s}{4:s}'.format(
        _get_prefixes_for_pathless_file_name(model_name, grid_id)[0],
        time_conversion.unix_sec_to_string(init_time_unix_sec,
                                           TIME_FORMAT_HOUR),
        _lead_time_to_string(lead_time_hours),
        grib1_field_name.replace(' ', ''), SINGLE_FIELD_FILE_EXTENSION)
Пример #2
0
def _get_pathless_grib_file_names(init_time_unix_sec,
                                  lead_time_hours=None,
                                  model_name=None,
                                  grid_id=None):
    """Returns possible pathless names for a grib file.

    :param init_time_unix_sec: Initialization time.
    :param lead_time_hours: Lead time.  If model is a reanalysis, lead time = 0
        always, so you can leave this as None.
    :param model_name: Name of model.
    :param grid_id: String ID for grid.
    :return: pathless_file_names: 1-D list of possible pathless file names.
    """

    nwp_model_utils.check_model_name(model_name)
    if model_name == nwp_model_utils.NARR_MODEL_NAME:
        lead_time_hours = 0

    pathless_file_name_prefixes = _get_prefixes_for_pathless_file_name(
        model_name, grid_id)
    grib_types = nwp_model_utils.get_grib_types(model_name)

    pathless_file_names = []
    for this_prefix in pathless_file_name_prefixes:
        for this_grib_type in grib_types:
            pathless_file_names.append('{0:s}_{1:s}_{2:s}{3:s}'.format(
                this_prefix,
                time_conversion.unix_sec_to_string(init_time_unix_sec,
                                                   TIME_FORMAT_HOUR),
                _lead_time_to_string(lead_time_hours),
                grib_io.file_type_to_extension(this_grib_type)))

    return pathless_file_names
Пример #3
0
def find_single_field_file(init_time_unix_sec,
                           lead_time_hours=None,
                           model_name=None,
                           grid_id=None,
                           grib1_field_name=None,
                           top_directory_name=None,
                           raise_error_if_missing=True):
    """Finds with single field on local machine.

    "Single field" = one variable at one time step and all grid cells.

    :param init_time_unix_sec: Model-initialization time (Unix format).
    :param lead_time_hours: Lead time (valid time minus init time).  If model is
        a reanalysis, you can leave this as None (always zero).
    :param model_name: Name of model.
    :param grid_id: String ID for model grid.
    :param grib1_field_name: Field name in grib1 format.
    :param top_directory_name: Name of top-level directory with single-field
        files for the given model/grib combo.
    :param raise_error_if_missing:
    :param raise_error_if_missing: Boolean flag.  If True and file is missing,
        will raise an error.
    :return: single_field_file_name: Path to single-field file.  If file is
        missing but raise_error_if_missing = False, this will be the *expected*
        path.
    :raises: ValueError: if raise_error_if_missing = True and file is missing.
    """

    error_checking.assert_is_string(grib1_field_name)
    error_checking.assert_is_string(top_directory_name)
    error_checking.assert_is_boolean(raise_error_if_missing)

    nwp_model_utils.check_model_name(model_name)
    if model_name == nwp_model_utils.NARR_MODEL_NAME:
        lead_time_hours = 0

    error_checking.assert_is_integer(lead_time_hours)
    error_checking.assert_is_geq(lead_time_hours, 0)

    pathless_file_name = _get_pathless_single_field_file_name(
        init_time_unix_sec,
        lead_time_hours=lead_time_hours,
        model_name=model_name,
        grid_id=grid_id,
        grib1_field_name=grib1_field_name)

    single_field_file_name = '{0:s}/{1:s}/{2:s}'.format(
        top_directory_name,
        time_conversion.unix_sec_to_string(init_time_unix_sec,
                                           TIME_FORMAT_MONTH),
        pathless_file_name)

    if raise_error_if_missing and not os.path.isfile(single_field_file_name):
        raise ValueError('Cannot find single-field file.  Expected at: ' +
                         single_field_file_name)

    return single_field_file_name
Пример #4
0
    def test_check_model_name_fake(self):
        """Ensures correct output from check_model_name when model is fake."""

        with self.assertRaises(ValueError):
            nwp_model_utils.check_model_name(FAKE_MODEL_NAME)
Пример #5
0
    def test_check_model_name_narr(self):
        """Ensures correct output from check_model_name when model is NARR."""

        nwp_model_utils.check_model_name(nwp_model_utils.NARR_MODEL_NAME)
Пример #6
0
    def test_check_model_name_ruc(self):
        """Ensures correct output from check_model_name when model is RUC."""

        nwp_model_utils.check_model_name(nwp_model_utils.RUC_MODEL_NAME)