bool Jaccard::findNext(RecordKeyVector &hits) { if (nextSortedFind(hits)) { checkSplits(hits); _intersectionVal += getTotalIntersection(hits); return true; } return false; }
bool Fisher::getFisher() { NewChromSweep sweep(_context); if (!sweep.init()) { return false; } RecordKeyVector hitSet; while (sweep.next(hitSet)) { if (_context->getObeySplits()) { RecordKeyVector keySet(hitSet.getKey()); RecordKeyVector resultSet(hitSet.getKey()); _blockMgr->findBlockedOverlaps(keySet, hitSet, resultSet); _intersectionVal += getTotalIntersection(resultSet); } else { _intersectionVal += getTotalIntersection(hitSet); } } sweep.closeOut(); _queryLen = sweep.getQueryTotalRecordLength(); _dbLen = sweep.getDatabaseTotalRecordLength(); _unionVal = _queryLen + _dbLen; return true; }
bool Jaccard::getIntersectionAndUnion() { NewChromSweep sweep(_context); if (!sweep.init()) { return false; } RecordKeyList hitSet; while (sweep.next(hitSet)) { if (_context->getObeySplits()) { RecordKeyList keySet(hitSet.getKey()); RecordKeyList resultSet(hitSet.getKey()); _blockMgr->findBlockedOverlaps(keySet, hitSet, resultSet); _intersectionVal += getTotalIntersection(&resultSet); } else { _intersectionVal += getTotalIntersection(&hitSet); } } sweep.closeOut(); unsigned long queryUnion = sweep.getQueryTotalRecordLength(); unsigned long dbUnion = sweep.getDatabaseTotalRecordLength(); _unionVal = queryUnion + dbUnion; return true; }