1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 """GUI tests for the relaxation dispersion analyses."""
25
26
27 from os import sep
28 import math
29 import wx
30
31
32 from data_store import Relax_data_store; ds = Relax_data_store()
33 import dep_check
34 from gui.interpreter import Interpreter; interpreter = Interpreter()
35 from gui.string_conv import float_to_gui, str_to_gui
36 from gui.uf_objects import Uf_storage; uf_store = Uf_storage()
37 from pipe_control.mol_res_spin import spin_loop
38 from pipe_control.pipes import switch
39 from specific_analyses.relax_disp.data import generate_r20_key
40 from specific_analyses.relax_disp.variables import EXP_TYPE_R1RHO, MODEL_CR72, MODEL_IT99, MODEL_LM63, MODEL_NOREX, MODEL_NS_CPMG_2SITE_EXPANDED, MODEL_R2EFF, MODEL_TP02
41 from status import Status; status = Status()
42 from test_suite.gui_tests.base_classes import GuiTestCase
43
44
46 """GUI test case class for testing various aspects of the relaxation dispersion analyses."""
47
48 - def __init__(self, methodName='runTest'):
49 """Skip the tests if the C modules are non-functional or for wxPython bugs.
50
51 @keyword methodName: The name of the test.
52 @type methodName: str
53 """
54
55
56 super(Relax_disp, self).__init__(methodName)
57
58
59 if not dep_check.C_module_exp_fn:
60
61 status.skipped_tests.append([methodName, 'Relax curve-fitting C module', self._skip_type])
62
63
65 """Test catching U{bug #20889<https://web.archive.org/web/https://gna.org/bugs/?20889>}, the custom peak intensity reading with a list of spectrum_ids submitted by Troels E. Linnet."""
66
67
68 path = status.install_path + sep + 'test_suite' + sep + 'shared_data' + sep + 'peak_lists' + sep
69
70
71 self.app.gui.analysis.menu_new(None)
72 page = self.app.gui.analysis.new_wizard.wizard.get_page(0)
73 page.select_disp(None)
74 self.app.gui.analysis.new_wizard.wizard._go_next(None)
75 self.app.gui.analysis.new_wizard.wizard._go_next(None)
76
77
78 analysis_type, analysis_name, pipe_name, pipe_bundle, uf_exec = self.app.gui.analysis.new_wizard.get_data()
79
80
81 self.app.gui.analysis.new_analysis(analysis_type=analysis_type, analysis_name=analysis_name, pipe_name=pipe_name, pipe_bundle=pipe_bundle, uf_exec=uf_exec)
82
83
84 analysis = self.app.gui.analysis.get_page_from_name("Relaxation dispersion")
85
86
87 analysis.field_results_dir.SetValue(str_to_gui(ds.tmpdir))
88
89
90 file = path + 'test.seq'
91 self._execute_uf(uf_name='sequence.read', file=file, mol_name_col=1, res_name_col=3, res_num_col=2, spin_name_col=5, spin_num_col=4)
92
93
94 interpreter.flush()
95
96
97 analysis.spin_isotope()
98 uf_store['spin.isotope'].page.SetValue('spin_id', '')
99 uf_store['spin.isotope'].wizard._go_next()
100 interpreter.flush()
101
102
103 analysis.peak_wizard_launch(None)
104 wizard = analysis.peak_wizard
105
106
107 page = wizard.get_page(wizard.page_indices['read'])
108 page.uf_args['file'].SetValue(str_to_gui("%stest.seq" % path))
109 page.uf_args['spectrum_id'].SetValue(['0_2', '1_0'])
110 page.uf_args['int_col'].SetValue([6, 7])
111 wizard._go_next(None)
112
113
114 page = wizard.get_page(wizard.page_indices['err_type'])
115 page.selection = 'rmsd'
116 wizard._go_next(None)
117
118
119 page = wizard.get_page(wizard.page_indices['rmsd'])
120 page.uf_args['error'].SetValue(float_to_gui(3000.0))
121 wizard._ok(None)
122
123
124 data_2 = [337765.90000000002, 1697771.0, 867389.80000000005, 2339480.0, 2574062.0, 1609356.0, 2179341.0, 1563795.0, 1535896.0, 3578841.0]
125 data_0 = [636244.59999999998, 3015788.0, 1726064.0, 4039142.0, 4313824.0, 2927111.0, 4067343.0, 2921316.0, 3005234.0, 6352595.0]
126
127
128 for i in range(len(cdp.mol[0].res)):
129
130 spin = cdp.mol[0].res[i].spin[0]
131
132
133 self.assertEqual(spin.peak_intensity['1_0'], data_0[i])
134 self.assertEqual(spin.peak_intensity['0_2'], data_2[i])
135
136
137 self.assert_(hasattr(spin, 'baseplane_rmsd'))
138 self.assertEqual(spin.baseplane_rmsd['0_2'], 3000.0)
139
140
142 """Test catching U{bug #21076<https://web.archive.org/web/https://gna.org/bugs/?21076>}, loading a multi-spectra NMRPipe seriesTab file through the GUI, Error messages occur."""
143
144
145 data_path = status.install_path + sep + 'test_suite' + sep + 'shared_data' + sep + 'dispersion' + sep + 'KTeilum_FMPoulsen_MAkke_2006' + sep + 'acbp_cpmg_disp_101MGuHCl_40C_041223' + sep
146
147
148 self.app.gui.analysis.menu_new(None)
149 page = self.app.gui.analysis.new_wizard.wizard.get_page(0)
150 page.select_disp(None)
151 self.app.gui.analysis.new_wizard.wizard._go_next(None)
152 self.app.gui.analysis.new_wizard.wizard._go_next(None)
153
154
155 analysis_type, analysis_name, pipe_name, pipe_bundle, uf_exec = self.app.gui.analysis.new_wizard.get_data()
156
157
158 self.app.gui.analysis.new_analysis(analysis_type=analysis_type, analysis_name=analysis_name, pipe_name=pipe_name, pipe_bundle=pipe_bundle, uf_exec=uf_exec)
159
160
161 analysis = self.app.gui.analysis.get_page_from_name("Relaxation dispersion")
162
163
164 analysis.field_results_dir.SetValue(str_to_gui(ds.tmpdir))
165
166
167 file = data_path + 'relax_2_spins_trunc.py'
168 self._execute_uf(uf_name='script', file=file, dir=None)
169
170
171 interpreter.flush()
172
173
174 analysis.spin_isotope()
175 uf_store['spin.isotope'].page.SetValue('spin_id', '')
176 uf_store['spin.isotope'].wizard._go_next()
177 interpreter.flush()
178
179
180 analysis.peak_wizard_launch(None)
181 wizard = analysis.peak_wizard
182
183
184 page = wizard.get_page(wizard.page_indices['read'])
185 page.uf_args['file'].SetValue(str_to_gui("%sfolded_sparky_corr_final_max_standard_trunc.ser" % data_path))
186 page.uf_args['spectrum_id'].SetValue('auto')
187 wizard._go_next(None)
188
189
190 page = wizard.get_page(wizard.page_indices['err_type'])
191 page.selection = 'rmsd'
192 wizard._go_next(None)
193
194
195 page = wizard.get_page(wizard.page_indices['rmsd'])
196
197
198 wx.Yield()
199
200
201 cur_id = page.uf_args['spectrum_id'].GetValue()
202
203
204 self.assertEqual(cur_id, 'Z_A0')
205
206
207 wizard.Close()
208
209
211 """Test the GUI analysis with Flemming Hansen's CPMG data truncated to residues 70 and 71."""
212
213
214 data_path = status.install_path + sep + 'test_suite' + sep + 'shared_data' + sep + 'dispersion' + sep + 'Hansen' + sep
215 data_path_500 = data_path + sep + '500_MHz' + sep
216 data_path_800 = data_path + sep + '800_MHz' + sep
217
218
219 self.app.gui.analysis.menu_new(None)
220 page = self.app.gui.analysis.new_wizard.wizard.get_page(0)
221 page.select_disp(None)
222 self.app.gui.analysis.new_wizard.wizard._go_next(None)
223 self.app.gui.analysis.new_wizard.wizard._go_next(None)
224
225
226 analysis_type, analysis_name, pipe_name, pipe_bundle, uf_exec = self.app.gui.analysis.new_wizard.get_data()
227
228
229 self.app.gui.analysis.new_analysis(analysis_type=analysis_type, analysis_name=analysis_name, pipe_name=pipe_name, pipe_bundle=pipe_bundle, uf_exec=uf_exec)
230
231
232 analysis = self.app.gui.analysis.get_page_from_name("Relaxation dispersion")
233
234
235 analysis.field_results_dir.SetValue(str_to_gui(ds.tmpdir))
236
237
238 file = data_path + 'fake_sequence.in'
239 self._execute_uf(uf_name='sequence.read', file=file, mol_name_col=None, res_num_col=1, res_name_col=2, spin_name_col=None, spin_num_col=None)
240
241
242 interpreter.flush()
243
244
245 analysis.spin_isotope()
246 uf_store['spin.isotope'].page.SetValue('spin_id', '')
247 uf_store['spin.isotope'].wizard._go_next()
248 interpreter.flush()
249
250
251 data = [
252 ['500_reference.in', '500_MHz'+sep+'reference.in', None, 500e6],
253 ['500_66.667.in', '500_MHz'+sep+'66.667.in', 66.6666, 500e6],
254 ['500_133.33.in', '500_MHz'+sep+'133.33.in', 133.3333, 500e6],
255 ['500_133.33.in.bis', '500_MHz'+sep+'133.33.in.bis', 133.3333, 500e6],
256 ['500_200.in', '500_MHz'+sep+'200.in', 200.0000, 500e6],
257 ['500_266.67.in', '500_MHz'+sep+'266.67.in', 266.6666, 500e6],
258 ['500_333.33.in', '500_MHz'+sep+'333.33.in', 333.3333, 500e6],
259 ['500_400.in', '500_MHz'+sep+'400.in', 400.0000, 500e6],
260 ['500_466.67.in', '500_MHz'+sep+'466.67.in', 466.6666, 500e6],
261 ['500_533.33.in', '500_MHz'+sep+'533.33.in', 533.3333, 500e6],
262 ['500_533.33.in.bis', '500_MHz'+sep+'533.33.in.bis', 533.3333, 500e6],
263 ['500_600.in', '500_MHz'+sep+'600.in', 600.0000, 500e6],
264 ['500_666.67.in', '500_MHz'+sep+'666.67.in', 666.6666, 500e6],
265 ['500_733.33.in', '500_MHz'+sep+'733.33.in', 733.3333, 500e6],
266 ['500_800.in', '500_MHz'+sep+'800.in', 800.0000, 500e6],
267 ['500_866.67.in', '500_MHz'+sep+'866.67.in', 866.6666, 500e6],
268 ['500_933.33.in', '500_MHz'+sep+'933.33.in', 933.3333, 500e6],
269 ['500_933.33.in.bis', '500_MHz'+sep+'933.33.in.bis', 933.3333, 500e6],
270 ['500_1000.in', '500_MHz'+sep+'1000.in', 1000.0000, 500e6],
271 ['800_reference.in', '800_MHz'+sep+'reference.in', None, 800e6],
272 ['800_66.667.in', '800_MHz'+sep+'66.667.in', 66.6666, 800e6],
273 ['800_133.33.in', '800_MHz'+sep+'133.33.in', 133.3333, 800e6],
274 ['800_133.33.in.bis', '800_MHz'+sep+'133.33.in.bis', 133.3333, 800e6],
275 ['800_200.in', '800_MHz'+sep+'200.in', 200.0000, 800e6],
276 ['800_266.67.in', '800_MHz'+sep+'266.67.in', 266.6666, 800e6],
277 ['800_333.33.in', '800_MHz'+sep+'333.33.in', 333.3333, 800e6],
278 ['800_400.in', '800_MHz'+sep+'400.in', 400.0000, 800e6],
279 ['800_466.67.in', '800_MHz'+sep+'466.67.in', 466.6666, 800e6],
280 ['800_533.33.in', '800_MHz'+sep+'533.33.in', 533.3333, 800e6],
281 ['800_533.33.in.bis', '800_MHz'+sep+'533.33.in.bis', 533.3333, 800e6],
282 ['800_600.in', '800_MHz'+sep+'600.in', 600.0000, 800e6],
283 ['800_666.67.in', '800_MHz'+sep+'666.67.in', 666.6666, 800e6],
284 ['800_733.33.in', '800_MHz'+sep+'733.33.in', 733.3333, 800e6],
285 ['800_800.in', '800_MHz'+sep+'800.in', 800.0000, 800e6],
286 ['800_866.67.in', '800_MHz'+sep+'866.67.in', 866.6666, 800e6],
287 ['800_933.33.in', '800_MHz'+sep+'933.33.in', 933.3333, 800e6],
288 ['800_933.33.in.bis', '800_MHz'+sep+'933.33.in.bis', 933.3333, 800e6],
289 ['800_1000.in', '800_MHz'+sep+'1000.in', 1000.0000, 800e6]
290 ]
291
292
293 replicated = [
294 ['500_133.33.in', '500_133.33.in.bis'],
295 ['500_533.33.in', '500_533.33.in.bis'],
296 ['500_933.33.in', '500_933.33.in.bis'],
297 ['800_133.33.in', '800_133.33.in.bis'],
298 ['800_533.33.in', '800_533.33.in.bis'],
299 ['800_933.33.in', '800_933.33.in.bis']
300 ]
301
302
303 analysis.peak_wizard_launch(None)
304 wizard = analysis.peak_wizard
305
306
307 wizard.setup_page(page='name', name="N", force=True)
308 wizard._go_next(None)
309
310
311 for id, file, cpmg_frq, H_frq in data:
312 wizard.setup_page(page='read', file=data_path+file, spectrum_id=id, int_method='height', int_col=2, mol_name_col=None, res_num_col=1, res_name_col=None, spin_num_col=None, spin_name_col=None)
313 wizard._apply(None)
314 wizard._skip(None)
315
316
317 page = wizard.get_page(wizard.page_indices['err_type'])
318 page.selection = 'repl'
319 wizard._go_next(None)
320
321
322 for id1, id2 in replicated:
323 wizard.setup_page(page='repl', spectrum_ids=[id1, id2])
324 wizard._apply(None)
325 wizard._skip(None)
326
327
328 for id, file, cpmg_frq, H_frq in data:
329 wizard.setup_page(page='exp_type', spectrum_id=id, exp_type='SQ CPMG')
330 wizard._apply(None)
331 wizard._skip(None)
332
333
334 for id, file, cpmg_frq, H_frq in data:
335 wizard.setup_page(page='spectrometer_frequency', id=id, frq=H_frq)
336 wizard._apply(None)
337 wizard._skip(None)
338
339
340 for id, file, cpmg_frq, H_frq in data:
341 wizard.setup_page(page='relax_time', spectrum_id=id, time=0.03)
342 wizard._apply(None)
343 wizard._skip(None)
344
345
346 for id, file, cpmg_frq, H_frq in data:
347 wizard.setup_page(page='cpmg_setup', spectrum_id=id, cpmg_frq=cpmg_frq)
348 wizard._apply(None)
349 wizard._skip(None)
350
351
352 wx.Yield()
353
354
355 analysis.peak_intensity.on_right_click(Fake_right_click())
356
357
358
359 if status.relax_mode != 'gui' and wx.version() != '2.9.4.1 gtk2 (classic)':
360 analysis.peak_intensity.action_relax_disp_cpmg_setup(item=4)
361 uf_store['relax_disp.cpmg_setup'].wizard._go_next()
362 interpreter.flush()
363 analysis.peak_intensity.action_relax_disp_exp_type(item=5)
364 uf_store['relax_disp.exp_type'].wizard._go_next()
365 interpreter.flush()
366 analysis.peak_intensity.action_relax_disp_relax_time(item=0)
367 uf_store['relax_disp.relax_time'].wizard._go_next()
368 interpreter.flush()
369 analysis.peak_intensity.action_spectrometer_frq(item=10)
370 uf_store['spectrometer.frequency'].wizard._go_next()
371 interpreter.flush()
372
373
374 models = [MODEL_R2EFF, MODEL_NOREX, MODEL_LM63, MODEL_CR72, MODEL_IT99, MODEL_NS_CPMG_2SITE_EXPANDED]
375 for i in range(len(analysis.model_field.models_stripped)):
376 if analysis.model_field.models_stripped[i] in models:
377 analysis.model_field.select[i] = True
378 else:
379 analysis.model_field.select[i] = False
380 analysis.model_field.modify()
381
382
383 analysis.grid_inc.SetValue(4)
384 analysis.mc_sim_num.SetValue(3)
385
386
387 analysis.opt_func_tol = 1e-5
388 analysis.opt_max_iterations = 1000
389
390 subset_500 = ['500_reference.in', '500_66.667.in', '500_133.33.in', '500_133.33.in.bis', '500_200.in', '500_266.67.in', '500_333.33.in', '500_400.in', '500_466.67.in', '500_533.33.in', '500_533.33.in.bis', '500_600.in', '500_666.67.in', '500_733.33.in', '500_800.in', '500_866.67.in', '500_933.33.in', '500_933.33.in.bis', '500_1000.in']
391 subset_800 = ['800_reference.in', '800_66.667.in', '800_133.33.in', '800_133.33.in.bis', '800_200.in', '800_266.67.in', '800_333.33.in', '800_400.in', '800_466.67.in', '800_533.33.in', '800_533.33.in.bis', '800_600.in', '800_666.67.in', '800_733.33.in', '800_800.in', '800_866.67.in', '800_933.33.in', '800_933.33.in.bis', '800_1000.in']
392
393
394 self._execute_uf(uf_name='spectrum.error_analysis', subset=subset_500)
395 self._execute_uf(uf_name='spectrum.error_analysis', subset=subset_800)
396
397
398 sum_var_500 = 0.0
399 for id_500 in subset_500:
400 sum_var_500 += cdp.var_I[id_500]
401
402
403 std_500 = math.sqrt((sum_var_500)/len(subset_500))
404
405 print("Manually calculated standard deviation for 500 MHz: %f"%std_500)
406 for id_500 in subset_500:
407 self.assertAlmostEqual(cdp.sigma_I[id_500], std_500)
408
409
410 sum_var_800 = 0.0
411 for id_800 in subset_800:
412 sum_var_800 += cdp.var_I[id_800]
413
414
415 std_800 = math.sqrt((sum_var_800)/len(subset_800))
416
417 print("Manually calculated standard deviation for 800 MHz: %f"%std_800)
418 for id_800 in subset_800:
419 self.assertAlmostEqual(cdp.sigma_I[id_800], std_800)
420
421
422 for i in range(1, 100):
423 if i in [4, 70, 71]:
424 continue
425 self._execute_uf(uf_name='residue.delete', res_id=":%s" % i)
426
427
428 analysis.execute(wx.CommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, analysis.button_exec_relax.GetId()))
429
430
431 analysis.thread.join()
432
433
434 wx.Yield()
435
436
437 self.check_exceptions()
438
439
440
441 if status.relax_mode != 'gui' and wx.version() != '2.9.4.1 gtk2 (classic)':
442 self.assertEqual(self.app.gui.controller.mc_gauge_rx.GetValue(), 100)
443 self.assertEqual(self.app.gui.controller.main_gauge.GetValue(), 100)
444
445
447 """Test the GUI load spins from a spectrum formatted file."""
448
449
450 path = status.install_path + sep + 'test_suite' + sep + 'shared_data' + sep + 'peak_lists' + sep
451
452
453 self.app.gui.analysis.menu_new(None)
454 page = self.app.gui.analysis.new_wizard.wizard.get_page(0)
455 page.select_disp(None)
456 self.app.gui.analysis.new_wizard.wizard._go_next(None)
457 self.app.gui.analysis.new_wizard.wizard._go_next(None)
458
459
460 analysis_type, analysis_name, pipe_name, pipe_bundle, uf_exec = self.app.gui.analysis.new_wizard.get_data()
461
462
463 self.app.gui.analysis.new_analysis(analysis_type=analysis_type, analysis_name=analysis_name, pipe_name=pipe_name, pipe_bundle=pipe_bundle, uf_exec=uf_exec)
464
465
466 analysis = self.app.gui.analysis.get_page_from_name("Relaxation dispersion")
467
468
469 analysis.field_results_dir.SetValue(str_to_gui(ds.tmpdir))
470
471
472 self.app.gui.show_tree()
473
474
475 self.app.gui.spin_viewer.load_spins_wizard()
476
477
478 page = self.app.gui.spin_viewer.wizard.get_page(0)
479 page.selection = 'new spectrum'
480 self.app.gui.spin_viewer.wizard._go_next()
481 page = self.app.gui.spin_viewer.wizard.get_page(self.app.gui.spin_viewer.wizard._current_page)
482 page.uf_args['file'].SetValue(str_to_gui(path + 'seriesTab.ser'))
483 self.app.gui.spin_viewer.wizard._go_next()
484 interpreter.flush()
485
486
487 self.app.gui.spin_viewer.wizard._go_next()
488 interpreter.flush()
489
490
491 self.app.gui.spin_viewer.handler_close()
492
493
494 interpreter.flush()
495
496
497 self.assertEqual(len(cdp.mol), 1)
498 self.assertEqual(cdp.mol[0].name, None)
499 self.assertEqual(len(cdp.mol[0].res), 3)
500
501
502 self.assertEqual(cdp.mol[0].res[0].num, 62)
503 self.assertEqual(cdp.mol[0].res[0].name, 'W')
504 self.assertEqual(len(cdp.mol[0].res[0].spin), 1)
505 self.assertEqual(cdp.mol[0].res[0].spin[0].num, None)
506 self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'NE1')
507
508
509 self.assertEqual(cdp.mol[0].res[1].num, 10)
510 self.assertEqual(cdp.mol[0].res[1].name, 'L')
511 self.assertEqual(len(cdp.mol[0].res[1].spin), 1)
512 self.assertEqual(cdp.mol[0].res[1].spin[0].num, None)
513 self.assertEqual(cdp.mol[0].res[1].spin[0].name, 'N')
514
515
516 self.assertEqual(cdp.mol[0].res[2].num, 6)
517 self.assertEqual(cdp.mol[0].res[2].name, 'V')
518 self.assertEqual(len(cdp.mol[0].res[2].spin), 1)
519 self.assertEqual(cdp.mol[0].res[2].spin[0].num, None)
520 self.assertEqual(cdp.mol[0].res[2].spin[0].name, 'N')
521
522
524 """Test the GUI analysis with the relaxation dispersion 'TP02' model fitting to the 'TP02' synthetic data."""
525
526
527 data_path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'dispersion'+sep+'r1rho_off_res_tp02'+sep
528
529
530 self.app.gui.analysis.menu_new(None)
531 page = self.app.gui.analysis.new_wizard.wizard.get_page(0)
532 page.select_disp(None)
533 self.app.gui.analysis.new_wizard.wizard._go_next(None)
534 self.app.gui.analysis.new_wizard.wizard._go_next(None)
535
536
537 analysis_type, analysis_name, pipe_name, pipe_bundle, uf_exec = self.app.gui.analysis.new_wizard.get_data()
538
539
540 self.app.gui.analysis.new_analysis(analysis_type=analysis_type, analysis_name=analysis_name, pipe_name=pipe_name, pipe_bundle=pipe_bundle, uf_exec=uf_exec)
541
542
543 analysis = self.app.gui.analysis.get_page_from_name("Relaxation dispersion")
544
545
546 analysis.field_results_dir.SetValue(str_to_gui(ds.tmpdir))
547
548
549 self._execute_uf(uf_name='spin.create', res_name='Trp', res_num=1, spin_name='N')
550 interpreter.flush()
551 self._execute_uf(uf_name='spin.create', res_name='Trp', res_num=2, spin_name='N')
552 interpreter.flush()
553 self._execute_uf(uf_name='sequence.display')
554 interpreter.flush()
555
556
557 analysis.spin_isotope()
558 uf_store['spin.isotope'].page.SetValue('spin_id', '')
559 uf_store['spin.isotope'].wizard._go_next()
560 interpreter.flush()
561
562
563 self._execute_uf(uf_name='chemical_shift.read', file='ref_500MHz.list', dir=data_path)
564 interpreter.flush()
565
566
567 frq = [500, 800]
568 frq_label = ['500MHz', '800MHz']
569 error = 200000.0
570 data = []
571 spin_lock = [None, 1000.0, 1500.0, 2000.0, 2500.0, 3000.0, 3500.0, 4000.0, 4500.0, 5000.0, 5500.0, 6000.0]
572 for frq_index in range(len(frq)):
573 for spin_lock_index in range(len(spin_lock)):
574
575 if spin_lock[spin_lock_index] == None:
576 id = 'ref_%s' % frq_label[frq_index]
577 file = "ref_%s.list" % frq_label[frq_index]
578
579
580 else:
581 id = "nu_%s_%s" % (spin_lock[spin_lock_index], frq_label[frq_index])
582 file = "nu_%s_%s.list" % (spin_lock[spin_lock_index], frq_label[frq_index])
583
584
585 data.append([id, file, spin_lock[spin_lock_index], frq[frq_index]])
586
587
588 for frq_index in range(len(frq)):
589 label = 'R1_%s' % frq_label[frq_index]
590 self._execute_uf(uf_name='relax_data.read', ri_id=label, ri_type='R1', frq=frq[frq_index]*1e6, file='%s.out'%label, dir=data_path, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7)
591 interpreter.flush()
592
593
594 analysis.peak_wizard_launch(None)
595 wizard = analysis.peak_wizard
596
597
598 for id, file, field, H_frq in data:
599 wizard.setup_page(page='read', file=data_path+file, spectrum_id=id, int_method='height', dim=1)
600 wizard._apply(None)
601 wizard._skip(None)
602
603
604 page = wizard.get_page(wizard.page_indices['err_type'])
605 page.selection = 'rmsd'
606 wizard._go_next(None)
607
608
609 for id, file, field, H_frq in data:
610 wizard.setup_page(page='rmsd', spectrum_id=id, error=error)
611 wizard._apply(None)
612 wizard._skip(None)
613
614
615 for id, file, field, H_frq in data:
616 wizard.setup_page(page='exp_type', spectrum_id=id, exp_type='R1rho')
617 wizard._apply(None)
618 wizard._skip(None)
619
620
621 for id, file, field, H_frq in data:
622 wizard.setup_page(page='spectrometer_frequency', id=id, frq=H_frq, units='MHz')
623 wizard._apply(None)
624 wizard._skip(None)
625
626
627 for id, file, field, H_frq in data:
628 wizard.setup_page(page='relax_time', spectrum_id=id, time=0.1)
629 wizard._apply(None)
630 wizard._skip(None)
631
632
633 for id, file, field, H_frq in data:
634 wizard.setup_page(page='spin_lock_field', spectrum_id=id, field=field)
635 wizard._apply(None)
636 wizard._skip(None)
637
638
639 for id, file, field, H_frq in data:
640 wizard.setup_page(page='spin_lock_offset', spectrum_id=id, offset=110.0)
641 wizard._apply(None)
642 wizard._skip(None)
643
644
645 wx.Yield()
646
647
648 analysis.peak_intensity.on_right_click(Fake_right_click())
649
650
651
652 if status.relax_mode != 'gui' and wx.version() != '2.9.4.1 gtk2 (classic)':
653 analysis.peak_intensity.action_relax_disp_spin_lock_field(item=4)
654 uf_store['relax_disp.spin_lock_field'].wizard._go_next()
655 interpreter.flush()
656 analysis.peak_intensity.action_relax_disp_exp_type(item=5)
657 uf_store['relax_disp.exp_type'].wizard._go_next()
658 interpreter.flush()
659 analysis.peak_intensity.action_relax_disp_relax_time(item=0)
660 uf_store['relax_disp.relax_time'].wizard._go_next()
661 interpreter.flush()
662 analysis.peak_intensity.action_spectrometer_frq(item=10)
663 uf_store['spectrometer.frequency'].wizard._go_next()
664 interpreter.flush()
665
666
667 models = [MODEL_R2EFF, MODEL_NOREX, MODEL_TP02]
668 for i in range(len(analysis.model_field.models_stripped)):
669 if analysis.model_field.models_stripped[i] in models:
670 analysis.model_field.select[i] = True
671 else:
672 analysis.model_field.select[i] = False
673 analysis.model_field.modify()
674
675
676 analysis.grid_inc.SetValue(4)
677 analysis.mc_sim_num.SetValue(3)
678
679
680 analysis.opt_func_tol = 1e-10
681 analysis.opt_max_iterations = 10000
682
683
684 analysis.execute(wx.CommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, analysis.button_exec_relax.GetId()))
685
686
687 analysis.thread.join()
688
689
690 wx.Yield()
691
692
693 self.check_exceptions()
694
695
696
697 if status.relax_mode != 'gui' and wx.version() != '2.9.4.1 gtk2 (classic)':
698 self.assertEqual(self.app.gui.controller.mc_gauge_rx.GetValue(), 100)
699 self.assertEqual(self.app.gui.controller.main_gauge.GetValue(), 100)
700
701
702 r1rho_prime = [[10.0, 15.0], [12.0, 18.0]]
703 pA = 0.7654321
704 kex = 1234.56789
705 delta_omega = [7.0, 9.0]
706
707
708 r20_key1 = generate_r20_key(exp_type=EXP_TYPE_R1RHO, frq=500e6)
709 r20_key2 = generate_r20_key(exp_type=EXP_TYPE_R1RHO, frq=800e6)
710
711
712 switch("%s - %s" % ('TP02', pipe_bundle))
713 spin_index = 0
714 for spin, spin_id in spin_loop(return_id=True):
715
716 print("\nSpin %s." % spin_id)
717
718
719 self.assertAlmostEqual(spin.r2[r20_key1]/10, r1rho_prime[spin_index][0]/10, 4)
720 self.assertAlmostEqual(spin.r2[r20_key2]/10, r1rho_prime[spin_index][1]/10, 4)
721 self.assertAlmostEqual(spin.dw, delta_omega[spin_index], 3)
722 self.assertAlmostEqual(spin.kex/1000.0, kex/1000.0, 3)
723
724
725 spin_index += 1
726
727
728
730 """Simulate a grid_cell_right_click event ."""
731
733 """Overwrite the GetPosition() method."""
734
735
736 return wx.Point(10, 65)
737