Tapkee
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
chain_interface.hpp
Go to the documentation of this file.
1 /* This software is distributed under BSD 3-clause license (see LICENSE file).
2  *
3  * Copyright (c) 2012-2013 Sergey Lisitsyn
4  */
5 
6 #ifndef TAPKEE_CHAIN_H_
7 #define TAPKEE_CHAIN_H_
8 
9 /* Tapkee includes */
10 #include <tapkee/embed.hpp>
13 /* End of Tapkee includes */
14 
15 namespace tapkee
16 {
17 
18 namespace tapkee_internal
19 {
20  template<class KernelCallback, class DistanceCallback, class FeaturesCallback>
22  {
23  public:
24  CallbacksInitializedState(const ParametersSet& params, const KernelCallback& k,
25  const DistanceCallback& d, const FeaturesCallback& f) :
26  parameters(params), kernel(k), distance(d), features(f) { }
27 
34  template<class RandomAccessIterator>
35  TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
36  {
38  }
39 
45  template<class Container>
46  TapkeeOutput embedUsing(const Container& container) const
47  {
48  return embedRange(container.begin(),container.end());
49  }
50  private:
52  KernelCallback kernel;
53  DistanceCallback distance;
54  FeaturesCallback features;
55  };
56 
57  template<class KernelCallback, class DistanceCallback>
59  {
60  public:
61  KernelAndDistanceInitializedState(const ParametersSet& params, const KernelCallback& k, const DistanceCallback& d) :
62  parameters(params), kernel(k), distance(d) { }
63 
71  template<class FeaturesCallback>
74 
81  template<class RandomAccessIterator>
82  TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
83  {
85  .embedRange(begin,end);
86  }
87 
93  template<class Container>
94  TapkeeOutput embedUsing(const Container& container) const
95  {
96  return embedRange(container.begin(),container.end());
97  }
98  private:
100  KernelCallback kernel;
101  DistanceCallback distance;
102  };
103 
104  template<class KernelCallback, class FeaturesCallback>
106  {
107  public:
108  KernelAndFeaturesInitializedState(const ParametersSet& params, const KernelCallback& k, const FeaturesCallback& f) :
109  parameters(params), kernel(k), features(f) { }
110 
118  template<class DistanceCallback>
121 
128  template<class RandomAccessIterator>
129  TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
130  {
132  .embedRange(begin,end);
133  }
134 
140  template<class Container>
141  TapkeeOutput embedUsing(const Container& container) const
142  {
143  return embedRange(container.begin(),container.end());
144  }
145  private:
147  KernelCallback kernel;
148  FeaturesCallback features;
149  };
150 
156  template<class DistanceCallback, class FeaturesCallback>
158  {
159  public:
160  DistanceAndFeaturesInitializedState(const ParametersSet& params, const DistanceCallback& d, const FeaturesCallback& f) :
161  parameters(params), distance(d), features(f) { }
162 
170  template<class KernelCallback>
173 
180  template<class RandomAccessIterator>
181  TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
182  {
184  .embedRange(begin,end);
185  }
186 
192  template<class Container>
193  TapkeeOutput embedUsing(const Container& container) const
194  {
195  return embedRange(container.begin(),container.end());
196  }
197  private:
199  DistanceCallback distance;
200  FeaturesCallback features;
201  };
202 
203  template<class KernelCallback>
205  {
206  public:
207  KernelFirstInitializedState(const ParametersSet& params, const KernelCallback& callback) :
208  parameters(params), kernel(callback) { }
209 
217  template<class DistanceCallback>
220 
228  template<class FeaturesCallback>
231 
238  template<class RandomAccessIterator>
239  TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
240  {
243  .embedRange(begin,end);
244  }
245 
251  template<class Container>
252  TapkeeOutput embedUsing(const Container& container) const
253  {
254  return embedRange(container.begin(),container.end());
255  }
256  private:
258  KernelCallback kernel;
259  };
260 
261  template<class DistanceCallback>
263  {
264  public:
265  DistanceFirstInitializedState(const ParametersSet& params, const DistanceCallback& callback) :
266  parameters(params), distance(callback) { }
267 
275  template<class KernelCallback>
278 
286  template<class FeaturesCallback>
289 
296  template<class RandomAccessIterator>
297  TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
298  {
301  .embedRange(begin,end);
302  }
303 
309  template<class Container>
310  TapkeeOutput embedUsing(const Container& container) const
311  {
312  return embedRange(container.begin(),container.end());
313  }
314  private:
316  DistanceCallback distance;
317  };
318 
319  template<class FeaturesCallback>
321  {
322  public:
323  FeaturesFirstInitializedState(const ParametersSet& params, const FeaturesCallback& callback) :
324  parameters(params), features(callback) { }
325 
333  template<class KernelCallback>
336 
344  template<class DistanceCallback>
347 
354  template<class RandomAccessIterator>
355  TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
356  {
359  .embedRange(begin,end);
360  }
361 
367  template<class Container>
368  TapkeeOutput embedUsing(const Container& container) const
369  {
370  return embedRange(container.begin(),container.end());
371  }
372  private:
374  FeaturesCallback features;
375  };
376 
378  {
379  public:
383 
391  template<class KernelCallback>
392  KernelFirstInitializedState<KernelCallback> withKernel(const KernelCallback& callback) const
394 
402  template<class DistanceCallback>
403  DistanceFirstInitializedState<DistanceCallback> withDistance(const DistanceCallback& callback) const
405 
413  template<class FeaturesCallback>
414  FeaturesFirstInitializedState<FeaturesCallback> withFeatures(const FeaturesCallback& callback) const
416 
423  TapkeeOutput embedUsing(const DenseMatrix& matrix) const
424  {
425  std::vector<IndexType> indices(matrix.cols());
426  for (IndexType i=0; i<matrix.cols(); i++) indices[i] = i;
427  eigen_kernel_callback kcb(matrix);
428  eigen_distance_callback dcb(matrix);
429  eigen_features_callback fcb(matrix);
430  return tapkee::embed(indices.begin(),indices.end(),kcb,dcb,fcb,parameters);
431  }
432  private:
434  };
435 } /* End of namespace tapkee_internal */
436 
438 {
443  {
444  }
445 
459  {
461  }
462 };
463 
464 } /* End of namespace tapkee */
465 
466 #endif
467 
TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
DistanceAndFeaturesInitializedState(const ParametersSet &params, const DistanceCallback &d, const FeaturesCallback &f)
KernelAndFeaturesInitializedState< KernelCallback, FeaturesCallback > withFeatures(const FeaturesCallback &callback) const
ScalarType distance(Callback &cb, const CoverTreePoint< RandomAccessIterator > &l, const CoverTreePoint< RandomAccessIterator > &r, ScalarType upper_bound)
Eigen::Matrix< tapkee::ScalarType, Eigen::Dynamic, Eigen::Dynamic > DenseMatrix
dense matrix type (non-overridable)
Definition: types.hpp:23
TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
DistanceAndFeaturesInitializedState< DistanceCallback, FeaturesCallback > withDistance(const DistanceCallback &callback) const
KernelAndDistanceInitializedState< KernelCallback, DistanceCallback > withDistance(const DistanceCallback &callback) const
CallbacksInitializedState< KernelCallback, DistanceCallback, FeaturesCallback > withFeatures(const FeaturesCallback &features) const
KernelAndDistanceInitializedState(const ParametersSet &params, const KernelCallback &k, const DistanceCallback &d)
TapkeeOutput embedUsing(const Container &container) const
TapkeeOutput embedUsing(const Container &container) const
TapkeeOutput embedUsing(const Container &container) const
CallbacksInitializedState< KernelCallback, DistanceCallback, FeaturesCallback > withDistance(const DistanceCallback &distance) const
KernelFirstInitializedState< KernelCallback > withKernel(const KernelCallback &callback) const
tapkee_internal::ParametersInitializedState withParameters(const ParametersSet &parameters) const
DistanceFirstInitializedState< DistanceCallback > withDistance(const DistanceCallback &callback) const
CallbacksInitializedState< KernelCallback, DistanceCallback, FeaturesCallback > withKernel(const KernelCallback &kernel) const
TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
int IndexType
indexing type (non-overridable) set to int for compatibility with OpenMP 2.0
Definition: types.hpp:19
KernelAndDistanceInitializedState< KernelCallback, DistanceCallback > withKernel(const KernelCallback &callback) const
FeaturesFirstInitializedState(const ParametersSet &params, const FeaturesCallback &callback)
ParametersInitializedState & operator=(const ParametersInitializedState &)
TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
DistanceAndFeaturesInitializedState< DistanceCallback, FeaturesCallback > withFeatures(const FeaturesCallback &callback) const
TapkeeOutput embedUsing(const DenseMatrix &matrix) const
KernelAndFeaturesInitializedState(const ParametersSet &params, const KernelCallback &k, const FeaturesCallback &f)
TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const
CallbacksInitializedState(const ParametersSet &params, const KernelCallback &k, const DistanceCallback &d, const FeaturesCallback &f)
Return result of the library - a pair of DenseMatrix (embedding) and ProjectingFunction.
Definition: defines.hpp:43
TapkeeOutput embedUsing(const Container &container) const
TapkeeOutput embedUsing(const Container &container) const
DistanceFirstInitializedState(const ParametersSet &params, const DistanceCallback &callback)
FeaturesFirstInitializedState< FeaturesCallback > withFeatures(const FeaturesCallback &callback) const
TapkeeOutput embed(RandomAccessIterator begin, RandomAccessIterator end, KernelCallback kernel_callback, DistanceCallback distance_callback, FeaturesCallback features_callback, ParametersSet parameters)
Definition: embed.hpp:95
KernelFirstInitializedState(const ParametersSet &params, const KernelCallback &callback)
KernelAndFeaturesInitializedState< KernelCallback, FeaturesCallback > withKernel(const KernelCallback &callback) const
TapkeeOutput embedUsing(const Container &container) const
TapkeeOutput embedUsing(const Container &container) const
TapkeeOutput embedRange(RandomAccessIterator begin, RandomAccessIterator end) const