Author: bugman Date: Fri Feb 20 11:49:51 2015 New Revision: 27695 URL: http://svn.gna.org/viewcvs/relax?rev=27695&view=rev Log: Created the Structure.test_bug_23295_ss_metadata_merge system test. This is to catch bug #23295 (https://gna.org/bugs/?23295), the PDB secondary structure HELIX and SHEET records not updated when merging molecules. This uses the '2BE6_secondary_structure.pdb' structure file and 'test.py' relax script contents as the test, checking the HELIX and SHEET records. Added: trunk/test_suite/shared_data/structures/2BE6_secondary_structure.pdb Modified: trunk/test_suite/system_tests/structure.py Added: trunk/test_suite/shared_data/structures/2BE6_secondary_structure.pdb URL: http://svn.gna.org/viewcvs/relax/trunk/test_suite/shared_data/structures/2BE6_secondary_structure.pdb?rev=27695&view=auto ============================================================================== --- trunk/test_suite/shared_data/structures/2BE6_secondary_structure.pdb (added) +++ trunk/test_suite/shared_data/structures/2BE6_secondary_structure.pdb Fri Feb 20 11:49:51 2015 @@ -0,0 +1,58 @@ +HELIX 1 1 THR A 5 ASP A 20 1 16 +HELIX 2 2 THR A 28 LEU A 39 1 12 +HELIX 3 3 THR A 44 ASP A 56 1 13 +HELIX 4 4 PHE A 65 MET A 76 1 12 +HELIX 5 5 SER A 81 ASP A 93 1 13 +HELIX 6 6 SER A 101 LEU A 112 1 12 +HELIX 7 7 THR A 117 ASP A 129 1 13 +HELIX 8 8 TYR A 138 THR A 146 1 9 +HELIX 9 9 VAL D 1615 GLY D 1638 1 24 +HELIX 10 10 THR B 5 ASP B 20 1 16 +HELIX 11 11 THR B 28 LEU B 39 1 12 +HELIX 12 12 THR B 44 ASP B 56 1 13 +HELIX 13 13 PHE B 65 ASP B 78 1 14 +HELIX 14 14 GLU B 82 ASP B 93 1 12 +HELIX 15 15 SER B 101 GLY B 113 1 13 +HELIX 16 16 THR B 117 ASP B 129 1 13 +HELIX 17 17 TYR B 138 MET B 145 1 8 +HELIX 18 18 GLU E 1612 GLN E 1625 1 14 +HELIX 19 19 THR C 5 ASP C 20 1 16 +HELIX 20 20 THR C 28 LEU C 39 1 12 +HELIX 21 21 THR C 44 ASP C 56 1 13 +HELIX 22 22 PHE C 65 LYS C 75 1 11 +HELIX 23 23 GLU C 82 ASP C 93 1 12 +HELIX 24 24 SER C 101 LEU C 112 1 12 +HELIX 25 25 THR C 117 ASP C 129 1 13 +HELIX 26 26 TYR C 138 MET C 145 1 8 +HELIX 27 27 LYS F 1617 GLU F 1636 1 20 +SHEET 1 A 2 THR A 26 ILE A 27 0 +SHEET 2 A 2 ILE A 63 ASP A 64 -1 O ILE A 63 N ILE A 27 +SHEET 1 B 2 TYR A 99 ILE A 100 0 +SHEET 2 B 2 VAL A 136 ASN A 137 -1 O VAL A 136 N ILE A 100 +SHEET 1 C 2 THR B 26 ILE B 27 0 +SHEET 2 C 2 ILE B 63 ASP B 64 -1 O ILE B 63 N ILE B 27 +SHEET 1 D 2 TYR B 99 ILE B 100 0 +SHEET 2 D 2 VAL B 136 ASN B 137 -1 O VAL B 136 N ILE B 100 +SHEET 1 E 2 THR C 26 ILE C 27 0 +SHEET 2 E 2 ILE C 63 ASP C 64 -1 O ILE C 63 N ILE C 27 +SHEET 1 F 2 TYR C 99 ILE C 100 0 +SHEET 2 F 2 VAL C 136 ASN C 137 -1 O VAL C 136 N ILE C 100 +ATOM 1 N GLN A 3 -60.666 10.102 -15.189 1.00 45.02 N +ATOM 2 CA GLN A 3 -59.700 9.668 -14.130 1.00 44.75 C +TER 1125 THR A 146 +ATOM 1126 N GLU D1612 -37.971 8.936 -10.792 1.00 53.47 N +ATOM 1127 CA GLU D1612 -36.823 8.395 -11.580 1.00 53.22 C +TER 1362 VAL D1640 +ATOM 1363 N LEU B 4 -31.701 6.217 18.025 1.00 34.14 N +ATOM 1364 CA LEU B 4 -30.741 7.335 17.723 1.00 34.28 C +TER 2461 THR B 146 +ATOM 2462 N GLU E1612 -30.878 6.788 -3.987 1.00 23.15 N +ATOM 2463 CA GLU E1612 -30.212 5.774 -3.112 1.00 23.48 C +TER 2568 GLN E1625 +ATOM 2569 N LEU C 4 -15.700 1.591 -13.009 1.00 30.41 N +ATOM 2570 CA LEU C 4 -14.296 1.964 -13.370 1.00 29.61 C +TER 3661 THR C 146 +ATOM 3662 N VAL F1615 -13.922 9.423 -41.313 1.00 35.39 N +ATOM 3663 CA VAL F1615 -14.225 8.920 -39.939 1.00 35.66 C +TER 3857 GLU F1636 +END Modified: trunk/test_suite/system_tests/structure.py URL: http://svn.gna.org/viewcvs/relax/trunk/test_suite/system_tests/structure.py?rev=27695&r1=27694&r2=27695&view=diff ============================================================================== --- trunk/test_suite/system_tests/structure.py (original) +++ trunk/test_suite/system_tests/structure.py Fri Feb 20 11:49:51 2015 @@ -926,6 +926,120 @@ self.assertEqual(len(contents), len(lines)) for i in range(len(lines)): self.assertEqual(contents[i], lines[i]) + + + def test_bug_23295_ss_metadata_merge(self): + """Catch U{bug #23295<https://gna.org/bugs/?23295>}, the PDB secondary structure HELIX and SHEET records not updated when merging molecules.""" + + # Path of the structure file. + path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'structures' + + # Load the file. + self.interpreter.structure.read_pdb('2BE6_secondary_structure.pdb', dir=path, read_mol=[1, 4], set_mol_name='CaM A') + self.interpreter.structure.read_pdb('2BE6_secondary_structure.pdb', dir=path, read_mol=[2, 5], set_mol_name='CaM B') + self.interpreter.structure.read_pdb('2BE6_secondary_structure.pdb', dir=path, read_mol=[3, 6], set_mol_name='CaM C') + + # Create a PDB file. + file = DummyFileObject() + self.interpreter.structure.write_pdb(file=file, force=True) + + # The HELIX and SHEET contents, as they should be. + # First, the original contents: + # "HELIX 1 1 THR A 5 ASP A 20 1 16 " + # "HELIX 2 2 THR A 28 LEU A 39 1 12 " + # "HELIX 3 3 THR A 44 ASP A 56 1 13 " + # "HELIX 4 4 PHE A 65 MET A 76 1 12 " + # "HELIX 5 5 SER A 81 ASP A 93 1 13 " + # "HELIX 6 6 SER A 101 LEU A 112 1 12 " + # "HELIX 7 7 THR A 117 ASP A 129 1 13 " + # "HELIX 8 8 TYR A 138 THR A 146 1 9 " + # "HELIX 9 9 VAL D 1615 GLY D 1638 1 24 " + # "HELIX 10 10 THR B 5 ASP B 20 1 16 " + # "HELIX 11 11 THR B 28 LEU B 39 1 12 " + # "HELIX 12 12 THR B 44 ASP B 56 1 13 " + # "HELIX 13 13 PHE B 65 ASP B 78 1 14 " + # "HELIX 14 14 GLU B 82 ASP B 93 1 12 " + # "HELIX 15 15 SER B 101 GLY B 113 1 13 " + # "HELIX 16 16 THR B 117 ASP B 129 1 13 " + # "HELIX 17 17 TYR B 138 MET B 145 1 8 " + # "HELIX 18 18 GLU E 1612 GLN E 1625 1 14 " + # "HELIX 19 19 THR C 5 ASP C 20 1 16 " + # "HELIX 20 20 THR C 28 LEU C 39 1 12 " + # "HELIX 21 21 THR C 44 ASP C 56 1 13 " + # "HELIX 22 22 PHE C 65 LYS C 75 1 11 " + # "HELIX 23 23 GLU C 82 ASP C 93 1 12 " + # "HELIX 24 24 SER C 101 LEU C 112 1 12 " + # "HELIX 25 25 THR C 117 ASP C 129 1 13 " + # "HELIX 26 26 TYR C 138 MET C 145 1 8 " + # "HELIX 27 27 LYS F 1617 GLU F 1636 1 20 " + # "SHEET 1 A 2 THR A 26 ILE A 27 0 " + # "SHEET 2 A 2 ILE A 63 ASP A 64 -1 O ILE A 63 N ILE A 27 " + # "SHEET 1 B 2 TYR A 99 ILE A 100 0 " + # "SHEET 2 B 2 VAL A 136 ASN A 137 -1 O VAL A 136 N ILE A 100 " + # "SHEET 1 C 2 THR B 26 ILE B 27 0 " + # "SHEET 2 C 2 ILE B 63 ASP B 64 -1 O ILE B 63 N ILE B 27 " + # "SHEET 1 D 2 TYR B 99 ILE B 100 0 " + # "SHEET 2 D 2 VAL B 136 ASN B 137 -1 O VAL B 136 N ILE B 100 " + # "SHEET 1 E 2 THR C 26 ILE C 27 0 " + # "SHEET 2 E 2 ILE C 63 ASP C 64 -1 O ILE C 63 N ILE C 27 " + # "SHEET 1 F 2 TYR C 99 ILE C 100 0 " + # "SHEET 2 F 2 VAL C 136 ASN C 137 -1 O VAL C 136 N ILE C 100 " + # Then the modified contents: + contents = [ + "HELIX 1 1 THR A 5 ASP A 20 1 16 \n", + "HELIX 2 2 THR A 28 LEU A 39 1 12 \n", + "HELIX 3 3 THR A 44 ASP A 56 1 13 \n", + "HELIX 4 4 PHE A 65 MET A 76 1 12 \n", + "HELIX 5 5 SER A 81 ASP A 93 1 13 \n", + "HELIX 6 6 SER A 101 LEU A 112 1 12 \n", + "HELIX 7 7 THR A 117 ASP A 129 1 13 \n", + "HELIX 8 8 TYR A 138 THR A 146 1 9 \n", + "HELIX 9 9 VAL A 1615 GLY A 1638 1 24 \n", + "HELIX 10 10 THR B 5 ASP B 20 1 16 \n", + "HELIX 11 11 THR B 28 LEU B 39 1 12 \n", + "HELIX 12 12 THR B 44 ASP B 56 1 13 \n", + "HELIX 13 13 PHE B 65 ASP B 78 1 14 \n", + "HELIX 14 14 GLU B 82 ASP B 93 1 12 \n", + "HELIX 15 15 SER B 101 GLY B 113 1 13 \n", + "HELIX 16 16 THR B 117 ASP B 129 1 13 \n", + "HELIX 17 17 TYR B 138 MET B 145 1 8 \n", + "HELIX 18 18 GLU B 1612 GLN B 1625 1 14 \n", + "HELIX 19 19 THR C 5 ASP C 20 1 16 \n", + "HELIX 20 20 THR C 28 LEU C 39 1 12 \n", + "HELIX 21 21 THR C 44 ASP C 56 1 13 \n", + "HELIX 22 22 PHE C 65 LYS C 75 1 11 \n", + "HELIX 23 23 GLU C 82 ASP C 93 1 12 \n", + "HELIX 24 24 SER C 101 LEU C 112 1 12 \n", + "HELIX 25 25 THR C 117 ASP C 129 1 13 \n", + "HELIX 26 26 TYR C 138 MET C 145 1 8 \n", + "HELIX 27 27 LYS C 1617 GLU C 1636 1 20 \n", + "SHEET 1 A 2 THR A 26 ILE A 27 0 \n", + "SHEET 2 A 2 ILE A 63 ASP A 64 -1 O ILE A 63 N ILE A 27 \n", + "SHEET 1 B 2 TYR A 99 ILE A 100 0 \n", + "SHEET 2 B 2 VAL A 136 ASN A 137 -1 O VAL A 136 N ILE A 100 \n", + "SHEET 1 C 2 THR B 26 ILE B 27 0 \n", + "SHEET 2 C 2 ILE B 63 ASP B 64 -1 O ILE B 63 N ILE B 27 \n", + "SHEET 1 D 2 TYR B 99 ILE B 100 0 \n", + "SHEET 2 D 2 VAL B 136 ASN B 137 -1 O VAL B 136 N ILE B 100 \n", + "SHEET 1 E 2 THR C 26 ILE C 27 0 \n", + "SHEET 2 E 2 ILE C 63 ASP C 64 -1 O ILE C 63 N ILE C 27 \n", + "SHEET 1 F 2 TYR C 99 ILE C 100 0 \n", + "SHEET 2 F 2 VAL C 136 ASN C 137 -1 O VAL C 136 N ILE C 100 \n", + ] + + # Check the created PDB file. + lines = file.readlines() + index = 0 + for line in lines: + # Skip non-secondary structure records. + if not search('^HELIX', line) and not search('^SHEET', line): + continue + + # Check the line. + self.assertEqual(contents[index], line) + + # Increment the secondary structure index. + index += 1 def test_bug_sr_2998_broken_conect_records(self):