private void createHD5GroupObject(H5GroupId id, String name, ref HDF5GroupObject hdf5Obj) { hdf5Obj.GroupID = id; hdf5Obj.GroupName = name; long num = H5G.getNumObjects(hdf5Obj.GroupID); // the items under the group for (ulong i = 0; i < (ulong)num; i++) { String objName = H5G.getObjectNameByIndex(hdf5Obj.GroupID, i); // get the link info. //linfo = H5L.getInfo(groupID, objName); ObjectInfo objInfo = H5G.getObjectInfo(hdf5Obj.GroupID, objName, true); if (objInfo.objectType == H5GType.GROUP) { String pathName = "/" + name + "/" + objName; if (name.CompareTo("/") == 0) { pathName = "/" + objName; } H5GroupId groupID = null; try { groupID = H5G.open(hdf5Obj.GroupID, pathName); HDF5GroupObject subObj = new HDF5GroupObject(); subObj.ShortName = objName; createHD5GroupObject(groupID, pathName, ref subObj); hdf5Obj.SubGroups.Add(subObj); } catch (Exception e) { Console.WriteLine(e.Message); if (groupID != null) { H5G.close(groupID); } } } else if (objInfo.objectType == H5GType.DATASET) { String pathName = "/" + name + "/" + objName; HD5DataSetObject dataObject = new HD5DataSetObject(); dataObject.ShortName = objName; createHD5DataObject(hdf5Obj.GroupID, pathName, ref dataObject); hdf5Obj.Datasets.Add(dataObject); } } }
/// <summary> /// /// </summary> /// <param name="parentGroupName">immediate parent group/record name</param> /// <param name="dataName">the data/record/attribute name</param> /// <returns></returns> public HD5DataSetObject getHDF5DataObject(String parentGroupName, String dataName) { HDF5GroupObject parentObj = new HDF5GroupObject(); getHDF5GroupObject(parentGroupName, ref parentObj); if ((parentObj != null) && (parentObj.datasets != null)) { foreach (HD5DataSetObject hdf5Data in parentObj.datasets) { if (hdf5Data.ShortName.CompareTo(dataName) == 0) { return(hdf5Data); } } } return(null); }
public void getHDF5GroupObject(String groupName, ref HDF5GroupObject foundGroupObject) { if (subGroups != null) { foreach (HDF5GroupObject hdf5Ojb in subGroups) { if (hdf5Ojb.ShortName.CompareTo(groupName) == 0) { foundGroupObject = hdf5Ojb; } else { hdf5Ojb.getHDF5GroupObject(groupName, ref foundGroupObject); } if (foundGroupObject != null) { return; } } } }
public HDF5GroupObject open(string file) { if (H5F.is_hdf5(file)) { int result = H5.Open(); if (result < 0) { Console.WriteLine("can't open the file!"); } // get fildID. H5FileId fileID = H5F.open(file, H5F.OpenMode.ACC_RDONLY); //get groupid H5GroupId rootid = H5G.open(fileID, "/"); HDF5GroupObject hdf5Object = new HDF5GroupObject(); createHD5GroupObject(rootid, "/", ref hdf5Object); return(hdf5Object); } else { Console.WriteLine("this is not HDF5 file! please try open hdf5 file again."); return(null); } }