예제 #1
0
        public void OpeningGroupInGroup()
        {
            string fileName = GetFilename("opengroupingroup.h5");

            Hdf5File  file   = Hdf5File.Create(fileName);
            Hdf5Group group1 = file.Groups.Add("group1");

            Assert.IsNotNull(group1);
            Assert.AreEqual(1, file.Groups.Count);

            Hdf5Group group2 = group1.Groups.Add("group2");

            Assert.AreEqual(1, file.Groups.Count);
            Assert.AreEqual(1, group1.Groups.Count);

            file.Close();

            file   = new Hdf5File(fileName);
            group1 = file.Groups[0];
            Assert.IsNotNull(group1);
            Assert.AreEqual("group1", group1.Name);

            group2 = group1.Groups[0];
            Assert.IsNotNull(group2);
            Assert.AreEqual("group2", group2.Name);
        }
예제 #2
0
        public void OpenDatasetInGroup()
        {
            string filename = GetFilename("opendatasetingroup.h5");

            Hdf5File file = Hdf5File.Create(filename);

            Hdf5Group group = file.Groups.Add("group1");

            List <Hdf5DimensionProperty> properties = new List <Hdf5DimensionProperty>();
            Hdf5DimensionProperty        property   = new Hdf5DimensionProperty {
                CurrentSize = 100
            };

            properties.Add(property);

            Hdf5Dataset dataset = group.Datasets.Add("dataset1", Hdf5DataTypes.Int8, properties);

            Assert.IsNotNull(dataset);
            Assert.AreEqual(0, file.Datasets.Count);
            Assert.AreEqual(1, group.Datasets.Count);

            file.Close();

            file    = new Hdf5File(filename);
            group   = file.Groups[0];
            dataset = group.Datasets[0];

            Assert.IsNotNull(dataset);
            Assert.AreEqual("dataset1", dataset.Name);
        }
예제 #3
0
        public void UpdateStringAttributeOnDataset()
        {
            string fileName = GetFilename("updatestringattributeondataset.h5");

            Hdf5File  file  = Hdf5File.Create(fileName);
            Hdf5Group group = file.Groups.Add("group");

            List <Hdf5DimensionProperty> dimensionProps = new List <Hdf5DimensionProperty>();
            Hdf5DimensionProperty        prop           = new Hdf5DimensionProperty {
                CurrentSize = 1
            };

            dimensionProps.Add(prop);

            Hdf5Dataset dataset = group.Datasets.Add("dataset1", Hdf5DataTypes.Int32, dimensionProps);

            Hdf5Attribute attribute = dataset.Attributes.Add("attribute1", "test");

            attribute.Value = "test2";
            dataset.Attributes.Update(attribute);
            file.Close();

            file      = new Hdf5File(fileName);
            group     = file.Groups[0];
            dataset   = group.Datasets[0];
            attribute = dataset.Attributes[0];
            Assert.AreEqual("test2", attribute.Value);
        }
예제 #4
0
        public void GetAttributeOnGroup()
        {
            string fileName = GetFilename("getattributeongroup.h5");

            Hdf5File  file  = Hdf5File.Create(fileName);
            Hdf5Group group = file.Groups.Add("group1");

            group.Attributes.Add("attribute1", "test");
            group.Attributes.Add("attribute2", 5);
            Assert.AreEqual(2, group.Attributes.Count);

            file.Close();

            file  = new Hdf5File(fileName);
            group = file.Groups[0];
            var attibutes = group.Attributes;

            Assert.AreEqual(2, attibutes.Count);

            var attribute1 = attibutes[0];

            Assert.AreEqual("attribute1", attribute1.Name);
            Assert.AreEqual("test", attribute1.Value);

            var attribute2 = attibutes[1];

            Assert.AreEqual("attribute2", attribute2.Name);
            Assert.AreEqual(5, attribute2.Value);
        }
예제 #5
0
        public static object GetObject(Hdf5Identifier _fileId, AbstractHdf5Object _parent, string _objectName)
        {
            Hdf5Path combinedPath = _parent.Path.Append(_objectName);
            object   output       = null;

            if (combinedPath != null)
            {
                string fullPath = combinedPath.FullPath;

                H5O.info_t gInfo = new H5O.info_t();
                H5O.get_info_by_name(_fileId.Value, fullPath, ref gInfo);

                var id = H5O.open(_fileId.Value, fullPath).ToId();
                if (id.Value > 0)
                {
                    if (gInfo.type == H5O.type_t.DATASET)
                    {
                        output = DatasetHelper.LoadDataset(_fileId, id, fullPath);
                    }

                    if (gInfo.type == H5O.type_t.GROUP)
                    {
                        Hdf5Group group = new Hdf5Group(_fileId, id, fullPath);
                        group.FileId = _fileId;
                        group.LoadChildObjects();
                        output = group;
                    }

                    H5O.close(id.Value);
                }
            }

            return(output);
        }
예제 #6
0
        public void UpdateAttributeWithMismatchOnDataset()
        {
            string fileName = GetFilename("updateattributewithmistmachondataset.h5");

            Hdf5File  file  = Hdf5File.Create(fileName);
            Hdf5Group group = file.Groups.Add("group");

            List <Hdf5DimensionProperty> dimensionProps = new List <Hdf5DimensionProperty>();
            Hdf5DimensionProperty        prop           = new Hdf5DimensionProperty {
                CurrentSize = 1
            };

            dimensionProps.Add(prop);

            Hdf5Dataset dataset = group.Datasets.Add("dataset1", Hdf5DataTypes.Int32, dimensionProps);

            Hdf5Attribute attribute = dataset.Attributes.Add("attribute1", "test");

            try
            {
                attribute.Value = 5;

                dataset.Attributes.Update(attribute);

                Assert.Fail("Should have thrown an exception");
            }
            catch (Exception ex)
            {
                file.Close();
                Assert.IsInstanceOf <Hdf5TypeMismatchException>(ex);
            }
        }
예제 #7
0
        public void LoopThrougGroups()
        {
            string fileName = GetFilename("loopthroughgroups.h5");

            Hdf5File  file   = Hdf5File.Create(fileName);
            Hdf5Group group1 = file.Groups.Add("group1");
            Hdf5Group group2 = file.Groups.Add("group2");
            Hdf5Group group3 = file.Groups.Add("group3");
            Hdf5Group group4 = file.Groups.Add("group4");
            Hdf5Group group5 = file.Groups.Add("group5");

            Assert.AreEqual(5, file.Groups.Count);

            foreach (Hdf5Group hdf5Group in file.Groups)
            {
                Assert.IsNotNull(hdf5Group);
            }

            for (int i = 0; i < 5; i++)
            {
                var group = file.Groups[i];
            }

            file.Close();
        }
예제 #8
0
        public void CreateAttributeTwiceOnDataset()
        {
            string fileName = GetFilename("createattributetwiceondataset.h5");

            Hdf5File  file  = Hdf5File.Create(fileName);
            Hdf5Group group = file.Groups.Add("test");
            List <Hdf5DimensionProperty> dimensionProps = new List <Hdf5DimensionProperty>();
            Hdf5DimensionProperty        prop           = new Hdf5DimensionProperty {
                CurrentSize = 1
            };

            dimensionProps.Add(prop);

            Hdf5Dataset dataset = group.Datasets.Add("dataset1", Hdf5DataTypes.Int32, dimensionProps);

            dataset.Attributes.Add("attribute1", "test");

            try
            {
                dataset.Attributes.Add("attribute1", "test2");
                Assert.Fail("Should have thrown an exception");
            }
            catch (Exception ex)
            {
                file.Close();
                Assert.IsInstanceOf <Hdf5AttributeAlreadyExistException>(ex);
            }
        }
예제 #9
0
        public void DeleteAttributeOnDataset()
        {
            string fileName = GetFilename("deleteattributeondataset.h5");

            Hdf5File  file  = Hdf5File.Create(fileName);
            Hdf5Group group = file.Groups.Add("group1");

            List <Hdf5DimensionProperty> dimensionProps = new List <Hdf5DimensionProperty>();
            Hdf5DimensionProperty        prop           = new Hdf5DimensionProperty {
                CurrentSize = 1
            };

            dimensionProps.Add(prop);

            Hdf5Dataset dataset = group.Datasets.Add("dataset1", Hdf5DataTypes.Int32, dimensionProps);

            dataset.Attributes.Add("attribute1", "test");
            dataset.Attributes.Add("attribute2", 5);
            Assert.AreEqual(2, dataset.Attributes.Count);

            file.Close();

            file    = new Hdf5File(fileName);
            group   = file.Groups[0];
            dataset = group.Datasets[0];
            var attibutes = dataset.Attributes;

            Assert.AreEqual(2, attibutes.Count);

            var attribute1 = attibutes[0];

            Assert.AreEqual("attribute1", attribute1.Name);
            Assert.AreEqual("test", attribute1.Value);

            var attribute2 = attibutes[1];

            Assert.AreEqual("attribute2", attribute2.Name);
            Assert.AreEqual(5, attribute2.Value);

            dataset.Attributes.Delete(attribute1);
            Assert.AreEqual(1, attibutes.Count);
            attribute2 = attibutes[0];
            Assert.AreEqual("attribute2", attribute2.Name);
            Assert.AreEqual(5, attribute2.Value);

            file.Close();

            file      = new Hdf5File(fileName);
            group     = file.Groups[0];
            dataset   = group.Datasets[0];
            attibutes = dataset.Attributes;
            Assert.AreEqual(1, attibutes.Count);
            attribute2 = attibutes[0];
            Assert.AreEqual("attribute2", attribute2.Name);
            Assert.AreEqual(5, attribute2.Value);
        }
예제 #10
0
        public void CreateGroup()
        {
            string fileName = GetFilename("creategroup.h5");

            Hdf5File  file  = Hdf5File.Create(fileName);
            Hdf5Group group = file.Groups.Add("group1");

            Assert.IsNotNull(group);
            Assert.AreEqual(1, file.Groups.Count);

            file.Close();
        }
예제 #11
0
        public void CreateAttributeOnGroup()
        {
            string fileName = GetFilename("createattributeongroup.h5");

            Hdf5File  file  = Hdf5File.Create(fileName);
            Hdf5Group group = file.Groups.Add("group1");

            group.Attributes.Add("attribute1", "test");
            group.Attributes.Add("attribute2", 5);
            Assert.AreEqual(2, group.Attributes.Count);

            file.Close();
        }
예제 #12
0
        public static Hdf5Group CreateGroup(Hdf5Identifier _fileId, Hdf5Path _parentPath, string _name)
        {
            Hdf5Path path = _parentPath.Append(_name);
            var      id   = H5G.create(_fileId.Value, path.FullPath);

            if (id > 0)
            {
                Hdf5Group group = new Hdf5Group(_fileId, id.ToId(), path.FullPath);
                H5G.close(id);
                FileHelper.FlushToFile(_fileId);
                return(group);
            }
            return(null);
        }
예제 #13
0
        public void CopyToTest()
        {
            string fileName = GetFilename("copyto.h5");

            Hdf5File  file   = Hdf5File.Create(fileName);
            Hdf5Group group1 = file.Groups.Add("group1");
            Hdf5Group group2 = file.Groups.Add("group2");
            Hdf5Group group3 = file.Groups.Add("group3");
            Hdf5Group group4 = file.Groups.Add("group4");
            Hdf5Group group5 = file.Groups.Add("group5");

            Hdf5Group[] groups = new Hdf5Group[5];
            file.Groups.CopyTo(groups, 0);
        }
예제 #14
0
        public static Hdf5Group CreateGroupAddToList(
            ReadonlyNamedItemList <Hdf5Group> _groups,
            Hdf5Identifier _fileId,
            Hdf5Path _parentPath,
            string _name)
        {
            Hdf5Group group = CreateGroup(_fileId, _parentPath, _name);

            if (group != null)
            {
                _groups.Add(group);
            }
            return(group);
        }
예제 #15
0
        public void DeleteGroup()
        {
            string fileName = GetFilename("deletegroup.h5");

            Hdf5File  file   = Hdf5File.Create(fileName);
            Hdf5Group group1 = file.Groups.Add("group1");
            Hdf5Group group2 = file.Groups.Add("group2");
            Hdf5Group group3 = file.Groups.Add("group3");
            Hdf5Group group4 = file.Groups.Add("group4");
            Hdf5Group group5 = file.Groups.Add("group5");

            Assert.AreEqual(5, file.Groups.Count);

            //TODO - delete
        }
예제 #16
0
        public void ContainsTest()
        {
            string fileName = GetFilename("contains.h5");

            Hdf5File  file   = Hdf5File.Create(fileName);
            Hdf5Group group1 = file.Groups.Add("group1");
            Hdf5Group group2 = file.Groups.Add("group2");
            Hdf5Group group3 = file.Groups.Add("group3");
            Hdf5Group group4 = file.Groups.Add("group4");
            Hdf5Group group5 = file.Groups.Add("group5");

            Assert.IsTrue(file.Groups.Contains(group1));
            Assert.IsTrue(file.Groups.Contains(group2));
            Assert.IsTrue(file.Groups.Contains(group3));
            Assert.IsTrue(file.Groups.Contains(group4));
            Assert.IsTrue(file.Groups.Contains(group5));
        }
예제 #17
0
        public void UpdateStringAttributeOnGroup()
        {
            string fileName = GetFilename("updatestringattributeongroup.h5");

            Hdf5File      file      = Hdf5File.Create(fileName);
            Hdf5Group     group     = file.Groups.Add("group");
            Hdf5Attribute attribute = group.Attributes.Add("attribute1", "test");

            attribute.Value = "test2";
            group.Attributes.Update(attribute);
            file.Close();

            file      = new Hdf5File(fileName);
            group     = file.Groups[0];
            attribute = group.Attributes[0];
            Assert.AreEqual("test2", attribute.Value);
        }
예제 #18
0
        public void CreateAttributeTwiceOnGroup()
        {
            string fileName = GetFilename("createattributetwiceongroup.h5");

            Hdf5File  file  = Hdf5File.Create(fileName);
            Hdf5Group group = file.Groups.Add("test");

            group.Attributes.Add("attribute1", "test");

            try
            {
                group.Attributes.Add("attribute1", "test2");
                Assert.Fail("Should have thrown an exception");
            }
            catch (Exception ex)
            {
                file.Close();
                Assert.IsInstanceOf <Hdf5AttributeAlreadyExistException>(ex);
            }
        }
예제 #19
0
        public void GetEnumeratorTest()
        {
            string fileName = GetFilename("getenumerator.h5");

            Hdf5File  file   = Hdf5File.Create(fileName);
            Hdf5Group group1 = file.Groups.Add("group1");
            Hdf5Group group2 = file.Groups.Add("group2");
            Hdf5Group group3 = file.Groups.Add("group3");
            Hdf5Group group4 = file.Groups.Add("group4");
            Hdf5Group group5 = file.Groups.Add("group5");

            var groups = file.Groups;
            var test   = groups as IEnumerable;
            int i      = 0;

            foreach (object testGroup in test)
            {
                i++;
            }

            Assert.AreEqual(5, i);
        }
예제 #20
0
        public void CreateAttributeOnDataset()
        {
            string fileName = GetFilename("createattributeondataset.h5");

            Hdf5File  file  = Hdf5File.Create(fileName);
            Hdf5Group group = file.Groups.Add("group1");

            List <Hdf5DimensionProperty> dimensionProps = new List <Hdf5DimensionProperty>();
            Hdf5DimensionProperty        prop           = new Hdf5DimensionProperty {
                CurrentSize = 1
            };

            dimensionProps.Add(prop);

            Hdf5Dataset dataset = group.Datasets.Add("dataset1", Hdf5DataTypes.Int32, dimensionProps);

            dataset.Attributes.Add("attribute1", "test");
            dataset.Attributes.Add("attribute2", 5);
            Assert.AreEqual(2, dataset.Attributes.Count);

            file.Close();
        }
예제 #21
0
        public void UpdateAttributeWithMismatchOnGroup()
        {
            string fileName = GetFilename("updateattributewithmistmachongroup.h5");

            Hdf5File      file      = Hdf5File.Create(fileName);
            Hdf5Group     group     = file.Groups.Add("group");
            Hdf5Attribute attribute = group.Attributes.Add("attribute1", "test");

            try
            {
                attribute.Value = 5;

                group.Attributes.Update(attribute);

                Assert.Fail("Should have thrown an exception");
            }
            catch (Exception ex)
            {
                file.Close();
                Assert.IsInstanceOf <Hdf5TypeMismatchException>(ex);
            }
        }