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-2013 Edward d'Auvergne                                   # 
  4  #                                                                             # 
  5  # This file is part of the program relax (http://www.nmr-relax.com).          # 
  6  #                                                                             # 
  7  # This program is free software: you can redistribute it and/or modify        # 
  8  # it under the terms of the GNU General Public License as published by        # 
  9  # the Free Software Foundation, either version 3 of the License, or           # 
 10  # (at your option) any later version.                                         # 
 11  #                                                                             # 
 12  # This program is distributed in the hope that it will be useful,             # 
 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of              # 
 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               # 
 15  # GNU General Public License for more details.                                # 
 16  #                                                                             # 
 17  # You should have received a copy of the GNU General Public License           # 
 18  # along with this program.  If not, see <http://www.gnu.org/licenses/>.       # 
 19  #                                                                             # 
 20  ############################################################################### 
 21   
 22  # Python module imports. 
 23  from os import sep 
 24   
 25  # relax module imports. 
 26  from data_store import Relax_data_store; ds = Relax_data_store() 
 27  from status import Status; status = Status() 
 28  from test_suite.system_tests.base_classes import SystemTestCase 
 29   
 30   
31 -class Sequence(SystemTestCase):
32 """Class for testing the sequence functions.""" 33
34 - def setUp(self):
35 """Set up for all the functional tests.""" 36 37 # Create the data pipe. 38 self.interpreter.pipe.create('mf', 'mf')
39 40
42 """Load all aspartic acid atoms from the single residue in a loaded protein PDB file.""" 43 44 # Read the PDB file. 45 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) 46 47 # Load all the ASP atoms (1 molecule, 1 ASP residue, and all atoms). 48 self.interpreter.structure.load_spins(spin_id=':ASP') 49 50 # Test some of the sequence. 51 self.assertEqual(len(cdp.mol), 1) 52 self.assertEqual(cdp.mol[0].name, 'Ap4Aase_res1-12_mol1') 53 self.assertEqual(len(cdp.mol[0].res), 1) 54 55 # 1st residue. 56 self.assertEqual(cdp.mol[0].res[0].num, 7) 57 self.assertEqual(cdp.mol[0].res[0].name, 'ASP') 58 self.assertEqual(len(cdp.mol[0].res[0].spin), 12) 59 self.assertEqual(cdp.mol[0].res[0].spin[0].num, 78) 60 self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'N') 61 self.assertEqual(cdp.mol[0].res[0].spin[1].num, 79) 62 self.assertEqual(cdp.mol[0].res[0].spin[1].name, 'H') 63 self.assertEqual(cdp.mol[0].res[0].spin[2].num, 80) 64 self.assertEqual(cdp.mol[0].res[0].spin[2].name, 'CA') 65 self.assertEqual(cdp.mol[0].res[0].spin[3].num, 81) 66 self.assertEqual(cdp.mol[0].res[0].spin[3].name, 'HA') 67 self.assertEqual(cdp.mol[0].res[0].spin[4].num, 82) 68 self.assertEqual(cdp.mol[0].res[0].spin[4].name, 'CB') 69 self.assertEqual(cdp.mol[0].res[0].spin[5].num, 83) 70 self.assertEqual(cdp.mol[0].res[0].spin[5].name, '1HB') 71 self.assertEqual(cdp.mol[0].res[0].spin[6].num, 84) 72 self.assertEqual(cdp.mol[0].res[0].spin[6].name, '2HB') 73 self.assertEqual(cdp.mol[0].res[0].spin[7].num, 85) 74 self.assertEqual(cdp.mol[0].res[0].spin[7].name, 'CG') 75 self.assertEqual(cdp.mol[0].res[0].spin[8].num, 86) 76 self.assertEqual(cdp.mol[0].res[0].spin[8].name, 'OD1') 77 self.assertEqual(cdp.mol[0].res[0].spin[9].num, 87) 78 self.assertEqual(cdp.mol[0].res[0].spin[9].name, 'OD2') 79 self.assertEqual(cdp.mol[0].res[0].spin[10].num, 88) 80 self.assertEqual(cdp.mol[0].res[0].spin[10].name, 'C') 81 self.assertEqual(cdp.mol[0].res[0].spin[11].num, 89) 82 self.assertEqual(cdp.mol[0].res[0].spin[11].name, 'O')
83 84
86 """Load the glycine backbone amide N and Ca spins from a loaded protein PDB file.""" 87 88 # Read the PDB file. 89 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) 90 91 # Generate the sequence of nitrogen spins (1 molecule, all GLY residues, and only N spins). 92 self.interpreter.structure.load_spins(spin_id=':GLY@N') 93 94 # Append to the sequence the alpha carbon spins (1 molecule, all GLY residues, and only Ca spins). 95 self.interpreter.structure.load_spins(spin_id=':GLY@CA') 96 97 # Test some of the sequence. 98 self.assertEqual(len(cdp.mol), 1) 99 self.assertEqual(cdp.mol[0].name, 'Ap4Aase_res1-12_mol1') 100 self.assertEqual(len(cdp.mol[0].res), 3) 101 102 # 1st residue. 103 self.assertEqual(cdp.mol[0].res[0].num, 1) 104 self.assertEqual(cdp.mol[0].res[0].name, 'GLY') 105 self.assertEqual(len(cdp.mol[0].res[0].spin), 2) 106 self.assertEqual(cdp.mol[0].res[0].spin[0].num, 1) 107 self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'N') 108 self.assertEqual(cdp.mol[0].res[0].spin[1].num, 2) 109 self.assertEqual(cdp.mol[0].res[0].spin[1].name, 'CA') 110 111 # 2nd residue. 112 self.assertEqual(cdp.mol[0].res[1].num, 4) 113 self.assertEqual(cdp.mol[0].res[1].name, 'GLY') 114 self.assertEqual(len(cdp.mol[0].res[1].spin), 2) 115 self.assertEqual(cdp.mol[0].res[1].spin[0].num, 43) 116 self.assertEqual(cdp.mol[0].res[1].spin[0].name, 'N') 117 self.assertEqual(cdp.mol[0].res[1].spin[1].num, 45) 118 self.assertEqual(cdp.mol[0].res[1].spin[1].name, 'CA') 119 120 # 3rd residue. 121 self.assertEqual(cdp.mol[0].res[2].num, 12) 122 self.assertEqual(cdp.mol[0].res[2].name, 'GLY') 123 self.assertEqual(len(cdp.mol[0].res[2].spin), 2) 124 self.assertEqual(cdp.mol[0].res[2].spin[0].num, 144) 125 self.assertEqual(cdp.mol[0].res[2].spin[0].name, 'N') 126 self.assertEqual(cdp.mol[0].res[2].spin[1].num, 146) 127 self.assertEqual(cdp.mol[0].res[2].spin[1].name, 'CA')
128 129
131 """Load the glycine backbone amide N spins from a loaded protein PDB file.""" 132 133 # Read the PDB file. 134 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) 135 136 # Generate the sequence (1 molecule, all GLY residues, and only N spins). 137 self.interpreter.structure.load_spins(spin_id=':GLY@N') 138 139 # Test some of the sequence. 140 self.assertEqual(len(cdp.mol), 1) 141 self.assertEqual(cdp.mol[0].name, 'Ap4Aase_res1-12_mol1') 142 self.assertEqual(len(cdp.mol[0].res), 3) 143 144 # 1st residue. 145 self.assertEqual(cdp.mol[0].res[0].num, 1) 146 self.assertEqual(cdp.mol[0].res[0].name, 'GLY') 147 self.assertEqual(len(cdp.mol[0].res[0].spin), 1) 148 self.assertEqual(cdp.mol[0].res[0].spin[0].num, 1) 149 self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'N') 150 151 # 2nd residue. 152 self.assertEqual(cdp.mol[0].res[1].num, 4) 153 self.assertEqual(cdp.mol[0].res[1].name, 'GLY') 154 self.assertEqual(len(cdp.mol[0].res[1].spin), 1) 155 self.assertEqual(cdp.mol[0].res[1].spin[0].num, 43) 156 self.assertEqual(cdp.mol[0].res[1].spin[0].name, 'N') 157 158 # 3rd residue. 159 self.assertEqual(cdp.mol[0].res[2].num, 12) 160 self.assertEqual(cdp.mol[0].res[2].name, 'GLY') 161 self.assertEqual(len(cdp.mol[0].res[2].spin), 1) 162 self.assertEqual(cdp.mol[0].res[2].spin[0].num, 144) 163 self.assertEqual(cdp.mol[0].res[2].spin[0].name, 'N')
164 165
167 """Load the protein backbone amide N spins from a loaded PDB file.""" 168 169 # Read the PDB file. 170 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) 171 172 # Generate the sequence (1 molecule, all residues, and only N spins). 173 self.interpreter.structure.load_spins(spin_id='@N') 174 175 # Test some of the sequence. 176 self.assertEqual(len(cdp.mol), 1) 177 self.assertEqual(cdp.mol[0].name, 'Ap4Aase_res1-12_mol1') 178 self.assertEqual(len(cdp.mol[0].res), 12) 179 180 # 1st residue. 181 self.assertEqual(cdp.mol[0].res[0].num, 1) 182 self.assertEqual(cdp.mol[0].res[0].name, 'GLY') 183 self.assertEqual(len(cdp.mol[0].res[0].spin), 1) 184 self.assertEqual(cdp.mol[0].res[0].spin[0].num, 1) 185 self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'N') 186 187 # 2nd residue. 188 self.assertEqual(cdp.mol[0].res[1].num, 2) 189 self.assertEqual(cdp.mol[0].res[1].name, 'PRO') 190 self.assertEqual(len(cdp.mol[0].res[1].spin), 1) 191 self.assertEqual(cdp.mol[0].res[1].spin[0].num, 10) 192 self.assertEqual(cdp.mol[0].res[1].spin[0].name, 'N') 193 194 # 3rd residue. 195 self.assertEqual(cdp.mol[0].res[2].num, 3) 196 self.assertEqual(cdp.mol[0].res[2].name, 'LEU') 197 self.assertEqual(len(cdp.mol[0].res[2].spin), 1) 198 self.assertEqual(cdp.mol[0].res[2].spin[0].num, 24) 199 self.assertEqual(cdp.mol[0].res[2].spin[0].name, 'N') 200 201 # 4th residue. 202 self.assertEqual(cdp.mol[0].res[3].num, 4) 203 self.assertEqual(cdp.mol[0].res[3].name, 'GLY') 204 self.assertEqual(len(cdp.mol[0].res[3].spin), 1) 205 self.assertEqual(cdp.mol[0].res[3].spin[0].num, 43) 206 self.assertEqual(cdp.mol[0].res[3].spin[0].name, 'N') 207 208 # 5th residue. 209 self.assertEqual(cdp.mol[0].res[4].num, 5) 210 self.assertEqual(cdp.mol[0].res[4].name, 'SER') 211 self.assertEqual(len(cdp.mol[0].res[4].spin), 1) 212 self.assertEqual(cdp.mol[0].res[4].spin[0].num, 50) 213 self.assertEqual(cdp.mol[0].res[4].spin[0].name, 'N') 214 215 # 6th residue. 216 self.assertEqual(cdp.mol[0].res[5].num, 6) 217 self.assertEqual(cdp.mol[0].res[5].name, 'MET') 218 self.assertEqual(len(cdp.mol[0].res[5].spin), 1) 219 self.assertEqual(cdp.mol[0].res[5].spin[0].num, 61) 220 self.assertEqual(cdp.mol[0].res[5].spin[0].name, 'N') 221 222 # 7th residue. 223 self.assertEqual(cdp.mol[0].res[6].num, 7) 224 self.assertEqual(cdp.mol[0].res[6].name, 'ASP') 225 self.assertEqual(len(cdp.mol[0].res[6].spin), 1) 226 self.assertEqual(cdp.mol[0].res[6].spin[0].num, 78) 227 self.assertEqual(cdp.mol[0].res[6].spin[0].name, 'N') 228 229 # 8th residue. 230 self.assertEqual(cdp.mol[0].res[7].num, 8) 231 self.assertEqual(cdp.mol[0].res[7].name, 'SER') 232 self.assertEqual(len(cdp.mol[0].res[7].spin), 1) 233 self.assertEqual(cdp.mol[0].res[7].spin[0].num, 90) 234 self.assertEqual(cdp.mol[0].res[7].spin[0].name, 'N') 235 236 # 9th residue. 237 self.assertEqual(cdp.mol[0].res[8].num, 9) 238 self.assertEqual(cdp.mol[0].res[8].name, 'PRO') 239 self.assertEqual(len(cdp.mol[0].res[8].spin), 1) 240 self.assertEqual(cdp.mol[0].res[8].spin[0].num, 101) 241 self.assertEqual(cdp.mol[0].res[8].spin[0].name, 'N') 242 243 # 10th residue. 244 self.assertEqual(cdp.mol[0].res[9].num, 10) 245 self.assertEqual(cdp.mol[0].res[9].name, 'PRO') 246 self.assertEqual(len(cdp.mol[0].res[9].spin), 1) 247 self.assertEqual(cdp.mol[0].res[9].spin[0].num, 115) 248 self.assertEqual(cdp.mol[0].res[9].spin[0].name, 'N') 249 250 # 11th residue. 251 self.assertEqual(cdp.mol[0].res[10].num, 11) 252 self.assertEqual(cdp.mol[0].res[10].name, 'GLU') 253 self.assertEqual(len(cdp.mol[0].res[10].spin), 1) 254 self.assertEqual(cdp.mol[0].res[10].spin[0].num, 129) 255 self.assertEqual(cdp.mol[0].res[10].spin[0].name, 'N') 256 257 # 12th residue. 258 self.assertEqual(cdp.mol[0].res[11].num, 12) 259 self.assertEqual(cdp.mol[0].res[11].name, 'GLY') 260 self.assertEqual(len(cdp.mol[0].res[11].spin), 1) 261 self.assertEqual(cdp.mol[0].res[11].spin[0].num, 144) 262 self.assertEqual(cdp.mol[0].res[11].spin[0].name, 'N')
263 264
265 - def test_read(self):
266 """The sequence.read() test.""" 267 268 # Read the sequence. 269 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)
270 271
272 - def test_sequence_copy(self):
273 """Test the sequence.copy user function.""" 274 275 # First create some spins. 276 self.interpreter.spin.create(spin_name='A', spin_num=1, res_num=1) 277 self.interpreter.spin.create(spin_name='A', spin_num=2, res_num=1) 278 self.interpreter.spin.create(spin_name='B', spin_num=3, res_num=1) 279 self.interpreter.spin.create(spin_name='B2', spin_num=4, res_num=1) 280 self.interpreter.spin.create(spin_name='A', spin_num=1, res_num=2) 281 self.interpreter.spin.create(spin_name='A', spin_num=2, res_num=2) 282 self.interpreter.spin.create(spin_name='B', spin_num=3, res_num=2) 283 self.interpreter.spin.create(spin_name='B2', spin_num=4, res_num=2) 284 285 # Create a new data pipe to copy to. 286 self.interpreter.pipe.create('seq copy test', 'mf') 287 288 # Copy the sequence. 289 self.interpreter.sequence.copy(pipe_from='mf') 290 291 # Alias the data pipes. 292 pipe1 = ds['mf'] 293 pipe2 = ds['seq copy test'] 294 295 # Check the residue count. 296 self.assertEqual(len(pipe1.mol[0].res), len(pipe2.mol[0].res)) 297 298 # Check the spin counts. 299 for i in range(len(pipe1.mol[0].res)): 300 self.assertEqual(len(pipe1.mol[0].res[i].spin), len(pipe2.mol[0].res[i].spin))
301