Beispiel #1
0
 def test_create_default_array(self):
     array = DefaultData.create_default_array(5,
                                              4,
                                              np.float32,
                                              fill_value=np.NaN)
     self.assertEqual((4, 5), array.shape)
     self.assertTrue(np.isnan(array.data[0, 1]))
Beispiel #2
0
    def test_scale_data_no_scaling(self):
        array = DefaultData.create_default_array(6, 12, np.int16)
        array[0, 0] = 22
        array[1, 0] = 23
        variable = Variable(["y", "x"], array)

        MmdReader._scale_data(variable)

        self.assertEqual(22, variable.data[0, 0])
        self.assertEqual(23, variable.data[1, 0])
Beispiel #3
0
    def test_scale_data_only_offset(self):
        array = DefaultData.create_default_array(6, 10, np.int16)
        array[4, 0] = 22
        array[5, 0] = 23
        variable = Variable(["y", "x"], array)
        variable.attrs["OFFSET"] = -10

        MmdReader._scale_data(variable)

        self.assertAlmostEqual(12, variable.data[4, 0], 8)
        self.assertAlmostEqual(13, variable.data[5, 0], 8)
Beispiel #4
0
    def test_scale_data_only_scaling(self):
        array = DefaultData.create_default_array(6, 11, np.int16)
        array[2, 0] = 22
        array[3, 0] = 23
        variable = Variable(["y", "x"], array)
        variable.attrs["SCALE_FACTOR"] = 0.2

        MmdReader._scale_data(variable)

        self.assertAlmostEqual(4.4, variable.data[2, 0], 8)
        self.assertAlmostEqual(4.6, variable.data[3, 0], 8)
Beispiel #5
0
    def test_scale_data_scaling_and_offset(self):
        array = DefaultData.create_default_array(6, 9, np.int16)
        array[0, 1] = 22
        array[1, 1] = 23
        variable = Variable(["y", "x"], array)
        variable.attrs["SCALE_FACTOR"] = 0.2
        variable.attrs["OFFSET"] = 1.6

        MmdReader._scale_data(variable)

        self.assertAlmostEqual(6.0, variable.data[0, 1], 8)
        self.assertAlmostEqual(6.2, variable.data[1, 1], 8)
Beispiel #6
0
    def calculate_pressure_levels(self, sea_level_pressure):
        num_levels = len(self.A_COEFFS) - 1
        num_measures = len(sea_level_pressure)

        target_data = DefaultData.create_default_array(num_levels,
                                                       num_measures,
                                                       np.float32,
                                                       fill_value=np.NaN)
        for i in range(0, num_measures):
            p_f = np.float64(
                sea_level_pressure[i]) * self.B_COEFFS + self.A_COEFFS
            target_data[i, :] = p_f[1:61] - p_f[0:60]
        return target_data
    def _create_2d_float_variable(max_iterations,
                                  num_matchups,
                                  dims_names=None):
        array = DefaultData.create_default_array(max_iterations,
                                                 num_matchups,
                                                 np.float32,
                                                 dims_names=dims_names,
                                                 fill_value=np.NaN)
        if dims_names is None:
            variable = Variable(["matchup", "iterations"], array)
        else:
            variable = Variable(dims_names, array)

        variable.attrs["_FillValue"] = np.NaN
        return variable
Beispiel #8
0
 def _create_variable(self, data_type):
     array = DefaultData.create_default_array(2, 2, data_type)
     variable = Variable(["y", "x"], array)
     return variable
Beispiel #9
0
 def _create_dataset_with_variable(self, variable_name):
     dataset = xr.Dataset()
     array = DefaultData.create_default_array(2, 2, np.int16)
     variable = Variable(["y", "x"], array)
     dataset[variable_name] = variable
     return dataset