SHOGUN  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MLDataHDF5File.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  * Copyright (C) 2013 Zhengyang Liu (zhengyangl)
8  */
9 #ifndef __MLDATA_HDF5_FILE_H__
10 #define __MLDATA_HDF5_FILE_H__
11 
12 #include <shogun/lib/config.h>
13 
14 #if defined(HAVE_HDF5) && defined( HAVE_CURL)
15 #include <shogun/lib/common.h>
16 #include <shogun/io/SGIO.h>
17 #include <shogun/io/File.h>
18 #include <hdf5.h>
19 
20 namespace shogun
21 {
22 template <class ST> class SGString;
23 template <class ST> class SGSparseVector;
24 struct TSGDataType;
25 
32 #define IGNORE_IN_CLASSLIST
33 IGNORE_IN_CLASSLIST class CMLDataHDF5File : public CFile
34 {
35 public:
37  CMLDataHDF5File();
38 
45  CMLDataHDF5File(char* fname,
46  const char* name=NULL,
47  const char* url_prefix="http://mldata.org/repository/data/download/");
48 
50  virtual ~CMLDataHDF5File();
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_sparse_matrix(
117  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
118  virtual void get_sparse_matrix(
119  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
120  virtual void get_sparse_matrix(
121  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
122  virtual void get_sparse_matrix(
123  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
124  virtual void get_sparse_matrix(
125  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
126  virtual void get_sparse_matrix(
127  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
128  virtual void get_sparse_matrix(
129  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
130  virtual void get_sparse_matrix(
131  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
132  virtual void get_sparse_matrix(
133  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
134  virtual void get_sparse_matrix(
135  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
136  virtual void get_sparse_matrix(
137  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
138  virtual void get_sparse_matrix(
139  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
140  virtual void get_sparse_matrix(
141  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
143 
144 
153  virtual void get_string_list(
154  SGString<bool>*& strings, int32_t& num_str,
155  int32_t& max_string_len);
156  virtual void get_string_list(
157  SGString<int8_t>*& strings, int32_t& num_str,
158  int32_t& max_string_len);
159  virtual void get_string_list(
160  SGString<uint8_t>*& strings, int32_t& num_str,
161  int32_t& max_string_len);
162  virtual void get_string_list(
163  SGString<char>*& strings, int32_t& num_str,
164  int32_t& max_string_len);
165  virtual void get_string_list(
166  SGString<int32_t>*& strings, int32_t& num_str,
167  int32_t& max_string_len);
168  virtual void get_string_list(
169  SGString<uint32_t>*& strings, int32_t& num_str,
170  int32_t& max_string_len);
171  virtual void get_string_list(
172  SGString<int16_t>*& strings, int32_t& num_str,
173  int32_t& max_string_len);
174  virtual void get_string_list(
175  SGString<uint16_t>*& strings, int32_t& num_str,
176  int32_t& max_string_len);
177  virtual void get_string_list(
178  SGString<int64_t>*& strings, int32_t& num_str,
179  int32_t& max_string_len);
180  virtual void get_string_list(
181  SGString<uint64_t>*& strings, int32_t& num_str,
182  int32_t& max_string_len);
183  virtual void get_string_list(
184  SGString<float32_t>*& strings, int32_t& num_str,
185  int32_t& max_string_len);
186  virtual void get_string_list(
187  SGString<float64_t>*& strings, int32_t& num_str,
188  int32_t& max_string_len);
189  virtual void get_string_list(
190  SGString<floatmax_t>*& strings, int32_t& num_str,
191  int32_t& max_string_len);
193 
194  virtual void get_matrix(int8_t*&, int32_t&, int32_t&)
195  {
197  }
198  virtual void get_int8_sparsematrix(shogun::SGSparseVector<signed char>*&, int32_t&, int32_t&)
199  {
201  }
202  virtual void get_int8_string_list(shogun::SGString<signed char>*&, int32_t&, int32_t&)
203  {
205  }
206  virtual void set_int8_matrix(const int8_t*, int32_t, int32_t)
207  {
209  }
210  virtual void set_int8_sparsematrix(const shogun::SGSparseVector<signed char>*, int32_t, int32_t)
211  {
213  }
214  virtual void set_int8_string_list(const shogun::SGString<signed char>*, int32_t)
215  {
217  }
218  virtual void set_vector(const int8_t*, int32_t)
219  {
221  }
222  virtual void set_vector(const uint8_t*, int32_t)
223  {
225  }
226  virtual void set_vector(const char*, int32_t)
227  {
229  }
230  virtual void set_vector(const int16_t*, int32_t)
231  {
233  }
234  virtual void set_vector(const int32_t*, int32_t)
235  {
237  }
238  virtual void set_vector(const uint32_t*, int32_t)
239  {
241  }
242  virtual void set_vector(const float32_t*, int32_t)
243  {
245  }
246  virtual void set_vector(const float64_t*, int32_t){
248  }
249  virtual void set_vector(const floatmax_t*, int32_t)
250  {
252  }
253  virtual void set_vector(const uint16_t*, int32_t)
254  {
256  }
257  virtual void set_vector(const int64_t*, int32_t)
258  {
260  }
261  virtual void set_vector(const uint64_t*, int32_t)
262  {
264  }
265  virtual void set_matrix(const uint8_t*, int32_t, int32_t)
266  {
268  }
269  virtual void set_matrix(const int8_t*, int32_t, int32_t)
270  {
272  }
273  virtual void set_matrix(const char*, int32_t, int32_t)
274  {
276  }
277  virtual void set_matrix(const int32_t*, int32_t, int32_t)
278  {
280  }
281  virtual void set_matrix(const uint32_t*, int32_t, int32_t)
282  {
284  }
285  virtual void set_matrix(const int64_t*, int32_t, int32_t)
286  {
288  }
289  virtual void set_matrix(const uint64_t*, int32_t, int32_t)
290  {
292  }
293  virtual void set_matrix(const float32_t*, int32_t, int32_t)
294  {
296  }
297  virtual void set_matrix(const float64_t*, int32_t, int32_t)
298  {
300  }
301  virtual void set_matrix(const floatmax_t*, int32_t, int32_t)
302  {
304  }
305  virtual void set_matrix(const int16_t*, int32_t, int32_t)
306  {
308  }
309  virtual void set_matrix(const uint16_t*, int32_t, int32_t)
310  {
312  }
313  virtual void set_sparse_matrix(const shogun::SGSparseVector<bool>*, int32_t, int32_t)
314  {
316  }
317  virtual void set_sparse_matrix(const shogun::SGSparseVector<uint8_t>*, int32_t, int32_t)
318  {
320  }
321  virtual void set_sparse_matrix(const shogun::SGSparseVector<int8_t>*, int32_t, int32_t)
322  {
324  }
325  virtual void set_sparse_matrix(const shogun::SGSparseVector<char>*, int32_t, int32_t)
326  {
328  }
329  virtual void set_sparse_matrix(const shogun::SGSparseVector<int32_t>*, int32_t, int32_t)
330  {
332  }
333  virtual void set_sparse_matrix(const shogun::SGSparseVector<uint32_t>*, int32_t, int32_t)
334  {
336  }
337  virtual void set_sparse_matrix(const shogun::SGSparseVector<int64_t>*, int32_t, int32_t)
338  {
340  }
341  virtual void set_sparse_matrix(const shogun::SGSparseVector<uint64_t>*, int32_t, int32_t)
342  {
344  }
345  virtual void set_sparse_matrix(const shogun::SGSparseVector<int16_t>*, int32_t, int32_t)
346  {
348  }
349  virtual void set_sparse_matrix(const shogun::SGSparseVector<uint16_t>*, int32_t, int32_t)
350  {
352  }
353  virtual void set_sparse_matrix(const shogun::SGSparseVector<float32_t>*, int32_t, int32_t)
354  {
356  }
357  virtual void set_sparse_matrix(const shogun::SGSparseVector<float64_t>*, int32_t, int32_t)
358  {
360  }
361  virtual void set_sparse_matrix(const shogun::SGSparseVector<floatmax_t>*, int32_t, int32_t)
362  {
364  }
365  virtual void set_string_list(const shogun::SGString<bool>*, int32_t)
366  {
368  }
369  virtual void set_string_list(const shogun::SGString<uint8_t>*, int32_t)
370  {
372  }
373  virtual void set_string_list(const shogun::SGString<int8_t>*, int32_t)
374  {
376  }
377  virtual void set_string_list(const shogun::SGString<char>*, int32_t)
378  {
380  }
381  virtual void set_string_list(const shogun::SGString<int32_t>*, int32_t)
382  {
384  }
385  virtual void set_string_list(const shogun::SGString<uint32_t>*, int32_t)
386  {
388  }
389  virtual void set_string_list(const shogun::SGString<int16_t>*, int32_t)
390  {
392  }
393  virtual void set_string_list(const shogun::SGString<uint16_t>*, int32_t)
394  {
396  }
397  virtual void set_string_list(const shogun::SGString<int64_t>*, int32_t)
398  {
400  }
401  virtual void set_string_list(const shogun::SGString<uint64_t>*, int32_t)
402  {
404  }
405  virtual void set_string_list(const shogun::SGString<float32_t>*, int32_t)
406  {
408  }
409  virtual void set_string_list(const shogun::SGString<float64_t>*, int32_t)
410  {
412  }
413  virtual void set_string_list(const shogun::SGString<floatmax_t>*, int32_t)
414  {
416  }
418  virtual const char* get_name() const { return "HDF5File"; }
419 
420 protected:
422  void get_boolean_type();
423 
432  hid_t get_compatible_type(H5T_class_t t_class,
433  const TSGDataType* datatype);
434 
442  void get_dims(hid_t dataset, int32_t*& dims, int32_t& ndims, int64_t& total_elements);
443 
445  void create_group_hierarchy();
446 
447 protected:
449  hid_t h5file;
451  hid_t boolean_type;
452 
454  char *fname;
455 
457  char *mldata_url;
458 };
459 }
460 #endif // HAVE_CURL && HAVE_HDF5
461 #endif //__HDF5_FILE_H__
462 

SHOGUN Machine Learning Toolbox - Documentation