#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. */ 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; } std::vector getExampleIntervals() const { return _exampleMatchedRegions; } std::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 std::vector & intervalList, int start, int end); double _getLogarithmicOverlay(const std::vector & intervalList, SUFFIX_MARKER_TYPE sentenceSize, double k); SUFFIX_MARKER_TYPE _exampleId; std::vector _exampleMatchedRegions; std::vector _patternMatchedRegions; SUFFIX_MARKER_TYPE _patternSize; SUFFIX_MARKER_TYPE _exampleSize; double _score; }; typedef boost::ptr_map TmMatchesMap; typedef TmMatchesMap::iterator TmMatchesMapIterator; #endif