SHOGUN  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CSVFile.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  */
9 
10 #ifndef __CSVFILE_H__
11 #define __CSVFILE_H__
12 
13 #include <shogun/lib/config.h>
14 
15 #include <shogun/lib/common.h>
16 #include <shogun/io/File.h>
17 
18 namespace shogun
19 {
20 class CDelimiterTokenizer;
21 class CLineReader;
22 class CParser;
23 struct substring;
24 template <class ST> class SGString;
25 template <class T> class SGSparseVector;
26 template <class T> class v_array;
27 
31 class CCSVFile : public CFile
32 {
33 public:
35  CCSVFile();
36 
42  CCSVFile(FILE* f, const char* name=NULL);
43 
50  CCSVFile(int fd, const char* mode, const char* name=NULL);
51 
58  CCSVFile(const char* fname, char rw='r', const char* name=NULL);
59 
61  virtual ~CCSVFile();
62 
67  void set_transpose(bool value);
68 
73  void set_delimiter(char delimiter);
74 
79  void set_lines_to_skip(int32_t num_lines);
80 
86  int32_t get_stats(int32_t& num_tokens);
87 
95  virtual void get_vector(int8_t*& vector, int32_t& len);
96  virtual void get_vector(uint8_t*& vector, int32_t& len);
97  virtual void get_vector(char*& vector, int32_t& len);
98  virtual void get_vector(int32_t*& vector, int32_t& len);
99  virtual void get_vector(uint32_t*& vector, int32_t& len);
100  virtual void get_vector(float64_t*& vector, int32_t& len);
101  virtual void get_vector(float32_t*& vector, int32_t& len);
102  virtual void get_vector(floatmax_t*& vector, int32_t& len);
103  virtual void get_vector(int16_t*& vector, int32_t& len);
104  virtual void get_vector(uint16_t*& vector, int32_t& len);
105  virtual void get_vector(int64_t*& vector, int32_t& len);
106  virtual void get_vector(uint64_t*& vector, int32_t& len);
108 
117  virtual void get_matrix(
118  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
119  virtual void get_matrix(
120  int8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
121  virtual void get_matrix(
122  char*& matrix, int32_t& num_feat, int32_t& num_vec);
123  virtual void get_matrix(
124  int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
125  virtual void get_matrix(
126  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
127  virtual void get_matrix(
128  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
129  virtual void get_matrix(
130  uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
131  virtual void get_matrix(
132  float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
133  virtual void get_matrix(
134  float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
135  virtual void get_matrix(
136  floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
137  virtual void get_matrix(
138  int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
139  virtual void get_matrix(
140  uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
142 
151  virtual void get_ndarray(
152  uint8_t*& array, int32_t*& dims, int32_t& num_dims);
153  virtual void get_ndarray(
154  char*& array, int32_t*& dims, int32_t& num_dims);
155  virtual void get_ndarray(
156  int32_t*& array, int32_t*& dims, int32_t& num_dims);
157  virtual void get_ndarray(
158  float32_t*& array, int32_t*& dims, int32_t& num_dims);
159  virtual void get_ndarray(
160  float64_t*& array, int32_t*& dims, int32_t& num_dims);
161  virtual void get_ndarray(
162  int16_t*& array, int32_t*& dims, int32_t& num_dims);
163  virtual void get_ndarray(
164  uint16_t*& array, int32_t*& dims, int32_t& num_dims);
166 
175  virtual void get_sparse_matrix(
176  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
177  virtual void get_sparse_matrix(
178  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
179  virtual void get_sparse_matrix(
180  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
181  virtual void get_sparse_matrix(
182  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
183  virtual void get_sparse_matrix(
184  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
185  virtual void get_sparse_matrix(
186  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
187  virtual void get_sparse_matrix(
188  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
189  virtual void get_sparse_matrix(
190  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
191  virtual void get_sparse_matrix(
192  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
193  virtual void get_sparse_matrix(
194  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
195  virtual void get_sparse_matrix(
196  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
197  virtual void get_sparse_matrix(
198  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
199  virtual void get_sparse_matrix(
200  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
202 
211  virtual void get_string_list(
212  SGString<uint8_t>*& strings, int32_t& num_str,
213  int32_t& max_string_len);
214  virtual void get_string_list(
215  SGString<int8_t>*& strings, int32_t& num_str,
216  int32_t& max_string_len);
217  virtual void get_string_list(
218  SGString<char>*& strings, int32_t& num_str,
219  int32_t& max_string_len);
220  virtual void get_string_list(
221  SGString<int32_t>*& strings, int32_t& num_str,
222  int32_t& max_string_len);
223  virtual void get_string_list(
224  SGString<uint32_t>*& strings, int32_t& num_str,
225  int32_t& max_string_len);
226  virtual void get_string_list(
227  SGString<int16_t>*& strings, int32_t& num_str,
228  int32_t& max_string_len);
229  virtual void get_string_list(
230  SGString<uint16_t>*& strings, int32_t& num_str,
231  int32_t& max_string_len);
232  virtual void get_string_list(
233  SGString<int64_t>*& strings, int32_t& num_str,
234  int32_t& max_string_len);
235  virtual void get_string_list(
236  SGString<uint64_t>*& strings, int32_t& num_str,
237  int32_t& max_string_len);
238  virtual void get_string_list(
239  SGString<float32_t>*& strings, int32_t& num_str,
240  int32_t& max_string_len);
241  virtual void get_string_list(
242  SGString<float64_t>*& strings, int32_t& num_str,
243  int32_t& max_string_len);
244  virtual void get_string_list(
245  SGString<floatmax_t>*& strings, int32_t& num_str,
246  int32_t& max_string_len);
248 
250  /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
251 
259  virtual void set_vector(const int8_t* vector, int32_t len);
260  virtual void set_vector(const uint8_t* vector, int32_t len);
261  virtual void set_vector(const char* vector, int32_t len);
262  virtual void set_vector(const int32_t* vector, int32_t len);
263  virtual void set_vector(const uint32_t* vector, int32_t len);
264  virtual void set_vector(const float32_t* vector, int32_t len);
265  virtual void set_vector(const float64_t* vector, int32_t len);
266  virtual void set_vector(const floatmax_t* vector, int32_t len);
267  virtual void set_vector(const int16_t* vector, int32_t len);
268  virtual void set_vector(const uint16_t* vector, int32_t len);
269  virtual void set_vector(const int64_t* vector, int32_t len);
270  virtual void set_vector(const uint64_t* vector, int32_t len);
272 
280  virtual void set_matrix(
281  const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
282  virtual void set_matrix(
283  const int8_t* matrix, int32_t num_feat, int32_t num_vec);
284  virtual void set_matrix(
285  const char* matrix, int32_t num_feat, int32_t num_vec);
286  virtual void set_matrix(
287  const int32_t* matrix, int32_t num_feat, int32_t num_vec);
288  virtual void set_matrix(
289  const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
290  virtual void set_matrix(
291  const int64_t* matrix, int32_t num_feat, int32_t num_vec);
292  virtual void set_matrix(
293  const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
294  virtual void set_matrix(
295  const float32_t* matrix, int32_t num_feat, int32_t num_vec);
296  virtual void set_matrix(
297  const float64_t* matrix, int32_t num_feat, int32_t num_vec);
298  virtual void set_matrix(
299  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
300  virtual void set_matrix(
301  const int16_t* matrix, int32_t num_feat, int32_t num_vec);
302  virtual void set_matrix(
303  const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
305 
313  virtual void set_sparse_matrix(
314  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
315  virtual void set_sparse_matrix(
316  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
317  virtual void set_sparse_matrix(
318  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
319  virtual void set_sparse_matrix(
320  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
321  virtual void set_sparse_matrix(
322  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
323  virtual void set_sparse_matrix(
324  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
325  virtual void set_sparse_matrix(
326  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
327  virtual void set_sparse_matrix(
328  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
329  virtual void set_sparse_matrix(
330  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
331  virtual void set_sparse_matrix(
332  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
333  virtual void set_sparse_matrix(
334  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
335  virtual void set_sparse_matrix(
336  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
337  virtual void set_sparse_matrix(
338  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
340 
349  virtual void set_string_list(
350  const SGString<uint8_t>* strings, int32_t num_str);
351  virtual void set_string_list(
352  const SGString<int8_t>* strings, int32_t num_str);
353  virtual void set_string_list(
354  const SGString<char>* strings, int32_t num_str);
355  virtual void set_string_list(
356  const SGString<int32_t>* strings, int32_t num_str);
357  virtual void set_string_list(
358  const SGString<uint32_t>* strings, int32_t num_str);
359  virtual void set_string_list(
360  const SGString<int16_t>* strings, int32_t num_str);
361  virtual void set_string_list(
362  const SGString<uint16_t>* strings, int32_t num_str);
363  virtual void set_string_list(
364  const SGString<int64_t>* strings, int32_t num_str);
365  virtual void set_string_list(
366  const SGString<uint64_t>* strings, int32_t num_str);
367  virtual void set_string_list(
368  const SGString<float32_t>* strings, int32_t num_str);
369  virtual void set_string_list(
370  const SGString<float64_t>* strings, int32_t num_str);
371  virtual void set_string_list(
372  const SGString<floatmax_t>* strings, int32_t num_str);
374 
383  static void tokenize(char delim, substring s, v_array<substring> &ret);
384 
385  virtual const char* get_name() const { return "CSVFile"; }
386 
387 private:
389  void init();
390 
392  void init_with_defaults();
393 
395  void skip_lines(int32_t num_lines);
396 
397 private:
399  CLineReader* m_line_reader;
400 
402  CParser* m_parser;
403 
405  CDelimiterTokenizer* m_line_tokenizer;
406 
408  CDelimiterTokenizer* m_tokenizer;
409 
411  bool is_data_transposed;
412 
414  char m_delimiter;
415 
417  int32_t m_num_to_skip;
418 };
419 
420 }
421 
422 #endif

SHOGUN Machine Learning Toolbox - Documentation