public void WriteAndReadGroupsWithDataset() { string filename = Path.Combine(folder, "testGroups.H5"); try { var fileId = Hdf5.CreateFile(filename); Assert.IsTrue(fileId > 0); var dset = dsets.First(); var groupId = H5G.create(fileId, "/A"); ///B/C/D/E/F/G/H Hdf5.WriteDataset(groupId, "test", dset); var subGroupId = Hdf5.CreateGroup(groupId, "C"); var subGroupId2 = Hdf5.CreateGroup(groupId, "/D"); // will be saved at the root location dset = dsets.Skip(1).First(); Hdf5.WriteDataset(subGroupId, "test2", dset); Hdf5.CloseGroup(subGroupId); Hdf5.CloseGroup(subGroupId2); Hdf5.CloseGroup(groupId); groupId = H5G.create(fileId, "/A/B"); ///B/C/D/E/F/G/H dset = dsets.Skip(1).First(); Hdf5.WriteDataset(groupId, "test", dset); Hdf5.CloseGroup(groupId); groupId = Hdf5.CreateGroupRecursively(fileId, "A/B/C/D/E/F/I"); Hdf5.CloseGroup(groupId); Hdf5.CloseFile(fileId); fileId = Hdf5.OpenFile(filename); Assert.IsTrue(fileId > 0); groupId = H5G.open(fileId, "/A/B"); double[,] dset2 = (double[, ])Hdf5.ReadDataset <double>(groupId, "test"); CompareDatasets(dset, dset2); Assert.IsTrue(Hdf5.CloseGroup(groupId) >= 0); groupId = H5G.open(fileId, "/A/C"); dset2 = (double[, ])Hdf5.ReadDataset <double>(groupId, "test2"); CompareDatasets(dset, dset2); Assert.IsTrue(Hdf5.CloseGroup(groupId) >= 0); bool same = dset == dset2; dset = dsets.First(); dset2 = (double[, ])Hdf5.ReadDataset <double>(fileId, "/A/test"); CompareDatasets(dset, dset2); Assert.IsTrue(Hdf5.GroupExists(fileId, "A/B/C/D/E/F/I")); Assert.IsTrue(Hdf5.CloseFile(fileId) == 0); } catch (Exception ex) { CreateExceptionAssert(ex); } }
public void WriteAndReadChunckedDataset2() { string filename = Path.Combine(folder, "testChunks2.H5"); string groupName = "/test"; string datasetName = "Data"; try { var fileId = Hdf5.CreateFile(filename); Assert.IsTrue(fileId > 0); var groupId = Hdf5.CreateGroup(fileId, groupName); Assert.IsTrue(groupId >= 0); //var chunkSize = new ulong[] { 5, 5 }; using (var chunkedDset = new ChunkedDataset <double>(datasetName, groupId)) { foreach (var ds in dsets) { chunkedDset.AppendOrCreateDataset(ds); } ; } Hdf5.CloseFile(fileId); } catch (Exception ex) { CreateExceptionAssert(ex); } try { var fileId = Hdf5.OpenFile(filename); //var groupId = H5G.open(fileId, groupName); //var dset = Hdf5.ReadDatasetToArray<double>(groupId, datasetName); var dset = Hdf5.ReadDatasetToArray <double>(fileId, string.Concat(groupName, "/", datasetName)); Assert.IsTrue(dset.result.Rank == dsets.First().Rank); var xSum = dsets.Select(d => d.GetLength(0)).Sum(); Assert.IsTrue(xSum == dset.result.GetLength(0)); var testRange = Enumerable.Range(0, 30).Select(t => (double)t); // get every 5th element in the matrix var x0Range = dset.result.Cast <double>().Where((d, i) => i % 5 == 0); Assert.IsTrue(testRange.SequenceEqual(x0Range)); Hdf5.CloseFile(fileId); } catch (Exception ex) { CreateExceptionAssert(ex); } }
public void WriteAndReadPrimitives() { string filename = Path.Combine(folder, "testPrimitives.H5"); int intValue = 2; double dblValue = 1.1; string strValue = "test"; bool boolValue = true; var groupStr = "/test"; string concatFunc(string x) => string.Concat(groupStr, "/", x); Dictionary <string, List <string> > attributes = new Dictionary <string, List <string> >(); try { var fileId = Hdf5.CreateFile(filename); Assert.IsTrue(fileId > 0); var groupId = Hdf5.CreateGroup(fileId, groupStr); Hdf5.WriteOneValue(groupId, concatFunc(nameof(intValue)), intValue, attributes); Hdf5.WriteOneValue(groupId, concatFunc(nameof(dblValue)), dblValue, attributes); Hdf5.WriteOneValue(groupId, concatFunc(nameof(strValue)), strValue, attributes); Hdf5.WriteOneValue(groupId, concatFunc(nameof(boolValue)), boolValue, attributes); Hdf5.CloseGroup(groupId); Hdf5.CloseFile(fileId); } catch (Exception ex) { CreateExceptionAssert(ex); } try { var fileId = Hdf5.OpenFile(filename); Assert.IsTrue(fileId > 0); var groupId = H5G.open(fileId, groupStr); int readInt = Hdf5.ReadOneValue <int>(groupId, concatFunc(nameof(intValue))); Assert.IsTrue(intValue == readInt); double readDbl = Hdf5.ReadOneValue <double>(groupId, concatFunc(nameof(dblValue))); Assert.IsTrue(dblValue == readDbl); string readStr = Hdf5.ReadOneValue <string>(groupId, concatFunc(nameof(strValue))); Assert.IsTrue(strValue == readStr); bool readBool = Hdf5.ReadOneValue <bool>(groupId, concatFunc(nameof(boolValue))); Assert.IsTrue(boolValue == readBool); H5G.close(groupId); Hdf5.CloseFile(fileId); } catch (Exception ex) { CreateExceptionAssert(ex); } }
public void WriteAndReadStringAttribute() { string filename = Path.Combine(folder, "testAttributeString.H5"); try { var fileId = Hdf5.CreateFile(filename); Assert.IsTrue(fileId > 0); var groupId = Hdf5.CreateGroup(fileId, "test"); string attrStr = "this is an attribute"; Hdf5.WriteAttribute(groupId, "time", attrStr); string readStr = Hdf5.ReadAttribute <string>(groupId, "time"); Assert.IsTrue(readStr == attrStr); Assert.IsTrue(Hdf5.CloseFile(fileId) == 0); } catch (Exception ex) { CreateExceptionAssert(ex); } }
public void WriteAndReadAttribute() { string filename = Path.Combine(folder, "testAttribute.H5"); try { var fileId = Hdf5.CreateFile(filename); Assert.IsTrue(fileId > 0); var groupId = Hdf5.CreateGroup(fileId, "test"); DateTime nowTime = DateTime.Now; Hdf5.WriteAttribute(groupId, "time", nowTime); DateTime readTime = Hdf5.ReadAttribute <DateTime>(groupId, "time"); Assert.IsTrue(readTime == nowTime); Assert.IsTrue(Hdf5.CloseFile(fileId) == 0); } catch (Exception ex) { CreateExceptionAssert(ex); } }
public void WriteAndReadAttributes() { string filename = Path.Combine(folder, "testAttributes.H5"); int[] intValues = new int[] { 1, 2 }; double dblValue = 1.1; string strValue = "test"; string[] strValues = new string[2] { "test", "another test" }; bool boolValue = true; DateTime dateValue = new DateTime(1969, 1, 12); var groupStr = "/test"; //string concatFunc(string x) => string.Concat(groupStr, "/", x); string intName = nameof(intValues); string dblName = nameof(dblValue); string strName = nameof(strValue); string strNames = nameof(strValues); string boolName = nameof(boolValue); string dateName = nameof(dateValue); try { var fileId = Hdf5.CreateFile(filename); Assert.IsTrue(fileId > 0); var groupId = Hdf5.CreateGroup(fileId, groupStr); Hdf5.WriteAttributes <int>(groupId, intName, intValues); Hdf5.WriteAttribute(groupId, dblName, dblValue); Hdf5.WriteAttribute(groupId, strName, strValue); Hdf5.WriteAttributes <string>(groupId, strNames, strValues); Hdf5.WriteAttribute(groupId, boolName, boolValue); Hdf5.WriteAttribute(groupId, dateName, dateValue); H5G.close(groupId); Hdf5.CloseFile(fileId); } catch (Exception ex) { CreateExceptionAssert(ex); } try { var fileId = Hdf5.OpenFile(filename); Assert.IsTrue(fileId > 0); var groupId = H5G.open(fileId, groupStr); IEnumerable <int> readInts = (int[])Hdf5.ReadAttributes <int>(groupId, intName); Assert.IsTrue(intValues.SequenceEqual(readInts)); double readDbl = Hdf5.ReadAttribute <double>(groupId, dblName); Assert.IsTrue(dblValue == readDbl); string readStr = Hdf5.ReadAttribute <string>(groupId, strName); Assert.IsTrue(strValue == readStr); IEnumerable <string> readStrs = (string[])Hdf5.ReadAttributes <string>(groupId, strNames); Assert.IsTrue(strValues.SequenceEqual(readStrs)); bool readBool = Hdf5.ReadAttribute <bool>(groupId, boolName); Assert.IsTrue(boolValue == readBool); DateTime readDate = Hdf5.ReadAttribute <DateTime>(groupId, dateName); Assert.IsTrue(dateValue == readDate); H5G.close(groupId); Hdf5.CloseFile(fileId); } catch (Exception ex) { CreateExceptionAssert(ex); } }