File: TestRun.py

package info (click to toggle)
scip 10.0.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 76,156 kB
  • sloc: ansic: 716,600; cpp: 41,095; awk: 9,195; sh: 4,918; makefile: 4,044; python: 2,076; perl: 731; xml: 660; java: 314; php: 24; lisp: 15
file content (137 lines) | stat: -rw-r--r-- 3,756 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import Misc
from StatisticReader_SolvingTimeReader import SolvingTimeReader
from StatisticReader_TimeLimitReader import TimeLimitReader

class TestRun:
   '''
   represents the collected data of a particular log (.out) file
   '''
   solufilename = ''
   testsetname = ''
   filename = ''
   data = {}
   solufiledata = {}
   problist = []
   nprobs = 0
   settings = 'default'
   version = ''
   lpsolver = ''
   solver = ''
   datacollected = False
   INFINITY = 1e20
   
   solufile_err = 'ERROR: No Solufile known'
   
   def __init__(self, filename = '', solufilename = '', testsetname = '' ):
      if solufilename != '':
         self.solufilename = solufilename 
   
      if testsetname != '':
         self.testsetname = testsetname
   
      if filename != '':
         self.filename = filename 
   
      self.data = {}
      self.solufiledata = {}
      self.problist= []
      self.nprobs = 0
      self.settings = ''
      self.version = ''
      self.lpsolver = ''
   
   def setDataCollected(self, datacollected):
      self.datacollected = datacollected
   
   def addProblem(self, probname):
      assert not (probname in self.problist)
      assert not (probname in self.data.keys())
      #print probname
      self.problist.append(probname)
      self.data[probname] = {}
      self.nprobs = self.nprobs + 1
   
   def __addData(self, probname, datakey, datum):
      assert probname in self.data.keys()
      if datakey in self.data[probname].keys():
         print self.data[probname].keys(), datakey
      
      assert not datakey in self.data[probname].keys()
   
      self.data[probname][datakey]= datum
   
   def addData(self, data):
      assert data != None
      probname, datakey, datum = data
      self.addInternalData(probname, datakey, datum)
      
   def addInternalData(self, probname, datakey, datum):
      if not (probname in self.problist):
         self.addProblem(probname)
      
      self.__addData(probname, datakey, datum)
      
      
   def problemGetName(self, index):
      return self.problist[index]
   
   def problemGetData(self, probname, datakey):
      return self.data[probname][datakey]
       
   def problemlistGetData(self, problemlist, datakey, numeric=True):
      array=[]
      for probname in problemlist:
         data = self.problemGetData(probname, datakey)
         if numeric:
            data = float(data)
         
         array.append(data)
      return array
   
   def getSettings(self):
      return self.settings
   
   def getVersion(self):
      return self.version
   
   def getLpSolver(self):
      return self.lpsolver
   
   def getIdentification(self):
      return self.solver + '('+self.getVersion() + ')' + self.getLpSolver() + ':' + self.getSettings()
   def getShortIdentification(self, char='_', maxlength=-1):
      return Misc.cutString(self.getSettings(), char, maxlength)
   
   def isProblemSolved(self, probname):
      return True
   
   def isProblemFeasible(self, probname):
      return True
   
   def problemGetIndex(self, probname):
      return self.problist.index(probname)
   
   def timeLimitHit(self, probname):
      return self.data[probname][SolvingTimeReader.datakey] - self.data[probname][TimeLimitReader.datakey] >= 0
   
   def getTestset(self):
      self.testsetname
       
   
   
   def problemGetOptimalSolution(self, solufileprobname):
      if self.solufiledata == {}:
         raise self.solufile_err
         
      objval = self.solufiledata[solufileprobname][0]
      
      return objval
       
   def problemGetSoluFileStatus(self, solufileprobname):
      if self.solufiledata == {}:
         raise self.solufile_err
      
      status = self.solufiledata[solufileprobname][1]
      
      return status