import openpharmacophore as oph

Aromatic interactions

In this notebook we explore aromatic interactions between proteins and ligands

pdb_path = "../../data/1xdn.pdb"
protein = oph.load(pdb_path)
print(f"Has hydrogens: {protein.has_hydrogens()}")
print(f"Has ligand: {protein.has_ligands()}")
Has hydrogens: False
Has ligand: True
lig_ids = protein.ligand_ids()
print(lig_ids)
['ATP:B']
smiles = oph.smiles_from_pdb_id(lig_ids[0])
smiles
'c1nc(c2c(n1)n(cn2)[C@H]3[C@@H]([C@@H]([C@H](O3)CO[P@@](=O)(O)O[P@](=O)(O)OP(=O)(O)O)O)O)N'
ligand = protein.get_ligand(lig_ids[0])
ligand.fix_bond_order(smiles=smiles)

ligand.draw()
../../../../_images/9a2f436b01644b314070100e9cb7245997619c27df9bfadbc44cdfede43e7ed0.png
bsite = oph.ComplexBindingSite(protein, ligand)
pharmacophore = oph.LigandReceptorPharmacophore(bsite, ligand)
pharmacophore.extract(feat_types=["aromatic ring"])
print(f"Number of pharmacophoric points {len(pharmacophore[0])}")
for p in pharmacophore[0]:
    print(p)
Number of pharmacophoric points 1
PharmacophoricPoint(feat_type=aromatic ring; center=(38.03, 23.02, 13.08); radius=1.0; direction=(0.14, 0.41, 0.9))
viewer = oph.Viewer()
viewer.add_components([bsite, ligand, pharmacophore[0]])
viewer.set_protein_style("ball+stick")
viewer.show()
pharmacophore
Note:

viewer.show() displays an interactive widget. For simplicity an image is presented in the documentation.