SHOGUN  v3.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
MLDataHDF5File.h
Go to the documentation of this file.
00001 /*
00002  * This program is free software; you can redistribute it and/or modify
00003  * it under the terms of the GNU General Public License as published by
00004  * the Free Software Foundation; either version 3 of the License, or
00005  * (at your option) any later version.
00006  *
00007  * Copyright (C) 2013 Zhengyang Liu (zhengyangl)
00008  */
00009 #ifndef __MLDATA_HDF5_FILE_H__
00010 #define __MLDATA_HDF5_FILE_H__
00011 
00012 #include <shogun/lib/config.h>
00013 
00014 #if defined(HAVE_HDF5) && defined( HAVE_CURL)
00015 #include <shogun/lib/common.h>
00016 #include <shogun/io/SGIO.h>
00017 #include <shogun/io/File.h>
00018 #include <shogun/base/SGObject.h>
00019 #include <hdf5.h>
00020 
00021 namespace shogun
00022 {
00023 template <class ST> class SGString;
00024 template <class ST> class SGSparseVector;
00025 
00032 #define IGNORE_IN_CLASSLIST
00033 IGNORE_IN_CLASSLIST class CMLDataHDF5File : public CFile
00034 {
00035 public:
00037     CMLDataHDF5File();
00038 
00045     CMLDataHDF5File(char* fname,
00046                     const char* name=NULL,
00047                     const char* url_prefix="http://mldata.org/repository/data/download/");
00048 
00050     virtual ~CMLDataHDF5File();
00051 
00059     virtual void get_vector(bool*& vector, int32_t& len);
00060     virtual void get_vector(int8_t*& vector, int32_t& len);
00061     virtual void get_vector(uint8_t*& vector, int32_t& len);
00062     virtual void get_vector(char*& vector, int32_t& len);
00063     virtual void get_vector(int32_t*& vector, int32_t& len);
00064     virtual void get_vector(uint32_t*& vector, int32_t& len);
00065     virtual void get_vector(float64_t*& vector, int32_t& len);
00066     virtual void get_vector(float32_t*& vector, int32_t& len);
00067     virtual void get_vector(floatmax_t*& vector, int32_t& len);
00068     virtual void get_vector(int16_t*& vector, int32_t& len);
00069     virtual void get_vector(uint16_t*& vector, int32_t& len);
00070     virtual void get_vector(int64_t*& vector, int32_t& len);
00071     virtual void get_vector(uint64_t*& vector, int32_t& len);
00073 
00082     virtual void get_matrix(
00083             bool*& matrix, int32_t& num_feat, int32_t& num_vec);
00084     virtual void get_matrix(
00085             uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00086     virtual void get_matrix(
00087             char*& matrix, int32_t& num_feat, int32_t& num_vec);
00088     virtual void get_matrix(
00089             int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00090     virtual void get_matrix(
00091             uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00092     virtual void get_matrix(
00093             int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00094     virtual void get_matrix(
00095             uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00096     virtual void get_matrix(
00097             float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00098     virtual void get_matrix(
00099             float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00100     virtual void get_matrix(
00101             floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00102     virtual void get_matrix(
00103             int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00104     virtual void get_matrix(
00105             uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00107 
00116     virtual void get_ndarray(
00117             uint8_t*& array, int32_t*& dims, int32_t& num_dims);
00118     virtual void get_ndarray(
00119             char*& array, int32_t*& dims, int32_t& num_dims);
00120     virtual void get_ndarray(
00121             int32_t*& array, int32_t*& dims, int32_t& num_dims);
00122     virtual void get_ndarray(
00123             float32_t*& array, int32_t*& dims, int32_t& num_dims);
00124     virtual void get_ndarray(
00125             float64_t*& array, int32_t*& dims, int32_t& num_dims);
00126     virtual void get_ndarray(
00127             int16_t*& array, int32_t*& dims, int32_t& num_dims);
00128     virtual void get_ndarray(
00129             uint16_t*& array, int32_t*& dims, int32_t& num_dims);
00131 
00140     virtual void get_sparse_matrix(
00141             SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
00142     virtual void get_sparse_matrix(
00143             SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00144     virtual void get_sparse_matrix(
00145             SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00146     virtual void get_sparse_matrix(
00147             SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
00148     virtual void get_sparse_matrix(
00149             SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00150     virtual void get_sparse_matrix(
00151             SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00152     virtual void get_sparse_matrix(
00153             SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00154     virtual void get_sparse_matrix(
00155             SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00156     virtual void get_sparse_matrix(
00157             SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00158     virtual void get_sparse_matrix(
00159             SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00160     virtual void get_sparse_matrix(
00161             SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00162     virtual void get_sparse_matrix(
00163             SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00164     virtual void get_sparse_matrix(
00165             SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00167 
00168 
00177     virtual void get_string_list(
00178             SGString<bool>*& strings, int32_t& num_str,
00179             int32_t& max_string_len);
00180     virtual void get_string_list(
00181             SGString<int8_t>*& strings, int32_t& num_str,
00182             int32_t& max_string_len);
00183     virtual void get_string_list(
00184             SGString<uint8_t>*& strings, int32_t& num_str,
00185             int32_t& max_string_len);
00186     virtual void get_string_list(
00187             SGString<char>*& strings, int32_t& num_str,
00188             int32_t& max_string_len);
00189     virtual void get_string_list(
00190             SGString<int32_t>*& strings, int32_t& num_str,
00191             int32_t& max_string_len);
00192     virtual void get_string_list(
00193             SGString<uint32_t>*& strings, int32_t& num_str,
00194             int32_t& max_string_len);
00195     virtual void get_string_list(
00196             SGString<int16_t>*& strings, int32_t& num_str,
00197             int32_t& max_string_len);
00198     virtual void get_string_list(
00199             SGString<uint16_t>*& strings, int32_t& num_str,
00200             int32_t& max_string_len);
00201     virtual void get_string_list(
00202             SGString<int64_t>*& strings, int32_t& num_str,
00203             int32_t& max_string_len);
00204     virtual void get_string_list(
00205             SGString<uint64_t>*& strings, int32_t& num_str,
00206             int32_t& max_string_len);
00207     virtual void get_string_list(
00208             SGString<float32_t>*& strings, int32_t& num_str,
00209             int32_t& max_string_len);
00210     virtual void get_string_list(
00211             SGString<float64_t>*& strings, int32_t& num_str,
00212             int32_t& max_string_len);
00213     virtual void get_string_list(
00214             SGString<floatmax_t>*& strings, int32_t& num_str,
00215             int32_t& max_string_len);
00217 
00218     virtual void get_matrix(int8_t*&, int32_t&, int32_t&)
00219     {
00220         SG_NOTIMPLEMENTED
00221     }
00222     virtual void get_int8_sparsematrix(shogun::SGSparseVector<signed char>*&, int32_t&, int32_t&)
00223     {
00224         SG_NOTIMPLEMENTED
00225     }
00226     virtual void get_int8_string_list(shogun::SGString<signed char>*&, int32_t&, int32_t&)
00227     {
00228         SG_NOTIMPLEMENTED
00229     }
00230     virtual void set_int8_matrix(const int8_t*, int32_t, int32_t)
00231     {
00232         SG_NOTIMPLEMENTED
00233     }
00234     virtual void set_int8_sparsematrix(const shogun::SGSparseVector<signed char>*, int32_t, int32_t)
00235     {
00236         SG_NOTIMPLEMENTED
00237     }
00238     virtual void set_int8_string_list(const shogun::SGString<signed char>*, int32_t)
00239     {
00240         SG_NOTIMPLEMENTED
00241     }
00242     virtual void set_vector(const int8_t*, int32_t)
00243     {
00244         SG_NOTIMPLEMENTED
00245     }
00246     virtual void set_vector(const uint8_t*, int32_t)
00247     {
00248         SG_NOTIMPLEMENTED
00249     }
00250     virtual void set_vector(const char*, int32_t)
00251     {
00252         SG_NOTIMPLEMENTED
00253     }
00254     virtual void set_vector(const int16_t*, int32_t)
00255     {
00256         SG_NOTIMPLEMENTED
00257     }
00258     virtual void set_vector(const int32_t*, int32_t)
00259     {
00260         SG_NOTIMPLEMENTED
00261     }
00262     virtual void set_vector(const uint32_t*, int32_t)
00263     {
00264         SG_NOTIMPLEMENTED
00265     }
00266     virtual void set_vector(const float32_t*, int32_t)
00267     {
00268         SG_NOTIMPLEMENTED
00269     }
00270     virtual void set_vector(const float64_t*, int32_t){
00271         SG_NOTIMPLEMENTED
00272     }
00273     virtual void set_vector(const floatmax_t*, int32_t)
00274     {
00275         SG_NOTIMPLEMENTED
00276     }
00277     virtual void set_vector(const uint16_t*, int32_t)
00278     {
00279         SG_NOTIMPLEMENTED
00280     }
00281     virtual void set_vector(const int64_t*, int32_t)
00282     {
00283         SG_NOTIMPLEMENTED
00284     }
00285     virtual void set_vector(const uint64_t*, int32_t)
00286     {
00287         SG_NOTIMPLEMENTED
00288     }
00289     virtual void set_matrix(const uint8_t*, int32_t, int32_t)
00290     {
00291         SG_NOTIMPLEMENTED
00292     }
00293     virtual void set_matrix(const int8_t*, int32_t, int32_t)
00294     {
00295         SG_NOTIMPLEMENTED
00296     }
00297     virtual void set_matrix(const char*, int32_t, int32_t)
00298     {
00299         SG_NOTIMPLEMENTED
00300     }
00301     virtual void set_matrix(const int32_t*, int32_t, int32_t)
00302     {
00303         SG_NOTIMPLEMENTED
00304     }
00305     virtual void set_matrix(const uint32_t*, int32_t, int32_t)
00306     {
00307         SG_NOTIMPLEMENTED
00308     }
00309     virtual void set_matrix(const int64_t*, int32_t, int32_t)
00310     {
00311         SG_NOTIMPLEMENTED
00312     }
00313     virtual void set_matrix(const uint64_t*, int32_t, int32_t)
00314     {
00315         SG_NOTIMPLEMENTED
00316     }
00317     virtual void set_matrix(const float32_t*, int32_t, int32_t)
00318     {
00319         SG_NOTIMPLEMENTED
00320     }
00321     virtual void set_matrix(const float64_t*, int32_t, int32_t)
00322     {
00323         SG_NOTIMPLEMENTED
00324     }
00325     virtual void set_matrix(const floatmax_t*, int32_t, int32_t)
00326     {
00327         SG_NOTIMPLEMENTED
00328     }
00329     virtual void set_matrix(const int16_t*, int32_t, int32_t)
00330     {
00331         SG_NOTIMPLEMENTED
00332     }
00333     virtual void set_matrix(const uint16_t*, int32_t, int32_t)
00334     {
00335         SG_NOTIMPLEMENTED
00336     }
00337     virtual void set_sparse_matrix(const shogun::SGSparseVector<bool>*, int32_t, int32_t)
00338     {
00339         SG_NOTIMPLEMENTED
00340     }
00341     virtual void set_sparse_matrix(const shogun::SGSparseVector<uint8_t>*, int32_t, int32_t)
00342     {
00343         SG_NOTIMPLEMENTED
00344     }
00345     virtual void set_sparse_matrix(const shogun::SGSparseVector<int8_t>*, int32_t, int32_t)
00346     {
00347         SG_NOTIMPLEMENTED
00348     }
00349     virtual void set_sparse_matrix(const shogun::SGSparseVector<char>*, int32_t, int32_t)
00350     {
00351         SG_NOTIMPLEMENTED
00352     }
00353     virtual void set_sparse_matrix(const shogun::SGSparseVector<int32_t>*, int32_t, int32_t)
00354     {
00355         SG_NOTIMPLEMENTED
00356     }
00357     virtual void set_sparse_matrix(const shogun::SGSparseVector<uint32_t>*, int32_t, int32_t)
00358     {
00359         SG_NOTIMPLEMENTED
00360     }
00361     virtual void set_sparse_matrix(const shogun::SGSparseVector<int64_t>*, int32_t, int32_t)
00362     {
00363         SG_NOTIMPLEMENTED
00364     }
00365     virtual void set_sparse_matrix(const shogun::SGSparseVector<uint64_t>*, int32_t, int32_t)
00366     {
00367         SG_NOTIMPLEMENTED
00368     }
00369     virtual void set_sparse_matrix(const shogun::SGSparseVector<int16_t>*, int32_t, int32_t)
00370     {
00371         SG_NOTIMPLEMENTED
00372     }
00373     virtual void set_sparse_matrix(const shogun::SGSparseVector<uint16_t>*, int32_t, int32_t)
00374     {
00375         SG_NOTIMPLEMENTED
00376     }
00377     virtual void set_sparse_matrix(const shogun::SGSparseVector<float32_t>*, int32_t, int32_t)
00378     {
00379         SG_NOTIMPLEMENTED
00380     }
00381     virtual void set_sparse_matrix(const shogun::SGSparseVector<float64_t>*, int32_t, int32_t)
00382     {
00383         SG_NOTIMPLEMENTED
00384     }
00385     virtual void set_sparse_matrix(const shogun::SGSparseVector<floatmax_t>*, int32_t, int32_t)
00386     {
00387         SG_NOTIMPLEMENTED
00388     }
00389     virtual void set_string_list(const shogun::SGString<bool>*, int32_t)
00390     {
00391         SG_NOTIMPLEMENTED
00392     }
00393     virtual void set_string_list(const shogun::SGString<uint8_t>*, int32_t)
00394     {
00395         SG_NOTIMPLEMENTED
00396     }
00397     virtual void set_string_list(const shogun::SGString<int8_t>*, int32_t)
00398     {
00399         SG_NOTIMPLEMENTED
00400     }
00401     virtual void set_string_list(const shogun::SGString<char>*, int32_t)
00402     {
00403         SG_NOTIMPLEMENTED
00404     }
00405     virtual void set_string_list(const shogun::SGString<int32_t>*, int32_t)
00406     {
00407         SG_NOTIMPLEMENTED
00408     }
00409     virtual void set_string_list(const shogun::SGString<uint32_t>*, int32_t)
00410     {
00411         SG_NOTIMPLEMENTED
00412     }
00413     virtual void set_string_list(const shogun::SGString<int16_t>*, int32_t)
00414     {
00415         SG_NOTIMPLEMENTED
00416     }
00417     virtual void set_string_list(const shogun::SGString<uint16_t>*, int32_t)
00418     {
00419         SG_NOTIMPLEMENTED
00420     }
00421     virtual void set_string_list(const shogun::SGString<int64_t>*, int32_t)
00422     {
00423         SG_NOTIMPLEMENTED
00424     }
00425     virtual void set_string_list(const shogun::SGString<uint64_t>*, int32_t)
00426     {
00427         SG_NOTIMPLEMENTED
00428     }
00429     virtual void set_string_list(const shogun::SGString<float32_t>*, int32_t)
00430     {
00431         SG_NOTIMPLEMENTED
00432     }
00433     virtual void set_string_list(const shogun::SGString<float64_t>*, int32_t)
00434     {
00435         SG_NOTIMPLEMENTED
00436     }
00437     virtual void set_string_list(const shogun::SGString<floatmax_t>*, int32_t)
00438     {
00439         SG_NOTIMPLEMENTED
00440     }
00442     virtual const char* get_name() const { return "HDF5File"; }
00443 
00444 protected:
00446     void get_boolean_type();
00447 
00456     hid_t get_compatible_type(H5T_class_t t_class,
00457                               const TSGDataType* datatype);
00458 
00466     void get_dims(hid_t dataset, int32_t*& dims, int32_t& ndims, int64_t& total_elements);
00467 
00469     void create_group_hierarchy();
00470 
00471 protected:
00473     hid_t h5file;
00475     hid_t boolean_type;
00476 
00478     char *fname;
00479 
00481     char *mldata_url;
00482 };
00483 }
00484 #endif //  HAVE_CURL && HAVE_HDF5
00485 #endif //__HDF5_FILE_H__
00486 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation