00001
00002
00003
00004
00005
00006
00007 #ifndef IMPDOMINO_JEDGE_H
00008 #define IMPDOMINO_JEDGE_H
00009
00010 #include "JNode.h"
00011 #include "CombState.h"
00012 #include "domino_config.h"
00013
00014 #include <IMP/Restraint.h>
00015
00016
00017 IMPDOMINO_BEGIN_NAMESPACE
00018
00019 class IMPDOMINOEXPORT Separator
00020 {
00021 public:
00022 Separator(const std::string &comb_key) {
00023 comb_key_ = comb_key;
00024 score_ = 0.0;
00025 }
00026 void update(float new_score) {
00027 score_ = new_score;
00028 }
00029 void show(std::ostream& out = std::cout) const {
00030 out << "key: " << comb_key_ << " score: " << score_;
00031 }
00032 protected:
00033 std::string comb_key_;
00034 float score_;
00035 };
00036
00037 class IMPDOMINOEXPORT JEdge
00038 {
00039 public:
00040 JEdge(JNode *source, JNode *target);
00041
00042
00043 void init_separators();
00044
00045
00046
00047
00048 void min_marginalize(JNode *from_node, JNode *to_node);
00049 JNode *get_source() const {
00050 return source_;
00051 }
00052 JNode *get_target() const {
00053 return target_;
00054 }
00055
00056
00057
00058
00059
00060
00061 CombState *get_separator(const CombState &other_comb) const;
00062
00063 const std::map<std::string, float> * get_old_separators(JNode *n) const;
00064 const std::map<std::string, float> * get_new_separators(JNode *n) const;
00065 void show(std::ostream& out=std::cout) const;
00066 void clear();
00067 protected:
00068
00069
00070
00071
00072
00073
00074 const std::string generate_key(const CombState &other_comb) const;
00075
00076 JNode *source_;
00077 JNode *target_;
00078 std::map<std::string, CombState *> separators_;
00079 std::map<std::string, float> source_old_score_separators_;
00080 std::map<std::string, float> target_old_score_separators_;
00081 std::map<std::string, float> source_new_score_separators_;
00082 std::map<std::string, float> target_new_score_separators_;
00083 };
00084
00085 IMPDOMINO_END_NAMESPACE
00086
00087 #endif