#ifndef TM_MATCHES_HDR #define TM_MATCHES_HDR #include #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: TmMatches(); TmMatches(const SUFFIX_MARKER_TYPE exampleId, const SUFFIX_MARKER_TYPE exampleSize, const SUFFIX_MARKER_TYPE 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, SUFFIX_MARKER_TYPE sentenceSize, double k); SUFFIX_MARKER_TYPE _exampleId; vector _exampleMatchedRegions; vector _patternMatchedRegions; SUFFIX_MARKER_TYPE _patternSize; SUFFIX_MARKER_TYPE _exampleSize; double _score; }; typedef boost::ptr_map TmMatchesMap; typedef TmMatchesMap::iterator TmMatchesMapIterator; #endif