예제 #1
0
 def test_read(self):
     ds_io = MemDatasetIO()
     with self.assertRaises(FileNotFoundError):
         ds_io.read('test.nc')
     ds1 = xr.Dataset()
     ds_io._datasets['test.nc'] = ds1
     ds2 = ds_io.read('test.nc')
     self.assertIs(ds2, ds1)
예제 #2
0
 def test_append(self):
     ds_io = MemDatasetIO()
     ds1 = new_test_dataset('2017-02-01',
                            180,
                            temperature=1.2,
                            precipitation=2.1)
     ds2 = new_test_dataset('2017-02-02',
                            180,
                            temperature=2.3,
                            precipitation=3.2)
     ds3 = new_test_dataset('2017-02-03',
                            180,
                            temperature=3.4,
                            precipitation=4.3)
     ds_io.append(ds1, 'test.nc')
     ds_io.append(ds2, 'test.nc')
     ds_io.append(ds3, 'test.nc')
     ds4 = ds_io._datasets.get('test.nc')
     self.assertIsNotNone(ds4)
     self.assertIn('time', ds4)
     self.assertIn('temperature', ds4)
     self.assertEqual(('time', 'lat', 'lon'), ds4.temperature.dims)
     self.assertEqual((3, 180, 360), ds4.temperature.shape)
     expected_time = xr.DataArray(
         pd.to_datetime(['2017-02-01', '2017-02-02', '2017-02-03']))
     np.testing.assert_equal(expected_time.values, ds4.time.values)
예제 #3
0
    def test_find_by_name(self):
        ds_io = find_dataset_io('netcdf4')
        self.assertIsInstance(ds_io, Netcdf4DatasetIO)

        ds_io = find_dataset_io('zarr', modes=['a'])
        self.assertIsInstance(ds_io, ZarrDatasetIO)
        ds_io = find_dataset_io('zarr', modes=['w'])
        self.assertIsInstance(ds_io, ZarrDatasetIO)
        ds_io = find_dataset_io('zarr', modes=['r'])
        self.assertIsInstance(ds_io, ZarrDatasetIO)

        ds_io = find_dataset_io('mem')
        self.assertIsInstance(ds_io, MemDatasetIO)

        ds_io = find_dataset_io('bibo', default=MemDatasetIO())
        self.assertIsInstance(ds_io, MemDatasetIO)
예제 #4
0
 def test_write(self):
     ds_io = MemDatasetIO()
     ds1 = xr.Dataset()
     ds_io.write(ds1, 'test.nc')
     ds2 = ds_io._datasets['test.nc']
     self.assertIs(ds2, ds1)
예제 #5
0
    def test_fitness(self):
        ds_io = MemDatasetIO()

        self.assertEqual(0.75, ds_io.fitness("test.mem", path_type=None))
        self.assertEqual(0.75, ds_io.fitness("test.mem", path_type="file"))
        self.assertEqual(0.75, ds_io.fitness("test.mem", path_type="dir"))
        self.assertEqual(
            0.75, ds_io.fitness("http://dsio/test.mem", path_type="url"))

        self.assertEqual(0.0, ds_io.fitness("test.png", path_type=None))
        self.assertEqual(0.0, ds_io.fitness("test.png", path_type="file"))
        self.assertEqual(0.0, ds_io.fitness("test.png", path_type="dir"))
        self.assertEqual(
            0.0, ds_io.fitness("http://dsio/test.png", path_type="url"))

        ds_io.write(xr.Dataset(), "bibo.odod")
        self.assertEqual(1.0, ds_io.fitness("bibo.odod", path_type=None))
        self.assertEqual(1.0, ds_io.fitness("bibo.odod", path_type="file"))
        self.assertEqual(1.0, ds_io.fitness("bibo.odod", path_type="dir"))
        self.assertEqual(1.0, ds_io.fitness("bibo.odod", path_type="url"))
예제 #6
0
 def test_props(self):
     ds_io = MemDatasetIO()
     self.assertEqual('mem', ds_io.name)
     self.assertEqual('mem', ds_io.ext)
     self.assertEqual('In-memory dataset I/O', ds_io.description)
     self.assertEqual({'r', 'w', 'a'}, ds_io.modes)