RDKit has pharmacophore feature assignment function. The function can retrieve molecular features based on pre-defined ph4core.
And RDKit IPythonconsole can draw molecules on ipython notebook.
Today I tried to visualize ph4core on notebook.
Code is very simple.
from rdkit import Chem from rdkit.Chem import ChemicalFeatures from rdkit import rdBase from rdkit.RDPaths import RDDocsDir from rdkit.RDPaths import RDDataDir from rdkit.Chem.Draw import IPythonConsole from rdkit.Chem import Draw from rdkit.Chem import AllChem import os print(rdBase.rdkitVersion) IPythonConsole.ipython_useSVG=True > 2018.09.1
First, load feature definition.
fdefFile = os.path.join(RDDataDir,'BaseFeatures.fdef') featFact = ChemicalFeatures.BuildFeatureFactory(fdefFile)
Then calculate pharmacophore. And compute 2D cordes.
mols = [m for m in Chem.SDMolSupplier(os.path.join(RDDocsDir,"Book/data/cdk2.sdf"))] featslists = [featFact.GetFeaturesForMol(mol) for mol in mols] for mol in mols: AllChem.Compute2DCoords(mol)
Next I defined drawing function. To highlight ph4core, highlightAtomLists and legends are used as optional arguments of MolsToGridImage.
def drawp4core(mol, feats): atoms_list = {} for feat in feats: atom_ids = feat.GetAtomIds() feat_type = feat.GetType() atoms_list[feat_type] = atom_ids return Draw.MolsToGridImage([mol]*len(atoms_list), legends=list(atoms_list.keys()), highlightAtomLists=list(atoms_list.values()))
Test the function.
im = drawp4core(mols[1], featslists[1]) im
I could get following image.
The function worked and it could pick up pharmacophore of given molecule. ;-)
Is it possible to visualize the Pharma2Dfp ? as a circle or whatever with different colors for different features? form a small list of smiles