forked from nikiitin/RING-5
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dataPlot.py
103 lines (93 loc) · 3.7 KB
/
dataPlot.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
91
92
93
94
95
96
97
98
99
100
101
102
103
import subprocess
import os.path
def filterData(benchsFiltered, configsFiltered, workResultsCsv):
print("Filtering data")
RScriptCall = ["./dataFilter.R"]
RScriptCall.append(workResultsCsv)
RScriptCall.append(str(len(benchsFiltered)))
RScriptCall.extend(benchsFiltered)
RScriptCall.append(str(len(configsFiltered)))
for filt in configsFiltered:
RScriptCall.append(filt["confName"])
RScriptCall.append(str(len(filt["values"])))
RScriptCall.extend(filt["values"])
subprocess.call(RScriptCall)
def orderData(orderingType, configOrdering, workResultsCsv):
print("Ordering data")
RScriptCall = ["./ordering.R"]
RScriptCall.append(workResultsCsv)
RScriptCall.append(str(orderingType))
RScriptCall.append(str(len(configOrdering)))
RScriptCall.extend(configOrdering)
subprocess.call(RScriptCall)
def normalizeData(shouldNorm, sd, stats, workResultsCsv):
print("Normalize data")
RScriptCall = ["./normalize.R"]
RScriptCall.append(workResultsCsv)
RScriptCall.append(shouldNorm)
RScriptCall.append(str(sd))
RScriptCall.append(str(len(stats)))
RScriptCall.extend(stats)
subprocess.call(RScriptCall)
def plotFigure(plotInfo, plotType, nConfigs, workResultsCsv, outDir):
filterData(plotInfo["benchmarksFiltered"],
plotInfo["configsFiltered"],
workResultsCsv)
orderData(plotInfo["orderingType"],
plotInfo["configsOrdering"],
workResultsCsv)
exit
if plotType == "stackBarplot":
RScriptCall = ["./stackedBarplot.R"]
normalizeData(str(plotInfo["normalized"]),
False,
plotInfo["stats"],
workResultsCsv)
elif plotType == "barplot":
RScriptCall = ["./barplot.R"]
normalizeData(str(plotInfo["normalized"]),
True,
plotInfo["stats"],
workResultsCsv)
else:
RScriptCall = ["./scalabilityPlot.R"]
normalizeData(str(plotInfo["normalized"]),
False,
plotInfo["stats"],
workResultsCsv)
RScriptCall.append(plotInfo["title"])
plotPath = os.path.join(outDir, plotInfo["fileName"])
RScriptCall.append(plotPath)
RScriptCall.append(plotInfo["xAxisName"])
RScriptCall.append(plotInfo["yAxisName"])
RScriptCall.append(str(plotInfo["width"]))
RScriptCall.append(str(plotInfo["height"]))
RScriptCall.append(workResultsCsv)
# Stacking info
# TODO: Move into a method
# NOTE: I am implementing in my free time and faster than ligth
# take this into account as maybe some things are pure ad-hoc
# Feel free to improve the tool!
if plotType == "stackBarplot":
RScriptCall.append(str(len(plotInfo["stats"])))
RScriptCall.extend(plotInfo["stats"])
RScriptCall.append(str(len(plotInfo["groupNames"])))
RScriptCall.extend(plotInfo["groupNames"])
elif plotType == "barplot":
RScriptCall.append(str(len(plotInfo["stats"])))
RScriptCall.extend(plotInfo["stats"])
else:
RScriptCall.append(str(nConfigs))
RScriptCall.append(str(len(plotInfo["stats"])))
RScriptCall.extend(plotInfo["stats"])
RScriptCall.append(plotInfo["xAxis"])
RScriptCall.append(plotInfo["iterate"])
RScriptCall.append(str(len(plotInfo["legendNames"])))
RScriptCall.extend(plotInfo["legendNames"])
RScriptCall.append(str(len(plotInfo["breaks"])))
RScriptCall.extend(plotInfo["breaks"])
RScriptCall.append(str(plotInfo["limitTop"]))
RScriptCall.append(str(plotInfo["limitBot"]))
RScriptCall.append(plotInfo["format"])
print(RScriptCall)
subprocess.call(RScriptCall)