1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 from copy import deepcopy
24
25
28 """Base class containing functions common to the specific functions."""
29
30
32 """Function for testing if errors exist for the run."""
33
34
35 if self.relax.data.diff.has_key(self.run):
36 for object_name in dir(self.relax.data.diff[self.run]):
37
38 object_error = object_name + '_err'
39
40
41 if hasattr(self.relax.data.diff[self.run], object_error):
42 return 1
43
44
45 for i in xrange(len(self.relax.data.res[self.run])):
46
47 data = self.relax.data.res[self.run][i]
48
49
50 for object_name in dir(data):
51
52 object_error = object_name + '_err'
53
54
55 if hasattr(data, object_error):
56 return 1
57
58
59 return 0
60
61
63 """Function for returning the Ri data structure."""
64
65 return self.relax.data.res[run][i].relax_data
66
67
69 """Function for returning the Ri error structure."""
70
71 return self.relax.data.res[run][i].relax_error
72
73
75 """Function for returning the value and error corresponding to 'param'.
76
77 If sim is set to an integer, return the value of the simulation and None.
78 """
79
80
81 self.run = run
82
83
84 object_name = self.return_data_name(param)
85
86
87 if not object_name:
88 raise RelaxError, "The parameter " + `param` + " does not exist."
89
90
91 object_error = object_name + '_err'
92 object_sim = object_name + '_sim'
93
94
95 data = self.relax.data.res[self.run][i]
96
97
98 if sim == None:
99
100 if hasattr(data, object_name):
101 value = getattr(data, object_name)
102 elif hasattr(self.relax.data, object_name):
103 object = getattr(self.relax.data, object_name)
104 value = object[self.run]
105 else:
106 value = None
107
108
109 if hasattr(data, object_error):
110 error = getattr(data, object_error)
111 elif hasattr(self.relax.data, object_error):
112 object = getattr(self.relax.data, object_error)
113 error = object[self.run]
114 else:
115 error = None
116
117
118 return value, error
119
120
121 else:
122
123 if hasattr(data, object_sim):
124 object = getattr(data, object_sim)
125 value = object[sim]
126 elif hasattr(self.relax.dat, object_sim):
127 object = getattr(self.relax.dat, object_sim)
128 value = object[self.run][sim]
129 else:
130 value = None
131
132
133 return value, None
134
135
136 - def set(self, run=None, value=None, error=None, param=None, scaling=1.0, index=None):
137 """Common function for setting parameter values."""
138
139
140 self.run = run
141
142
143
144
145 if param == None:
146
147 if value:
148
149 if len(value) != len(self.relax.data.res[self.run][index].params):
150 raise RelaxError, "The length of " + `len(value)` + " of the value array must be equal to the length of the parameter array, " + `self.relax.data.res[self.run][index].params` + ", for residue " + `self.relax.data.res[self.run][index].num` + " " + self.relax.data.res[self.run][index].name + "."
151
152
153 else:
154
155 value = []
156
157
158 for i in xrange(len(self.relax.data.res[self.run][index].params)):
159 value.append(self.default_value(self.relax.data.res[self.run][index].params[i]))
160
161
162 for i in xrange(len(self.relax.data.res[self.run][index].params)):
163
164 object_name = self.return_data_name(self.relax.data.res[self.run][index].params[i])
165 if not object_name:
166 raise RelaxError, "The data type " + `self.relax.data.res[self.run][index].params[i]` + " does not exist."
167
168
169 if not hasattr(self.relax.data.res[self.run][index], object_name):
170 self.data_init(self.relax.data.res[self.run][index])
171
172
173 if value[i] == None:
174 setattr(self.relax.data.res[self.run][index], object_name, None)
175 else:
176 setattr(self.relax.data.res[self.run][index], object_name, float(value[i]) * scaling)
177
178
179
180
181
182 else:
183
184 object_name = self.return_data_name(param)
185 if not object_name:
186 raise RelaxError, "The data type " + `param` + " does not exist."
187
188
189 if not hasattr(self.relax.data.res[self.run][index], object_name):
190 self.data_init(self.relax.data.res[self.run][index])
191
192
193 if value == None:
194 value = self.default_value(object_name)
195
196
197 if value == None:
198 setattr(self.relax.data.res[self.run][index], object_name, None)
199 else:
200 setattr(self.relax.data.res[self.run][index], object_name, float(value) * scaling)
201
202
203 if error != None:
204 setattr(self.relax.data.res[self.run][index], object_name+'_err', float(error) * scaling)
205
206
207 self.set_update(run=run, param=param, index=index)
208
209
210 - def set_error(self, run, instance, index, error):
211 """Function for setting parameter errors."""
212
213
214 self.run = run
215
216
217 if not self.relax.data.res[self.run][instance].select:
218 return
219
220
221 inc = 0
222
223
224 for param in self.data_names(set='params'):
225
226 if index == inc:
227 setattr(self.relax.data.res[self.run][instance], param + "_err", error)
228
229
230 inc = inc + 1
231
232
234 """Dummy function to do nothing!"""
235
236 return
237
238
240 """Function for initialising Monte Carlo parameter values."""
241
242
243 self.run = run
244
245
246 param_names = self.data_names(set='params')
247
248
249 min_names = self.data_names(set='min')
250
251
252
253
254
255
256 for i in xrange(len(self.relax.data.res[self.run])):
257
258 if not self.relax.data.res[self.run][i].select:
259 continue
260
261
262 for object_name in param_names:
263
264 sim_object_name = object_name + '_sim'
265
266
267 if hasattr(self.relax.data.res[self.run][i], sim_object_name):
268 raise RelaxError, "Monte Carlo parameter values have already been set."
269
270
271
272
273
274
275 for i in xrange(len(self.relax.data.res[self.run])):
276
277 if not self.relax.data.res[self.run][i].select:
278 continue
279
280
281 for object_name in param_names:
282
283 sim_object_name = object_name + '_sim'
284
285
286 setattr(self.relax.data.res[self.run][i], sim_object_name, [])
287
288
289 sim_object = getattr(self.relax.data.res[self.run][i], sim_object_name)
290
291
292 for j in xrange(self.relax.data.sim_number[self.run]):
293
294 sim_object.append(deepcopy(getattr(self.relax.data.res[self.run][i], object_name)))
295
296
297 for object_name in min_names:
298
299 sim_object_name = object_name + '_sim'
300
301
302 setattr(self.relax.data.res[self.run][i], sim_object_name, [])
303
304
305 sim_object = getattr(self.relax.data.res[self.run][i], sim_object_name)
306
307
308 for j in xrange(self.relax.data.sim_number[self.run]):
309
310 sim_object.append(deepcopy(getattr(self.relax.data.res[self.run][i], object_name)))
311
312
314 """Function for returning the array of simulation parameter values."""
315
316
317 self.run = run
318
319
320 if not self.relax.data.res[self.run][instance].select:
321 return
322
323
324 inc = 0
325
326
327 for param in self.data_names(set='params'):
328
329 if index == inc:
330 return getattr(self.relax.data.res[self.run][instance], param + "_sim")
331
332
333 inc = inc + 1
334
335
337 """Function for returning the array of selected simulation flags."""
338
339
340 self.run = run
341
342
343 return self.relax.data.res[self.run][index].select_sim
344