1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 """System tests of the interatomic data container operations."""
24
25
26
27 from os import sep
28
29
30 from data_store import Relax_data_store; ds = Relax_data_store()
31 from lib.errors import RelaxNoSpinError
32 from status import Status; status = Status()
33 from test_suite.system_tests.base_classes import SystemTestCase
34
35
37 """Class for testing the interatomic functions."""
38
40 """Test the operation of the interatom.copy user function."""
41
42
43 self.interpreter.pipe.create(pipe_name="orig", pipe_type='N-state')
44
45
46 self.interpreter.molecule.create(mol_name='Test mol')
47 self.interpreter.residue.create(mol_name='Test mol', res_name='His', res_num=1)
48 self.interpreter.residue.create(mol_name='Test mol', res_name='His', res_num=2)
49 self.interpreter.spin.create(res_num=1, spin_name='N')
50 self.interpreter.spin.create(res_num=1, spin_name='H')
51 self.interpreter.spin.create(res_num=2, spin_name='N')
52 self.interpreter.spin.create(res_num=2, spin_name='H')
53
54
55 self.interpreter.interatom.define(spin_id1=':1@N', spin_id2=':1@H', direct_bond=False)
56 self.interpreter.interatom.define(spin_id1=':2@N', spin_id2=':2@H', direct_bond=False)
57
58
59 cdp.interatomic[0].x = 1
60 cdp.interatomic[1].y = 2
61
62
63 self.interpreter.pipe.create(pipe_name="new", pipe_type='N-state')
64
65
66 self.interpreter.sequence.copy(pipe_from='orig')
67 self.interpreter.interatom.copy(pipe_from='orig', spin_id1=':2@N', spin_id2=':2@H')
68 self.interpreter.interatom.copy(pipe_from='orig', spin_id1=':1@H', spin_id2=':1@N')
69
70
71 self.interpreter.pipe.create(pipe_name="new 2", pipe_type='N-state')
72
73
74 try:
75 self.interpreter.interatom.copy(pipe_from='orig')
76 except RelaxNoSpinError:
77 print("Correct RelaxError encountered.")
78 self.interpreter.sequence.copy(pipe_from='orig')
79 self.interpreter.interatom.copy(pipe_from='orig')
80
81
82 interatom_index = [[0, 1], [1, 0]]
83 pipes = ['new', 'new 2']
84 for i in range(len(pipes)):
85
86 self.interpreter.pipe.switch(pipes[i])
87
88
89 self.assertEqual(cdp.mol[0].name, 'Test mol')
90 self.assertEqual(cdp.mol[0].res[0].name, 'His')
91 self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'N')
92 self.assertEqual(cdp.mol[0].res[0].spin[1].name, 'H')
93 self.assertEqual(cdp.mol[0].res[1].name, 'His')
94 self.assertEqual(cdp.mol[0].res[1].spin[0].name, 'N')
95 self.assertEqual(cdp.mol[0].res[1].spin[1].name, 'H')
96
97
98 self.assertEqual(cdp.interatomic[interatom_index[i][0]].spin_id1, '#Test mol:2@N')
99 self.assertEqual(cdp.interatomic[interatom_index[i][0]].spin_id2, '#Test mol:2@H')
100 self.assertEqual(cdp.interatomic[interatom_index[i][0]].y, 2)
101 self.assertEqual(cdp.interatomic[interatom_index[i][1]].spin_id1, '#Test mol:1@N')
102 self.assertEqual(cdp.interatomic[interatom_index[i][1]].spin_id2, '#Test mol:1@H')
103 self.assertEqual(cdp.interatomic[interatom_index[i][1]].x, 1)
104
105
107 """Test the manipulation of interatomic data containers."""
108
109
110 self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'interatomic_tests.py')
111
112
113 select = [True, False] + [True]*3 + [False]*2 + [True]*5 + [False]*2 + [True, False]
114
115
116 self.assertEqual(len(cdp.interatomic), 16)
117 for i in range(len(cdp.interatomic)):
118
119 print("Checking container: %-30s %-30s" % (cdp.interatomic[i].spin_id1, cdp.interatomic[i].spin_id2))
120
121
122 self.assertEqual(cdp.interatomic[i].select, select[i])
123