1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 from os import system
24 from re import match
25
26
29 """Operations, functions, etc common to the different model-free analysis methods."""
30
31 self.relax = relax
32
33
35 """Write the data into the grace file."""
36
37
38 errors = 0
39 for i in xrange(len(self.relax.data.res[self.run])):
40
41 data = self.relax.data.res[self.run][i]
42
43
44 value, error = self.return_value(self.run, i, self.data_type)
45
46
47 if value == None:
48 continue
49
50
51 if error != None:
52 errors = 1
53 break
54
55 if errors:
56 graph_type = 'xydy'
57 else:
58 graph_type = 'xy'
59
60
61
62 self.file.write("@target G0.S0\n")
63 self.file.write("@type " + graph_type + "\n")
64
65
66 for i in xrange(len(self.relax.data.res[self.run])):
67
68 data = self.relax.data.res[self.run][i]
69
70
71 value, error = self.return_value(self.run, i, self.data_type)
72
73
74 if value == None:
75 continue
76
77
78 if graph_type == 'xy':
79
80 self.file.write("%-5i%-30s\n" % (data.num, `value`))
81
82
83 elif graph_type == 'xydy':
84
85 if error == None:
86 error = 0.0
87
88
89 self.file.write("%-5i%-30s%-30s\n" % (data.num, `value`, `error`))
90
91
92 self.file.write("&\n")
93
94
96 """Write the grace header."""
97
98
99 self.file.write("@version 50114\n")
100
101
102 self.file.write("@with g0\n")
103
104
105 self.file.write("@ world xmin " + `self.relax.data.res[self.run][0].num - 1` + "\n")
106 self.file.write("@ world xmax " + `self.relax.data.res[self.run][-1].num + 1` + "\n")
107
108
109 min_value = 0.0
110 max_value = -1e99
111 for i in xrange(len(self.relax.data.res[self.run])):
112
113 data = self.relax.data.res[self.run][i]
114
115
116 value, error = self.return_value(self.run, i, self.data_type)
117
118
119 if value == None:
120 continue
121
122
123 if value > max_value:
124 max_value = value
125
126
127 if value < min_value:
128 min_value = value
129
130 self.file.write("@ world ymin " + `min_value - min_value * 0.05` + "\n")
131 self.file.write("@ world ymax " + `max_value + max_value * 0.05` + "\n")
132
133
134 self.file.write("@ xaxis tick major 10\n")
135 self.file.write("@ xaxis tick major size 0.48\n")
136 self.file.write("@ xaxis tick major linewidth 0.5\n")
137 self.file.write("@ xaxis tick minor linewidth 0.5\n")
138 self.file.write("@ xaxis tick minor size 0.24\n")
139 self.file.write("@ xaxis ticklabel char size 0.79\n")
140
141
142 self.file.write("@ yaxis tick major size 0.48\n")
143 self.file.write("@ yaxis tick major linewidth 0.5\n")
144 self.file.write("@ yaxis tick minor linewidth 0.5\n")
145 self.file.write("@ yaxis tick minor size 0.24\n")
146 self.file.write("@ yaxis ticklabel char size 0.79\n")
147
148
149 self.file.write("@ frame linewidth 0.5\n")
150
151
152 self.file.write("@ s0 symbol 1\n")
153 self.file.write("@ s0 symbol size 0.35\n")
154 self.file.write("@ s0 symbol fill pattern 1\n")
155 self.file.write("@ s0 symbol linewidth 0.5\n")
156 self.file.write("@ s0 line linestyle 0\n")
157
158
159 self.file.write("@ s0 errorbar size 0.5\n")
160 self.file.write("@ s0 errorbar linewidth 0.5\n")
161 self.file.write("@ s0 errorbar riser linewidth 0.5\n")
162
163
164 - def view(self, run=None, data_type=None, file=None, dir=None, grace_exe='xmgrace', force=0):
165 """Function for running Grace."""
166
167
168 if run != None:
169 self.write(run=run, data_type=data_type, file=file, dir=dir, force=force)
170
171
172 self.file_path = self.relax.IO.file_path(file, dir)
173
174
175 system(grace_exe + " " + self.file_path + " &")
176
177
178 - def write(self, run=None, data_type=None, file=None, dir=None, force=0):
210