]> git.siccegge.de Git - master/cool-versuchung.git/blob - cool.py
Add some cool versuchung
[master/cool-versuchung.git] / cool.py
1 #!/usr/bin/env python3
2
3 from versuchung.experiment import Experiment
4 from versuchung.archives import TarArchive, GitArchive
5 from versuchung.files import Directory
6 from versuchung.execute import shell, CommandFailed
7
8 import re
9 import os
10
11 def natural_key(string_):
12 return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_)]
13
14 class SolverExperiment(Experiment):
15 inputs = { 'formulas' : TarArchive() }
16 outputs = { 'timing' : Directory() }
17
18 def build_solver(self):
19 pass
20
21 def run_solver(self, formula):
22 pass
23
24 def run(self):
25 print("Building Solver ...")
26 self.build_solver()
27 formulas = sorted(os.listdir(self.inputs.formulas.path), key=natural_key)
28 shell.track(self.outputs.timing.path)
29 for formula in formulas:
30 print("Running for %s ..." % formula)
31 try:
32 self.run_solver(os.path.join(self.inputs.formulas.path, formula))
33 except CommandFailed:
34 break
35
36
37 class CoolExperiment(SolverExperiment):
38 inputs = { 'cool' : GitArchive() }
39 outputs = {}
40
41 def __init__(self):
42 CoolExperiment.inputs.update(SolverExperiment.inputs)
43 CoolExperiment.outputs.update(SolverExperiment.outputs)
44 super(CoolExperiment, self).__init__()
45
46 def build_solver(self):
47 with self.inputs.cool as path:
48 shell("make")
49
50 def run_solver(self, formula):
51 with self.inputs.cool as path:
52 shell("timeout 1001 ./coalg.native sat KD --verbose < %s" % formula)
53
54
55
56 if __name__ == "__main__":
57 import sys
58 experiment = CoolExperiment()
59 dirname = experiment(sys.argv)
60
61 print(dirname)