コード例 #1
0
 def test_HDF5RemoveAttributes(self):
     F = HDF5(self.tmpfile, 'w')
     F.mkGroup("/Header")
     F.mkGroup("/Data/ExampleGroup")
     data1 = np.random.rand(50)
     F.writeDataset("/Data", "ExampleData1", data1)
     attr = {"attr1": "hello world", "attr2": np.array(["foo"])}
     F.addAttributes("/Data", attr, overwrite=False)
     self.assertTrue("attr1" in F.fileObj["/Data"].attrs.keys())
     self.assertTrue("attr2" in F.fileObj["/Data"].attrs.keys())
     attr = {"attr1": "goodbye world", "attr2": np.random.rand(5)}
     F.addAttributes("/Data/ExampleData1", attr, overwrite=False)
     # Test removing attributes
     F.rmAttributes("/Data", attributes=None)
     self.assertFalse("attr1" in F.fileObj["/Data"].attrs.keys())
     self.assertFalse("attr2" in F.fileObj["/Data"].attrs.keys())
     F.rmAttributes("/Data/ExampleData1", attributes=["attr1"])
     self.assertFalse(
         "attr1" in F.fileObj["/Data/ExampleData1"].attrs.keys())
     self.assertTrue(
         "attr2" in F.fileObj["/Data/ExampleData1"].attrs.keys())
     F.close()
     F = HDF5(self.tmpfile, 'r')
     with self.assertRaises(IOError):
         F.rmAttributes("/Data/ExampleData1", attributes=["attr1"])
     F.close()
     return
コード例 #2
0
 def test_HDF5WriteDatasets(self):
     F = HDF5(self.tmpfile, 'w')
     F.mkGroup("/Header")
     F.mkGroup("/Data/ExampleGroup")
     # Test writing dataset to root
     data1 = np.random.rand(50)
     F.writeDataset("/Data", "ExampleData1", data1)
     self.assertTrue("ExampleData1" in F.fileObj["/Data"].keys())
     self.assertTrue(F.datasetExists("/Data", "ExampleData1"))
     diff = np.fabs(data1 - np.array(F.fileObj["/Data/ExampleData1"]))
     [self.assertEqual(d, 0.0) for d in diff]
     # Test writing dataset to subgroup
     data2 = np.random.rand(50)
     F.writeDataset("/Data/ExampleGroup", "ExampleData2", data2)
     self.assertTrue(
         "ExampleData2" in F.fileObj["/Data/ExampleGroup"].keys())
     self.assertTrue(F.datasetExists("/Data/ExampleGroup", "ExampleData2"))
     diff = np.fabs(data2 -
                    np.array(F.fileObj["/Data/ExampleGroup/ExampleData2"]))
     [self.assertEqual(d, 0.0) for d in diff]
     # Test overwriting option
     with warnings.catch_warnings():
         warnings.filterwarnings("ignore")
         F.writeDataset("/Data", "ExampleData1", data2, overwrite=False)
         diff = np.fabs(data1 - np.array(F.fileObj["/Data/ExampleData1"]))
         [self.assertEqual(d, 0.0) for d in diff]
     F.writeDataset("/Data", "ExampleData1", data2, overwrite=True)
     diff = np.fabs(data2 - np.array(F.fileObj["/Data/ExampleData1"]))
     [self.assertEqual(d, 0.0) for d in diff]
     # Testing appending datasets
     data3 = np.random.rand(50)
     F.appendDataset("/Data", "ExampleData1", data3)
     self.assertEqual(F.fileObj["/Data/ExampleData1"].size, 100)
     diff = np.fabs(
         np.append(data2, data3) -
         np.array(F.fileObj["/Data/ExampleData1"]))
     [self.assertEqual(d, 0.0) for d in diff]
     with self.assertRaises(KeyError):
         F.appendDataset("/Data",
                         "ExampleData3",
                         data3,
                         exit_if_missing=True)
     F.close()
     # Testing writing to file opened in read-only mode
     F = HDF5(self.tmpfile, 'r')
     with self.assertRaises(IOError):
         F.writeDataset("/Data", "ExampleData1", data1)
     F.close()
     return
コード例 #3
0
 def test_HDF5ReadAttributes(self):
     F = HDF5(self.examplefile, 'r')
     attr = F.readAttributes("/Data")
     self.assertEqual(len(attr.keys()), 1)
     self.assertTrue("greeting" in attr.keys())
     self.assertTrue(attr["greeting"], "hello world")
     attr = F.readAttributes("/Data/ExampleGroup/ExampleIntData2")
     self.assertEqual(len(attr.keys()), 2)
     self.assertTrue("value" in attr.keys())
     self.assertTrue(attr["value"], 50)
     self.assertTrue("array" in attr.keys())
     [
         self.assertEqual(a, b)
         for a, b in zip(np.arange(5, dtype=float), attr["array"])
     ]
     attr = F.readAttributes("/Data/ExampleGroup/ExampleIntData2",
                             required=["value"])
     self.assertEqual(len(attr.keys()), 1)
     self.assertTrue("value" in attr.keys())
     self.assertTrue(attr["value"], 50)
     self.assertFalse("array" in attr.keys())
     with self.assertRaises(KeyError):
         F.readAttributes("/Data/Example")
     F.close()
     return
コード例 #4
0
 def test_HDF5RemoveGroups(self):
     F = HDF5(self.tmpfile, 'w')
     F.mkGroup("/Header")
     F.mkGroup("/Data/SubGroup")
     grps0 = F.fileObj["/"].keys()
     self.assertTrue("Header" in grps0)
     self.assertTrue("Data" in grps0)
     F.rmGroup("/Header")
     grps0 = F.fileObj["/"].keys()
     self.assertFalse("Header" in grps0)
     self.assertTrue("Data" in grps0)
     F.rmGroup("/Data")
     self.assertFalse("Data" in F.fileObj["/"].keys())
     F.close()
     F = HDF5(self.tmpfile, 'r')
     with self.assertRaises(IOError):
         F.rmGroup("/Header")
     F.close()
     return
コード例 #5
0
 def test_HDF5CreateGroups(self):
     F = HDF5(self.tmpfile, 'w')
     F.mkGroup("/Header")
     F.mkGroup("/Data/SubGroup")
     grps0 = F.fileObj["/"].keys()
     self.assertTrue("Header" in grps0)
     self.assertTrue("Data" in grps0)
     grps1 = F.fileObj["/Data"].keys()
     self.assertTrue("SubGroup" in grps1)
     F.close()
     return
コード例 #6
0
 def test_HDF5AddAttributes(self):
     F = HDF5(self.tmpfile, 'w')
     F.mkGroup("/Header")
     F.mkGroup("/Data/ExampleGroup")
     data1 = np.random.rand(50)
     F.writeDataset("/Data", "ExampleData1", data1)
     attr = {"attr1": "hello world"}
     F.addAttributes("/Data", attr, overwrite=False)
     self.assertEqual(F.fileObj["/Data"].attrs["attr1"], b"hello world")
     F.addAttributes("/Data/ExampleData1", {"value": 1}, overwrite=False)
     self.assertEqual(F.fileObj["/Data/ExampleData1"].attrs["value"], 1)
     F.addAttributes("/Data/ExampleData1", {"value": 2}, overwrite=True)
     self.assertEqual(F.fileObj["/Data/ExampleData1"].attrs["value"], 2)
     F.close()
     # Test attempting to write in read-only mode
     F = HDF5(self.tmpfile, 'r')
     with self.assertRaises(IOError):
         F.addAttributes("/Data", attr, overwrite=False)
     F.close()
     return
コード例 #7
0
 def test_HDF5RemoveDatasets(self):
     F = HDF5(self.tmpfile, 'w')
     F.mkGroup("/Header")
     F.mkGroup("/Data/ExampleGroup")
     data1 = np.random.rand(50)
     F.writeDataset("/Data", "ExampleData1", data1)
     self.assertTrue("ExampleData1" in F.fileObj["/Data"].keys())
     F.rmDataset("/Data", "ExampleData1")
     self.assertFalse("ExampleData1" in F.fileObj["/Data"].keys())
     data2 = np.random.rand(50)
     F.writeDataset("/Data/ExampleGroup", "ExampleData2", data2)
     self.assertTrue(
         "ExampleData2" in F.fileObj["/Data/ExampleGroup"].keys())
     F.rmDataset("/Data/ExampleGroup", "ExampleData2")
     self.assertFalse(
         "ExampleData2" in F.fileObj["/Data/ExampleGroup"].keys())
     F.close()
     F = HDF5(self.tmpfile, 'r')
     with self.assertRaises(IOError):
         F.rmDataset("/Data/ExampleGroup", "ExampleData2")
     F.close()
     return
コード例 #8
0
 def test_HDF5ListDatasets(self):
     F = HDF5(self.examplefile, 'r')
     self.assertEqual(F.lsDatasets("/", recursive=False), [])
     dsets = F.lsDatasets("/", recursive=True)
     keys = ['/Data/ExampleFloatData','/Data/ExampleGroup/ExampleFloatData2',\
                 '/Data/ExampleGroup/ExampleIntData2','/Data/ExampleIntData']
     self.assertEqual(len(dsets), len(keys))
     [self.assertTrue(key in dsets) for key in keys]
     dsets = F.lsDatasets("/Data", recursive=False)
     keys = ['ExampleFloatData', 'ExampleIntData']
     self.assertEqual(len(dsets), len(keys))
     [self.assertTrue(key in dsets) for key in keys]
     F.close()
     return
コード例 #9
0
 def testHDF5ListObjects(self):
     F = HDF5(self.examplefile, 'r')
     objs = F.lsObjects("/", recursive=False)
     self.assertEqual(len(objs), 2)
     keys = ["Header", "Data"]
     [self.assertTrue(key in objs) for key in keys]
     objs = F.lsObjects("/", recursive=True)
     self.assertEqual(len(objs), 7)
     keys = ['/Data','/Data/ExampleFloatData','/Data/ExampleGroup',\
                 '/Data/ExampleGroup/ExampleFloatData2',\
                 '/Data/ExampleGroup/ExampleIntData2',\
                 '/Data/ExampleIntData','/Header']
     [self.assertTrue(key in objs) for key in keys]
     F.close()
     return
コード例 #10
0
 def test_HDF5ListGroups(self):
     F = HDF5(self.examplefile, 'r')
     grps0 = list(F.fileObj["/"].keys())
     grps = F.lsGroups("/", recursive=False)
     self.assertTrue(grps == grps0)
     self.assertTrue("Header" in grps)
     self.assertTrue("Data" in grps)
     grps = F.lsGroups("/", recursive=True)
     self.assertEqual(len(grps), 3)
     self.assertTrue("/Header" in grps)
     self.assertTrue("/Data" in grps)
     self.assertTrue("/Data/ExampleGroup" in grps)
     grps = F.lsGroups("/Data", recursive=True)
     self.assertEqual(len(grps), 1)
     self.assertTrue("/Data/ExampleGroup" in grps)
     grps = F.lsGroups("/Data", recursive=False)
     self.assertEqual(len(grps), 1)
     self.assertTrue("ExampleGroup" in grps)
     F.close()
     return
コード例 #11
0
 def test_HDF5ReadDatasets(self):
     F = HDF5(self.examplefile, 'r')
     dset = F.readDataset("/Data/ExampleFloatData", exit_if_missing=False)
     [
         self.assertEqual(a, b)
         for a, b in zip(dset, np.arange(100, dtype=float))
     ]
     dset = F.readDataset("/Data/ExampleIntData", exit_if_missing=False)
     [
         self.assertEqual(a, b)
         for a, b in zip(dset, np.arange(100, dtype=int))
     ]
     self.assertIsNone(
         F.readDataset("/Data/ExampleData", exit_if_missing=False))
     with self.assertRaises(KeyError):
         F.readDataset("/Data/ExampleData", exit_if_missing=True)
     dset = F.readDataset("/Data/ExampleGroup/ExampleFloatData2",
                          exit_if_missing=False)
     [
         self.assertEqual(a, b)
         for a, b in zip(dset, np.arange(10, dtype=float))
     ]
     dset = F.readDataset("/Data/ExampleGroup/ExampleIntData2",
                          exit_if_missing=False)
     [
         self.assertEqual(a, b)
         for a, b in zip(dset, np.arange(100, dtype=int))
     ]
     self.assertIsNone(
         F.readDataset("/Data/ExampleGroup/ExampleData",
                       exit_if_missing=False))
     with self.assertRaises(KeyError):
         F.readDataset("/Data/ExampleGroup/ExampleData",
                       exit_if_missing=True)
         F.readDataset("/Data/ExampleGroup1/ExampleFloatData2",
                       exit_if_missing=False)
         F.readDataset("/Data/ExampleGroup1/ExampleFloatData2",
                       exit_if_missing=True)
     F.close()
     return