SHOGUN  v3.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LibSVMFile.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) 2013 Evgeniy Andreev (gsomix)
8  * Written (W) 2010 Soeren Sonnenburg
9  */
10 
11 #ifndef __LIBSVMFILE_H__
12 #define __LIBSVMFILE_H__
13 
14 #include <shogun/io/File.h>
15 
16 #include <shogun/io/LineReader.h>
17 #include <shogun/io/Parser.h>
19 
20 namespace shogun
21 {
22 
30 class CLibSVMFile : public CFile
31 {
32 public:
34  CLibSVMFile();
35 
41  CLibSVMFile(FILE* f, const char* name=NULL);
42 
49  CLibSVMFile(const char* fname, char rw='r', const char* name=NULL);
50 
52  virtual ~CLibSVMFile();
53 
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  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec) { };
85  virtual void get_matrix(
86  int8_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 
117  virtual void get_ndarray(
118  uint8_t*& array, int32_t*& dims, int32_t& num_dims) { };
119  virtual void get_ndarray(
120  char*& array, int32_t*& dims, int32_t& num_dims) { };
121  virtual void get_ndarray(
122  int32_t*& array, int32_t*& dims, int32_t& num_dims) { };
123  virtual void get_ndarray(
124  float32_t*& array, int32_t*& dims, int32_t& num_dims) { };
125  virtual void get_ndarray(
126  float64_t*& array, int32_t*& dims, int32_t& num_dims){ };
127  virtual void get_ndarray(
128  int16_t*& array, int32_t*& dims, int32_t& num_dims){ };
129  virtual void get_ndarray(
130  uint16_t*& array, int32_t*& dims, int32_t& num_dims){ };
132 
141  virtual void get_sparse_matrix(
142  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
143  virtual void get_sparse_matrix(
144  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
145  virtual void get_sparse_matrix(
146  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
147  virtual void get_sparse_matrix(
148  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
149  virtual void get_sparse_matrix(
150  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
151  virtual void get_sparse_matrix(
152  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
153  virtual void get_sparse_matrix(
154  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
155  virtual void get_sparse_matrix(
156  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
157  virtual void get_sparse_matrix(
158  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
159  virtual void get_sparse_matrix(
160  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
161  virtual void get_sparse_matrix(
162  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
163  virtual void get_sparse_matrix(
164  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
165  virtual void get_sparse_matrix(
166  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
168 
177  virtual void get_sparse_matrix(
178  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec,
179  float64_t*& labels, bool load_labels=true);
180  virtual void get_sparse_matrix(
181  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
182  float64_t*& labels, bool load_labels=true);
183  virtual void get_sparse_matrix(
184  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
185  float64_t*& labels, bool load_labels=true);
186  virtual void get_sparse_matrix(
187  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec,
188  float64_t*& labels, bool load_labels=true);
189  virtual void get_sparse_matrix(
190  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
191  float64_t*& labels, bool load_labels=true);
192  virtual void get_sparse_matrix(
193  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
194  float64_t*& labels, bool load_labels=true);
195  virtual void get_sparse_matrix(
196  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
197  float64_t*& labels, bool load_labels=true);
198  virtual void get_sparse_matrix(
199  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
200  float64_t*& labels, bool load_labels=true);
201  virtual void get_sparse_matrix(
202  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
203  float64_t*& labels, bool load_labels=true);
204  virtual void get_sparse_matrix(
205  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
206  float64_t*& labels, bool load_labels=true);
207  virtual void get_sparse_matrix(
208  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
209  float64_t*& labels, bool load_labels=true);
210  virtual void get_sparse_matrix(
211  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
212  float64_t*& labels, bool load_labels=true);
213  virtual void get_sparse_matrix(
214  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec,
215  float64_t*& labels, bool load_labels=true);
216 
225  virtual void get_string_list(
226  SGString<uint8_t>*& strings, int32_t& num_str,
227  int32_t& max_string_len) { };
228  virtual void get_string_list(
229  SGString<int8_t>*& strings, int32_t& num_str,
230  int32_t& max_string_len) { };
231  virtual void get_string_list(
232  SGString<char>*& strings, int32_t& num_str,
233  int32_t& max_string_len) { };
234  virtual void get_string_list(
235  SGString<int32_t>*& strings, int32_t& num_str,
236  int32_t& max_string_len) { };
237  virtual void get_string_list(
238  SGString<uint32_t>*& strings, int32_t& num_str,
239  int32_t& max_string_len) { };
240  virtual void get_string_list(
241  SGString<int16_t>*& strings, int32_t& num_str,
242  int32_t& max_string_len) { };
243  virtual void get_string_list(
244  SGString<uint16_t>*& strings, int32_t& num_str,
245  int32_t& max_string_len) { };
246  virtual void get_string_list(
247  SGString<int64_t>*& strings, int32_t& num_str,
248  int32_t& max_string_len) { };
249  virtual void get_string_list(
250  SGString<uint64_t>*& strings, int32_t& num_str,
251  int32_t& max_string_len) { };
252  virtual void get_string_list(
253  SGString<float32_t>*& strings, int32_t& num_str,
254  int32_t& max_string_len) { };
255  virtual void get_string_list(
256  SGString<float64_t>*& strings, int32_t& num_str,
257  int32_t& max_string_len) { };
258  virtual void get_string_list(
259  SGString<floatmax_t>*& strings, int32_t& num_str,
260  int32_t& max_string_len) { };
262 
264  /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
265 
273  virtual void set_vector(const int8_t* vector, int32_t len) { };
274  virtual void set_vector(const uint8_t* vector, int32_t len) { };
275  virtual void set_vector(const char* vector, int32_t len) { };
276  virtual void set_vector(const int32_t* vector, int32_t len) { };
277  virtual void set_vector(const uint32_t* vector, int32_t len) { };
278  virtual void set_vector(const float32_t* vector, int32_t len) { };
279  virtual void set_vector(const float64_t* vector, int32_t len) { };
280  virtual void set_vector(const floatmax_t* vector, int32_t len) { };
281  virtual void set_vector(const int16_t* vector, int32_t len) { };
282  virtual void set_vector(const uint16_t* vector, int32_t len) { };
283  virtual void set_vector(const int64_t* vector, int32_t len) { };
284  virtual void set_vector(const uint64_t* vector, int32_t len) { };
286 
294  virtual void set_matrix(
295  const uint8_t* matrix, int32_t num_feat, int32_t num_vec) { };
296  virtual void set_matrix(
297  const int8_t* matrix, int32_t num_feat, int32_t num_vec) { };
298  virtual void set_matrix(
299  const char* matrix, int32_t num_feat, int32_t num_vec) { };
300  virtual void set_matrix(
301  const int32_t* matrix, int32_t num_feat, int32_t num_vec) { };
302  virtual void set_matrix(
303  const uint32_t* matrix, int32_t num_feat, int32_t num_vec) { };
304  virtual void set_matrix(
305  const int64_t* matrix, int32_t num_feat, int32_t num_vec) { };
306  virtual void set_matrix(
307  const uint64_t* matrix, int32_t num_feat, int32_t num_vec) { };
308  virtual void set_matrix(
309  const float32_t* matrix, int32_t num_feat, int32_t num_vec) { };
310  virtual void set_matrix(
311  const float64_t* matrix, int32_t num_feat, int32_t num_vec) { };
312  virtual void set_matrix(
313  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec) { };
314  virtual void set_matrix(
315  const int16_t* matrix, int32_t num_feat, int32_t num_vec) { };
316  virtual void set_matrix(
317  const uint16_t* matrix, int32_t num_feat, int32_t num_vec) { };
319 
327  virtual void set_sparse_matrix(
328  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
329  virtual void set_sparse_matrix(
330  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
331  virtual void set_sparse_matrix(
332  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
333  virtual void set_sparse_matrix(
334  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
335  virtual void set_sparse_matrix(
336  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
337  virtual void set_sparse_matrix(
338  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
339  virtual void set_sparse_matrix(
340  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
341  virtual void set_sparse_matrix(
342  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
343  virtual void set_sparse_matrix(
344  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
345  virtual void set_sparse_matrix(
346  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
347  virtual void set_sparse_matrix(
348  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
349  virtual void set_sparse_matrix(
350  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
351  virtual void set_sparse_matrix(
352  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
354 
362  virtual void set_sparse_matrix(
363  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec,
364  const float64_t* labels);
365  virtual void set_sparse_matrix(
366  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec,
367  const float64_t* labels);
368  virtual void set_sparse_matrix(
369  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec,
370  const float64_t* labels);
371  virtual void set_sparse_matrix(
372  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec,
373  const float64_t* labels);
374  virtual void set_sparse_matrix(
375  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec,
376  const float64_t* labels);
377  virtual void set_sparse_matrix(
378  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec,
379  const float64_t* labels);
380  virtual void set_sparse_matrix(
381  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec,
382  const float64_t* labels);
383  virtual void set_sparse_matrix(
384  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec,
385  const float64_t* labels);
386  virtual void set_sparse_matrix(
387  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec,
388  const float64_t* labels);
389  virtual void set_sparse_matrix(
390  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec,
391  const float64_t* labels);
392  virtual void set_sparse_matrix(
393  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec,
394  const float64_t* labels);
395  virtual void set_sparse_matrix(
396  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec,
397  const float64_t* labels);
398  virtual void set_sparse_matrix(
399  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec,
400  const float64_t* labels);
402 
403 
412  virtual void set_string_list(
413  const SGString<uint8_t>* strings, int32_t num_str) { };
414  virtual void set_string_list(
415  const SGString<int8_t>* strings, int32_t num_str) { };
416  virtual void set_string_list(
417  const SGString<char>* strings, int32_t num_str) { };
418  virtual void set_string_list(
419  const SGString<int32_t>* strings, int32_t num_str) { };
420  virtual void set_string_list(
421  const SGString<uint32_t>* strings, int32_t num_str) { };
422  virtual void set_string_list(
423  const SGString<int16_t>* strings, int32_t num_str) { };
424  virtual void set_string_list(
425  const SGString<uint16_t>* strings, int32_t num_str) { };
426  virtual void set_string_list(
427  const SGString<int64_t>* strings, int32_t num_str) { };
428  virtual void set_string_list(
429  const SGString<uint64_t>* strings, int32_t num_str) { };
430  virtual void set_string_list(
431  const SGString<float32_t>* strings, int32_t num_str) { };
432  virtual void set_string_list(
433  const SGString<float64_t>* strings, int32_t num_str) { };
434  virtual void set_string_list(
435  const SGString<floatmax_t>* strings, int32_t num_str) { };
437 
438  virtual const char* get_name() const { return "LibSVMFile"; }
439 
440 private:
442  void init();
443 
445  void init_with_defaults();
446 
448  int32_t get_num_lines();
449 
450 private:
452  char m_delimiter;
453 
455  CLineReader* m_line_reader;
456 
458  CParser* m_parser;
459 
461  CDelimiterTokenizer* m_line_tokenizer;
462 
464  CDelimiterTokenizer* m_whitespace_tokenizer;
465 
467  CDelimiterTokenizer* m_delimiter_tokenizer;
468 };
469 
470 }
471 
472 #endif

SHOGUN Machine Learning Toolbox - Documentation