Hi Greg,

Many thanks for the awesome post! I am still having trouble though to
select the right reference ligand for each query molecule. In particular I
have 9 crystal ligands, so these are the possible scenarios given one query

1) Measure the overall fingerprint similarity between the query and each
crystal ligands. Use as reference the crystal ligand with the highest
fingerprint similarity to the query.

2) Do the same but considering only the scaffolds of the query and the
crystal ligands.

3) Find the MCS between the query and each crystal ligand and use as
reference the crystal ligand with the biggest MCS (excluding hydrogens).

4) Like 3) but considering only the scaffolds of the query and the crystal

If someone had experience the same problem and could recommend which way
works best or suggest any better way I would be very grateful.


On 21 February 2017 at 07:35, Greg Landrum <greg.land...@gmail.com> wrote:

> On Mon, Feb 20, 2017 at 6:17 PM, Thomas Evangelidis <teva...@gmail.com>
> wrote:
>> Thank you for your useful hints. All the compounds that I want to align
>> are supposed to belong to the same analogue series so they should shave a
>> common substructure with substantial size.
> In that case, using an MCS based alignment should work reasonably well,
> particularly if you do the MCS of the entire series instead of doing it
> pairwise. The approach there would be to find the MCS and then use the
> RDKit's RMSD-based alignment (AllChem.AlignMol) where you provide the
> atomMap argument to specify the atom--atom mapping for alignment.
> Here's a short example of how to do that:
> # generate 3d structures (in case you don't have them already):
> mhs = [Chem.AddHs(x) for x in mols]
> [AllChem.EmbedMolecule(x,AllChem.ETKDG()) for x in mhs]
> mols = [Chem.RemoveHs(x) for x in mhs]
> # Find the MCS:
> from rdkit.Chem import rdFMCS
> mcs = rdFMCS.FindMCS(mols,threshold=0.8,completeRingsOnly=True,
> ringMatchesRingOnly=True)
> # align everything to the first molecule
> patt = Chem.MolFromSmarts(mcs.smartsString)
> refMol = mols[0]
> refMatch = refMol.GetSubstructMatch(patt)
> rmsVs = []
> for probeMol in mols[1:]:
>     mv = probeMol.GetSubstructMatch(patt)
>     rms = AllChem.AlignMol(probeMol,refMol,atomMap=list(zip(mv,refMatch)))
>     rmsVs.append(rms)
> What I want to emulate is the "core restrained docking" with glide, where
>> you specify the common core of the query and the reference ligand using a
>> SMARTS pattern and then glide docks the query compound to the binding
>> pocket but takes care to overlay the core atoms of the query to the core
>> atoms of the reference compound. Since RDKit does not do docking, I just
>> generate 30 conformers of each query compound and select the best one by
>> measuring the RMSD between the core of the query and the core of the
>> reference after the alignment. Of course the conformations of the core
>> atoms between the query and the reference are never identical hence the bad
>> alignment. Is there any smarter way to emulate the "core restrained
>> docking" with RDKit?
> The docking part is not doable in any straightforward way at the moment
> since it's hard to take information about the protein into account. There's
> an idea for a student summer project to solve this problem floating around,
> let's see if that gets funded and we find the right student.
> If the goal is to generate a set of conformations where cores are aligned
> with each other, this blog post may be interesting:
> http://rdkit.blogspot.ch/2013/12/using-allchemconstrainedembed.html
> -greg



Thomas Evangelidis

Research Specialist
CEITEC - Central European Institute of Technology
Masaryk University
Kamenice 5/A35/1S081,
62500 Brno, Czech Republic

email: tev...@pharm.uoa.gr


website: https://sites.google.com/site/thomasevangelidishomepage/
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
Rdkit-discuss mailing list

Reply via email to