SHOGUN  v3.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HDF5File.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * Written (W) 2010 Soeren Sonnenburg
8  * Copyright (C) 2010 Berlin Institute of Technology
9  */
10 #ifndef __HDF5_FILE_H__
11 #define __HDF5_FILE_H__
12 
13 #include <shogun/lib/config.h>
14 
15 #ifdef HAVE_HDF5
16 #include <shogun/lib/common.h>
17 #include <shogun/io/SGIO.h>
18 #include <shogun/io/File.h>
19 #include <shogun/base/SGObject.h>
20 #include <hdf5.h>
21 
22 
23 namespace shogun
24 {
25 template <class ST> class SGString;
26 template <class ST> class SGSparseVector;
27 
34 #define IGNORE_IN_CLASSLIST
35 IGNORE_IN_CLASSLIST class CHDF5File : public CFile
36 {
37 public:
39  CHDF5File();
40 
47  CHDF5File(char* fname, char rw='r', const char* name=NULL);
48 
50  virtual ~CHDF5File();
51 
59  virtual void get_vector(bool*& vector, int32_t& len);
60  virtual void get_vector(int8_t*& vector, int32_t& len);
61  virtual void get_vector(uint8_t*& vector, int32_t& len);
62  virtual void get_vector(char*& vector, int32_t& len);
63  virtual void get_vector(int32_t*& vector, int32_t& len);
64  virtual void get_vector(uint32_t*& vector, int32_t& len);
65  virtual void get_vector(float64_t*& vector, int32_t& len);
66  virtual void get_vector(float32_t*& vector, int32_t& len);
67  virtual void get_vector(floatmax_t*& vector, int32_t& len);
68  virtual void get_vector(int16_t*& vector, int32_t& len);
69  virtual void get_vector(uint16_t*& vector, int32_t& len);
70  virtual void get_vector(int64_t*& vector, int32_t& len);
71  virtual void get_vector(uint64_t*& vector, int32_t& len);
73 
82  virtual void get_matrix(
83  bool*& matrix, int32_t& num_feat, int32_t& num_vec);
84  virtual void get_matrix(
85  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
86  virtual void get_matrix(
87  char*& matrix, int32_t& num_feat, int32_t& num_vec);
88  virtual void get_matrix(
89  int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
90  virtual void get_matrix(
91  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
92  virtual void get_matrix(
93  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
94  virtual void get_matrix(
95  uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
96  virtual void get_matrix(
97  float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
98  virtual void get_matrix(
99  float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
100  virtual void get_matrix(
101  floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
102  virtual void get_matrix(
103  int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
104  virtual void get_matrix(
105  uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
107 
116  virtual void get_ndarray(
117  uint8_t*& array, int32_t*& dims, int32_t& num_dims);
118  virtual void get_ndarray(
119  char*& array, int32_t*& dims, int32_t& num_dims);
120  virtual void get_ndarray(
121  int32_t*& array, int32_t*& dims, int32_t& num_dims);
122  virtual void get_ndarray(
123  float32_t*& array, int32_t*& dims, int32_t& num_dims);
124  virtual void get_ndarray(
125  float64_t*& array, int32_t*& dims, int32_t& num_dims);
126  virtual void get_ndarray(
127  int16_t*& array, int32_t*& dims, int32_t& num_dims);
128  virtual void get_ndarray(
129  uint16_t*& array, int32_t*& dims, int32_t& num_dims);
131 
140  virtual void get_sparse_matrix(
141  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
142  virtual void get_sparse_matrix(
143  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
144  virtual void get_sparse_matrix(
145  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
146  virtual void get_sparse_matrix(
147  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
148  virtual void get_sparse_matrix(
149  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
150  virtual void get_sparse_matrix(
151  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
152  virtual void get_sparse_matrix(
153  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
154  virtual void get_sparse_matrix(
155  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
156  virtual void get_sparse_matrix(
157  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
158  virtual void get_sparse_matrix(
159  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
160  virtual void get_sparse_matrix(
161  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
162  virtual void get_sparse_matrix(
163  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
164  virtual void get_sparse_matrix(
165  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
167 
168 
177  virtual void get_string_list(
178  SGString<bool>*& strings, int32_t& num_str,
179  int32_t& max_string_len);
180  virtual void get_string_list(
181  SGString<int8_t>*& strings, int32_t& num_str,
182  int32_t& max_string_len);
183  virtual void get_string_list(
184  SGString<uint8_t>*& strings, int32_t& num_str,
185  int32_t& max_string_len);
186  virtual void get_string_list(
187  SGString<char>*& strings, int32_t& num_str,
188  int32_t& max_string_len);
189  virtual void get_string_list(
190  SGString<int32_t>*& strings, int32_t& num_str,
191  int32_t& max_string_len);
192  virtual void get_string_list(
193  SGString<uint32_t>*& strings, int32_t& num_str,
194  int32_t& max_string_len);
195  virtual void get_string_list(
196  SGString<int16_t>*& strings, int32_t& num_str,
197  int32_t& max_string_len);
198  virtual void get_string_list(
199  SGString<uint16_t>*& strings, int32_t& num_str,
200  int32_t& max_string_len);
201  virtual void get_string_list(
202  SGString<int64_t>*& strings, int32_t& num_str,
203  int32_t& max_string_len);
204  virtual void get_string_list(
205  SGString<uint64_t>*& strings, int32_t& num_str,
206  int32_t& max_string_len);
207  virtual void get_string_list(
208  SGString<float32_t>*& strings, int32_t& num_str,
209  int32_t& max_string_len);
210  virtual void get_string_list(
211  SGString<float64_t>*& strings, int32_t& num_str,
212  int32_t& max_string_len);
213  virtual void get_string_list(
214  SGString<floatmax_t>*& strings, int32_t& num_str,
215  int32_t& max_string_len);
217 
225  virtual void set_vector(const bool* vector, int32_t len);
226  virtual void set_vector(const int8_t* vector, int32_t len);
227  virtual void set_vector(const uint8_t* vector, int32_t len);
228  virtual void set_vector(const char* vector, int32_t len);
229  virtual void set_vector(const int32_t* vector, int32_t len);
230  virtual void set_vector(const uint32_t* vector, int32_t len);
231  virtual void set_vector(const float32_t* vector, int32_t len);
232  virtual void set_vector(const float64_t* vector, int32_t len);
233  virtual void set_vector(const floatmax_t* vector, int32_t len);
234  virtual void set_vector(const int16_t* vector, int32_t len);
235  virtual void set_vector(const uint16_t* vector, int32_t len);
236  virtual void set_vector(const int64_t* vector, int32_t len);
237  virtual void set_vector(const uint64_t* vector, int32_t len);
239 
240 
248  virtual void set_matrix(
249  const bool* matrix, int32_t num_feat, int32_t num_vec);
250  virtual void set_matrix(
251  const int8_t* matrix, int32_t num_feat, int32_t num_vec);
252  virtual void set_matrix(
253  const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
254  virtual void set_matrix(
255  const char* matrix, int32_t num_feat, int32_t num_vec);
256  virtual void set_matrix(
257  const int32_t* matrix, int32_t num_feat, int32_t num_vec);
258  virtual void set_matrix(
259  const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
260  virtual void set_matrix(
261  const int64_t* matrix, int32_t num_feat, int32_t num_vec);
262  virtual void set_matrix(
263  const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
264  virtual void set_matrix(
265  const float32_t* matrix, int32_t num_feat, int32_t num_vec);
266  virtual void set_matrix(
267  const float64_t* matrix, int32_t num_feat, int32_t num_vec);
268  virtual void set_matrix(
269  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
270  virtual void set_matrix(
271  const int16_t* matrix, int32_t num_feat, int32_t num_vec);
272  virtual void set_matrix(
273  const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
275 
283  virtual void set_sparse_matrix(
284  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
285  virtual void set_sparse_matrix(
286  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
287  virtual void set_sparse_matrix(
288  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
289  virtual void set_sparse_matrix(
290  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
291  virtual void set_sparse_matrix(
292  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
293  virtual void set_sparse_matrix(
294  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
295  virtual void set_sparse_matrix(
296  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
297  virtual void set_sparse_matrix(
298  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
299  virtual void set_sparse_matrix(
300  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
301  virtual void set_sparse_matrix(
302  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
303  virtual void set_sparse_matrix(
304  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
305  virtual void set_sparse_matrix(
306  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
307  virtual void set_sparse_matrix(
308  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
310 
311 
320  virtual void set_string_list(
321  const SGString<bool>* strings, int32_t num_str);
322  virtual void set_string_list(
323  const SGString<int8_t>* strings, int32_t num_str);
324  virtual void set_string_list(
325  const SGString<uint8_t>* strings, int32_t num_str);
326  virtual void set_string_list(
327  const SGString<char>* strings, int32_t num_str);
328  virtual void set_string_list(
329  const SGString<int32_t>* strings, int32_t num_str);
330  virtual void set_string_list(
331  const SGString<uint32_t>* strings, int32_t num_str);
332  virtual void set_string_list(
333  const SGString<int16_t>* strings, int32_t num_str);
334  virtual void set_string_list(
335  const SGString<uint16_t>* strings, int32_t num_str);
336  virtual void set_string_list(
337  const SGString<int64_t>* strings, int32_t num_str);
338  virtual void set_string_list(
339  const SGString<uint64_t>* strings, int32_t num_str);
340  virtual void set_string_list(
341  const SGString<float32_t>* strings, int32_t num_str);
342  virtual void set_string_list(
343  const SGString<float64_t>* strings, int32_t num_str);
344  virtual void set_string_list(
345  const SGString<floatmax_t>* strings, int32_t num_str);
347 
348  virtual void get_matrix(int8_t*&, int32_t&, int32_t&)
349  {
351  }
352  virtual void get_int8_sparsematrix(shogun::SGSparseVector<signed char>*&, int32_t&, int32_t&)
353  {
355  }
356  virtual void get_int8_string_list(shogun::SGString<signed char>*&, int32_t&, int32_t&)
357  {
359  }
360  virtual void set_int8_matrix(const int8_t*, int32_t, int32_t)
361  {
363  }
364  virtual void set_int8_sparsematrix(const shogun::SGSparseVector<signed char>*, int32_t, int32_t)
365  {
367  }
368  virtual void set_int8_string_list(const shogun::SGString<signed char>*, int32_t)
369  {
371  }
372 
373 
375  virtual const char* get_name() const { return "HDF5File"; }
376 
377 protected:
379  void get_boolean_type();
380 
389  hid_t get_compatible_type(H5T_class_t t_class,
390  const TSGDataType* datatype);
391 
399  void get_dims(hid_t dataset, int32_t*& dims, int32_t& ndims, int64_t& total_elements);
400 
402  void create_group_hierarchy();
403 
404 protected:
406  hid_t h5file;
408  hid_t boolean_type;
409 };
410 }
411 #endif // HAVE_HDF5
412 #endif //__HDF5_FILE_H__
413 

SHOGUN Machine Learning Toolbox - Documentation