bool FilterCriteria::Satisfy(const DNALength& alnLength, const float& pctSimilarity,
                             const float& pctAccuracy, const Score& score) const
{
    if (alnLength < _minAlnLength) {
        if (_verbose > 0)
            std::cout << "Alignment length " << alnLength << " is too short." << std::endl;
        return false;
    }
    if (pctSimilarity < _minPctSimilarity) {
        if (_verbose > 0)
            std::cout << "Percentage similarity " << pctSimilarity << " is too low." << std::endl;
        return false;
    }
    if (pctAccuracy < _minPctAccuracy) {
        if (_verbose > 0)
            std::cout << "Percentage accuracy " << pctAccuracy << " is too low." << std::endl;
        return false;
    }
    if (_useScore and not score.BetterThanOrEqual(_scoreCutoff)) {
        if (_verbose)
            std::cout << "Alignment score " << score.Value() << " worse than cut off." << std::endl;
        return false;
    }

    return true;
}