-
Notifications
You must be signed in to change notification settings - Fork 1
/
plot_metadata.py
87 lines (69 loc) · 2.06 KB
/
plot_metadata.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
import pandas as pd
import numpy as np
import os
import matplotlib.pyplot as plt
from collections import defaultdict
def conv(x):
return float(x.strip())
metadata_path = "../metadata"
if not os.path.exists(metadata_path):
os.mkdir(metadata_path)
os.chdir(metadata_path)
units = defaultdict(lambda:'m', {'alpha':'deg', 'theta':'deg', 'efficiency':'%'})
cwd = os.getcwd()
items = os.listdir(cwd)
for i in items:
if len(i) > 4 and ".csv" in i[-5:]:
print("Processing file {}".format(i))
a = pd.read_csv(i, skiprows = 2, header = 0, index_col=False)
keys = a.keys()
# print keys
# watch out fo rLoss(100ohm)
for jj in range(len(keys)):
try:
if "Unnamed" in keys[jj]:
a = a.drop(keys[jj], axis = 1)
print("dropping last column", keys[jj])
except:
pass
try:
loss = ' Loss'
a[loss]
except:
loss = 'Loss'
a[loss]
if 'x' in keys and 'y' in keys:
a["radius"] = np.sqrt(a['x']**2 + a['z']**2)
a["theta"] = np.arctan2(a['z'],a['x'])*180.0/np.pi
a[loss] *= -1
path = i[:-4]
if not os.path.exists(path):
os.mkdir(path)
parameters = list(a.keys())
parameters.remove(loss)
for p in parameters:
# print p
if not "Unnamed:" in p:
fig, ax = plt.subplots()
if 'alpha' in keys:
ax.scatter(a[p],a[loss], alpha = .8, c = a['alpha']/45, cmap = 'seismic')
else:
ax.scatter(a[p],a[loss], alpha = .8, cmap = 'seismic')
ax.set_xlabel("%s [%s]" % (p, units[p.lower()]))
ax.set_ylabel('Loss')
ax.grid(linewidth = 1, linestyle = '--')
ax.set_axisbelow(True)
ax.set_title("Loss vs. %s"% p)
plt.savefig(path + '/' + p + '.png')
plt.close()
cols = a.columns.tolist()
print (cols)
#reorder loss and eff with radius and theta, better formatting
cols.remove(loss)
cols.remove("Efficiency")
cols.append("Efficiency")
cols.append(loss)
a = a[cols]
# a.sort_values([loss], inplace = True, ascending = False)
a = a.nlargest(20,[loss], keep='first')
a.to_csv("%s/%s_Top20.csv"%(path,path))