openModeller  Version 1.5.0
Algorithm.hh
Go to the documentation of this file.
1 
29 #ifndef _ALGORITHMHH_
30 #define _ALGORITHMHH_
31 
32 #include <map>
33 #include <string>
34 
35 #include <openmodeller/om_defs.hh>
37 #include <openmodeller/Sampler.hh>
40 
43 
44 #include <openmodeller/refcount.hh>
45 
46 #include <openmodeller/Model.hh>
47 
49 
50 class AlgParameter;
51 
52 // Forward Decl.
54 
57 
63 typedef AlgorithmImpl *(*TAlgFactory)();
64 typedef AlgMetadata *(*TAlgMetadata)();
65 extern "C"
66 {
67 OM_ALG_DLL_EXPORT AlgorithmImpl *algorithmFactory();
68 OM_ALG_DLL_EXPORT AlgMetadata const *algorithmMetadata();
69 }
70 
76 class dllexp AlgorithmImpl : public Configurable, private ReferenceCountedObject
77 {
78 
81 
82 public:
83 
84  typedef std::map< icstring, std::string > ParamSetType;
85 
86  // This constructor should only be used by default constructors
87  // of derived classes.
88  explicit AlgorithmImpl( AlgMetadata const *metadata );
89 
90  virtual ~AlgorithmImpl();
91 
97  void setParameters( int nparam, AlgParameter const *param );
98  void setParameters( const ParamSetType& );
99 
100  std::string const getID() const { return _metadata ? _metadata->id : 0; }
101 
102  AlgMetadata const *getMetadata() const { return _metadata; }
103 
107  AlgorithmPtr getFreshCopy();
108 
113  virtual int supportsModelProjection() const { return 1; }
114 
115  /*
116  * Training Methods
117  */
118  Model createModel( const SamplerPtr& samp, CallbackWrapper *func = 0 );
119 
123  void setSampler( const SamplerPtr& samp );
124 
127  virtual int initialize() = 0;
128 
132  virtual int iterate() { return 1; };
133 
137  virtual int finalize() { return 1; }
138 
140  virtual int done() const { return 1; }
141 
143  virtual int getConvergence( Scalar * const val ) const { return 0; }
144 
146  virtual float getProgress() const { return (float) done(); }
147 
148  /*
149  * Model Implementation.
150  */
151 
155  virtual int needNormalization() { return ( _normalizerPtr == 0 ) ? 0 : 1; }
156 
162  Normalizer * getNormalizer() const;
163 
167  void setNormalization( const SamplerPtr& samp ) const;
168 
172  void setNormalization( const EnvironmentPtr& env ) const;
173 
182  virtual Scalar getValue( const Sample& x ) const = 0;
183 
184  /*
185  * Extract the Model from the Algorithm
186  */
187  virtual Model getModel() const;
188 
189  /*
190  * Extract and set configuration
191  */
192 
194 
195  void setConfiguration( const ConstConfigurationPtr & );
196 
197 protected:
198 
199  virtual void _getConfiguration( ConfigurationPtr& ) const { return; }
200  virtual void _setConfiguration( const ConstConfigurationPtr & ) { return; }
201 
212  int dimDomain() { return _samp ? _samp->numIndependent() : 0; }
213 
221  int getParameter( std::string const &name, std::string* value );
222 
230  int getParameter( std::string const &name, double *value );
231  int getParameter( std::string const &name, float *value );
232 
240  int getParameter( std::string const &name, int *value );
241 
242 
243 protected:
244 
246 
248 
250 
251 private:
252 
254 
255 private:
256 
257  typedef ParamSetType::value_type ParamSetValueType;
258 
259 };
260 
261 #endif
AlgMetadata const * _metadata
Definition: Algorithm.hh:253
double Scalar
Type of map values.
Definition: om_defs.hh:39
virtual ConfigurationPtr getConfiguration() const =0
OM_ALG_DLL_EXPORT AlgorithmImpl * algorithmFactory()
Definition: aquamaps.cpp:216
virtual int finalize()
Definition: Algorithm.hh:137
virtual int done() const
Definition: Algorithm.hh:140
ReferenceCountedPointer< AlgorithmImpl > AlgorithmPtr
Definition: Algorithm.hh:53
virtual int iterate()
Definition: Algorithm.hh:132
ReferenceCountedPointer< const AlgorithmImpl > ConstAlgorithmPtr
Definition: Algorithm.hh:56
virtual void _setConfiguration(const ConstConfigurationPtr &)
Definition: Algorithm.hh:200
std::map< icstring, std::string > ParamSetType
Definition: Algorithm.hh:84
OM_ALG_DLL_EXPORT AlgMetadata const * algorithmMetadata()
Definition: aquamaps.cpp:223
int dimDomain()
Definition: Algorithm.hh:212
std::string const getID() const
Definition: Algorithm.hh:100
virtual void _getConfiguration(ConfigurationPtr &) const
Definition: Algorithm.hh:199
virtual int needNormalization()
Definition: Algorithm.hh:155
virtual int supportsModelProjection() const
Definition: Algorithm.hh:113
virtual void setConfiguration(const ConstConfigurationPtr &)=0
SamplerPtr _samp
Definition: Algorithm.hh:245
ParamSetType::value_type ParamSetValueType
Definition: Algorithm.hh:257
ParamSetType _param
Definition: Algorithm.hh:249
virtual int getConvergence(Scalar *const val) const
Definition: Algorithm.hh:143
virtual float getProgress() const
Definition: Algorithm.hh:146
Normalizer * _normalizerPtr
Definition: Algorithm.hh:247
AlgMetadata metadata
Definition: garp.cpp:134
AlgMetadata const * getMetadata() const
Definition: Algorithm.hh:102
Definition: Sample.hh:25