00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IMP_SAMPLER_H
00009 #define IMP_SAMPLER_H
00010
00011 #include "kernel_config.h"
00012 #include "Model.h"
00013 #include "macros.h"
00014 #include "Pointer.h"
00015 #include "ConfigurationSet.h"
00016
00017 IMP_BEGIN_NAMESPACE
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 class IMPEXPORT Sampler: public Object
00029 {
00030 internal::OwnerPointer<Model> model_;
00031 double max_score_;
00032 typedef std::map<Restraint*, double> Maxes;
00033 Maxes max_scores_;
00034 public:
00035 Sampler(Model *m, std::string name="Sampler %1%");
00036
00037 ConfigurationSet *get_sample() const;
00038
00039
00040
00041
00042
00043
00044
00045 void set_maximum_score(double s) {max_score_=s;}
00046
00047 void set_maximum_score(Restraint *r, double s) {
00048 max_scores_[r]=s;
00049 }
00050 double get_maximum_score() const {return max_score_;}
00051
00052
00053 Model *get_model() const {return model_;}
00054
00055
00056 IMP_REF_COUNTED_NONTRIVIAL_DESTRUCTOR(Sampler);
00057 protected:
00058
00059 virtual ConfigurationSet* do_sample() const=0;
00060
00061
00062
00063
00064
00065 bool get_is_good_configuration() const;
00066 };
00067
00068 IMP_OBJECTS(Sampler);
00069
00070 IMP_END_NAMESPACE
00071
00072 #endif