def test_mmtf(self): path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) self.assertEqual(4, pdb.count()) tmp_path = tempfile.mkdtemp() print(tmp_path) mmtfWriter.write_mmtf_files(tmp_path, pdb) pdb = mmtfReader.read_mmtf_files(tmp_path) self.assertEqual(4, pdb.count())
def test_1J6T_models(self): print('test_1J6T_modelS') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '1J6T') structure = pdb.values().first() models = structure.get_models() self.assertEqual(3, len(models))
def test_4HHB_pandas(self): print('test_4HHB_structure') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '4HHB') structure = pdb.values().first() df = structure.to_pandas() self.assertEqual((4779, 13), df.shape)
def test_1J6T_chains_first_model(self): print('test_1J6T_chains_first_model') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path, first_model=True) pdb = pdb.filter(lambda t: t[0] == '1J6T') structure = pdb.values().first() chains = structure.get_chains() self.assertEqual(2, len(chains))
def test_4HHB_chains(self): print('test_4HHB_chains') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '4HHB') structure = pdb.values().first() chains = structure.get_chains() self.assertEqual(4, len(chains))
def test_4hhb(self): path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '4HHB') structure = pdb.values().first() self.assertEqual('1.0.0', structure.mmtf_version) self.assertEqual('UNKNOWN', structure.mmtf_producer) self.assertEqual( np.testing.assert_allclose( [63.150, 83.590, 53.800, 90.00, 99.34, 90.00], structure.unit_cell, atol=0.001), None) self.assertEqual(structure.space_group, 'P 1 21 1') self.assertEqual(4779, structure.num_atoms) self.assertEqual(801, structure.num_groups) self.assertEqual(14, structure.num_chains) self.assertEqual(1, structure.num_models) self.assertEqual( np.testing.assert_allclose([6.204, 6.913, 8.504], structure.x_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([16.869, 17.759, 17.378], structure.y_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([4.854, 4.607, 4.797], structure.z_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([49.05, 43.14, 24.80], structure.b_factor_list[0:3], atol=0.01), None) self.assertEqual( np.testing.assert_allclose([1.0, 1.0, 1.0], structure.occupancy_list[0:3], atol=0.01), None) self.assertListEqual([1, 2, 3], structure.atom_id_list[0:3].tolist()) self.assertListEqual(['', '', ''], structure.alt_loc_list[0:3].tolist()) self.assertListEqual(['A', 'A', 'A'], structure.chain_names[0:3].tolist()) self.assertListEqual(['A', 'A', 'A'], structure.chain_ids[0:3].tolist()) self.assertListEqual(['1', '1', '1'], structure.group_numbers[0:3].tolist()) self.assertListEqual(['VAL', 'VAL', 'VAL'], structure.group_names[0:3].tolist()) self.assertListEqual(['N', 'CA', 'C'], structure.atom_names[0:3].tolist()) self.assertListEqual(['N', 'C', 'C'], structure.elements[0:3].tolist()) self.assertListEqual(['L-PEPTIDE LINKING', 'L-PEPTIDE LINKING'], structure.chem_comp_types[0:2].tolist()) self.assertListEqual([True, True, True], structure.polymer[0:3].tolist()) self.assertListEqual([0, 0, 0], structure.entity_indices[0:3].tolist()) self.assertListEqual([0, 0, 0], structure.sequence_positions[0:3].tolist())
def test_4HHB_pandas_add_cols(self): print('test_4HHB_structure') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '4HHB') structure = pdb.values().first() df = structure.to_pandas( add_cols=['sequence_position', 'chem_comp_type']) self.assertEqual((4779, 15), df.shape)
def test_1J6T_model_first_model(self): print('test_1J6T_model_first_model') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path, first_model=True) pdb = pdb.filter(lambda t: t[0] == '1J6T') structure = pdb.values().first() model = structure.get_model(0) self.assertEqual(3555, model.num_atoms) self.assertEqual(144 + 85, model.num_groups) self.assertEqual(2, model.num_chains) self.assertEqual(1, model.num_models)
def test_4HHB_polychains(self): print('test_4HHB_polychains') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '4HHB') structure = pdb.values().first() chain = MmtfSubstructure(structure, 'A+B', chain_names=['A', 'B'], entity_types=['polymer']) self.assertEqual(1069 + 1123, chain.num_atoms) self.assertEqual(141 + 146, chain.num_groups) self.assertEqual(1 + 1, chain.num_chains) self.assertEqual(1, chain.num_models)
def test_1J6T_model_chains(self): print('test_1J6T_model_chains') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '1J6T') structure = pdb.values().first() model = structure.get_model(0) self.assertEqual(3555, model.num_atoms) self.assertEqual(144 + 85, model.num_groups) self.assertEqual(2, model.num_chains) self.assertEqual(1, model.num_models) chain = model.get_chain('A') self.assertEqual(2266, chain.num_atoms) self.assertEqual(144, chain.num_groups) self.assertEqual(1, chain.num_chains) self.assertEqual(1, chain.num_models) model = structure.get_model(1) self.assertEqual(3559, model.num_atoms) self.assertEqual(144 + 85 + 1, model.num_groups) self.assertEqual(3, model.num_chains) self.assertEqual(1, model.num_models) chain = model.get_chain('A') self.assertEqual(2266, chain.num_atoms) self.assertEqual(144, chain.num_groups) self.assertEqual(1, chain.num_chains) self.assertEqual(1, chain.num_models) chain = model.get_chain('B') self.assertEqual(1289, chain.num_atoms) self.assertEqual(85, chain.num_groups) self.assertEqual(1, chain.num_chains) self.assertEqual(1, chain.num_models) model = structure.get_model(2) self.assertEqual(3559, model.num_atoms) self.assertEqual(144 + 85 + 1, model.num_groups) self.assertEqual(3, model.num_chains) self.assertEqual(1, model.num_models) chain = model.get_chain('A') self.assertEqual(2266, chain.num_atoms) self.assertEqual(144, chain.num_groups) self.assertEqual(1, chain.num_chains) self.assertEqual(1, chain.num_models) chain = model.get_chain('B') self.assertEqual(1289, chain.num_atoms) self.assertEqual(85, chain.num_groups) self.assertEqual(1, chain.num_chains) self.assertEqual(1, chain.num_models)
def test_1J6T_structure_first_model(self): print('test_1J6T_structure') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path, first_model=True) pdb = pdb.filter(lambda t: t[0] == '1J6T') structure = pdb.values().first() # Check entity info self.assertEqual(2, len(structure.entity_list)) ids = structure.entities_to_pandas()['chain_ids'].tolist() self.assertEqual( 2, len(ids) ) # first model has only two entities (2nd, 3rd model have 3: +PO4) self.assertListEqual(['A'], ids[0]) self.assertListEqual(['B'], ids[1]) self.assertEqual(3555, structure.num_atoms) self.assertEqual(144 + 85, structure.num_groups) self.assertEqual(2, structure.num_chains) self.assertEqual(1, structure.num_models)
def test_4HHB_group_numbers(self): print('test_4HHB_chain_ids') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '4HHB') structure = pdb.values().first() chain = MmtfSubstructure(structure, 'HEM', chain_names=['A'], group_numbers=['1', '10']) self.assertEqual(43, chain.num_atoms) self.assertEqual(1, chain.num_groups) self.assertEqual(1, chain.num_chains) self.assertEqual(1, chain.num_models) chain = MmtfSubstructure(structure, 'HEM', group_names=['HEM']) self.assertEqual(43 * 4, chain.num_atoms) self.assertEqual(1 * 4, chain.num_groups) self.assertEqual(1 * 4, chain.num_chains) self.assertEqual(1, chain.num_models)
def test_1J6T_structure(self): print('test_1J6T_structure') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '1J6T') structure = pdb.values().first() # Check entity info #self.assertEqual(3, len(structure.entity_list)) self.assertEqual(2, len(structure.entity_list) ) # MMTF file only contains entities for first model ids = structure.entities_to_pandas()['chain_ids'].tolist() self.assertEqual(2, len(ids)) self.assertListEqual(['A'], ids[0]) self.assertListEqual(['B'], ids[1]) # self.assertListEqual(['C'], ids[2]) # PO3 missing in MMTF, present in model 2 and 3 self.assertEqual(3555 + 3559 + 3559, structure.num_atoms) self.assertEqual(144 + 85 + 144 + 1 + 85 + 144 + 85 + 1, structure.num_groups) self.assertEqual(2 + 3 + 3, structure.num_chains) self.assertEqual(3, structure.num_models)
def test_4HHB_structure(self): print('test_4HHB_structure') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '4HHB') structure = pdb.values().first() # Check metadata self.assertEqual('1.0.0', structure.mmtf_version) self.assertEqual('UNKNOWN', structure.mmtf_producer) self.assertEqual( np.testing.assert_allclose( [63.150, 83.590, 53.800, 90.00, 99.34, 90.00], structure.unit_cell, atol=0.001), None) self.assertEqual(structure.space_group, 'P 1 21 1') self.assertEqual(4779, structure.num_atoms) self.assertEqual(801, structure.num_groups) self.assertEqual(14, structure.num_chains) self.assertEqual(1, structure.num_models) # Check entity info ids = structure.entities_to_pandas()['chain_ids'].tolist() self.assertEqual(5, len(ids)) self.assertListEqual(['A', 'C'], ids[0]) # Hemoglobin alpha self.assertListEqual(['B', 'D'], ids[1]) # Hemoglobin beta self.assertListEqual(['E', 'G', 'H', 'J'], ids[2]) # Heme self.assertListEqual(['F', 'I'], ids[3]) # PO4 self.assertListEqual(['K', 'L', 'M', 'N'], ids[4]) # HOH # Check atom info self.assertEqual( np.testing.assert_allclose([6.204, 6.913, 8.504], structure.x_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([16.869, 17.759, 17.378], structure.y_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([4.854, 4.607, 4.797], structure.z_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([49.05, 43.14, 24.80], structure.b_factor_list[0:3], atol=0.01), None) self.assertEqual( np.testing.assert_allclose([1.0, 1.0, 1.0], structure.occupancy_list[0:3], atol=0.01), None) self.assertListEqual([1, 2, 3], structure.atom_id_list[0:3].tolist()) self.assertListEqual(['', '', ''], structure.alt_loc_list[0:3].tolist()) self.assertListEqual(['A', 'A', 'A'], structure.chain_names[0:3].tolist()) self.assertListEqual(['A', 'A', 'A'], structure.chain_ids[0:3].tolist()) self.assertListEqual(['1', '1', '1'], structure.group_numbers[0:3].tolist()) self.assertListEqual(['VAL', 'VAL', 'VAL'], structure.group_names[0:3].tolist()) self.assertListEqual(['N', 'CA', 'C'], structure.atom_names[0:3].tolist()) self.assertListEqual(['N', 'C', 'C'], structure.elements[0:3].tolist()) self.assertListEqual(['L-PEPTIDE LINKING', 'L-PEPTIDE LINKING'], structure.chem_comp_types[0:2].tolist()) self.assertListEqual([True, True, True], structure.polymer[0:3].tolist()) self.assertListEqual( [0, 0, 0], structure.entity_indices[0:3].tolist()) # hemoglobin alpha self.assertListEqual( [1, 1, 1], structure.entity_indices[1069:1072].tolist()) # hemoglobin beta self.assertListEqual( [4, 4, 4], structure.entity_indices[4776:4779].tolist()) # water self.assertListEqual([0, 0, 0], structure.sequence_positions[0:3].tolist())
def test_mmtf(self): path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) self.assertEqual(4, pdb.count())
def test_4HHB_chain(self): print('test_4HHB_chain') path = '../../../resources/files/' pdb = mmtfReader.read_mmtf_files(path) pdb = pdb.filter(lambda t: t[0] == '4HHB') structure = pdb.values().first() chain = structure.get_chain('A') self.assertEqual(1069, chain.num_atoms) self.assertEqual(141, chain.num_groups) self.assertEqual(1, chain.num_chains) self.assertEqual(1, chain.num_models) self.assertEqual( np.testing.assert_allclose([6.204, 6.913, 8.504], chain.x_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([16.869, 17.759, 17.378], chain.y_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([4.854, 4.607, 4.797], chain.z_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([49.05, 43.14, 24.80], chain.b_factor_list[0:3], atol=0.01), None) self.assertEqual( np.testing.assert_allclose([1.0, 1.0, 1.0], chain.occupancy_list[0:3], atol=0.01), None) self.assertListEqual([1, 2, 3], chain.atom_id_list[0:3].tolist()) self.assertListEqual(['', '', ''], chain.alt_loc_list[0:3].tolist()) self.assertListEqual(['A', 'A', 'A'], chain.chain_names[0:3].tolist()) self.assertListEqual(['A', 'A', 'A'], chain.chain_ids[0:3].tolist()) self.assertListEqual(['1', '1', '1'], chain.group_numbers[0:3].tolist()) self.assertListEqual(['VAL', 'VAL', 'VAL'], chain.group_names[0:3].tolist()) self.assertListEqual(['N', 'CA', 'C'], chain.atom_names[0:3].tolist()) self.assertListEqual(['N', 'C', 'C'], chain.elements[0:3].tolist()) self.assertListEqual(['L-PEPTIDE LINKING', 'L-PEPTIDE LINKING'], chain.chem_comp_types[0:2].tolist()) self.assertListEqual([True, True, True], chain.polymer[0:3].tolist()) self.assertListEqual([0, 0, 0], chain.entity_indices[0:3].tolist()) self.assertListEqual([0, 0, 0], chain.sequence_positions[0:3].tolist()) chain = structure.get_chain('B') self.assertEqual(1123, chain.num_atoms) self.assertEqual(146, chain.num_groups) self.assertEqual(1, chain.num_chains) self.assertEqual(1, chain.num_models) self.assertEqual( np.testing.assert_allclose([9.223, 8.694, 9.668], chain.x_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([-20.614, -20.026, -21.068], chain.y_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([1.365, -0.123, -1.645], chain.z_coord_list[0:3], atol=0.001), None) self.assertEqual( np.testing.assert_allclose([46.08, 70.96, 69.74], chain.b_factor_list[0:3], atol=0.01), None) self.assertEqual( np.testing.assert_allclose([1.0, 1.0, 1.0], chain.occupancy_list[0:3], atol=0.01), None) self.assertListEqual([1070, 1071, 1072], chain.atom_id_list[0:3].tolist()) self.assertListEqual(['', '', ''], chain.alt_loc_list[0:3].tolist()) self.assertListEqual(['B', 'B', 'B'], chain.chain_names[0:3].tolist()) self.assertListEqual(['B', 'B', 'B'], chain.chain_ids[0:3].tolist()) self.assertListEqual(['1', '1', '1'], chain.group_numbers[0:3].tolist()) self.assertListEqual(['VAL', 'VAL', 'VAL'], chain.group_names[0:3].tolist()) self.assertListEqual(['N', 'CA', 'C'], chain.atom_names[0:3].tolist()) self.assertListEqual(['N', 'C', 'C'], chain.elements[0:3].tolist()) self.assertListEqual(['L-PEPTIDE LINKING', 'L-PEPTIDE LINKING'], chain.chem_comp_types[0:2].tolist()) self.assertListEqual([True, True, True], chain.polymer[0:3].tolist()) self.assertListEqual([1, 1, 1], chain.entity_indices[0:3].tolist()) self.assertListEqual([0, 0, 0], chain.sequence_positions[0:3].tolist())
def test_mmtf(self): path = './resources/files/' pdb = mmtfReader.read_mmtf_files(path, self.sc) self.assertTrue(pdb.count() == 3)