OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [remove_cycle/] [measures.py] - Blame information for rev 48

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 48 alirezamon
from file_io import read_pairs_from_file
2
 
3
def measure_pairs_agreement(pairs,nodes_score):
4
        # whether nodes in pairs agree with their ranking scores
5
        num_correct_pairs = 0
6
        num_wrong_pairs = 0
7
        total_pairs = 0
8
        for u,v in pairs:
9
                if u in nodes_score and v in nodes_score:
10
                        if nodes_score[u] <= nodes_score[v]:
11
                                num_correct_pairs += 1
12
                        else:
13
                                num_wrong_pairs += 1
14
                        total_pairs += 1
15
        acc = 0
16
        if total_pairs != 0:
17
                acc = num_correct_pairs * 1.0 / total_pairs
18
                #print("correct pairs: %d, wrong pairs: %d, total pairs: %d, accuracy: %0.4f" % (num_correct_pairs,num_wrong_pairs,total_pairs,num_correct_pairs*1.0/total_pairs))
19
        else:
20
                acc = 1
21
                #print("total pairs: 0, accuracy: 1")
22
        return acc
23
 
24
def F1(gt,predicted):
25
        '''
26
        inputs: gt, predicted (list)
27
        return: accuracy, recall, f1
28
        '''
29
        gt_set = set(gt)
30
        predicted_set = set(predicted)
31
        accurate_set = predicted_set & gt_set
32
        non_recall_set = gt_set - predicted_set
33
        #print("gt size: %d, predicted size: %d" % (len(gt_set),len(predicted_set)))
34
        #print("accurate size: %d, non-recall size: %d" % (len(accurate_set),len(non_recall_set)))
35
        try:
36
                accu = len(accurate_set)*1.0 / len(predicted_set)
37
                recall = 1 - len(non_recall_set)*1.0/len(gt_set)
38
                f1_score = 2.0*len(accurate_set)/(len(gt_set) + len(predicted_set))
39
                F1_score = 2.0 * accu * recall / (accu + recall)
40
                #print("Accu: %0.4f, Recall: %0.4f, f1 score: %0.4f, F1 score: %0.4f" % (accu,recall,f1_score,F1_score))
41
                return accu,recall,F1_score
42
        except Exception as e:
43
                print e
44
                return 0,0,0
45
 
46
def evaluation(gt_file,predicted_file):
47
        gt_edges = read_pairs_from_file(gt_file)
48
        predicted_edges = read_pairs_from_file(predicted_file)
49
        F1(gt_edges,predicted_edges)
50
 
51
def report_performance(gt_file,predicted_edges,note):
52
        #print("edges to be removed: %s" % predicted_edges)
53
        #print("**********************")
54
 
55
        if gt_file != None:
56
                gt_edges = read_pairs_from_file(gt_file)
57
                accu,recall,F1_score =  F1(gt_edges,predicted_edges)
58
                print("method------precision---recall------F1---numEdgesRemoved")
59
                print("%s       %0.4f   %0.4f   %0.4f   %d" % (note,accu,recall,F1_score,len(predicted_edges)))
60
                #print("method: %s, precision: %0.4f, recall: %0.4f, f1: %0.4f" % (note,accu,recall,F1_score))
61
        else:
62
                print("method: %s, # edges to be removed: %d" % (note,len(predicted_edges)))
63
        #print("**********************")
64
 
65
import argparse
66
if __name__ == "__main__":
67
 
68
        parser = argparse.ArgumentParser()
69
        parser.add_argument("-t","--ground_truth",default= " ", help = "ground truth edges")
70
        parser.add_argument("-p","--predicted",help = "predicted edges")
71
        args = parser.parse_args()
72
        gt_file = args.ground_truth
73
        predicted_file = args.predicted
74
        evaluation(gt_file,predicted_file)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.