#ifndef TM_MATCHES_HDR #define TM_MATCHES_HDR #include #include #include "concordia/common/config.hpp" #include "concordia/interval.hpp" #include /*! Class used within Anubis search algorithm to store partial results. */ using namespace std; class TmMatches { public: explicit TmMatches(const SUFFIX_MARKER_TYPE exampleId, const unsigned char exampleSize, const unsigned char patternSize); /*! Destructor. */ virtual ~TmMatches(); double getScore() const { return _score; } vector getExampleIntervals() const { return _exampleMatchedRegions; } vector getPatternIntervals() const { return _patternMatchedRegions; } SUFFIX_MARKER_TYPE getExampleId() const { return _exampleId; } void calculateSimpleScore(); void calculateScore(); void addExampleInterval(int start, int end); void addPatternInterval(int start, int end); private: bool _alreadyIntersects(const vector & intervalList, int start, int end); double _getLogarithmicOverlay(const vector & intervalList, unsigned char sentenceSize, double k); SUFFIX_MARKER_TYPE _exampleId; vector _exampleMatchedRegions; vector _patternMatchedRegions; unsigned char _patternSize; unsigned char _exampleSize; double _score; }; typedef boost::ptr_map TmMatchesMap; typedef TmMatchesMap::iterator TmMatchesMapIterator; #endif