Package test_suite :: Package system_tests :: Module sequence
[hide private]
[frames] | no frames]

Source Code for Module test_suite.system_tests.sequence

  1  ############################################################################### 
  2  #                                                                             # 
  3  # Copyright (C) 2006-2015 Edward d'Auvergne                                   # 
  4  # Copyright (C) 2013-2014 Troels E. Linnet                                    # 
  5  #                                                                             # 
  6  # This file is part of the program relax (http://www.nmr-relax.com).          # 
  7  #                                                                             # 
  8  # This program is free software: you can redistribute it and/or modify        # 
  9  # it under the terms of the GNU General Public License as published by        # 
 10  # the Free Software Foundation, either version 3 of the License, or           # 
 11  # (at your option) any later version.                                         # 
 12  #                                                                             # 
 13  # This program is distributed in the hope that it will be useful,             # 
 14  # but WITHOUT ANY WARRANTY; without even the implied warranty of              # 
 15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               # 
 16  # GNU General Public License for more details.                                # 
 17  #                                                                             # 
 18  # You should have received a copy of the GNU General Public License           # 
 19  # along with this program.  If not, see <http://www.gnu.org/licenses/>.       # 
 20  #                                                                             # 
 21  ############################################################################### 
 22   
 23  # Python module imports. 
 24  from os import sep 
 25   
 26  # relax module imports. 
 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   
33 -class Sequence(SystemTestCase):
34 """Class for testing the sequence functions.""" 35
36 - def setUp(self):
37 """Set up for all the functional tests.""" 38 39 # Create the data pipe. 40 self.interpreter.pipe.create('mf', 'mf')
41 42
43 - def test_bug_23372_read_csv(self):
44 """Catch U{bug #23372<https://web.archive.org/web/https://gna.org/bugs/?23372>}, the sequence.read failure with CSV files.""" 45 46 # Load the sequence. 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 # Check the sequence. 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 # Read the PDB file. 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 # Load all the ASP atoms (1 molecule, 1 ASP residue, and all atoms). 65 self.interpreter.structure.load_spins(spin_id=':ASP') 66 67 # Test some of the sequence. 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 # 1st residue. 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 # Read the PDB file. 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 # Generate the sequence of nitrogen spins (1 molecule, all GLY residues, and only N spins). 109 self.interpreter.structure.load_spins(spin_id=':GLY@N') 110 111 # Append to the sequence the alpha carbon spins (1 molecule, all GLY residues, and only Ca spins). 112 self.interpreter.structure.load_spins(spin_id=':GLY@CA') 113 114 # Test some of the sequence. 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 # 1st residue. 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 # 2nd residue. 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 # 3rd residue. 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 # Read the PDB file. 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 # Generate the sequence (1 molecule, all GLY residues, and only N spins). 154 self.interpreter.structure.load_spins(spin_id=':GLY@N') 155 156 # Test some of the sequence. 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 # 1st residue. 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 # 2nd residue. 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 # 3rd residue. 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 # Read the PDB file. 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 # Generate the sequence (1 molecule, all residues, and only N spins). 190 self.interpreter.structure.load_spins(spin_id='@N') 191 192 # Test some of the sequence. 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 # 1st residue. 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 # 2nd residue. 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 # 3rd residue. 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 # 4th residue. 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 # 5th residue. 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 # 6th residue. 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 # 7th residue. 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 # 8th residue. 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 # 9th residue. 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 # 10th residue. 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 # 11th residue. 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 # 12th residue. 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
282 - def test_read(self):
283 """The sequence.read() test.""" 284 285 # Read the sequence. 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 # Test some of the sequence. 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 # 1st residue. 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
300 - def test_sequence_copy(self):
301 """Test the sequence.copy user function.""" 302 303 # First create some spins. 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 # Create a new data pipe to copy to. 314 self.interpreter.pipe.create('seq copy test', 'mf') 315 316 # Copy the sequence. 317 self.interpreter.sequence.copy(pipe_from='mf') 318 319 # Alias the data pipes. 320 pipe1 = ds['mf'] 321 pipe2 = ds['seq copy test'] 322 323 # Check the residue count. 324 self.assertEqual(len(pipe1.mol[0].res), len(pipe2.mol[0].res)) 325 326 # Check the spin counts. 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