package edu.usc.enl.dynamicmeasurement.metric.hhh;
import edu.usc.enl.dynamicmeasurement.model.WildcardPattern;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: Masoud
* Date: 2/1/13
* Time: 10:55 PM
*/
public class AncestorRecall extends HHHMetric {
@Override
public Double compute(List<WildcardPattern> hhh, List<WildcardPattern> reportedHHH, int step, String folder) {
if (hhh.size() == 0) {
return 1d;
}
double score = 0;
for (WildcardPattern wildcardPattern : hhh) {
wildcardPattern = wildcardPattern.clone();
int i = 1;
do {
if (reportedHHH.contains(wildcardPattern)) {
score += 1.0 / i;
break;
}
if (wildcardPattern.canGoUp()) {
wildcardPattern = wildcardPattern.goUp();
i <<= 1;
}
} while (wildcardPattern.canGoUp());
}
return 1.0 * score / hhh.size();
}
@Override
public String toString() {
return "AncestorRecall";
}
}