6 class AutoTunerArgParser:
8 self.parser = argparse.ArgumentParser(description='Parsing the output log of the CSolver auto tuner ...')
9 self.parser.add_argument('--file', '-f', metavar='out.log', type=str, nargs=1,help='output log of running the autotuner ...')
10 self.args = self.parser.parse_args()
12 def getFileName(self):
13 return self.args.file[0]
15 HEADER = ["TESTCASE", "SATTIME", "EXECTIME", "PREPROCESS", "ELEMENTOPT", "ELEMENTOPTSETS", "PROXYVARIABLE", "#SubGraph", "NODEENCODING", "EDGEENCODING", "NAIVEENCODER", "ENCODINGGRAPHOPT"]
17 configs = {"EXECTIME": "-",
22 "ELEMENTOPTSETS" : "-",
23 "PROXYVARIABLE" : "-",
28 "ENCODINGGRAPHOPT" : "-"
31 REGEXES = {"EXECTIME": "CSOLVER solve time: (.*)",
32 "SATTIME":"SAT Solving time: (.*)",
33 "TESTCASE": "deserializing (.+) ...",
34 "PREPROCESS" : "Param PREPROCESS = (.*)range=\[0,1\]",
35 "ELEMENTOPT" : "Param ELEMENTOPT = (.*)range=\[0,1\]",
36 "ELEMENTOPTSETS" : "Param ELEMENTOPTSETS = (.*)range=\[0,1\]",
37 "PROXYVARIABLE" : "Param PROXYVARIABLE = (.*)range=\[1,5\]",
38 "#SubGraph" : "#SubGraph = (.*)",
39 "NODEENCODING" : "Param NODEENCODING = (.*)range=\[0,3\](.*)",
40 "EDGEENCODING" : "Param EDGEENCODING = (.*)range=\[0,2\](.*)",
41 "NAIVEENCODER" : "Param NAIVEENCODER = (.*)range=\[1,3\](.*)",
42 "ENCODINGGRAPHOPT" : "Param ENCODINGGRAPHOPT = (.*)range=\[0,1\]"
44 def reorderEntry(entry):
48 result.append(entry[key])
52 def printHeader(file):
59 def printConfig(file, data):
69 argprocess = AutoTunerArgParser()
70 output = open("tuner.csv", "w")
73 with open(argprocess.getFileName()) as file:
75 if line.startswith("Mutating"):
76 result.append(reorderEntry(configs))
77 elif line.startswith("Best tuner"):
78 result.append(reorderEntry(configs))
81 p = re.compile(REGEXES[regex])
82 token = p.search(line)
84 if regex == "TESTCASE":
85 configs[regex] = re.search(REGEXES[regex], line).group(1)
87 configs[regex] = re.findall("\d+\.?\d*", line)[0]
89 #configs["EXECTIME"] = "BEST TUNE:"
90 result.append(reorderEntry(configs))
91 result.sort(key = lambda entry: entry[0])
93 printConfig(output, entry)
94 print "Done with parsing " + argprocess.getFileName()
96 if __name__ == "__main__":