SHOGUN  v3.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
StreamingFileFromSparseFeatures.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) 2011 Shashwat Lal Das
8  * Copyright (C) 2011 Berlin Institute of Technology and Max-Planck-Society
9  */
10 #ifndef __STREAMING_FILEFROMSPARSE_H__
11 #define __STREAMING_FILEFROMSPARSE_H__
12 
15 
16 namespace shogun
17 {
23 {
24 public:
29 
36 
44 
49 
58  virtual void get_sparse_vector(SGSparseVectorEntry<T>* &vec, int32_t &len);
59 
69  virtual void get_sparse_vector_and_label(SGSparseVectorEntry<T>* &vec, int32_t &len, float64_t &label);
70 
76  void reset_stream()
77  {
78  vector_num = 0;
79  }
80 
82  virtual const char* get_name() const
83  {
84  return "StreamingFileFromSparseFeatures";
85 
86  }
87 
88 private:
92  void init(CSparseFeatures<T>* feat);
93 
94 protected:
97 
99  int32_t vector_num;
100 
101 };
102 
103 template <class T>
106 {
107  init(NULL);
108 }
109 
110 template <class T>
113 {
114  init(feat);
115 }
116 
117 template <class T>
119  : CStreamingFileFromFeatures(feat,lab)
120 {
121  init(feat);
122 }
123 
124 template <class T>
126 {
127  SG_UNREF(features);
128 }
129 
130 template <class T>
132 {
133  features = feat;
134  SG_REF(features);
135  vector_num=0;
136 
137  set_generic<T>();
138 }
139 
140 /* Functions to return the vector from the SparseFeatures object */
141 template <class T>
143 (SGSparseVectorEntry<T>*& vector, int32_t& len)
144 {
145  if (vector_num >= features->get_num_vectors())
146  {
147  vector=NULL;
148  len=-1;
149  return;
150  }
151 
152  SGSparseVector<T> vec=
153  features->get_sparse_feature_vector(vector_num);
154  vector=vec.features;
155  len=vec.num_feat_entries;
156 
157  /* TODO. check if vector needs to be freed? */
158 
159  vector_num++;
160 }
161 
162 /* Functions to return the vector from the SparseFeatures object */
163 template <class T>
165 (SGSparseVectorEntry<T>*& vector, int32_t& len, float64_t& label)
166 {
167  get_sparse_vector(vector, len);
168  label=labels[vector_num];
169 }
170 
171 }
172 #endif //__STREAMING_FILEFROMSPARSE_H__

SHOGUN Machine Learning Toolbox - Documentation