-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathLogger.py
91 lines (67 loc) · 2.57 KB
/
Logger.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
import pickle
import os
class Logger():
uLog = {} # this is the universal log, that is shared across all class instances
obsLog = []
def __init__(self, folder, filename='results.pkl'):
self.logDict = {} # this log file is unique
self.directory = folder
self.filename = filename
# make sure the folder exists
if not os.path.exists(self.directory):
os.makedirs(self.directory)
def log(self, var, value):
""" Logs to the instance log, which is unique for each class instance"""
# check if it comes in a list, if not make a list with one item
if var in self.logDict.keys():
self.logDict[var].append(value)
else:
self.logDict[var] = [value]
def save_log(self, file=""):
# script_path = os.path.join(folder, "trainingdata" ,"trainingcycle_" + str(trainingcycle) + ".pkl")
file = self.filename if file == "" else file
with open(self.directory+'/'+file, 'wb') as f:
print("Saved experiment data")
pickle.dump(self.logDict, f, pickle.HIGHEST_PROTOCOL)
def get_log(self):
return self.logDict
def reset_log(self):
self.logDict = {}
def ulog(self, var, value):
if var in self.uLog.keys():
self.uLog[var].append(value)
else:
self.uLog[var] = [value]
def get_ulog(self):
return self.uLog
def save_ulog(self):
# script_path = os.path.join(folder, "trainingdata" ,"trainingcycle_" + str(trainingcycle) + ".pkl")
with open(self.directory+'/'+self.filename, 'wb') as f:
print("Saved experiment data")
pickle.dump(self.uLog, f, pickle.HIGHEST_PROTOCOL)
# self.save_obslog()
def reset_ulog(self):
self.uLog = {}
def load_ulog(self):
try:
with open(self.directory+'/'+self.filename, 'rb') as f:
self.uLog = pickle.load(f)
except:
pass
def obslog(self, obs):
self.obsLog.append(obs)
def save_obslog(self, filename='/observations.pkl', folder=''):
if folder == '':
folder = self.directory
with open(folder+filename, 'wb') as f:
pickle.dump(self.obsLog, f, pickle.HIGHEST_PROTOCOL)
if __name__ == '__main__':
# Test logger class
logger1 = Logger('./traindata/expdata')
logger2 = Logger('./traindata/expdata')
logger1.ulog(['v1'], [1])
logger2.ulog(['v2'], [2])
print(logger2.uLog)
logger1.ulog([3],['v3'])
logger2.ulog([4], ['v4'])
print(logger2.uLog)