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 
109 
118  virtual void get_sparse_matrix(
119  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
120  virtual void get_sparse_matrix(
121  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
122  virtual void get_sparse_matrix(
123  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
124  virtual void get_sparse_matrix(
125  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
126  virtual void get_sparse_matrix(
127  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
128  virtual void get_sparse_matrix(
129  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
130  virtual void get_sparse_matrix(
131  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
132  virtual void get_sparse_matrix(
133  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
134  virtual void get_sparse_matrix(
135  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
136  virtual void get_sparse_matrix(
137  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
138  virtual void get_sparse_matrix(
139  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
140  virtual void get_sparse_matrix(
141  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
142  virtual void get_sparse_matrix(
143  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
145 
146 
155  virtual void get_string_list(
156  SGString<bool>*& strings, int32_t& num_str,
157  int32_t& max_string_len);
158  virtual void get_string_list(
159  SGString<int8_t>*& strings, int32_t& num_str,
160  int32_t& max_string_len);
161  virtual void get_string_list(
162  SGString<uint8_t>*& strings, int32_t& num_str,
163  int32_t& max_string_len);
164  virtual void get_string_list(
165  SGString<char>*& strings, int32_t& num_str,
166  int32_t& max_string_len);
167  virtual void get_string_list(
168  SGString<int32_t>*& strings, int32_t& num_str,
169  int32_t& max_string_len);
170  virtual void get_string_list(
171  SGString<uint32_t>*& strings, int32_t& num_str,
172  int32_t& max_string_len);
173  virtual void get_string_list(
174  SGString<int16_t>*& strings, int32_t& num_str,
175  int32_t& max_string_len);
176  virtual void get_string_list(
177  SGString<uint16_t>*& strings, int32_t& num_str,
178  int32_t& max_string_len);
179  virtual void get_string_list(
180  SGString<int64_t>*& strings, int32_t& num_str,
181  int32_t& max_string_len);
182  virtual void get_string_list(
183  SGString<uint64_t>*& strings, int32_t& num_str,
184  int32_t& max_string_len);
185  virtual void get_string_list(
186  SGString<float32_t>*& strings, int32_t& num_str,
187  int32_t& max_string_len);
188  virtual void get_string_list(
189  SGString<float64_t>*& strings, int32_t& num_str,
190  int32_t& max_string_len);
191  virtual void get_string_list(
192  SGString<floatmax_t>*& strings, int32_t& num_str,
193  int32_t& max_string_len);
195 
203  virtual void set_vector(const bool* vector, int32_t len);
204  virtual void set_vector(const int8_t* vector, int32_t len);
205  virtual void set_vector(const uint8_t* vector, int32_t len);
206  virtual void set_vector(const char* vector, int32_t len);
207  virtual void set_vector(const int32_t* vector, int32_t len);
208  virtual void set_vector(const uint32_t* vector, int32_t len);
209  virtual void set_vector(const float32_t* vector, int32_t len);
210  virtual void set_vector(const float64_t* vector, int32_t len);
211  virtual void set_vector(const floatmax_t* vector, int32_t len);
212  virtual void set_vector(const int16_t* vector, int32_t len);
213  virtual void set_vector(const uint16_t* vector, int32_t len);
214  virtual void set_vector(const int64_t* vector, int32_t len);
215  virtual void set_vector(const uint64_t* vector, int32_t len);
217 
218 
226  virtual void set_matrix(
227  const bool* matrix, int32_t num_feat, int32_t num_vec);
228  virtual void set_matrix(
229  const int8_t* matrix, int32_t num_feat, int32_t num_vec);
230  virtual void set_matrix(
231  const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
232  virtual void set_matrix(
233  const char* matrix, int32_t num_feat, int32_t num_vec);
234  virtual void set_matrix(
235  const int32_t* matrix, int32_t num_feat, int32_t num_vec);
236  virtual void set_matrix(
237  const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
238  virtual void set_matrix(
239  const int64_t* matrix, int32_t num_feat, int32_t num_vec);
240  virtual void set_matrix(
241  const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
242  virtual void set_matrix(
243  const float32_t* matrix, int32_t num_feat, int32_t num_vec);
244  virtual void set_matrix(
245  const float64_t* matrix, int32_t num_feat, int32_t num_vec);
246  virtual void set_matrix(
247  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
248  virtual void set_matrix(
249  const int16_t* matrix, int32_t num_feat, int32_t num_vec);
250  virtual void set_matrix(
251  const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
253 
261  virtual void set_sparse_matrix(
262  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
263  virtual void set_sparse_matrix(
264  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
265  virtual void set_sparse_matrix(
266  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
267  virtual void set_sparse_matrix(
268  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
269  virtual void set_sparse_matrix(
270  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
271  virtual void set_sparse_matrix(
272  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
273  virtual void set_sparse_matrix(
274  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
275  virtual void set_sparse_matrix(
276  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
277  virtual void set_sparse_matrix(
278  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
279  virtual void set_sparse_matrix(
280  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
281  virtual void set_sparse_matrix(
282  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
283  virtual void set_sparse_matrix(
284  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
285  virtual void set_sparse_matrix(
286  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
288 
289 
298  virtual void set_string_list(
299  const SGString<bool>* strings, int32_t num_str);
300  virtual void set_string_list(
301  const SGString<int8_t>* strings, int32_t num_str);
302  virtual void set_string_list(
303  const SGString<uint8_t>* strings, int32_t num_str);
304  virtual void set_string_list(
305  const SGString<char>* strings, int32_t num_str);
306  virtual void set_string_list(
307  const SGString<int32_t>* strings, int32_t num_str);
308  virtual void set_string_list(
309  const SGString<uint32_t>* strings, int32_t num_str);
310  virtual void set_string_list(
311  const SGString<int16_t>* strings, int32_t num_str);
312  virtual void set_string_list(
313  const SGString<uint16_t>* strings, int32_t num_str);
314  virtual void set_string_list(
315  const SGString<int64_t>* strings, int32_t num_str);
316  virtual void set_string_list(
317  const SGString<uint64_t>* strings, int32_t num_str);
318  virtual void set_string_list(
319  const SGString<float32_t>* strings, int32_t num_str);
320  virtual void set_string_list(
321  const SGString<float64_t>* strings, int32_t num_str);
322  virtual void set_string_list(
323  const SGString<floatmax_t>* strings, int32_t num_str);
325 
326  virtual void get_matrix(int8_t*&, int32_t&, int32_t&)
327  {
329  }
330  virtual void get_int8_sparsematrix(shogun::SGSparseVector<signed char>*&, int32_t&, int32_t&)
331  {
333  }
334  virtual void get_int8_string_list(shogun::SGString<signed char>*&, int32_t&, int32_t&)
335  {
337  }
338  virtual void set_int8_matrix(const int8_t*, int32_t, int32_t)
339  {
341  }
342  virtual void set_int8_sparsematrix(const shogun::SGSparseVector<signed char>*, int32_t, int32_t)
343  {
345  }
346  virtual void set_int8_string_list(const shogun::SGString<signed char>*, int32_t)
347  {
349  }
350 #endif // #ifndef SWIG // SWIG should skip this
351 
353  virtual const char* get_name() const { return "HDF5File"; }
354 
355 protected:
357  void get_boolean_type();
358 
367  hid_t get_compatible_type(H5T_class_t t_class,
368  const TSGDataType* datatype);
369 
377  void get_dims(hid_t dataset, int32_t*& dims, int32_t& ndims, int64_t& total_elements);
378 
380  void create_group_hierarchy();
381 
382 protected:
384  hid_t h5file;
386  hid_t boolean_type;
387 };
388 }
389 #endif // HAVE_HDF5
390 #endif //__HDF5_FILE_H__
391 

SHOGUN Machine Learning Toolbox - Documentation