-
Notifications
You must be signed in to change notification settings - Fork 0
/
LocalReportBuilder.py
90 lines (71 loc) · 2.95 KB
/
LocalReportBuilder.py
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
from Navigator import Navigator
from ConvexSet import ConvexSet
from cvxSolver import cvxSolver
from System import System
import json
class LocalReportBuilder:
def __init__(self, fileName):
print("i am getting better at oo arch")
navi = Navigator.readPickle(fileName)
self.words = navi.wordsGenerated
def makeFMapReport(self):
dict = {}
dict["regions"] = []
crossSections = []
for word in self.words:
#if word.isFPrimitive():
if len(word.sequence) == 4:
#new logic
crossSection = word.set.standardCrossSection([0,'?','?',.4,.6])
#crossSection = word.set.standardCrossSection([0,0.25,0.75,'?','?'])
solution = cvxSolver.solve(crossSection)
if solution["status"] == "optimal":
#somehow compute vertices of the set in 2d
#vertices = LocalReportBuilder.computeVertices(tempSet)
cxName = ""
for event in word.flips:
cxName += str(event)
cxName = cxName.replace(" ", "")
cxName = cxName.replace("/", "")
cxName = cxName.replace("[", "")
cxName = cxName.replace("]", "")
cxName = cxName.replace(",", "")
cxName = cxName.replace("'", "")
#crossSection.writeIne(cxName, "./data/" + cxName + ".ine")
#crossSection.writeVertices("./data/" + cxName + ".ver")
dict["regions"].append(crossSection.getDict(cxName))
print "vertices: "
print crossSection.getVertices()
temp = {}
temp["crossSection"] = crossSection
temp["eventLog"] = word.eventLog
temp["initialP"] = word.sequence[0].permutation
crossSections.append(temp)
print ("Report on F map regions")
print len(crossSections)
for piece in crossSections:
print piece["initialP"]
print piece["eventLog"]
f = open("data/fMap.js", "w")
f.write("jsonObject = ")
f.write(json.dumps(dict))
f.close()
def makePeriodicOrbitReport(self):
for word in data:
if word.testPeriodic():
print("\nsequence: ")
for trans in word.eventLog:
print trans
print("\t")
@staticmethod
def main():
reportBuilder = LocalReportBuilder("wordsGenerated.p")
reportBuilder.makeFMapReport()
#reportBuilder.makePeriodicOrbitReport()
@staticmethod
def makeCrossSectionConstraints():
A = [[1,0,0,0,0],[0,0,0,1,0],[0,0,0,0,1],[-1,0,0,0,0],[0,0,0,-1,0],[0,0,0,0,-1]]
b = [0,.2,.8,0,-.2,-.8]
constraint = ConvexSet(A, b)
return constraint
LocalReportBuilder.main()