import os, sys,string,re,glob import json import csv import copy import pathlib import time folder = str(pathlib.Path(__file__).parent.resolve()) #Total_encas def calculate_template(): total_dic = {} for line in open(folder+"/result.jsonl", 'r', encoding="utf-8"): dic = json.loads(line) if dic["Target"].lower() + " " + dic["Module"].lower() not in total_dic.keys(): total_dic[dic["Target"].lower() + " " + dic["Module"].lower()] = set() total_dic[dic["Target"].lower() + " " + dic["Module"].lower()].add(dic["File"].strip() + " " + dic["Func"].strip() + " " + dic["Target"].strip()) res_dic = {} with open(folder+"/Accurate_Func_Merged.csv", 'r', encoding='utf-8') as f: f_csv = csv.reader(f) for row in f_csv: if " ".join([row[-1], row[0]]).lower() not in res_dic: res_dic[" ".join([row[-1], row[0]]).lower()] = 1 else: res_dic[" ".join([row[-1], row[0]]).lower()] += 1 with open(folder+"/Fig8_Purple.csv", 'w', encoding='utf-8', newline="") as f: f_csv = csv.writer(f) for k in res_dic.keys(): f_csv.writerow([k.split(' ')[0].replace("pulp", "ri5cy"), k.split(' ')[1], round(float(res_dic[k])/float(len(list(total_dic[k]))), 3)]) if __name__ == '__main__': calculate_template()