-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcommon.py
More file actions
146 lines (124 loc) · 4.04 KB
/
common.py
File metadata and controls
146 lines (124 loc) · 4.04 KB
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
138
139
140
141
142
143
144
145
146
import time, json, socket
from openpyxl import load_workbook
from ast import literal_eval
import matplotlib.pyplot as plt
SIZE = 2048
ENCODING = 'utf-8'
def sendRequestV2(s, tag, request, delay=0):
""" send request to server
Args:
s (socket): client's socket
tag (str): request tag
request (dict): request parameters
Returns:
"""
# add tag to request
request['request'] = tag
# send request
time.sleep(delay)
s.sendall(bytes(json.dumps(request) + "\r\n", ENCODING))
# print(f"[{tag}] Send request (no response)")
def sendRequestAndReceiveV2(s, tag, request, delay=0):
""" send request and receive response to/from server
Args:
s (socket): client's socket
tag (str): request tag
request (dict): request parameters
Returns:
dict: response (json)
"""
# add tag to request
request['request'] = tag
# send request
time.sleep(delay)
s.sendall(bytes(json.dumps(request) + "\r\n", ENCODING))
# print(f"[{tag}] Send request")
# print(f"[{tag}] Send {request}")
# receive server response
# response must ends with "\r\n"
receivedStr = ''
flag = False
while True:
try:
received = str(s.recv(SIZE), ENCODING)
flag = True
if received.endswith("\r\n"):
received = received[:-2]
receivedStr = receivedStr + received
break
receivedStr = receivedStr + received
except socket.timeout:
if flag:
if receivedStr.endswith("\r\n"):
receivedStr = receivedStr[:-2]
break
try:
response = json.loads(receivedStr)
# print(f"[{tag}] Receive response")
# print(f"[{tag}] receive response {response}")
return response
except json.decoder.JSONDecodeError:
# raise Exception(f"[{tag}] Server response with: {response}")
print(f"[{tag}] Server response with: {receivedStr}")
# Do not close socket to maintain the connection.
def writeToExcel(filename, run_data):
""" write running data to excel
Args:
filename (str): name of excel file
run_data (list): running data
Returns:
"""
write_wb = load_workbook(filename)
write_ws = write_wb.create_sheet(str(int(time.time())))
for data in run_data:
write_ws.append(data)
write_wb.save(filename)
write_wb.close()
def writeWeightsToFile(weights):
""" write weights to text file
Args:
weights (list): one-dimensional list of weights
Returns:
"""
# WARN: STATIC FILE PATH!
# weights must be 1-dim list
f = open('../../results/model.txt', 'w')
f.write(str(weights))
f.close()
def readWeightsFromFile():
""" read weights from text file
Args:
Returns:
list: one-dimensional list of weights
"""
# WARN: STATIC FILE PATH!
# return 1-dim list (weights)
f = open('../../results/model.txt', 'r')
weights = f.readline()
f.close()
return literal_eval(weights)
def plotResults(): # used to plot the result
filename = '../results/최종/24-27.xlsx'
write_wb = load_workbook(filename, read_only=True, data_only=True)
r = [x for x in range(100)]
acc = [
[x[0].value for x in write_wb['24']['B1':'B100']],
[x[0].value for x in write_wb['25']['B1':'B100']],
[x[0].value for x in write_wb['4']['B1':'B100']],
[x[0].value for x in write_wb['26']['B1':'B100']],
[x[0].value for x in write_wb['27']['B1':'B100']],
[x[0].value for x in write_wb['10']['B1':'B100']],
]
plt.plot(r, acc[0], label='C=1, qLevel=30')
plt.plot(r, acc[1], label='C=1, qLevel=100')
plt.plot(r, acc[2], label='C=1, qLevel=300')
plt.plot(r, acc[3], label='C=4, qLevel=30')
plt.plot(r, acc[4], label='C=4, qLevel=100')
plt.plot(r, acc[5], label='C=4, qLevel=300')
plt.legend()
plt.xlabel('Round')
plt.ylabel('Test Accuracy(%)')
plt.show()
write_wb.close()
if __name__ == "__main__":
plotResults()