Spread the love



There must be a specific binding site in the drug-forming target that binds to the drug. Compounds that are active against a target must have similar structural features. The most common shared property of these compounds is defined as pharmacophores.


The significance of the pharmacophore model

The pharmacophore model not only utilizes molecular topology similarity but also exploits the functional similarity of the group, thereby applying the concept of bioisosterism to make the model more reliable. If only the similarity of the shapes between the compounds is considered, the combined mode prediction error will result. This error is corrected if the pharmacophore characteristics of the molecule (hydrogen bond acceptors, hydrogen bond donors are taken into account).


Visual Pharmacophore in RDKit

Code instance

from IPython import display
import os
import subprocess
from rdkit import Chem
from rdkit import RDConfig
from rdkit.Chem import AllChem
from rdkit.Chem import rdMolAlign
from rdkit.Chem import rdShapeHelpers
from rdkit.Chem import rdMolDescriptors
from rdkit.Chem import PyMol
from rdkit.Chem import Draw
from rdkit.Chem.Draw import IPythonConsole
import copy
import pprint

#load data
#drawing molecular structure
mols = Chem.SDMolSupplier(‘before_align.sdf’, removeHs=False)
cdk2mol = [m for m in mols]
for m in cdk2mol:
AllChem.EmbedMolecule(m, AllChem.ETKDGv2())

cdk2mol2 = copy.deepcopy(cdk2mol)

crippen_contribs = [rdMolDescriptors._CalcCrippenContribs(mol) for mol in cdk2mol2]

ref = cdk2mol2[0]
ref_contrib = crippen_contribs[0]
targets = cdk2mol2[1:]
targets_contrib = crippen_contribs[1:]

for i, target in enumerate(targets):
crippenO3A = rdMolAlign.GetCrippenO3A(target, ref, targets_contrib[i], ref_contrib)
w = Chem.SDWriter(‘align.sdf’)
for mol in targets:
#Calling pharmacophore feature display function
showfeatpath = os.path.join(RDConfig.RDCodeDir, ‘Chem/Features/ShowFeats.py’)
# Before align
v = PyMol.MolViewer()
process = subprocess.Popen([‘python’, showfeatpath, ‘–writeFeats’,’before_align_cdk2.sdf’], stdout=subprocess.PIPE)
stdout = process.communicate()[0]

Leave a Reply

Your email address will not be published. Required fields are marked *