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_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 
218  virtual void get_matrix(int8_t*&, int32_t&, int32_t&)
219  {
221  }
222  virtual void get_int8_sparsematrix(shogun::SGSparseVector<signed char>*&, int32_t&, int32_t&)
223  {
225  }
226  virtual void get_int8_string_list(shogun::SGString<signed char>*&, int32_t&, int32_t&)
227  {
229  }
230  virtual void set_int8_matrix(const int8_t*, int32_t, int32_t)
231  {
233  }
234  virtual void set_int8_sparsematrix(const shogun::SGSparseVector<signed char>*, int32_t, int32_t)
235  {
237  }
238  virtual void set_int8_string_list(const shogun::SGString<signed char>*, int32_t)
239  {
241  }
242  virtual void set_vector(const int8_t*, int32_t)
243  {
245  }
246  virtual void set_vector(const uint8_t*, int32_t)
247  {
249  }
250  virtual void set_vector(const char*, int32_t)
251  {
253  }
254  virtual void set_vector(const int16_t*, int32_t)
255  {
257  }
258  virtual void set_vector(const int32_t*, int32_t)
259  {
261  }
262  virtual void set_vector(const uint32_t*, int32_t)
263  {
265  }
266  virtual void set_vector(const float32_t*, int32_t)
267  {
269  }
270  virtual void set_vector(const float64_t*, int32_t){
272  }
273  virtual void set_vector(const floatmax_t*, int32_t)
274  {
276  }
277  virtual void set_vector(const uint16_t*, int32_t)
278  {
280  }
281  virtual void set_vector(const int64_t*, int32_t)
282  {
284  }
285  virtual void set_vector(const uint64_t*, int32_t)
286  {
288  }
289  virtual void set_matrix(const uint8_t*, int32_t, int32_t)
290  {
292  }
293  virtual void set_matrix(const int8_t*, int32_t, int32_t)
294  {
296  }
297  virtual void set_matrix(const char*, int32_t, int32_t)
298  {
300  }
301  virtual void set_matrix(const int32_t*, int32_t, int32_t)
302  {
304  }
305  virtual void set_matrix(const uint32_t*, int32_t, int32_t)
306  {
308  }
309  virtual void set_matrix(const int64_t*, int32_t, int32_t)
310  {
312  }
313  virtual void set_matrix(const uint64_t*, int32_t, int32_t)
314  {
316  }
317  virtual void set_matrix(const float32_t*, int32_t, int32_t)
318  {
320  }
321  virtual void set_matrix(const float64_t*, int32_t, int32_t)
322  {
324  }
325  virtual void set_matrix(const floatmax_t*, int32_t, int32_t)
326  {
328  }
329  virtual void set_matrix(const int16_t*, int32_t, int32_t)
330  {
332  }
333  virtual void set_matrix(const uint16_t*, int32_t, int32_t)
334  {
336  }
337  virtual void set_sparse_matrix(const shogun::SGSparseVector<bool>*, int32_t, int32_t)
338  {
340  }
341  virtual void set_sparse_matrix(const shogun::SGSparseVector<uint8_t>*, int32_t, int32_t)
342  {
344  }
345  virtual void set_sparse_matrix(const shogun::SGSparseVector<int8_t>*, int32_t, int32_t)
346  {
348  }
349  virtual void set_sparse_matrix(const shogun::SGSparseVector<char>*, int32_t, int32_t)
350  {
352  }
353  virtual void set_sparse_matrix(const shogun::SGSparseVector<int32_t>*, int32_t, int32_t)
354  {
356  }
357  virtual void set_sparse_matrix(const shogun::SGSparseVector<uint32_t>*, int32_t, int32_t)
358  {
360  }
361  virtual void set_sparse_matrix(const shogun::SGSparseVector<int64_t>*, int32_t, int32_t)
362  {
364  }
365  virtual void set_sparse_matrix(const shogun::SGSparseVector<uint64_t>*, int32_t, int32_t)
366  {
368  }
369  virtual void set_sparse_matrix(const shogun::SGSparseVector<int16_t>*, int32_t, int32_t)
370  {
372  }
373  virtual void set_sparse_matrix(const shogun::SGSparseVector<uint16_t>*, int32_t, int32_t)
374  {
376  }
377  virtual void set_sparse_matrix(const shogun::SGSparseVector<float32_t>*, int32_t, int32_t)
378  {
380  }
381  virtual void set_sparse_matrix(const shogun::SGSparseVector<float64_t>*, int32_t, int32_t)
382  {
384  }
385  virtual void set_sparse_matrix(const shogun::SGSparseVector<floatmax_t>*, int32_t, int32_t)
386  {
388  }
389  virtual void set_string_list(const shogun::SGString<bool>*, int32_t)
390  {
392  }
393  virtual void set_string_list(const shogun::SGString<uint8_t>*, int32_t)
394  {
396  }
397  virtual void set_string_list(const shogun::SGString<int8_t>*, int32_t)
398  {
400  }
401  virtual void set_string_list(const shogun::SGString<char>*, int32_t)
402  {
404  }
405  virtual void set_string_list(const shogun::SGString<int32_t>*, int32_t)
406  {
408  }
409  virtual void set_string_list(const shogun::SGString<uint32_t>*, int32_t)
410  {
412  }
413  virtual void set_string_list(const shogun::SGString<int16_t>*, int32_t)
414  {
416  }
417  virtual void set_string_list(const shogun::SGString<uint16_t>*, int32_t)
418  {
420  }
421  virtual void set_string_list(const shogun::SGString<int64_t>*, int32_t)
422  {
424  }
425  virtual void set_string_list(const shogun::SGString<uint64_t>*, int32_t)
426  {
428  }
429  virtual void set_string_list(const shogun::SGString<float32_t>*, int32_t)
430  {
432  }
433  virtual void set_string_list(const shogun::SGString<float64_t>*, int32_t)
434  {
436  }
437  virtual void set_string_list(const shogun::SGString<floatmax_t>*, int32_t)
438  {
440  }
442  virtual const char* get_name() const { return "HDF5File"; }
443 
444 protected:
446  void get_boolean_type();
447 
456  hid_t get_compatible_type(H5T_class_t t_class,
457  const TSGDataType* datatype);
458 
466  void get_dims(hid_t dataset, int32_t*& dims, int32_t& ndims, int64_t& total_elements);
467 
469  void create_group_hierarchy();
470 
471 protected:
473  hid_t h5file;
475  hid_t boolean_type;
476 
478  char *fname;
479 
481  char *mldata_url;
482 };
483 }
484 #endif // HAVE_CURL && HAVE_HDF5
485 #endif //__HDF5_FILE_H__
486 

SHOGUN Machine Learning Toolbox - Documentation