Source code for conkit.io.tests.test_pdb

"""Testing facility for conkit.io.PdbIO"""

__author__ = "Felix Simkovic"
__date__ = "26 Oct 2016"

import os
import unittest

from conkit.io.pdb import PdbParser
from conkit.io.tests.helpers import ParserTestCase


[docs]class TestPdbIO(ParserTestCase):
[docs] def test_read_1(self): content = """ATOM 1 N TYR A 36 39.107 51.628 3.103 0.50 43.13 N ATOM 2 CA TYR A 36 38.300 50.814 2.204 0.50 41.80 C ATOM 3 O TYR A 36 38.712 48.587 1.405 0.50 41.03 O ATOM 4 CB TYR A 36 37.586 51.694 1.175 0.50 41.61 C ATOM 5 N PHE A 86 32.465 47.498 5.487 0.50 25.81 N ATOM 6 CA PHE A 86 32.670 48.303 4.288 0.50 26.45 C ATOM 7 O PHE A 86 31.469 50.326 3.758 0.50 28.47 O ATOM 8 CB PHE A 86 32.977 47.392 3.090 0.50 25.35 C ATOM 9 N TRP A 171 23.397 37.507 -1.161 0.50 18.04 N ATOM 10 CA TRP A 171 23.458 36.846 0.143 0.50 20.46 C ATOM 11 O TRP A 171 22.235 34.954 0.951 0.50 22.45 O ATOM 12 CB TRP A 171 23.647 37.866 1.275 0.50 18.83 C ATOM 13 N PHE A 208 32.221 42.624 -5.829 0.50 19.96 N ATOM 14 CA PHE A 208 31.905 43.710 -4.909 0.50 20.31 C ATOM 15 O PHE A 208 32.852 45.936 -5.051 0.50 17.69 O ATOM 16 CB PHE A 208 31.726 43.102 -3.518 0.50 19.90 C END """ f_name = self.tempfile(content=content) with open(f_name, "r") as f_in: contact_file = PdbParser().read(f_in, distance_cutoff=8, atom_type="CB") contact_map1 = contact_file.top_map self.assertEqual(contact_file.original_file_format, 'pdb') self.assertEqual(contact_map1.original_file_format, 'pdb') self.assertEqual(1, len(contact_file)) self.assertEqual(6, len(contact_map1)) self.assertEqual([36, 86], [c.res1_seq for c in contact_map1 if c.true_positive]) self.assertEqual([86, 208], [c.res2_seq for c in contact_map1 if c.true_positive]) self.assertEqual([0.934108, 0.920229], [c.raw_score for c in contact_map1 if c.true_positive])
[docs] def test_read_2(self): content = """ATOM 1 N TYR A 36 39.107 51.628 3.103 0.50 43.13 N ATOM 2 CA TYR A 36 38.300 50.814 2.204 0.50 41.80 C ATOM 3 O TYR A 36 38.712 48.587 1.405 0.50 41.03 O ATOM 4 CB TYR A 36 37.586 51.694 1.175 0.50 41.61 C ATOM 5 N PHE A 86 32.465 47.498 5.487 0.50 25.81 N ATOM 6 CA PHE A 86 32.670 48.303 4.288 0.50 26.45 C ATOM 7 O PHE A 86 31.469 50.326 3.758 0.50 28.47 O ATOM 8 CB PHE A 86 32.977 47.392 3.090 0.50 25.35 C ATOM 9 N TRP A 171 23.397 37.507 -1.161 0.50 18.04 N ATOM 10 CA TRP A 171 23.458 36.846 0.143 0.50 20.46 C ATOM 11 O TRP A 171 22.235 34.954 0.951 0.50 22.45 O ATOM 12 CB TRP A 171 23.647 37.866 1.275 0.50 18.83 C ATOM 13 N PHE A 208 32.221 42.624 -5.829 0.50 19.96 N ATOM 14 CA PHE A 208 31.905 43.710 -4.909 0.50 20.31 C ATOM 15 O PHE A 208 32.852 45.936 -5.051 0.50 17.69 O ATOM 16 CB PHE A 208 31.726 43.102 -3.518 0.50 19.90 C END """ f_name = self.tempfile(content=content) with open(f_name, "r") as f_in: contact_file = PdbParser().read(f_in, distance_cutoff=8, atom_type="CA") contact_map1 = contact_file.top_map self.assertEqual(1, len(contact_file)) self.assertEqual(6, len(contact_map1)) self.assertEqual([36], [c.res1_seq for c in contact_map1 if c.true_positive]) self.assertEqual([86], [c.res2_seq for c in contact_map1 if c.true_positive]) self.assertEqual([0.934927], [c.raw_score for c in contact_map1 if c.true_positive])
[docs] def test_read_3(self): content = """ATOM 1 N TYR A 36 39.107 51.628 3.103 0.50 43.13 N ATOM 2 CA TYR A 36 38.300 50.814 2.204 0.50 41.80 C ATOM 3 O TYR A 36 38.712 48.587 1.405 0.50 41.03 O ATOM 4 CB TYR A 36 37.586 51.694 1.175 0.50 41.61 C ATOM 5 N PHE A 86 32.465 47.498 5.487 0.50 25.81 N ATOM 6 CA PHE A 86 32.670 48.303 4.288 0.50 26.45 C ATOM 7 O PHE A 86 31.469 50.326 3.758 0.50 28.47 O ATOM 8 CB PHE A 86 32.977 47.392 3.090 0.50 25.35 C ATOM 9 N TRP A 171 23.397 37.507 -1.161 0.50 18.04 N ATOM 10 CA TRP A 171 23.458 36.846 0.143 0.50 20.46 C ATOM 11 O TRP A 171 22.235 34.954 0.951 0.50 22.45 O ATOM 12 CB TRP A 171 23.647 37.866 1.275 0.50 18.83 C ATOM 13 N PHE A 208 32.221 42.624 -5.829 0.50 19.96 N ATOM 14 CA PHE A 208 31.905 43.710 -4.909 0.50 20.31 C ATOM 15 O PHE A 208 32.852 45.936 -5.051 0.50 17.69 O ATOM 16 CB PHE A 208 31.726 43.102 -3.518 0.50 19.90 C END """ f_name = self.tempfile(content=content) with open(f_name, "r") as f_in: contact_file = PdbParser().read(f_in, distance_cutoff=7, atom_type="CB") contact_map1 = contact_file.top_map self.assertEqual(1, len(contact_file)) self.assertEqual(6, len(contact_map1)) self.assertEqual([36], [c.res1_seq for c in contact_map1 if c.true_positive]) self.assertEqual([86], [c.res2_seq for c in contact_map1 if c.true_positive]) self.assertEqual([0.934108], [c.raw_score for c in contact_map1 if c.true_positive])
[docs] def test_read_4(self): content = """ATOM 1 N TYR A 36 39.107 51.628 3.103 0.50 43.13 N ATOM 2 CA TYR A 36 38.300 50.814 2.204 0.50 41.80 C ATOM 3 O TYR A 36 38.712 48.587 1.405 0.50 41.03 O ATOM 4 CB TYR A 36 37.586 51.694 1.175 0.50 41.61 C ATOM 5 N PHE A 86 32.465 47.498 5.487 0.50 25.81 N ATOM 6 CA PHE A 86 32.670 48.303 4.288 0.50 26.45 C ATOM 7 O PHE A 86 31.469 50.326 3.758 0.50 28.47 O ATOM 8 CB PHE A 86 32.977 47.392 3.090 0.50 25.35 C TER ATOM 9 N TRP B 171 23.397 37.507 -1.161 0.50 18.04 N ATOM 10 CA TRP B 171 23.458 36.846 0.143 0.50 20.46 C ATOM 11 O TRP B 171 22.235 34.954 0.951 0.50 22.45 O ATOM 12 CB TRP B 171 23.647 37.866 1.275 0.50 18.83 C ATOM 13 N PHE B 208 32.221 42.624 -5.829 0.50 19.96 N ATOM 14 CA PHE B 208 31.905 43.710 -4.909 0.50 20.31 C ATOM 15 O PHE B 208 32.852 45.936 -5.051 0.50 17.69 O ATOM 16 CB PHE B 208 31.726 43.102 -3.518 0.50 19.90 C END """ f_name = self.tempfile(content=content) with open(f_name, "r") as f_in: contact_file = PdbParser().read(f_in, distance_cutoff=8, atom_type="CB") contact_map1 = contact_file["A"] # chain A contact_map2 = contact_file["B"] # chain B contact_map3 = contact_file["AB"] # chain AB contact_map4 = contact_file["BA"] # chain BA self.assertEqual(4, len(contact_file)) self.assertEqual(1, len(contact_map1)) self.assertEqual(["A", "A"], [contact_map1.top_contact.res1_chain, contact_map1.top_contact.res2_chain]) self.assertEqual([36, 86], [contact_map1.top_contact.res1_seq, contact_map1.top_contact.res2_seq]) self.assertEqual(1, len(contact_map2)) self.assertEqual(["B", "B"], [contact_map2.top_contact.res1_chain, contact_map2.top_contact.res2_chain]) self.assertEqual([171, 208], [contact_map2.top_contact.res1_seq, contact_map2.top_contact.res2_seq]) self.assertEqual(4, len(contact_map3)) self.assertEqual(["A", "B"], [contact_map3.top_contact.res1_chain, contact_map3.top_contact.res2_chain]) self.assertEqual([36, 171], [contact_map3.top_contact.res1_seq, contact_map3.top_contact.res2_seq]) self.assertEqual(4, len(contact_map4)) self.assertEqual(["B", "A"], [contact_map4.top_contact.res1_chain, contact_map4.top_contact.res2_chain]) self.assertEqual([171, 36], [contact_map4.top_contact.res1_seq, contact_map4.top_contact.res2_seq])
[docs] def test_read_5(self): content = """ATOM 1 N TYR A 36 39.107 51.628 3.103 0.50 43.13 N ATOM 2 CA TYR A 36 38.300 50.814 2.204 0.50 41.80 C ATOM 3 O TYR A 36 38.712 48.587 1.405 0.50 41.03 O ATOM 4 CB TYR A 36 37.586 51.694 1.175 0.50 41.61 C ATOM 5 N PHE A 86 32.465 47.498 5.487 0.50 25.81 N ATOM 6 CA PHE A 86 32.670 48.303 4.288 0.50 26.45 C ATOM 7 O PHE A 86 31.469 50.326 3.758 0.50 28.47 O ATOM 8 CB PHE A 86 32.977 47.392 3.090 0.50 25.35 C ATOM 9 N TRP A 171 23.397 37.507 -1.161 0.50 18.04 N ATOM 10 CA TRP A 171 23.458 36.846 0.143 0.50 20.46 C ATOM 11 O TRP A 171 22.235 34.954 0.951 0.50 22.45 O ATOM 12 CB TRP A 171 23.647 37.866 1.275 0.50 18.83 C ATOM 13 N PHE A 208 32.221 42.624 -5.829 0.50 19.96 N ATOM 14 CA PHE A 208 31.905 43.710 -4.909 0.50 20.31 C ATOM 15 O PHE A 208 32.852 45.936 -5.051 0.50 17.69 O ATOM 16 CB PHE A 208 31.726 43.102 -3.518 0.50 19.90 C END """ f_name = self.tempfile(content=content) with open(f_name, "r") as f_in: contact_file = PdbParser().read(f_in, distance_cutoff=0, atom_type="CB") contact_map1 = contact_file.top_map self.assertEqual(1, len(contact_file)) self.assertEqual(6, len(contact_map1)) self.assertEqual([36, 36, 36, 86, 86, 171], [c.res1_seq for c in contact_map1 if c.true_positive]) self.assertEqual([86, 171, 208, 171, 208, 208], [c.res2_seq for c in contact_map1 if c.true_positive])
if __name__ == "__main__": unittest.main(verbosity=2)