Esempio n. 1
0
    def test_calculate_interface(self):
        atoms, residues, chains = parse_complex_from_file(
            self.golden_data_path + '1PPErec.pdb')
        receptor = Complex(chains, atoms)
        atoms, residues, chains = parse_complex_from_file(
            self.golden_data_path + '1PPElig.pdb')
        ligand = Complex(chains, atoms)
        adapter = DFIREAdapter(receptor, ligand)
        receptor_residue_indexes, ligand_residue_indexes, dist_matrix, atom_indexes = get_interface_residues(
            adapter.receptor_model, adapter.ligand_model, max_cutoff=1.)
        receptor_residues = []
        for residue_index in receptor_residue_indexes:
            residue = receptor.residues[residue_index]
            receptor_residues.append("%s.%d" % (residue.name, residue.number))
        ligand_residues = []
        for residue_index in ligand_residue_indexes:
            residue = ligand.residues[residue_index]
            ligand_residues.append("%s.%d" % (residue.name, residue.number))

        # Checked according to UCSF chimera
        expected_receptor = [
            'SER.61', 'ALA.56', 'TYR.59', 'TYR.94', 'GLY.62', 'ILE.63',
            'MET.104', 'ILE.106'
        ]
        expected_ligand = [
            'LEU.7', 'LEU.8', 'GLU.24', 'HIS.25', 'GLY.26', 'TYR.27', 'CYS.28'
        ]

        assert len(set(expected_receptor) & set(receptor_residues)) == 8
        assert len(set(expected_ligand) & set(ligand_residues)) == 7
Esempio n. 2
0
 def test_calculate_DFIRE_1AY7(self):
     atoms, residues, chains = parse_complex_from_file(
         self.golden_data_path + '1AY7rec.pdb')
     receptor = Complex(chains, atoms)
     atoms, residues, chains = parse_complex_from_file(
         self.golden_data_path + '1AY7lig.pdb')
     ligand = Complex(chains, atoms)
     adapter = DFIREAdapter(receptor, ligand)
     assert_almost_equal(
         -20.7486309727,
         self.dfire(adapter.receptor_model,
                    adapter.receptor_model.coordinates[0],
                    adapter.ligand_model,
                    adapter.ligand_model.coordinates[0]))
Esempio n. 3
0
 def test_calculate_DFIRE_1EAW(self):
     atoms, _, chains = parse_complex_from_file(self.golden_data_path /
                                                '1EAWrec.pdb')
     receptor = Complex(chains, atoms)
     atoms, _, chains = parse_complex_from_file(self.golden_data_path /
                                                '1EAWlig.pdb')
     ligand = Complex(chains, atoms)
     adapter = DFIREAdapter(receptor, ligand)
     assert_almost_equal(
         -16.2182794457,
         self.dfire(adapter.receptor_model,
                    adapter.receptor_model.coordinates[0],
                    adapter.ligand_model,
                    adapter.ligand_model.coordinates[0]))
Esempio n. 4
0

def usage():
    print("Usage: %s receptor.pdb ligand.pdb" % sys.argv[0])


if __name__ == "__main__":
    if len(sys.argv[1:]) != 2:
        usage()
        raise SystemExit('Wrong command line')

    atoms, residues, chains = parse_complex_from_file(sys.argv[1])
    receptor = Complex(chains, atoms)
    atoms, residues, chains = parse_complex_from_file(sys.argv[2])
    ligand = Complex(chains, atoms)
    adapter = DFIREAdapter(receptor, ligand)

    # 5A of cutoff to be in the same line as the ASA value used in the original paper
    receptor_residue_indexes, ligand_residue_indexes, dist_matrix, atom_indexes = get_interface_residues(
        adapter.receptor_model, adapter.ligand_model, max_cutoff=5.)
    rotamer_library = InterfaceSurfaceLibrary()

    print("%d receptor interface residues" % len(receptor_residue_indexes))
    receptor_residues = []
    for residue_index in receptor_residue_indexes:
        residue = receptor.residues[residue_index]
        chi_angles = calculate_chi_angles(residue)
        for chi, angle in chi_angles.items():
            try:
                chi_angles[chi] = math.degrees(angle)
            except TypeError: