コード例 #1
0
    def test_dewpoint_to_relative_humidity(self):
        """Ensures correct output from dewpoint_to_relative_humidity."""

        these_relative_humidities = (
            moisture_conversions.dewpoint_to_relative_humidity(
                DEWPOINTS_KELVINS, TEMPERATURES_KELVINS,
                TOTAL_PRESSURES_PASCALS))
        self.assertTrue(
            numpy.allclose(these_relative_humidities,
                           RELATIVE_HUMIDITIES,
                           atol=TOLERANCE))
コード例 #2
0
    def test_dewpoint_to_relative_humidity(self):
        """Ensures correct output from dewpoint_to_relative_humidity."""

        these_relative_humidities = moisture_conv.dewpoint_to_relative_humidity(
            dewpoints_kelvins=DEWPOINTS_KELVINS,
            temperatures_kelvins=TEMPERATURES_KELVINS,
            total_pressures_pascals=PRESSURES_PASCALS)

        self.assertTrue(
            numpy.allclose(these_relative_humidities,
                           RELATIVE_HUMIDITIES_FIXED,
                           atol=TOLERANCE))
コード例 #3
0
def _specific_to_relative_humidity(example_dict):
    """Converts profiles of specific humidity to relative humidity.

    :param example_dict: Dictionary of examples (in the format returned by
        `read_file`).
    :return: example_dict: Same as input but with extra predictor variable.
    """

    specific_humidity_matrix_kg_kg01 = example_utils.get_field_from_dict(
        example_dict=example_dict,
        field_name=example_utils.SPECIFIC_HUMIDITY_NAME)
    temperature_matrix_kelvins = example_utils.get_field_from_dict(
        example_dict=example_dict, field_name=example_utils.TEMPERATURE_NAME)
    pressure_matrix_pascals = example_utils.get_field_from_dict(
        example_dict=example_dict, field_name=example_utils.PRESSURE_NAME)

    dewpoint_matrix_kelvins = moisture_conv.specific_humidity_to_dewpoint(
        specific_humidities_kg_kg01=specific_humidity_matrix_kg_kg01,
        temperatures_kelvins=temperature_matrix_kelvins,
        total_pressures_pascals=pressure_matrix_pascals)

    relative_humidity_matrix = moisture_conv.dewpoint_to_relative_humidity(
        dewpoints_kelvins=dewpoint_matrix_kelvins,
        temperatures_kelvins=temperature_matrix_kelvins,
        total_pressures_pascals=pressure_matrix_pascals)

    vector_predictor_names = (
        example_dict[example_utils.VECTOR_PREDICTOR_NAMES_KEY])
    found_rh = example_utils.RELATIVE_HUMIDITY_NAME in vector_predictor_names
    if not found_rh:
        vector_predictor_names.append(example_utils.RELATIVE_HUMIDITY_NAME)

    rh_index = (vector_predictor_names.index(
        example_utils.RELATIVE_HUMIDITY_NAME))
    example_dict[example_utils.VECTOR_PREDICTOR_NAMES_KEY] = (
        vector_predictor_names)

    if found_rh:
        example_dict[example_utils.VECTOR_PREDICTOR_VALS_KEY][
            ..., rh_index] = (relative_humidity_matrix)
    else:
        example_dict[example_utils.VECTOR_PREDICTOR_VALS_KEY] = numpy.insert(
            example_dict[example_utils.VECTOR_PREDICTOR_VALS_KEY],
            obj=rh_index,
            values=relative_humidity_matrix,
            axis=-1)

    return example_dict
コード例 #4
0
}
SOUNDING_TABLE_SHARPPY_ORIG = pandas.DataFrame.from_dict(THIS_SOUNDING_DICT)

# The following constants are used to test _sounding_to_sharppy_units.
MB_TO_PASCALS = 100
UNITLESS_TO_PERCENT = 100
KT_TO_METRES_PER_SECOND = 1.852 / 3.6

THESE_TEMPERATURES_KELVINS = temperature_conversions.celsius_to_kelvins(
    THESE_TEMPERATURES_DEG_C)
THESE_DEWPOINTS_KELVINS = temperature_conversions.celsius_to_kelvins(
    THESE_DEWPOINTS_DEG_C)
THESE_SPECIFIC_HUMIDITIES = moisture_conversions.dewpoint_to_specific_humidity(
    THESE_DEWPOINTS_KELVINS, THESE_PRESSURES_MB * MB_TO_PASCALS)
THESE_RH_PERCENT = moisture_conversions.dewpoint_to_relative_humidity(
    THESE_DEWPOINTS_KELVINS, THESE_TEMPERATURES_KELVINS,
    THESE_PRESSURES_MB * MB_TO_PASCALS) * UNITLESS_TO_PERCENT
THESE_U_WINDS_M_S01 = KT_TO_METRES_PER_SECOND * THESE_U_WINDS_KT
THESE_V_WINDS_M_S01 = KT_TO_METRES_PER_SECOND * THESE_V_WINDS_KT

THIS_SOUNDING_DICT = {
    soundings.PRESSURE_COLUMN_FOR_SHARPPY_INPUT: THESE_PRESSURES_MB,
    nwp_model_utils.HEIGHT_COLUMN_FOR_SOUNDING_TABLES: THESE_HEIGHTS_M_ASL,
    nwp_model_utils.TEMPERATURE_COLUMN_FOR_SOUNDING_TABLES:
    THESE_TEMPERATURES_KELVINS,
    nwp_model_utils.SPFH_COLUMN_FOR_SOUNDING_TABLES: THESE_SPECIFIC_HUMIDITIES,
    nwp_model_utils.U_WIND_COLUMN_FOR_SOUNDING_TABLES: THESE_U_WINDS_M_S01,
    nwp_model_utils.V_WIND_COLUMN_FOR_SOUNDING_TABLES: THESE_V_WINDS_M_S01,
    soundings.IS_SURFACE_COLUMN_FOR_SHARPPY_INPUT: THESE_SURFACE_FLAGS
}
SOUNDING_TABLE_RAP_UNITS = pandas.DataFrame.from_dict(THIS_SOUNDING_DICT)
コード例 #5
0
ファイル: rrtm_io_test.py プロジェクト: thunderhoser/ml4rt
         1.17068292, 1.16533351, 1.16002338, 1.15475212
     ],
     [
         1.14711999, 1.14127126, 1.13546837, 1.12971083, 1.12399816,
         1.11832989, 1.11270554, 1.14711999, 1.14127126, 1.13546837,
         1.12971083, 1.12399816, 1.11832989, 1.11270554
     ]])

# The following constants are used to test _specific_to_relative_humidity.
DEWPOINT_MATRIX_KELVINS = moisture_conv.specific_humidity_to_dewpoint(
    specific_humidities_kg_kg01=HUMIDITY_MATRIX_KG_KG01,
    temperatures_kelvins=TEMPERATURE_MATRIX_KELVINS,
    total_pressures_pascals=PRESSURE_MATRIX_PASCALS)

RELATIVE_HUMIDITY_MATRIX = moisture_conv.dewpoint_to_relative_humidity(
    dewpoints_kelvins=DEWPOINT_MATRIX_KELVINS,
    temperatures_kelvins=TEMPERATURE_MATRIX_KELVINS,
    total_pressures_pascals=PRESSURE_MATRIX_PASCALS)

EXAMPLE_DICT_SANS_RH = copy.deepcopy(EXAMPLE_DICT_SANS_DENSITY)

THESE_VECTOR_PREDICTOR_NAMES = [
    example_utils.SPECIFIC_HUMIDITY_NAME, example_utils.TEMPERATURE_NAME,
    example_utils.PRESSURE_NAME, example_utils.RELATIVE_HUMIDITY_NAME
]
THIS_VECTOR_PREDICTOR_MATRIX = numpy.stack(
    (HUMIDITY_MATRIX_KG_KG01, TEMPERATURE_MATRIX_KELVINS,
     PRESSURE_MATRIX_PASCALS, RELATIVE_HUMIDITY_MATRIX),
    axis=-1)

EXAMPLE_DICT_WITH_RH = {
    example_utils.VECTOR_PREDICTOR_VALS_KEY: THIS_VECTOR_PREDICTOR_MATRIX,
コード例 #6
0
    273.15, 278.15, 283.15, 288.15, 298.15
])
THESE_U_WINDS_M_S01 = numpy.array([-10, -5, 0, 5, 10])
THESE_V_WINDS_M_S01 = numpy.array([20, 30, -40, 15, 7.2])
THESE_SPEC_HUMIDITIES_KG_KG01 = 0.001 * numpy.array([0.1, 1., 5., 10., 20.])

THESE_PRESSURES_PASCALS = numpy.array([99000, 100000, 101000, 102000, 103000])
PRESSURE_MATRIX_PASCALS = numpy.reshape(THESE_PRESSURES_PASCALS, (1, 5))

THESE_DEWPOINTS_KELVINS = moisture_conversions.specific_humidity_to_dewpoint(
    specific_humidities_kg_kg01=THESE_SPEC_HUMIDITIES_KG_KG01,
    total_pressures_pascals=THESE_PRESSURES_PASCALS)
DEWPOINT_MATRIX_KELVINS = numpy.reshape(THESE_DEWPOINTS_KELVINS, (1, 5))

THESE_RELATIVE_HUMIDITIES = moisture_conversions.dewpoint_to_relative_humidity(
    dewpoints_kelvins=THESE_DEWPOINTS_KELVINS,
    temperatures_kelvins=THESE_TEMPERATURES_KELVINS,
    total_pressures_pascals=THESE_PRESSURES_PASCALS)
THESE_RELATIVE_HUMIDITIES_PERCENT = 100 * THESE_RELATIVE_HUMIDITIES

THESE_FIELD_NAMES = [
    nwp_model_utils.HEIGHT_COLUMN_FOR_SOUNDINGS,
    nwp_model_utils.RH_COLUMN_FOR_SOUNDINGS,
    nwp_model_utils.TEMPERATURE_COLUMN_FOR_SOUNDINGS,
    nwp_model_utils.U_WIND_COLUMN_FOR_SOUNDINGS,
    nwp_model_utils.V_WIND_COLUMN_FOR_SOUNDINGS
]

THIS_SOUNDING_MATRIX = numpy.full((1, 5, 5), numpy.nan)
THIS_SOUNDING_MATRIX[0, :, 0] = THESE_HEIGHTS_METRES
THIS_SOUNDING_MATRIX[0, :, 1] = THESE_RELATIVE_HUMIDITIES_PERCENT
THIS_SOUNDING_MATRIX[0, :, 2] = THESE_TEMPERATURES_KELVINS