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 from os import sep, system
26 import time
27 import wx
28 import wx.grid
29
30
31 from prompt.interpreter import Interpreter
32 from generic_fns.mol_res_spin import spin_loop
33 from status import Status; status = Status()
34
35
36 from gui.fonts import font
37 from gui.paths import IMAGE_PATH
38
39
41 """Create PyMol Macro for NOE colouring."""
42
43
44 file = open(target_dir + sep + 'noe.pml', 'w')
45
46
47 if pdb_file:
48 file.write("load " + pdb_file + '\n')
49
50
51 file.write("bg_color white\n")
52 file.write("color gray90\n")
53 file.write("hide all\n")
54 file.write("show ribbon\n")
55
56
57 for spin, mol_name, res_num, res_name in spin_loop(full_info=True):
58
59 if not spin.select:
60 continue
61
62
63 if not hasattr(spin, 'noe') or spin.noe == None:
64 continue
65
66
67 width = ((1.0 - spin.noe) * 2.0)
68 colour = 1.0 - ((spin.noe)**3)
69 colour = colour ** 3
70 colour = 1.0 - colour
71
72
73 file.write("set_color resicolor%s, [0, %s, 1]\n" % (res_num, colour))
74 file.write("color resicolor%s, resi %s\n" % (res_num, res_num))
75 file.write("set_bond stick_radius, %s, resi %s\n" % (width, res_num))
76
77
78 file.write("hide all\n")
79 file.write("show sticks, name C+N+CA\n")
80 file.write("set stick_quality, 10\n")
81 file.write("ray\n")
82
83
84 file.close()
85
86
88 """Create the model-free results."""
89
90
91 interpreter = Interpreter(show_script=False, quit=False, raise_relax_error=True)
92 interpreter.populate_self()
93 interpreter.on(verbose=False)
94
95 directory = directory + sep + 'final'
96
97
98 pipename = 'Data_extraction ' + str(time.asctime(time.localtime()))
99 interpreter.pipe.create(pipename, 'mf')
100 interpreter.results.read(directory+sep+'results')
101
102
103
104 residue = []
105 model = []
106 s2 = []
107 rex = []
108 te = []
109
110
111 file = open(str(directory) + sep + 'Model-free_Results.csv', 'w')
112 file.write('Data Extraction by relaxGUI, (C) 2009 Michael Bieri')
113 file.write("\n")
114 file.write("\n")
115 file.write("Residue;Model;S2;Rex [1/s];Te;Relaxation Parameters\n")
116 file.write("\n")
117
118
119 for spin, spin_id in spin_loop(return_id=True):
120
121 spin_no = spin_id[spin_id.index(':')+1:spin_id.index('&')]
122 spin_res = spin_id[spin_id.index('&')+2:spin_id.index('@')]
123 file.write((spin_res) + " " + (spin_no))
124 residue.append(spin_res)
125
126 if not spin.select:
127 file.write("\n")
128 continue
129
130
131 if hasattr(spin, 'model'):
132
133 if 'tm' in spin.model:
134 spin.model = spin.model[2:3]
135
136 else:
137 spin.model = spin.model[1:2]
138 file.write(";" + spin.model)
139 model.append(spin.model)
140
141
142 if hasattr(spin, 's2'):
143 s2_value = str(spin.s2)
144 s2_err = str(spin.s2_err)
145 if spin.s2 == None:
146 file.write(";")
147 s2.append('')
148 else:
149 file.write(";" + s2_value[0:5]+ " +/- " + s2_err[0:4])
150 s2.append(s2_value[0:5]+ " +/- " + s2_err[0:4])
151
152
153 if hasattr(spin, 'rex'):
154 rex_value = str(spin.rex)
155 rex_err = str(spin.rex_err)
156 if spin.rex == None:
157 file.write(";")
158 rex.append('')
159 else:
160 rex_eff = float(spin.rex) * (int(spin.frq_labels[1]) * 1000000 * 2 * 3.14159)**2
161 rex_value = str(rex_eff)
162 rex_err_eff = float(spin.rex_err) * (int(spin.frq_labels[1]) * 1000000 * 2 * 3.14159)**2
163 rex_err = str(rex_err_eff)
164 file.write(";" + rex_value[0:5]+ " +/- " + rex_err[0:4])
165 rex.append(rex_value[0:5]+ " +/- " + rex_err[0:4])
166
167
168 if hasattr(spin, 'te'):
169 if spin.te == None:
170 file.write(";")
171 te.append('')
172 else:
173 te_ps = spin.te * 1e-12
174 te_value = str(te_ps)
175 te_err = str(spin.te_err)
176 file.write(";" + te_value[0:5]+ " +/- " + te_err[0:4])
177 te.append(te_value[0:5]+ " +/- " + te_err[0:4])
178
179
180 if hasattr(spin, 'params'):
181 file.write(";" + str(spin.params[0:len(spin.params)]))
182 else:
183 file.write(";\n")
184 continue
185
186
187 file.write("\n")
188
189 file.close()
190
191
192
193
194
195 interpreter.value.write(param='rex', file='rex.txt', dir=str(directory) + sep + 'final_results', force=True)
196 interpreter.value.write(param='s2', file='s2.txt', dir=str(directory) + sep + 'final_results', force=True)
197 interpreter.value.write(param='s2f', file='s2f.txt', dir=str(directory) + sep + 'final_results', force=True)
198 interpreter.value.write(param='s2s', file='s2s.txt', dir=str(directory) + sep + 'final_results', force=True)
199 interpreter.value.write(param='te', file='te.txt', dir=str(directory) + sep + 'final_results', force=True)
200 interpreter.value.write(param='tf', file='tf.txt', dir=str(directory) + sep + 'final_results', force=True)
201 interpreter.value.write(param='ts', file='ts.txt', dir=str(directory) + sep + 'final_results', force=True)
202 interpreter.value.write(param='rex', file='rex.txt', dir=str(directory) + sep + 'final_results', force=True)
203 interpreter.value.write(param='r', file='r.txt', dir=str(directory) + sep + 'final_results', force=True)
204 interpreter.value.write(param='rex', file='rex.txt', dir=str(directory) + sep + 'final_results', force=True)
205 interpreter.value.write(param='csa', file='csa.txt', dir=str(directory) + sep + 'final_results', force=True)
206 interpreter.value.write(param='rex', file='rex.txt', dir=str(directory) + sep + 'final_results', force=True)
207 interpreter.value.write(param='local_tm', file='local_tm.txt', dir=str(directory) + sep + 'final_results', force=True)
208
209
210
211
212
213 interpreter.grace.write(x_data_type='spin', y_data_type='s2', file='s2.agr', dir=str(directory) + sep + 'grace', force=True)
214 interpreter.grace.write(x_data_type='spin', y_data_type='te', file='te.agr', dir=str(directory) + sep + 'grace', force=True)
215 interpreter.grace.write(x_data_type='spin', y_data_type='s2f', file='s2f.agr', dir=str(directory) + sep + 'grace', force=True)
216 interpreter.grace.write(x_data_type='spin', y_data_type='s2s', file='s2s.agr', dir=str(directory) + sep + 'grace', force=True)
217 interpreter.grace.write(x_data_type='spin', y_data_type='ts', file='ts.agr', dir=str(directory) + sep + 'grace', force=True)
218 interpreter.grace.write(x_data_type='spin', y_data_type='tf', file='tf.agr', dir=str(directory) + sep + 'grace', force=True)
219 interpreter.grace.write(x_data_type='spin', y_data_type='csa', file='csa.agr', dir=str(directory) + sep + 'grace', force=True)
220 interpreter.grace.write(x_data_type='te', y_data_type='s2', file='s2-te.agr', dir=str(directory) + sep + 'grace', force=True)
221
222
223
224
225 try:
226
227 interpreter.diffusion_tensor.display()
228
229
230 tensor_file = 'tensor.pdb'
231 interpreter.structure.create_diff_tensor_pdb(file=tensor_file, dir=str(directory) + sep, force=True)
232
233
234 file = open(str(directory) + sep + 'diffusion_tensor.pml', 'w')
235 file.write('load ' + pdbfile + '\n')
236 file.write('color red, ss h\n')
237 file.write('color yellow, ss s\n')
238 file.write('color green, ss l+''\n')
239 file.write('set cartoon_discrete_colors, 1\n')
240 file.write('hide all\n')
241 file.write('show cartoon\n')
242 file.write('load ' + str(directory) + sep + 'tensor.pdb' + '\n')
243 file.close()
244
245
246 except:
247 print "\nModel without diffusion tensor was selected (local TM)!\nNo diffusion tensor was created!\n\n"
248
249
250
251
252
253
254
255 file = open(str(directory) +sep + 's2.pml', 'w')
256 if pdbfile:
257 file.write("load " + pdbfile + '\n')
258 file.write("bg_color white\n")
259 file.write("color gray90\n")
260 file.write("hide all\n")
261 file.write("show ribbon\n")
262
263 for spin, spin_id in spin_loop(return_id=True):
264
265 spin_no = spin_id[spin_id.index(':')+1:spin_id.index('&')]
266
267
268 if hasattr(spin, 's2'):
269 if spin.s2 == None:
270 file.write("")
271 else:
272 width = ((1-spin.s2) * 2)
273 green = 1 - ((spin.s2)**3)
274 green = green * green * green
275 green = 1 - green
276 file.write("set_color resicolor" + spin_no + ", [1," + str(green) + ",0]\n")
277 file.write("color resicolor" + spin_no + ", resi " + spin_no + "\n")
278 file.write("set_bond stick_radius, " + str(width) + ", resi " + spin_no + "\n")
279
280 file.write("hide all\n")
281 file.write("show sticks, name C+N+CA\n")
282 file.write("set stick_quality, 10\n")
283 file.write("ray\n")
284 file.close()
285
286
287
288
289
290
291
292 file = open(str(directory) + sep + 'rex.pml', 'w')
293 if pdbfile:
294 file.write("load " + pdbfile + '\n')
295 file.write("bg_color white\n")
296 file.write("color gray90\n")
297 file.write("hide all\n")
298 file.write("show ribbon\n")
299
300 max_rex = 0
301
302
303 for spin, spin_id in spin_loop(return_id=True):
304 if hasattr(spin, 'rex'):
305 if not spin.rex == None:
306 if spin.rex > max_rex:
307 max_rex = spin.rex
308
309
310 for spin, spin_id in spin_loop(return_id=True):
311
312 spin_no = spin_id[spin_id.index(':')+1:spin_id.index('&')]
313
314
315 if hasattr(spin, 'rex'):
316 if spin.rex == None:
317 file.write("")
318 else:
319 rel_rex = spin.rex / max_rex
320 width = ((rel_rex) * 2)
321 green = ((rel_rex))
322 green = green * green * green
323 green = 1 - green
324 file.write("set_color resicolor" + spin_no + ", [1," + str(green) + ",0]\n")
325 file.write("color resicolor" + spin_no + ", resi " + spin_no + "\n")
326 file.write("set_bond stick_radius, " + str(width) + ", resi " + spin_no + "\n")
327
328 file.write("hide all\n")
329 file.write("show sticks, name C+N+CA\n")
330 file.write("set stick_quality, 10\n")
331 file.write("ray\n")
332 file.close()
333
334
335
336 print '\n\n__________________________________________________________\n\nSuccessfully generated model-free results files\nsee results tab\n__________________________________________________________'
337
338 returnstring = [residue, model, s2, rex, te]
339 return returnstring
340
341
343 """Open results."""
344
345 if '.agr' in openfile:
346 system('xmgrace ' + openfile + ' &')
347
348 if '.csv' in openfile:
349 system('gedit ' + openfile + ' &')
350
351 if '.pml' in openfile:
352 system('pymol ' + openfile + ' &')
353
354 if 'Table_of_Results' in openfile:
355 summary = Final_results(import_results, None, -1, "")
356 if status.show_gui:
357 summary.Show()
358
359
360
362 - def __init__(self, results, *args, **kwds):
363
364
365
366 self.results = results
367
368
369 kwds["style"] = wx.DEFAULT_FRAME_STYLE
370 wx.Frame.__init__(self, *args, **kwds)
371 self.label_1 = wx.StaticText(self, -1, "Results of relax Analysis")
372 self.grid_1 = wx.grid.Grid(self, -1, size=(1, 1))
373 self.close_button = wx.Button(self, -1, "Close")
374 self.close_button.SetFont(font.normal)
375
376 self.__set_properties()
377 self.__do_layout()
378 self._fill_values()
379
380 self.Bind(wx.EVT_BUTTON, self.close_table, self.close_button)
381
382
384
385 sizer_2 = wx.BoxSizer(wx.VERTICAL)
386 sizer_2.Add(self.label_1, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 10)
387 sizer_2.Add(self.grid_1, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 0)
388 sizer_2.Add(self.close_button, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
389 self.SetSizer(sizer_2)
390 self.Layout()
391
392
394
395 self.SetTitle("relaxGUI")
396 _icon = wx.EmptyIcon()
397 _icon.CopyFromBitmap(wx.Bitmap(IMAGE_PATH+'relax_start.gif', wx.BITMAP_TYPE_ANY))
398 self.SetIcon(_icon)
399 self.SetSize((700, 600))
400 self.label_1.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
401 self.grid_1.CreateGrid(len(self.results[0]), 5)
402 self.grid_1.SetColLabelValue(0, "Residue")
403 self.grid_1.SetColSize(0, 80)
404 self.grid_1.SetColLabelValue(1, "Model")
405 self.grid_1.SetColSize(1, 70)
406 self.grid_1.SetColLabelValue(2, "S2")
407 self.grid_1.SetColSize(2, 150)
408 self.grid_1.SetColLabelValue(3, "Rex [1/s]")
409 self.grid_1.SetColSize(3, 150)
410 self.grid_1.SetColLabelValue(4, "te")
411 self.grid_1.SetColSize(4, 150)
412
413
415 for i in range(0, len(self.results[0])):
416 self.grid_1.SetCellValue(i, 0, self.results[0][i])
417 self.grid_1.SetCellValue(i, 1, self.results[1][i])
418 self.grid_1.SetCellValue(i, 2, self.results[2][i])
419 self.grid_1.SetCellValue(i, 3, self.results[3][i])
420 self.grid_1.SetCellValue(i, 4, self.results[4][i])
421
422
424 self.Destroy()
425 event.Skip()
426