SHOGUN  3.2.1
 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 <hdf5.h>
20 
21 
22 namespace shogun
23 {
24 template <class ST> class SGString;
25 template <class ST> class SGSparseVector;
26 struct TSGDataType;
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 
52 #ifndef SWIG // SWIG should skip this
53 
60  virtual void get_vector(bool*& vector, int32_t& len);
61  virtual void get_vector(int8_t*& vector, int32_t& len);
62  virtual void get_vector(uint8_t*& vector, int32_t& len);
63  virtual void get_vector(char*& vector, int32_t& len);
64  virtual void get_vector(int32_t*& vector, int32_t& len);
65  virtual void get_vector(uint32_t*& vector, int32_t& len);
66  virtual void get_vector(float64_t*& vector, int32_t& len);
67  virtual void get_vector(float32_t*& vector, int32_t& len);
68  virtual void get_vector(floatmax_t*& vector, int32_t& len);
69  virtual void get_vector(int16_t*& vector, int32_t& len);
70  virtual void get_vector(uint16_t*& vector, int32_t& len);
71  virtual void get_vector(int64_t*& vector, int32_t& len);
72  virtual void get_vector(uint64_t*& vector, int32_t& len);
74 
83  virtual void get_matrix(
84  bool*& matrix, int32_t& num_feat, int32_t& num_vec);
85  virtual void get_matrix(
86  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
87  virtual void get_matrix(
88  char*& matrix, int32_t& num_feat, int32_t& num_vec);
89  virtual void get_matrix(
90  int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
91  virtual void get_matrix(
92  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
93  virtual void get_matrix(
94  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
95  virtual void get_matrix(
96  uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
97  virtual void get_matrix(
98  float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
99  virtual void get_matrix(
100  float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
101  virtual void get_matrix(
102  floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
103  virtual void get_matrix(
104  int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
105  virtual void get_matrix(
106  uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
108 
117  virtual void get_ndarray(
118  uint8_t*& array, int32_t*& dims, int32_t& num_dims);
119  virtual void get_ndarray(
120  char*& array, int32_t*& dims, int32_t& num_dims);
121  virtual void get_ndarray(
122  int32_t*& array, int32_t*& dims, int32_t& num_dims);
123  virtual void get_ndarray(
124  float32_t*& array, int32_t*& dims, int32_t& num_dims);
125  virtual void get_ndarray(
126  float64_t*& array, int32_t*& dims, int32_t& num_dims);
127  virtual void get_ndarray(
128  int16_t*& array, int32_t*& dims, int32_t& num_dims);
129  virtual void get_ndarray(
130  uint16_t*& array, int32_t*& dims, int32_t& num_dims);
132 
141  virtual void get_sparse_matrix(
142  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
143  virtual void get_sparse_matrix(
144  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
145  virtual void get_sparse_matrix(
146  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
147  virtual void get_sparse_matrix(
148  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
149  virtual void get_sparse_matrix(
150  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
151  virtual void get_sparse_matrix(
152  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
153  virtual void get_sparse_matrix(
154  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
155  virtual void get_sparse_matrix(
156  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
157  virtual void get_sparse_matrix(
158  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
159  virtual void get_sparse_matrix(
160  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
161  virtual void get_sparse_matrix(
162  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
163  virtual void get_sparse_matrix(
164  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
165  virtual void get_sparse_matrix(
166  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
168 
169 
178  virtual void get_string_list(
179  SGString<bool>*& strings, int32_t& num_str,
180  int32_t& max_string_len);
181  virtual void get_string_list(
182  SGString<int8_t>*& strings, int32_t& num_str,
183  int32_t& max_string_len);
184  virtual void get_string_list(
185  SGString<uint8_t>*& strings, int32_t& num_str,
186  int32_t& max_string_len);
187  virtual void get_string_list(
188  SGString<char>*& strings, int32_t& num_str,
189  int32_t& max_string_len);
190  virtual void get_string_list(
191  SGString<int32_t>*& strings, int32_t& num_str,
192  int32_t& max_string_len);
193  virtual void get_string_list(
194  SGString<uint32_t>*& strings, int32_t& num_str,
195  int32_t& max_string_len);
196  virtual void get_string_list(
197  SGString<int16_t>*& strings, int32_t& num_str,
198  int32_t& max_string_len);
199  virtual void get_string_list(
200  SGString<uint16_t>*& strings, int32_t& num_str,
201  int32_t& max_string_len);
202  virtual void get_string_list(
203  SGString<int64_t>*& strings, int32_t& num_str,
204  int32_t& max_string_len);
205  virtual void get_string_list(
206  SGString<uint64_t>*& strings, int32_t& num_str,
207  int32_t& max_string_len);
208  virtual void get_string_list(
209  SGString<float32_t>*& strings, int32_t& num_str,
210  int32_t& max_string_len);
211  virtual void get_string_list(
212  SGString<float64_t>*& strings, int32_t& num_str,
213  int32_t& max_string_len);
214  virtual void get_string_list(
215  SGString<floatmax_t>*& strings, int32_t& num_str,
216  int32_t& max_string_len);
218 
226  virtual void set_vector(const bool* vector, int32_t len);
227  virtual void set_vector(const int8_t* vector, int32_t len);
228  virtual void set_vector(const uint8_t* vector, int32_t len);
229  virtual void set_vector(const char* vector, int32_t len);
230  virtual void set_vector(const int32_t* vector, int32_t len);
231  virtual void set_vector(const uint32_t* vector, int32_t len);
232  virtual void set_vector(const float32_t* vector, int32_t len);
233  virtual void set_vector(const float64_t* vector, int32_t len);
234  virtual void set_vector(const floatmax_t* vector, int32_t len);
235  virtual void set_vector(const int16_t* vector, int32_t len);
236  virtual void set_vector(const uint16_t* vector, int32_t len);
237  virtual void set_vector(const int64_t* vector, int32_t len);
238  virtual void set_vector(const uint64_t* vector, int32_t len);
240 
241 
249  virtual void set_matrix(
250  const bool* matrix, int32_t num_feat, int32_t num_vec);
251  virtual void set_matrix(
252  const int8_t* matrix, int32_t num_feat, int32_t num_vec);
253  virtual void set_matrix(
254  const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
255  virtual void set_matrix(
256  const char* matrix, int32_t num_feat, int32_t num_vec);
257  virtual void set_matrix(
258  const int32_t* matrix, int32_t num_feat, int32_t num_vec);
259  virtual void set_matrix(
260  const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
261  virtual void set_matrix(
262  const int64_t* matrix, int32_t num_feat, int32_t num_vec);
263  virtual void set_matrix(
264  const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
265  virtual void set_matrix(
266  const float32_t* matrix, int32_t num_feat, int32_t num_vec);
267  virtual void set_matrix(
268  const float64_t* matrix, int32_t num_feat, int32_t num_vec);
269  virtual void set_matrix(
270  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
271  virtual void set_matrix(
272  const int16_t* matrix, int32_t num_feat, int32_t num_vec);
273  virtual void set_matrix(
274  const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
276 
284  virtual void set_sparse_matrix(
285  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
286  virtual void set_sparse_matrix(
287  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
288  virtual void set_sparse_matrix(
289  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
290  virtual void set_sparse_matrix(
291  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
292  virtual void set_sparse_matrix(
293  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
294  virtual void set_sparse_matrix(
295  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
296  virtual void set_sparse_matrix(
297  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
298  virtual void set_sparse_matrix(
299  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
300  virtual void set_sparse_matrix(
301  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
302  virtual void set_sparse_matrix(
303  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
304  virtual void set_sparse_matrix(
305  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
306  virtual void set_sparse_matrix(
307  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
308  virtual void set_sparse_matrix(
309  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
311 
312 
321  virtual void set_string_list(
322  const SGString<bool>* strings, int32_t num_str);
323  virtual void set_string_list(
324  const SGString<int8_t>* strings, int32_t num_str);
325  virtual void set_string_list(
326  const SGString<uint8_t>* strings, int32_t num_str);
327  virtual void set_string_list(
328  const SGString<char>* strings, int32_t num_str);
329  virtual void set_string_list(
330  const SGString<int32_t>* strings, int32_t num_str);
331  virtual void set_string_list(
332  const SGString<uint32_t>* strings, int32_t num_str);
333  virtual void set_string_list(
334  const SGString<int16_t>* strings, int32_t num_str);
335  virtual void set_string_list(
336  const SGString<uint16_t>* strings, int32_t num_str);
337  virtual void set_string_list(
338  const SGString<int64_t>* strings, int32_t num_str);
339  virtual void set_string_list(
340  const SGString<uint64_t>* strings, int32_t num_str);
341  virtual void set_string_list(
342  const SGString<float32_t>* strings, int32_t num_str);
343  virtual void set_string_list(
344  const SGString<float64_t>* strings, int32_t num_str);
345  virtual void set_string_list(
346  const SGString<floatmax_t>* strings, int32_t num_str);
348 
349  virtual void get_matrix(int8_t*&, int32_t&, int32_t&)
350  {
352  }
353  virtual void get_int8_sparsematrix(shogun::SGSparseVector<signed char>*&, int32_t&, int32_t&)
354  {
356  }
357  virtual void get_int8_string_list(shogun::SGString<signed char>*&, int32_t&, int32_t&)
358  {
360  }
361  virtual void set_int8_matrix(const int8_t*, int32_t, int32_t)
362  {
364  }
365  virtual void set_int8_sparsematrix(const shogun::SGSparseVector<signed char>*, int32_t, int32_t)
366  {
368  }
369  virtual void set_int8_string_list(const shogun::SGString<signed char>*, int32_t)
370  {
372  }
373 #endif // #ifndef SWIG // SWIG should skip this
374 
376  virtual const char* get_name() const { return "HDF5File"; }
377 
378 protected:
380  void get_boolean_type();
381 
390  hid_t get_compatible_type(H5T_class_t t_class,
391  const TSGDataType* datatype);
392 
400  void get_dims(hid_t dataset, int32_t*& dims, int32_t& ndims, int64_t& total_elements);
401 
403  void create_group_hierarchy();
404 
405 protected:
407  hid_t h5file;
409  hid_t boolean_type;
410 };
411 }
412 #endif // HAVE_HDF5
413 #endif //__HDF5_FILE_H__
414 

SHOGUN Machine Learning Toolbox - Documentation