00001
00002
00003
00005 #ifndef EVIDENCETYPE_H
00006 #define EVIDENCETYPE_H
00007
00008 #include "AnnotationScore.h"
00009 #include "dsu.h"
00010 #include <string>
00011
00012 using std::string;
00013
00014 class Prediction;
00026 class EvidenceType {
00027 public:
00028 EvidenceType(const string& str, int idx, double val) : _val(val), _str(str), _idx(idx) { }
00029 virtual ~EvidenceType() { }
00030
00038 virtual void update(const Prediction* pred, int end5, int end3, dsu::Strand_t) = 0;
00039 virtual void finish() { }
00040
00041
00042
00043
00044 virtual unsigned getNum() const = 0;
00045
00051 virtual double getVal(int) const { return _val; }
00052
00059 virtual EvidenceType* dup() const = 0;
00060
00065 virtual void setVals(const EvidenceType& et) {
00066 _val = et._val;
00067 }
00068
00069 virtual AnnotationScore eval() const = 0;
00074 virtual bool train_print(std::ostream& os) const = 0;
00075
00079 const char* getStr() const { return _str.c_str(); }
00080
00084 const int getIdx() const { return _idx; }
00085 virtual bool read(std::istream&) = 0;
00086
00087 double& getValRef() { return _val; }
00088 virtual double getVal() const { return _val; }
00089
00090 virtual double getSumVal() const { return getVal(); }
00091 virtual void normalize(double sum) { getValRef() /= sum; }
00092
00093 protected:
00094 double _val;
00095
00096 private:
00097 string _str;
00098 int _idx;
00099 };
00100
00101 #endif