-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprofiles.py
executable file
·97 lines (80 loc) · 2.57 KB
/
profiles.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
#!/usr/bin/python
# -> $HOME/scripts_model_generation/analyse.py
# NOTE:
# - Extracts and presents the data from the 'spe.arc' files
# - Generates a profile graph.
# REQUIRES:
# - grep -i "heat" ./*spe-*arc > data.txt
# CALLING SEQUENCE:
# $ python ./profiles data.txt
import sys
dat=open(sys.argv[1], 'r')
val=dat.readlines()
dat.close()
# **************************************************
# Register the variants.
def register():
for line in val:
name = get_name(line)
if name not in names:
names.append(name)
# Highest order multiple variants first.
names.sort(key=len, reverse=True)
def get_name(line):
# Discarding '1-3-' part.
name = line.split()[0]
name = name.split('-')[3:-1]
name = '-'.join(name)
return name
def get_x_range(name, counter):
data = open('%04i-' % counter + name + '.dat', 'r')
valu = data.readlines()
e_tmp = get_energy(name)
return eval(min(e_tmp))-2, eval(max(e_tmp))+2
def get_energy(name):
energy = []
for frame in val:
if get_name(frame) == name:
energy.append(frame.split()[5])
return energy
# --------------------------------------------------
# **************************************************
def write_dat(name, counter):
gnu_dat = open('%04i-' % counter + name + '.dat' , 'w')
energy = get_energy(name)
e0 = energy[-1]
for e in energy:
gnu_dat.write(str(eval(e)-eval(e0)) + '\n')
gnu_dat.close()
def write_gnu(name, counter):
gnus = 'set terminal postscript eps \"Helvetica\" 24\n'
gnus += 'set output \'%04i-%s.eps\'\n' % (counter, name)
gnus += 'set key left top\n'
gnus += 'set size 0.6, 0.6\n'
gnus += 'set xrange[0:11]\n'
#gnus += 'set yrange[-20:20]\n'
e0 = get_energy(name)[0]
x_min, x_max = get_x_range(name, counter)
#gnus += 'set xrange[%s:%s]\n' % (str(x_min),str(x_max))
gnus += 'plot \'' + '%04i-' % counter + name + '.dat' + '\' title "%s" with lines lw 4\n'%name
gnus += 'set output\n'
gnuf = open('%04i-' % counter + name + '.gnu', 'w')
gnuf.write(gnus)
gnuf.close()
# --------------------------------------------------
# **************************************************
# LAUNCH PART
if __name__ == '__main__':
# Get the available variants and store them in 'names'.
names = []
names.sort(key=len)
register()
stop = 3
name_len = 0.0
counter = 0
for n in names:
print n
write_dat(n, counter)
write_gnu(n, counter)
counter += 1
# --------------------------------------------------