1   
  2   
  3   
  4   
  5   
  6   
  7   
  8   
  9   
 10   
 11   
 12   
 13   
 14   
 15   
 16   
 17   
 18   
 19   
 20   
 21   
 22   
 23   
 24  from os import sep 
 25   
 26   
 27  from data_store import Relax_data_store; ds = Relax_data_store() 
 28  from pipe_control.mol_res_spin import spin_loop 
 29  from status import Status; status = Status() 
 30  from test_suite.system_tests.base_classes import SystemTestCase 
 31   
 32   
 34      """Class for testing the sequence functions.""" 
 35   
 41   
 42   
 44          """Catch U{bug #23372<https://web.archive.org/web/https://gna.org/bugs/?23372>}, the sequence.read failure with CSV files.""" 
 45   
 46           
 47          self.interpreter.sequence.read('Sam.csv', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'peak_lists', res_num_col=1, sep=',') 
 48   
 49           
 50          seq = [":330", ":331"] 
 51          i = 0 
 52          self.assertEqual(len(cdp.mol[0].res), 2) 
 53          for spin, spin_id in spin_loop(return_id=True): 
 54              self.assertEqual(spin_id, seq[i]) 
 55              i += 1 
  56   
 57   
 59          """Load all aspartic acid atoms from the single residue in a loaded protein PDB file.""" 
 60   
 61           
 62          self.interpreter.structure.read_pdb(file='Ap4Aase_res1-12.pdb', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'structures', read_model=1) 
 63   
 64           
 65          self.interpreter.structure.load_spins(spin_id=':ASP') 
 66   
 67           
 68          self.assertEqual(len(cdp.mol), 1) 
 69          self.assertEqual(cdp.mol[0].name, 'Ap4Aase_res1-12_mol1') 
 70          self.assertEqual(len(cdp.mol[0].res), 1) 
 71   
 72           
 73          self.assertEqual(cdp.mol[0].res[0].num, 7) 
 74          self.assertEqual(cdp.mol[0].res[0].name, 'ASP') 
 75          self.assertEqual(len(cdp.mol[0].res[0].spin), 12) 
 76          self.assertEqual(cdp.mol[0].res[0].spin[0].num, 78) 
 77          self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'N') 
 78          self.assertEqual(cdp.mol[0].res[0].spin[1].num, 79) 
 79          self.assertEqual(cdp.mol[0].res[0].spin[1].name, 'H') 
 80          self.assertEqual(cdp.mol[0].res[0].spin[2].num, 80) 
 81          self.assertEqual(cdp.mol[0].res[0].spin[2].name, 'CA') 
 82          self.assertEqual(cdp.mol[0].res[0].spin[3].num, 81) 
 83          self.assertEqual(cdp.mol[0].res[0].spin[3].name, 'HA') 
 84          self.assertEqual(cdp.mol[0].res[0].spin[4].num, 82) 
 85          self.assertEqual(cdp.mol[0].res[0].spin[4].name, 'CB') 
 86          self.assertEqual(cdp.mol[0].res[0].spin[5].num, 83) 
 87          self.assertEqual(cdp.mol[0].res[0].spin[5].name, '1HB') 
 88          self.assertEqual(cdp.mol[0].res[0].spin[6].num, 84) 
 89          self.assertEqual(cdp.mol[0].res[0].spin[6].name, '2HB') 
 90          self.assertEqual(cdp.mol[0].res[0].spin[7].num, 85) 
 91          self.assertEqual(cdp.mol[0].res[0].spin[7].name, 'CG') 
 92          self.assertEqual(cdp.mol[0].res[0].spin[8].num, 86) 
 93          self.assertEqual(cdp.mol[0].res[0].spin[8].name, 'OD1') 
 94          self.assertEqual(cdp.mol[0].res[0].spin[9].num, 87) 
 95          self.assertEqual(cdp.mol[0].res[0].spin[9].name, 'OD2') 
 96          self.assertEqual(cdp.mol[0].res[0].spin[10].num, 88) 
 97          self.assertEqual(cdp.mol[0].res[0].spin[10].name, 'C') 
 98          self.assertEqual(cdp.mol[0].res[0].spin[11].num, 89) 
 99          self.assertEqual(cdp.mol[0].res[0].spin[11].name, 'O') 
 100   
101   
103          """Load the glycine backbone amide N and Ca spins from a loaded protein PDB file.""" 
104   
105           
106          self.interpreter.structure.read_pdb(file='Ap4Aase_res1-12.pdb', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'structures', read_model=1) 
107   
108           
109          self.interpreter.structure.load_spins(spin_id=':GLY@N') 
110   
111           
112          self.interpreter.structure.load_spins(spin_id=':GLY@CA') 
113   
114           
115          self.assertEqual(len(cdp.mol), 1) 
116          self.assertEqual(cdp.mol[0].name, 'Ap4Aase_res1-12_mol1') 
117          self.assertEqual(len(cdp.mol[0].res), 3) 
118   
119           
120          self.assertEqual(cdp.mol[0].res[0].num, 1) 
121          self.assertEqual(cdp.mol[0].res[0].name, 'GLY') 
122          self.assertEqual(len(cdp.mol[0].res[0].spin), 2) 
123          self.assertEqual(cdp.mol[0].res[0].spin[0].num, 1) 
124          self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'N') 
125          self.assertEqual(cdp.mol[0].res[0].spin[1].num, 2) 
126          self.assertEqual(cdp.mol[0].res[0].spin[1].name, 'CA') 
127   
128           
129          self.assertEqual(cdp.mol[0].res[1].num, 4) 
130          self.assertEqual(cdp.mol[0].res[1].name, 'GLY') 
131          self.assertEqual(len(cdp.mol[0].res[1].spin), 2) 
132          self.assertEqual(cdp.mol[0].res[1].spin[0].num, 43) 
133          self.assertEqual(cdp.mol[0].res[1].spin[0].name, 'N') 
134          self.assertEqual(cdp.mol[0].res[1].spin[1].num, 45) 
135          self.assertEqual(cdp.mol[0].res[1].spin[1].name, 'CA') 
136   
137           
138          self.assertEqual(cdp.mol[0].res[2].num, 12) 
139          self.assertEqual(cdp.mol[0].res[2].name, 'GLY') 
140          self.assertEqual(len(cdp.mol[0].res[2].spin), 2) 
141          self.assertEqual(cdp.mol[0].res[2].spin[0].num, 144) 
142          self.assertEqual(cdp.mol[0].res[2].spin[0].name, 'N') 
143          self.assertEqual(cdp.mol[0].res[2].spin[1].num, 146) 
144          self.assertEqual(cdp.mol[0].res[2].spin[1].name, 'CA') 
 145   
146   
148          """Load the glycine backbone amide N spins from a loaded protein PDB file.""" 
149   
150           
151          self.interpreter.structure.read_pdb(file='Ap4Aase_res1-12.pdb', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'structures', read_model=1) 
152   
153           
154          self.interpreter.structure.load_spins(spin_id=':GLY@N') 
155   
156           
157          self.assertEqual(len(cdp.mol), 1) 
158          self.assertEqual(cdp.mol[0].name, 'Ap4Aase_res1-12_mol1') 
159          self.assertEqual(len(cdp.mol[0].res), 3) 
160   
161           
162          self.assertEqual(cdp.mol[0].res[0].num, 1) 
163          self.assertEqual(cdp.mol[0].res[0].name, 'GLY') 
164          self.assertEqual(len(cdp.mol[0].res[0].spin), 1) 
165          self.assertEqual(cdp.mol[0].res[0].spin[0].num, 1) 
166          self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'N') 
167   
168           
169          self.assertEqual(cdp.mol[0].res[1].num, 4) 
170          self.assertEqual(cdp.mol[0].res[1].name, 'GLY') 
171          self.assertEqual(len(cdp.mol[0].res[1].spin), 1) 
172          self.assertEqual(cdp.mol[0].res[1].spin[0].num, 43) 
173          self.assertEqual(cdp.mol[0].res[1].spin[0].name, 'N') 
174   
175           
176          self.assertEqual(cdp.mol[0].res[2].num, 12) 
177          self.assertEqual(cdp.mol[0].res[2].name, 'GLY') 
178          self.assertEqual(len(cdp.mol[0].res[2].spin), 1) 
179          self.assertEqual(cdp.mol[0].res[2].spin[0].num, 144) 
180          self.assertEqual(cdp.mol[0].res[2].spin[0].name, 'N') 
 181   
182   
184          """Load the protein backbone amide N spins from a loaded PDB file.""" 
185   
186           
187          self.interpreter.structure.read_pdb(file='Ap4Aase_res1-12.pdb', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'structures', read_model=1) 
188   
189           
190          self.interpreter.structure.load_spins(spin_id='@N') 
191   
192           
193          self.assertEqual(len(cdp.mol), 1) 
194          self.assertEqual(cdp.mol[0].name, 'Ap4Aase_res1-12_mol1') 
195          self.assertEqual(len(cdp.mol[0].res), 12) 
196   
197           
198          self.assertEqual(cdp.mol[0].res[0].num, 1) 
199          self.assertEqual(cdp.mol[0].res[0].name, 'GLY') 
200          self.assertEqual(len(cdp.mol[0].res[0].spin), 1) 
201          self.assertEqual(cdp.mol[0].res[0].spin[0].num, 1) 
202          self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'N') 
203   
204           
205          self.assertEqual(cdp.mol[0].res[1].num, 2) 
206          self.assertEqual(cdp.mol[0].res[1].name, 'PRO') 
207          self.assertEqual(len(cdp.mol[0].res[1].spin), 1) 
208          self.assertEqual(cdp.mol[0].res[1].spin[0].num, 10) 
209          self.assertEqual(cdp.mol[0].res[1].spin[0].name, 'N') 
210   
211           
212          self.assertEqual(cdp.mol[0].res[2].num, 3) 
213          self.assertEqual(cdp.mol[0].res[2].name, 'LEU') 
214          self.assertEqual(len(cdp.mol[0].res[2].spin), 1) 
215          self.assertEqual(cdp.mol[0].res[2].spin[0].num, 24) 
216          self.assertEqual(cdp.mol[0].res[2].spin[0].name, 'N') 
217   
218           
219          self.assertEqual(cdp.mol[0].res[3].num, 4) 
220          self.assertEqual(cdp.mol[0].res[3].name, 'GLY') 
221          self.assertEqual(len(cdp.mol[0].res[3].spin), 1) 
222          self.assertEqual(cdp.mol[0].res[3].spin[0].num, 43) 
223          self.assertEqual(cdp.mol[0].res[3].spin[0].name, 'N') 
224   
225           
226          self.assertEqual(cdp.mol[0].res[4].num, 5) 
227          self.assertEqual(cdp.mol[0].res[4].name, 'SER') 
228          self.assertEqual(len(cdp.mol[0].res[4].spin), 1) 
229          self.assertEqual(cdp.mol[0].res[4].spin[0].num, 50) 
230          self.assertEqual(cdp.mol[0].res[4].spin[0].name, 'N') 
231   
232           
233          self.assertEqual(cdp.mol[0].res[5].num, 6) 
234          self.assertEqual(cdp.mol[0].res[5].name, 'MET') 
235          self.assertEqual(len(cdp.mol[0].res[5].spin), 1) 
236          self.assertEqual(cdp.mol[0].res[5].spin[0].num, 61) 
237          self.assertEqual(cdp.mol[0].res[5].spin[0].name, 'N') 
238   
239           
240          self.assertEqual(cdp.mol[0].res[6].num, 7) 
241          self.assertEqual(cdp.mol[0].res[6].name, 'ASP') 
242          self.assertEqual(len(cdp.mol[0].res[6].spin), 1) 
243          self.assertEqual(cdp.mol[0].res[6].spin[0].num, 78) 
244          self.assertEqual(cdp.mol[0].res[6].spin[0].name, 'N') 
245   
246           
247          self.assertEqual(cdp.mol[0].res[7].num, 8) 
248          self.assertEqual(cdp.mol[0].res[7].name, 'SER') 
249          self.assertEqual(len(cdp.mol[0].res[7].spin), 1) 
250          self.assertEqual(cdp.mol[0].res[7].spin[0].num, 90) 
251          self.assertEqual(cdp.mol[0].res[7].spin[0].name, 'N') 
252   
253           
254          self.assertEqual(cdp.mol[0].res[8].num, 9) 
255          self.assertEqual(cdp.mol[0].res[8].name, 'PRO') 
256          self.assertEqual(len(cdp.mol[0].res[8].spin), 1) 
257          self.assertEqual(cdp.mol[0].res[8].spin[0].num, 101) 
258          self.assertEqual(cdp.mol[0].res[8].spin[0].name, 'N') 
259   
260           
261          self.assertEqual(cdp.mol[0].res[9].num, 10) 
262          self.assertEqual(cdp.mol[0].res[9].name, 'PRO') 
263          self.assertEqual(len(cdp.mol[0].res[9].spin), 1) 
264          self.assertEqual(cdp.mol[0].res[9].spin[0].num, 115) 
265          self.assertEqual(cdp.mol[0].res[9].spin[0].name, 'N') 
266   
267           
268          self.assertEqual(cdp.mol[0].res[10].num, 11) 
269          self.assertEqual(cdp.mol[0].res[10].name, 'GLU') 
270          self.assertEqual(len(cdp.mol[0].res[10].spin), 1) 
271          self.assertEqual(cdp.mol[0].res[10].spin[0].num, 129) 
272          self.assertEqual(cdp.mol[0].res[10].spin[0].name, 'N') 
273   
274           
275          self.assertEqual(cdp.mol[0].res[11].num, 12) 
276          self.assertEqual(cdp.mol[0].res[11].name, 'GLY') 
277          self.assertEqual(len(cdp.mol[0].res[11].spin), 1) 
278          self.assertEqual(cdp.mol[0].res[11].spin[0].num, 144) 
279          self.assertEqual(cdp.mol[0].res[11].spin[0].name, 'N') 
 280   
281   
283          """The sequence.read() test.""" 
284   
285           
286          self.interpreter.sequence.read(file='test_seq', dir=status.install_path + sep+'test_suite'+sep+'shared_data', res_num_col=1, res_name_col=2) 
287           
288           
289          self.assertEqual(len(cdp.mol), 1) 
290          self.assertEqual(cdp.mol[0].name, None) 
291          self.assertEqual(len(cdp.mol[0].res), 5) 
292   
293           
294          self.assertEqual(cdp.mol[0].res[0].num, -2) 
295          self.assertEqual(cdp.mol[0].res[0].name, 'Gly') 
296          self.assertEqual(len(cdp.mol[0].res[0].spin), 1) 
297          self.assertEqual(cdp.mol[0].res[0].spin[0].num, None) 
298          self.assertEqual(cdp.mol[0].res[0].spin[0].name, None) 
 299   
301          """Test the sequence.copy user function.""" 
302   
303           
304          self.interpreter.spin.create(spin_name='A', spin_num=1, res_num=1) 
305          self.interpreter.spin.create(spin_name='A', spin_num=2, res_num=1) 
306          self.interpreter.spin.create(spin_name='B', spin_num=3, res_num=1) 
307          self.interpreter.spin.create(spin_name='B2', spin_num=4, res_num=1) 
308          self.interpreter.spin.create(spin_name='A', spin_num=1, res_num=2) 
309          self.interpreter.spin.create(spin_name='A', spin_num=2, res_num=2) 
310          self.interpreter.spin.create(spin_name='B', spin_num=3, res_num=2) 
311          self.interpreter.spin.create(spin_name='B2', spin_num=4, res_num=2) 
312   
313           
314          self.interpreter.pipe.create('seq copy test', 'mf') 
315   
316           
317          self.interpreter.sequence.copy(pipe_from='mf') 
318   
319           
320          pipe1 = ds['mf'] 
321          pipe2 = ds['seq copy test'] 
322   
323           
324          self.assertEqual(len(pipe1.mol[0].res), len(pipe2.mol[0].res)) 
325   
326           
327          for i in range(len(pipe1.mol[0].res)): 
328              self.assertEqual(len(pipe1.mol[0].res[i].spin), len(pipe2.mol[0].res[i].spin)) 
  329