Esempio n. 1
0
    def test_Field_regrids(self):
        if self.test_only and inspect.stack()[0][3] not in self.test_only:
            return

        # Set tolerance for array equality
        original_atol = cf.atol(1e-12)

        for chunksize in self.chunk_sizes:
            cf.chunksize(chunksize)
            f1 = cf.read(self.filename1)[0]
            f2 = cf.read(self.filename2)[0]
            f3 = cf.read(self.filename3)[0]

            r = f1.regrids(f2, 'conservative')

            self.assertTrue(
                f3.equals(r, verbose=2),
                'destination = global Field, CHUNKSIZE = %s' % chunksize
            )
            r = f1.regrids(f2, method='conservative')

            self.assertTrue(
                f3.equals(r, verbose=2),
                'destination = global Field, CHUNKSIZE = %s' % chunksize
            )
            dst = {'longitude': f2.dim('X'), 'latitude': f2.dim('Y')}
            r = f1.regrids(dst, 'conservative', dst_cyclic=True)

            self.assertTrue(
                f3.equals(r, verbose=2),
                'destination = global dict, CHUNKSIZE = %s' % chunksize
            )
            r = f1.regrids(dst, method='conservative', dst_cyclic=True)
            self.assertTrue(
                f3.equals(r, verbose=2),
                'destination = global dict, CHUNKSIZE = %s' % chunksize
            )

            f4 = cf.read(self.filename4)[0]
            f5 = cf.read(self.filename5)[0]

            r = f1.regrids(f5, 'linear')
            self.assertTrue(
                f4.equals(r, verbose=2),
                'destination = regional Field, CHUNKSIZE = %s' % chunksize
            )

            r = f1.regrids(f5, method='linear')
            self.assertTrue(
                f4.equals(r, verbose=2),
                'destination = regional Field, CHUNKSIZE = %s' % chunksize
            )
        # --- End: for
        cf.chunksize(self.original_chunksize)

        f6 = cf.read(self.filename6)[0]
        with self.assertRaises(Exception):
            f1.regridc(f6, axes='T', method='linear')

        cf.atol(original_atol)
Esempio n. 2
0
    def test_Field_regridc(self):
        if self.test_only and inspect.stack()[0][3] not in self.test_only:
            return

        original_atol = cf.atol(1e-12)

        for chunksize in self.chunk_sizes:
            cf.chunksize(chunksize)
            f1 = cf.read(self.filename7)[0]
            f2 = cf.read(self.filename8)[0]
            f3 = cf.read(self.filename9)[0]
            self.assertTrue(
                f3.equals(f1.regridc(
                    f2, axes='T', method='linear'), verbose=2),
                'destination = time series, CHUNKSIZE = %s' % chunksize
            )
            f4 = cf.read(self.filename1)[0]
            f5 = cf.read(self.filename2)[0]
            f6 = cf.read(self.filename10)[0]
            self.assertTrue(
                f6.equals(f4.regridc(
                    f5, axes=('X', 'Y'), method='conservative'), verbose=2),
                'destination = global Field, CHUNKSIZE = %s' % chunksize
            )
            self.assertTrue(
                f6.equals(f4.regridc(
                    f5, axes=('X', 'Y'), method='conservative'), verbose=2),
                'destination = global Field, CHUNKSIZE = %s' % chunksize
            )
            dst = {'X': f5.dim('X'), 'Y': f5.dim('Y')}
            self.assertTrue(
                f6.equals(
                    f4.regridc(dst, axes=('X', 'Y'), method='conservative'),
                    verbose=2
                ),
                'destination = global dict, CHUNKSIZE = %s' % chunksize
            )
            self.assertTrue(
                f6.equals(
                    f4.regridc(dst, axes=('X', 'Y'), method='conservative'),
                    verbose=2
                ),
                'destination = global dict, CHUNKSIZE = %s' % chunksize
            )
        # --- End: for
        cf.chunksize(self.original_chunksize)

        cf.atol(original_atol)
Esempio n. 3
0
 def test_Field_regridc(self):
     self.assertFalse(cf.regrid_logging())
     with cf.atol(1e-11):
         for chunksize in self.chunk_sizes:
             self.assertFalse(cf.regrid_logging())
             with cf.chunksize(chunksize):
                 f1 = cf.read(self.filename7)[0]
                 f2 = cf.read(self.filename8)[0]
                 f3 = cf.read(self.filename9)[0]
                 self.assertTrue(
                     f3.equals(f1.regridc(f2, axes="T", method="linear")),
                     "destination=time series, CHUNKSIZE={}".format(
                         chunksize
                     ),
                 )
                 f4 = cf.read(self.filename1)[0]
                 f5 = cf.read(self.filename2)[0]
                 f6 = cf.read(self.filename10)[0]
                 self.assertTrue(
                     f6.equals(
                         f4.regridc(
                             f5, axes=("X", "Y"), method="conservative"
                         )
                     ),
                     "destination=global Field, CHUNKSIZE={}".format(
                         chunksize
                     ),
                 )
                 self.assertTrue(
                     f6.equals(
                         f4.regridc(
                             f5, axes=("X", "Y"), method="conservative"
                         )
                     ),
                     "destination=global Field, CHUNKSIZE={}".format(
                         chunksize
                     ),
                 )
                 dst = {"X": f5.dim("X"), "Y": f5.dim("Y")}
                 self.assertTrue(
                     f6.equals(
                         f4.regridc(
                             dst, axes=("X", "Y"), method="conservative"
                         )
                     ),
                     "destination=global dict, CHUNKSIZE={}".format(
                         chunksize
                     ),
                 )
                 self.assertTrue(
                     f6.equals(
                         f4.regridc(
                             dst, axes=("X", "Y"), method="conservative"
                         )
                     ),
                     "destination=global dict, CHUNKSIZE={}".format(
                         chunksize
                     ),
                 )
Esempio n. 4
0
    def test_Field_regridc_operator(self):
        self.assertFalse(cf.regrid_logging())

        with cf.atol(1e-12):
            f1 = cf.read(self.filename7)[0]
            f2 = cf.read(self.filename8)[0]
            f3 = cf.read(self.filename9)[0]
            f4 = cf.read(self.filename1)[0]
            f5 = cf.read(self.filename2)[0]
            f6 = cf.read(self.filename10)[0]

            op = f1.regridc(f2,
                            axes="T",
                            method="linear",
                            return_operator=True)
            self.assertTrue(f3.equals(f1.regridc(op)))

            op = f4.regridc(
                f5,
                axes=("X", "Y"),
                method="conservative",
                return_operator=True,
            )
            self.assertTrue(f6.equals(f4.regridc(op)))

            op = f4.regridc(
                f5,
                axes=("X", "Y"),
                method="conservative",
                return_operator=True,
            )
            self.assertTrue(f6.equals(f4.regridc(op)))

            dst = {
                "X": f5.dimension_coordinate("X"),
                "Y": f5.dimension_coordinate("Y"),
            }
            op = f4.regridc(
                dst,
                axes=("X", "Y"),
                method="conservative",
                return_operator=True,
            )

            self.assertTrue(f6.equals(f4.regridc(op)))
            self.assertTrue(f6.equals(f4.regridc(op)))

        # Raise exception when the source grid does not match that of
        # the regrid operator
        op = f1.regridc(f2, axes="T", method="linear", return_operator=True)
        with self.assertRaises(ValueError):
            f2.regrids(op)
Esempio n. 5
0
    def test_Field_regrids(self):
        self.assertFalse(cf.regrid_logging())
        with cf.atol(1e-12):
            for chunksize in self.chunk_sizes:
                with cf.chunksize(chunksize):
                    f1 = cf.read(self.filename1)[0]
                    f2 = cf.read(self.filename2)[0]
                    f3 = cf.read(self.filename3)[0]
                    f4 = cf.read(self.filename4)[0]
                    f5 = cf.read(self.filename5)[0]

                    r = f1.regrids(f2, "conservative")
                    self.assertTrue(
                        f3.equals(r),
                        "destination=global Field, CHUNKSIZE={}".format(
                            chunksize
                        ),
                    )

                    dst = {"longitude": f2.dim("X"), "latitude": f2.dim("Y")}
                    r = f1.regrids(dst, "conservative", dst_cyclic=True)
                    self.assertTrue(
                        f3.equals(r),
                        "destination=global dict, CHUNKSIZE={}".format(
                            chunksize
                        ),
                    )

                    r = f1.regrids(dst, method="conservative", dst_cyclic=True)
                    self.assertTrue(
                        f3.equals(r),
                        "destination=global dict, CHUNKSIZE={}".format(
                            chunksize
                        ),
                    )

                    # Regrid global to regional roated pole
                    r = f1.regrids(f5, method="linear")
                    self.assertTrue(
                        f4.equals(r, verbose=3),
                        "destination=regional Field, CHUNKSIZE={}".format(
                            chunksize
                        ),
                    )

        f6 = cf.read(self.filename6)[0]
        with self.assertRaises(Exception):
            f1.regridc(f6, axes="T", method="linear")
Esempio n. 6
0
    def test_Field_regrids_operator(self):
        self.assertFalse(cf.regrid_logging())

        with cf.atol(1e-12):
            f1 = cf.read(self.filename1)[0]
            f2 = cf.read(self.filename2)[0]
            f3 = cf.read(self.filename3)[0]
            f4 = cf.read(self.filename4)[0]
            f5 = cf.read(self.filename5)[0]

            op = f1.regrids(f2, "conservative", return_operator=True)
            r = f1.regrids(op)
            self.assertTrue(f3.equals(r))

            # Repeat
            r = f1.regrids(op)
            self.assertTrue(f3.equals(r))

            dst = {"longitude": f2.dim("X"), "latitude": f2.dim("Y")}
            op = f1.regrids(dst,
                            "conservative",
                            dst_cyclic=True,
                            return_operator=True)
            r = f1.regrids(op)
            self.assertTrue(f3.equals(r))

            op = f1.regrids(
                dst,
                method="conservative",
                dst_cyclic=True,
                return_operator=True,
            )
            r = f1.regrids(op)
            self.assertTrue(f3.equals(r))

            # Regrid global to regional rotated pole
            op = f1.regrids(f5, method="linear", return_operator=True)
            r = f1.regrids(op)
            self.assertTrue(f4.equals(r))

        # Raise exception when the source grid does not match that of
        # the regrid operator
        op = f1.regrids(f2, "conservative", return_operator=True)
        with self.assertRaises(ValueError):
            f2.regrids(op)
Esempio n. 7
0
 def test_Constant(self):
     c = cf.atol()
     self.assertIs(c._func, cf.atol)
Esempio n. 8
0
    def test_context_managers(self):
        # rtol, atol, chunksize
        for func in (
                cf.atol,
                cf.rtol,
                cf.chunksize,
                cf.free_memory_factor,
                cf.of_fraction,
        ):
            old = func()
            new = old * 1.001
            with func(new):
                self.assertEqual(func(), new)
                self.assertEqual(func(new * 1.001), new)
                self.assertEqual(func(), new * 1.001)

            self.assertEqual(func(), old)

        # collapse_parallel_mode
        func = cf.collapse_parallel_mode

        org = func(0)
        old = func()
        new = old + 1
        with func(new):
            self.assertEqual(func(), new)
            self.assertEqual(func(new + 1), new)
            self.assertEqual(func(), new + 1)

        self.assertEqual(func(), old)
        func(org)

        # log_level
        func = cf.log_level

        org = func("DETAIL")
        old = func()
        new = "DEBUG"
        with func(new):
            self.assertEqual(func(), new)

        self.assertEqual(func(), old)
        func(org)

        del org._func
        with self.assertRaises(AttributeError):
            with org:
                pass

        # bounds_combination_mode
        func = cf.bounds_combination_mode

        org = func("XOR")
        old = func()
        new = "AND"
        with func(new):
            self.assertEqual(func(), new)

        self.assertEqual(func(), old)
        func(org)

        del org._func
        with self.assertRaises(AttributeError):
            with org:
                pass

        # Full configuration
        func = cf.configuration

        org = func(rtol=cf.Constant(10), atol=20, log_level="WARNING")
        old = func()
        new = dict(rtol=cf.Constant(20), atol=40, log_level="DISABLE")

        with func(**new):
            self.assertEqual(cf.atol(), 40)

        self.assertEqual(func(), old)
        func(**org)
Esempio n. 9
0
u = t.copy()
u.data[0, 0, 0] = -1e30
u.data[0, 0, 0]
t.data[0, 0, 0]
u.del_construct('grid_latitude')
u.constructs('grid_latitude')
t.constructs('grid_latitude')
import copy
u = copy.deepcopy(t)
orog = t.constructs('surface_altitude').value().copy()
t.equals(t)
t.equals(t.copy())
t.equals(t[...])
t.equals(q)
t.equals(q, verbose=2)
print(cf.atol())
print(cf.rtol())
original = cf.rtol(0.00001)
print(cf.rtol())
print(cf.rtol(original))
print(cf.rtol())
t2 = t - 0.00001
t.equals(t2)
with cf.atol(1e-5):
    print(t.equals(t2))
t.equals(t2)
orog = t.constructs('surface_altitude').value()
orog.equals(orog.copy())
print(t.constructs.filter_by_ncvar('b'))
t.constructs('ncvar%x').value()
t.constructs('ncdim%x')
Esempio n. 10
0
    def test_Constant(self):
        if self.test_only and inspect.stack()[0][3] not in self.test_only:
            return

        c = cf.atol()
        self.assertIs(c._func, cf.atol)
Esempio n. 11
0
u.del_construct('grid_latitude')
u.constructs('grid_latitude')
t.constructs('grid_latitude')
import copy

u = copy.deepcopy(t)
orog = t.constructs('surface_altitude').value().copy()

print("\n**Equality**\n")

t.equals(t)
t.equals(t.copy())
t.equals(t[...])
t.equals(q)
t.equals(q, verbose=2)
cf.atol()
cf.rtol()
original = cf.rtol(0.00001)
cf.rtol()
cf.rtol(original)
cf.rtol()
orog = t.constructs('surface_altitude').value()
orog.equals(orog.copy())

print("\n**NetCDF interface**\n")

print(t.constructs.filter_by_ncvar('b'))
t.constructs('ncvar%x').value()
t.constructs('ncdim%x')
q.nc_get_variable()
q.nc_global_attributes()
Esempio n. 12
0
    def test_Field_regrids(self):
        if self.test_only and inspect.stack()[0][3] not in self.test_only:
            return
        self.assertFalse(cf.regrid_logging())
        with cf.atol(1e-12):
            for chunksize in self.chunk_sizes:
                with cf.chunksize(chunksize):
                    f1 = cf.read(self.filename1)[0]
                    f2 = cf.read(self.filename2)[0]
                    f3 = cf.read(self.filename3)[0]

                    r = f1.regrids(f2, "conservative")

                    self.assertTrue(
                        f3.equals(r),
                        "destination=global Field, CHUNKSIZE={}".format(
                            chunksize),
                    )
                    r = f1.regrids(f2, method="conservative")

                    self.assertTrue(
                        f3.equals(r),
                        "destination=global Field, CHUNKSIZE={}".format(
                            chunksize),
                    )
                    dst = {"longitude": f2.dim("X"), "latitude": f2.dim("Y")}
                    r = f1.regrids(dst, "conservative", dst_cyclic=True)

                    self.assertTrue(
                        f3.equals(r),
                        "destination=global dict, CHUNKSIZE={}".format(
                            chunksize),
                    )
                    r = f1.regrids(dst, method="conservative", dst_cyclic=True)
                    self.assertTrue(
                        f3.equals(r),
                        "destination=global dict, CHUNKSIZE={}".format(
                            chunksize),
                    )

                    f4 = cf.read(self.filename4)[0]
                    f5 = cf.read(self.filename5)[0]

                    r = f1.regrids(f5, "linear")
                    self.assertTrue(
                        f4.equals(r),
                        "destination=regional Field, CHUNKSIZE={}".format(
                            chunksize),
                    )

                    r = f1.regrids(f5, method="linear")
                    self.assertTrue(
                        f4.equals(r),
                        "destination=regional Field, CHUNKSIZE={}".format(
                            chunksize),
                    )
            # --- End: for

            f6 = cf.read(self.filename6)[0]
            with self.assertRaises(Exception):
                f1.regridc(f6, axes="T", method="linear")