Xmipp  v3.23.11-Nereus
Classes | Typedefs | Enumerations | Functions | Variables
for General Purpose handling of hdf5 files
Collaboration diagram for for General Purpose handling of hdf5 files:

Classes

class  XmippH5File
 

Typedefs

typedef std::pair< H5FileProvider, StringH5infoProvider
 

Enumerations

enum  H5FileProvider { NONE, MISTRAL, EMAN }
 

Functions

std::map< String, H5infoProvidercreateProviderMap ()
 
H5infoProvider getProvider (hid_t fhdf5)
 
herr_t showObjectInfo (hid_t group, const char *name, void *op_data)
 

Variables

const std::map< String, H5infoProviderH5ProviderMap = createProviderMap()
 

Detailed Description

Typedef Documentation

◆ H5infoProvider

typedef std::pair<H5FileProvider, String> H5infoProvider

Definition at line 51 of file xmipp_hdf5.h.

Enumeration Type Documentation

◆ H5FileProvider

Enumerator
NONE 
MISTRAL 
EMAN 

Definition at line 43 of file xmipp_hdf5.h.

44 {
45  NONE,
46  MISTRAL,
47  EMAN
48 } ;

Function Documentation

◆ createProviderMap()

std::map<String, H5infoProvider > createProviderMap ( )

Definition at line 102 of file xmipp_hdf5.cpp.

103 {
104  std::map<String, H5infoProvider > m;
105  m["NXtomo"] = std::make_pair(MISTRAL, "/NXtomo/instrument/sample/data");
106  m["TomoNormalized"] = std::make_pair(MISTRAL, "/TomoNormalized/TomoNormalized");
107  m["MDF"] = std::make_pair(EMAN, "/MDF/images/%i/image");
108  return m;
109 }
int m

◆ getProvider()

H5infoProvider getProvider ( hid_t  fhdf5)

Return the default dataset name according to the typical group name of the root

Parameters
fhdf5hdf5 file hander
Returns
Default dataset name for a file provider

Definition at line 202 of file xmipp_hdf5.cpp.

203 {
204  H5infoProvider provider;
205 
206  size_t maxSize = 1024;
207  char groupName[1024];
208  char memName[1024];
209 
210  hid_t gid;
211  ssize_t len;
212 
213  gid = H5Gopen(fhdf5,"/", H5P_DEFAULT);
214 
215  len = H5Iget_name(gid, groupName, maxSize);
216 
217  if (len == 0)
218  REPORT_ERROR(ERR_VALUE_EMPTY, "rwHDF5: Empty structure in file.");
219 
220  len = H5Gget_objname_by_idx(gid, 0, memName, maxSize);
221 
222  H5Gclose(gid);
223 
224  typedef std::map<String, H5infoProvider >::const_iterator it_type;
225 
226  for ( it_type it = H5ProviderMap.begin(); it != H5ProviderMap.end(); it++)
227  {
228  if ( strcmp(memName,it->first.c_str() ) == 0 )
229  return it->second;
230  }
231 
232  return std::make_pair(NONE , "");
233 
234 // REPORT_ERROR(ERR_IO, "rwHDF5: Unknown file provider. Default dataset unknown.");
235 
236 }
Empty value.
Definition: xmipp_error.h:194
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
std::pair< H5FileProvider, String > H5infoProvider
Definition: xmipp_hdf5.h:51
const std::map< String, H5infoProvider > H5ProviderMap
Definition: xmipp_hdf5.h:56
#define len

◆ showObjectInfo()

herr_t showObjectInfo ( hid_t  group,
const char *  name,
void *  op_data 
)

Definition at line 36 of file xmipp_hdf5.cpp.

37 {
38  H5TreeInfo &h5Info = *((H5TreeInfo*)op_data);
39  std::ostream &out = *(h5Info.out);
40 
41  hsize_t nobj;
42  herr_t err=0;
43  hid_t grpid, dsid;
44 
45  H5G_stat_t statbuf;
46 
47  // Print the object name
48  out << formatString("%s%s - ", h5Info.rootname.c_str(), name);
49 
50  H5Gget_objinfo(objId, name, 0, &statbuf);
51  /*
52  * process each object according to its type
53  */
54  switch(statbuf.type)
55  {
56  case H5G_LINK:
57  out << " SYM_LINK:\n";
58  // do_link(gid,memb_name);
59  break;
60  case H5G_GROUP:
61  {
62  String rootname = h5Info.rootname;
63  h5Info.rootname += (String)name + "/";
64 
65  grpid = H5Gopen(objId,name, H5P_DEFAULT);
66  err = H5Gget_num_objs(grpid, &nobj);
67  out << formatString("Group {%d elements}\n", nobj);
68 
69  H5Giterate(objId, name, NULL, showObjectInfo, &h5Info);
70  h5Info.rootname = rootname;
71  break;
72  }
73  case H5G_DATASET:
74  out << "Dataset {";
75  dsid = H5Dopen(objId, name, H5P_DEFAULT);
76  hsize_t dims[4];
77  hid_t filespace;
78  int rank;
79  filespace = H5Dget_space(dsid); /* Get filespace handle first. */
80  rank = H5Sget_simple_extent_dims(filespace, dims, NULL);
81 
82  for (int k = 0; k < rank-1; ++k)
83  out << dims[k] << ", ";
84 
85  out << dims[rank-1] << "}\n";
86  H5Dclose(dsid);
87  break;
88  case H5G_TYPE:
89  out << " Data type:\n";
90  // idType = H5Topen(objId,memb_name, H5P_DEFAULT);
91  // H5Tclose(idType);
92  break;
93  default:
94  out << " unknown?\n";
95  break;
96  }
97  return err;
98 }
std::string rootname
Definition: xmipp_hdf5.cpp:32
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
std::ostream * out
Definition: xmipp_hdf5.cpp:33
herr_t showObjectInfo(hid_t objId, const char *name, void *op_data)
Definition: xmipp_hdf5.cpp:36
std::string String
Definition: xmipp_strings.h:34
String formatString(const char *format,...)

Variable Documentation

◆ H5ProviderMap

const std::map<String, H5infoProvider > H5ProviderMap = createProviderMap()

Global declaration of a map to distinguish the h5file provider

Definition at line 56 of file xmipp_hdf5.h.