def eval()

in rules/rule.py [0:0]


    def eval(self, stats: ConfusionMatrix):
        cache_key = get_cache_key(self, stats.df)
        if cache_key in cache.keys():
            (q, tps, fps, nc) = cache[cache_key]
            return q

        tps = stats.true_positive(self)
        fps = stats.false_positive(self)
        nc = stats.num_covered(self)

        # Guide rule size with cfg.max_size parameter
        size_score = 1 - self.get_size() / cfg.max_size

        q = stats.get_coverage_ratio(self) * cfg.coverage_conjunct \
            + stats.get_tp_ratio(self) * cfg.tpr_conjunct \
            + size_score * cfg.size_conjunct

        cache[cache_key] = (q, tps, fps, nc)
        return q