コード例 #1
0
ファイル: test_statistics.py プロジェクト: wk1984/ocgis
    def test_execute_sample_size(self):
        field = self.get_field(with_value=True, month_count=2)
        grouping = ['month']
        tgd = field.temporal.get_grouping(grouping)
        mu = Mean(field=field,
                  tgd=tgd,
                  alias='my_mean',
                  calc_sample_size=True,
                  dtype=np.float64)
        dvc = mu.execute()
        dv = dvc['my_mean']
        self.assertEqual(dv.name, 'my_mean')
        self.assertEqual(dv.get_value().shape, (2, 2, 2, 3, 4))
        self.assertNumpyAll(
            np.mean(field['tmax'].get_value()[1, tgd.dgroups[1], 0, :, :],
                    axis=0),
            dv.get_value()[1, 1, 0, :, :])

        ret = dvc['n_my_mean']
        self.assertNumpyAll(
            ret.get_masked_value()[0, 0, 0],
            np.ma.array(data=[[31, 31, 31, 31], [31, 31, 31, 31],
                              [31, 31, 31, 31]],
                        mask=[[False, False, False, False],
                              [False, False, False, False],
                              [False, False, False, False]],
                        fill_value=999999,
                        dtype=ret.dtype))

        mu = Mean(field=field,
                  tgd=tgd,
                  alias='my_mean',
                  calc_sample_size=False)
        dvc = mu.execute()
        self.assertNotIn('n_my_mean', list(dvc.keys()))
コード例 #2
0
ファイル: test_statistics.py プロジェクト: wk1984/ocgis
 def test_execute_units_are_maintained(self):
     field = self.get_field(with_value=True, month_count=2)
     units_kelvin = get_units_object('kelvin')
     self.assertEqual(field['tmax'].cfunits, units_kelvin)
     grouping = ['month']
     tgd = field.temporal.get_grouping(grouping)
     mu = Mean(field=field,
               tgd=tgd,
               alias='my_mean',
               calc_sample_size=False,
               dtype=np.float64)
     dvc = mu.execute()
     self.assertEqual(dvc['my_mean'].cfunits, units_kelvin)
コード例 #3
0
ファイル: test_library_icclim.py プロジェクト: wk1984/ocgis
 def test_calculate(self):
     rd = self.test_data.get_rd('cancm4_tas')
     field = rd.get()
     field = field.get_field_slice({'y': slice(0, 10), 'x': slice(0, 10)})
     klasses = [IcclimTG, IcclimTN, IcclimTX]
     for klass in klasses:
         for calc_grouping in [['month'], ['month', 'year']]:
             tgd = field.temporal.get_grouping(calc_grouping)
             itg = klass(field=field, tgd=tgd)
             ret_icclim = itg.execute()
             mean = Mean(field=field, tgd=tgd)
             ret_ocgis = mean.execute()
             self.assertNumpyAll(ret_icclim[klass.key].get_value(), ret_ocgis['mean'].get_value())
コード例 #4
0
ファイル: test_statistics.py プロジェクト: wk1984/ocgis
 def test_execute(self):
     field = self.get_field(with_value=True, month_count=2)
     self.assertIsInstance(field, Field)
     grouping = ['month']
     tgd = field.temporal.get_grouping(grouping)
     mu = Mean(field=field, tgd=tgd, alias='my_mean', dtype=np.float64)
     dvc = mu.execute()
     dv = dvc['my_mean']
     self.assertEqual(dv.name, 'my_mean')
     self.assertEqual(dv.get_value().shape, (2, 2, 2, 3, 4))
     self.assertNumpyAll(
         np.mean(field['tmax'].get_value()[1, tgd.dgroups[1], 0, :, :],
                 axis=0),
         dv.get_value()[1, 1, 0, :, :])
コード例 #5
0
ファイル: test_statistics.py プロジェクト: wk1984/ocgis
    def test_execute_two_variables(self):
        """Test running a field with two variables through the mean calculation."""

        field = self.get_field(with_value=True, month_count=2)
        field.add_variable(Variable(value=field['tmax'].get_value() + 5,
                                    name='tmin',
                                    dimensions=field['tmax'].dimensions),
                           is_data=True)
        grouping = ['month']
        tgd = field.temporal.get_grouping(grouping)
        mu = Mean(field=field, tgd=tgd, alias='my_mean', dtype=np.float64)
        ret = mu.execute()
        self.assertEqual(len(ret), 2)
        self.assertAlmostEqual(
            5.0,
            abs(ret['my_mean_tmax'].get_value().mean() -
                ret['my_mean_tmin'].get_value().mean()))
コード例 #6
0
ファイル: test_statistics.py プロジェクト: wk1984/ocgis
 def test_execute_file_only(self):
     rd = self.test_data.get_rd('cancm4_tas')
     field = rd.get()
     field = field.get_field_slice({
         'time': slice(10, 20),
         'y': slice(20, 30),
         'x': slice(40, 50)
     })
     grouping = ['month']
     tgd = field.temporal.get_grouping(grouping)
     # Value should not be loaded at this point.
     self.assertEqual(field['tas']._value, None)
     mu = Mean(field=field, tgd=tgd, alias='my_mean', file_only=True)
     ret = mu.execute()
     # Value should still not be loaded.
     self.assertIsNone(field['tas']._value)
     # No value should be calculated for the calculation.
     self.assertIsNone(ret['my_mean']._value)
コード例 #7
0
ファイル: test_statistics.py プロジェクト: wk1984/ocgis
 def test_execute_two_variables_sample_size(self):
     field = self.get_field(with_value=True, month_count=2)
     field.add_variable(Variable(value=field['tmax'].get_value() + 5,
                                 name='tmin',
                                 dimensions=field['tmax'].dimensions),
                        is_data=True)
     grouping = ['month']
     tgd = field.temporal.get_grouping(grouping)
     mu = Mean(field=field,
               tgd=tgd,
               alias='my_mean',
               dtype=np.float64,
               calc_sample_size=True)
     ret = mu.execute()
     self.assertEqual(len(ret), 4)
     self.assertAlmostEqual(
         5.0,
         abs(ret['my_mean_tmax'].get_value().mean() -
             ret['my_mean_tmin'].get_value().mean()))
     self.assertEqual(
         {
             'my_mean_tmax', 'n_my_mean_tmax', 'my_mean_tmin',
             'n_my_mean_tmin'
         }, set(ret.keys()))