From aa55578ebdce64acfe4284caf57b4450e8c91659 Mon Sep 17 00:00:00 2001 From: Hui Lan Date: Tue, 9 Feb 2021 12:30:00 +0800 Subject: overlap.py: compare predicted edges with gold standard (osu AtRegNet.csv) edges. --- Code/overlap.py | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Code/overlap.py diff --git a/Code/overlap.py b/Code/overlap.py new file mode 100644 index 0000000..2630b23 --- /dev/null +++ b/Code/overlap.py @@ -0,0 +1,76 @@ +# Author: Hui Lan +class Overlap: + + ''' Compare two networks and compute hit rate ''' + + def __init__(self, predicted_edges={}, tau1=None, gold_standard_edges={}, tau2=None): + ''' predicted_edges: dictionary {'TF * Target': score} + gold_standard_edges: dictionary {'TF * Target': score} + ''' + def get_edges_above_threshold(d, tau): + d2 = {} + for k in d: + if d[k] > tau: + d2[k] = score + return d2 + + self.pred = predicted_edges + self.true = gold_standard_edges + if tau1 != None: + self.pred = get_edges_above_threshold(self.pred, tau1) + if tau2 != None: + self.true = get_edges_above_threshold(self.true, tau2) + + + def getTP(self): + tp = 0 + for k in self.pred: + if k in self.true: + tp += 1 + + return tp + + def getFP(self): + fp = 0 + for k in self.pred: + if not k in self.true: + fp += 1 + + return fp + + def getNumberOfPositivesInPred(self): + return len(self.pred) + + def getNumberOfPositivesInTrue(self): + return len(self.true) + + + +if __name__ == '__main__': + f = open('../Data/temp/AtRegNet.20210208.csv') + AtRegNet_dict = {} + for line in f: + line = line.strip() + lst = line.split(',') + if lst[0] != 'TFName' and len(lst) > 4: + tf = lst[1].upper().strip() + target = lst[4].upper().strip() + AtRegNet_dict[tf+target] = 100 + f.close() + + f = open('../Data/temp/edges.txt') + BrainEdges_dict = {} + for line in f: + line = line.strip() + lst = line.split('\t') + tf = lst[1].split()[0] + target = lst[0].split()[0] + score = float(lst[8]) + BrainEdges_dict[tf+target] = score + f.close() + + overlap = Overlap(BrainEdges_dict, 3, AtRegNet_dict, 0) + print('TP:%d, PP:%d, Hit rate: %4.7f whiling comparing with AtRegNet.20210208.csv.' % (overlap.getTP(), overlap.getNumberOfPositivesInPred(), overlap.getTP()/overlap.getNumberOfPositivesInPred())) + + + -- cgit v1.2.1