import Refinement.experiment_properties as exp import Weakness.src.automaton as a import csv import numpy as np # This script computes the entropy of each refinement in one or more datafiles for case_study in ["amba08", "ColorSort_fairviolation"]: exp.changeCaseStudy(case_study) datafile = open(exp.datafile,"r") entropiesfile = open(exp.datafile[:-4]+"_entropies.csv","w") reader = csv.reader(datafile,delimiter=";") headers = reader.next() idx_id = headers.index("Id") idx_refinement = headers.index("Refinement") idx_goodness = headers.index("Goodness") entropiesfile.write("Id;Refinement;Goodness;HausDim;Entropy;Hausdim=Entropy\n") print "Id;Goodness;HausDim;Entropy;Hausdim=Entropy" # automaton_base_assumptions = a.Automaton("ltl",ltlFormula=" & ".join(exp.initialGR1Units),var_set=exp.varsList) inf = np.inf reader.next() # Skip line of base assumptions for ref_line in reader: id = ref_line[idx_id] refinement = eval(ref_line[idx_refinement]) goodness = eval(ref_line[idx_goodness]) hausdim = goodness[0] # automaton_refinement = a.Automaton("ltl",ltlFormula=" & ".join(refinement),var_set=exp.varsList) automaton = a.Automaton("ltl",ltlFormula=" & ".join(exp.initialGR1Units + refinement), var_set=exp.varsList) entropy = automaton.getEntropy() entropiesfile.write(str(id) + ";" + str(refinement) + ";" + str(goodness) + ";" + ("%.12f" % hausdim) + ";" + ("%.12f" % entropy) + ";" + str(("%.12f" % hausdim) == ("%.12f" % entropy)) + "\n") print str(id) + ";" + str(goodness) + ";" + ("%.12f" % hausdim) + ";" + ("%.12f" % entropy) + ";" + str(("%.12f" % hausdim) == ("%.12f" % entropy)) datafile.close() entropiesfile.close()