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