SHOGUN  v2.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(uint8_t*& vector, int32_t& len);
61  virtual void get_vector(char*& vector, int32_t& len);
62  virtual void get_vector(int32_t*& vector, int32_t& len);
63  virtual void get_vector(float64_t*& vector, int32_t& len);
64  virtual void get_vector(float32_t*& vector, int32_t& len);
65  virtual void get_vector(int16_t*& vector, int32_t& len);
66  virtual void get_vector(uint16_t*& vector, int32_t& len);
68 
77  virtual void get_matrix(
78  bool*& matrix, int32_t& num_feat, int32_t& num_vec);
79  virtual void get_matrix(
80  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
81  virtual void get_matrix(
82  char*& matrix, int32_t& num_feat, int32_t& num_vec);
83  virtual void get_matrix(
84  int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
85  virtual void get_uint_matrix(
86  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
87  virtual void get_long_matrix(
88  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
89  virtual void get_ulong_matrix(
90  uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
91  virtual void get_matrix(
92  float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
93  virtual void get_matrix(
94  float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
95  virtual void get_longreal_matrix(
96  floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
97  virtual void get_matrix(
98  int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
99  virtual void get_matrix(
100  uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
102 
111  virtual void get_ndarray(
112  uint8_t*& array, int32_t*& dims, int32_t& num_dims);
113  virtual void get_ndarray(
114  char*& array, int32_t*& dims, int32_t& num_dims);
115  virtual void get_ndarray(
116  int32_t*& array, int32_t*& dims, int32_t& num_dims);
117  virtual void get_ndarray(
118  float32_t*& array, int32_t*& dims, int32_t& num_dims);
119  virtual void get_ndarray(
120  float64_t*& array, int32_t*& dims, int32_t& num_dims);
121  virtual void get_ndarray(
122  int16_t*& array, int32_t*& dims, int32_t& num_dims);
123  virtual void get_ndarray(
124  uint16_t*& array, int32_t*& dims, int32_t& num_dims);
126 
135  virtual void get_sparse_matrix(
136  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
137  virtual void get_sparse_matrix(
138  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
139  virtual void get_sparse_matrix(
140  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
141  virtual void get_sparse_matrix(
142  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
143  virtual void get_uint_sparsematrix(
144  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
145  virtual void get_long_sparsematrix(
146  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
147  virtual void get_ulong_sparsematrix(
148  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
149  virtual void get_sparse_matrix(
150  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
151  virtual void get_sparse_matrix(
152  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
153  virtual void get_sparse_matrix(
154  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
155  virtual void get_sparse_matrix(
156  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
157  virtual void get_longreal_sparsematrix(
158  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
160 
161 
170  virtual void get_string_list(
171  SGString<bool>*& strings, int32_t& num_str,
172  int32_t& max_string_len);
173  virtual void get_string_list(
174  SGString<uint8_t>*& strings, int32_t& num_str,
175  int32_t& max_string_len);
176  virtual void get_string_list(
177  SGString<char>*& strings, int32_t& num_str,
178  int32_t& max_string_len);
179  virtual void get_string_list(
180  SGString<int32_t>*& strings, int32_t& num_str,
181  int32_t& max_string_len);
182  virtual void get_uint_string_list(
183  SGString<uint32_t>*& strings, int32_t& num_str,
184  int32_t& max_string_len);
185  virtual void get_string_list(
186  SGString<int16_t>*& strings, int32_t& num_str,
187  int32_t& max_string_len);
188  virtual void get_string_list(
189  SGString<uint16_t>*& strings, int32_t& num_str,
190  int32_t& max_string_len);
191  virtual void get_long_string_list(
192  SGString<int64_t>*& strings, int32_t& num_str,
193  int32_t& max_string_len);
194  virtual void get_ulong_string_list(
195  SGString<uint64_t>*& strings, int32_t& num_str,
196  int32_t& max_string_len);
197  virtual void get_string_list(
198  SGString<float32_t>*& strings, int32_t& num_str,
199  int32_t& max_string_len);
200  virtual void get_string_list(
201  SGString<float64_t>*& strings, int32_t& num_str,
202  int32_t& max_string_len);
203  virtual void get_longreal_string_list(
204  SGString<floatmax_t>*& strings, int32_t& num_str,
205  int32_t& max_string_len);
207 
215  virtual void set_vector(const bool* vector, int32_t len);
216  virtual void set_vector(const uint8_t* vector, int32_t len);
217  virtual void set_vector(const char* vector, int32_t len);
218  virtual void set_vector(const int32_t* vector, int32_t len);
219  virtual void set_vector( const float32_t* vector, int32_t len);
220  virtual void set_vector(const float64_t* vector, int32_t len);
221  virtual void set_vector(const int16_t* vector, int32_t len);
222  virtual void set_vector(const uint16_t* vector, int32_t len);
224 
225 
233  virtual void set_matrix(
234  const bool* matrix, int32_t num_feat, int32_t num_vec);
235  virtual void set_matrix(
236  const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
237  virtual void set_matrix(
238  const char* matrix, int32_t num_feat, int32_t num_vec);
239  virtual void set_matrix(
240  const int32_t* matrix, int32_t num_feat, int32_t num_vec);
241  virtual void set_uint_matrix(
242  const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
243  virtual void set_long_matrix(
244  const int64_t* matrix, int32_t num_feat, int32_t num_vec);
245  virtual void set_ulong_matrix(
246  const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
247  virtual void set_matrix(
248  const float32_t* matrix, int32_t num_feat, int32_t num_vec);
249  virtual void set_matrix(
250  const float64_t* matrix, int32_t num_feat, int32_t num_vec);
251  virtual void set_longreal_matrix(
252  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
253  virtual void set_matrix(
254  const int16_t* matrix, int32_t num_feat, int32_t num_vec);
255  virtual void set_matrix(
256  const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
258 
266  virtual void set_sparse_matrix(
267  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
268  virtual void set_sparse_matrix(
269  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
270  virtual void set_sparse_matrix(
271  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
272  virtual void set_sparse_matrix(
273  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
274  virtual void set_uint_sparsematrix(
275  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
276  virtual void set_long_sparsematrix(
277  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
278  virtual void set_ulong_sparsematrix(
279  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
280  virtual void set_sparse_matrix(
281  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
282  virtual void set_sparse_matrix(
283  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
284  virtual void set_sparse_matrix(
285  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
286  virtual void set_sparse_matrix(
287  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
288  virtual void set_longreal_sparsematrix(
289  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
291 
292 
301  virtual void set_string_list(
302  const SGString<bool>* strings, int32_t num_str);
303  virtual void set_string_list(
304  const SGString<uint8_t>* strings, int32_t num_str);
305  virtual void set_string_list(
306  const SGString<char>* strings, int32_t num_str);
307  virtual void set_string_list(
308  const SGString<int32_t>* strings, int32_t num_str);
309  virtual void set_uint_string_list(
310  const SGString<uint32_t>* strings, int32_t num_str);
311  virtual void set_string_list(
312  const SGString<int16_t>* strings, int32_t num_str);
313  virtual void set_string_list(
314  const SGString<uint16_t>* strings, int32_t num_str);
315  virtual void set_long_string_list(
316  const SGString<int64_t>* strings, int32_t num_str);
317  virtual void set_ulong_string_list(
318  const SGString<uint64_t>* strings, int32_t num_str);
319  virtual void set_string_list(
320  const SGString<float32_t>* strings, int32_t num_str);
321  virtual void set_string_list(
322  const SGString<float64_t>* strings, int32_t num_str);
323  virtual void set_longreal_string_list(
324  const SGString<floatmax_t>* strings, int32_t num_str);
326 
327  virtual void get_int8_matrix(int8_t*&, int32_t&, int32_t&)
328  {
330  }
331  virtual void get_int8_sparsematrix(shogun::SGSparseVector<signed char>*&, int32_t&, int32_t&)
332  {
334  }
335  virtual void get_int8_string_list(shogun::SGString<signed char>*&, int32_t&, int32_t&)
336  {
338  }
339  virtual void set_int8_matrix(const int8_t*, int32_t, int32_t)
340  {
342  }
343  virtual void set_int8_sparsematrix(const shogun::SGSparseVector<signed char>*, int32_t, int32_t)
344  {
346  }
347  virtual void set_int8_string_list(const shogun::SGString<signed char>*, int32_t)
348  {
350  }
351 
352 
354  inline virtual const char* get_name() const { return "HDF5File"; }
355 
356 protected:
358  void get_boolean_type();
359 
368  hid_t get_compatible_type(H5T_class_t t_class,
369  const TSGDataType* datatype);
370 
378  void get_dims(hid_t dataset, int32_t*& dims, int32_t& ndims, int64_t& total_elements);
379 
381  void create_group_hierarchy();
382 
383 protected:
385  hid_t h5file;
387  hid_t boolean_type;
388 };
389 }
390 #endif // HAVE_HDF5
391 #endif //__HDF5_FILE_H__
392 

SHOGUN Machine Learning Toolbox - Documentation