Search code examples
pythonbioinformaticschemistryrdkitcheminformatics

Generating conformers of small ligands but preserving correct aromaticity


I'm trying to generate conformers for a number of small-molecule ligands to eventually do docking with. I generated the conformers using RDkit's EmbedMultipleConfs function. However, when subsequently visually inspecting the conformers in PyMol I noticed that RDKit did not preserve correct angles for aromatic moieties. For instance, in one my ligands with a benzene group it did not preserve the planarity of this group, instead assigning random angles to this benzene group as if it were a cyclohexane.

There seem to be no problems with aromaticity when just loading the molecule.

Is there a way to fix this?

enter image description here

Part of the code for generating conformers:

def gen_conformers(ligandpdb, structure):
    """Generates 100 conformers for crystal ligand"""

    mol=Chem.MolFromPDBFile(ligandpdb, removeHs=True, sanitize=True)
    conf_ids=AllChem.EmbedMultipleConfs(mol, 100, numThreads=0, clearConfs=True)

Solution

  • I believe that your problem is probably that you are reading the input from a PDB file. PDB files do not contain the bond orders of small molecules. Your best bet is to assign the correct bond orders from a template molecule as below:

    smiles = 'c1ccccc1'  # benzene (replace with the SMILES for your molecule)
    template = Chem.MolFromSmiles(smiles)
    
    # Read molecule from PDB file
    mol = Chem.MolFromPDBFile(ligandpdb, removeHs=True, sanitize=True)
    
    # Assign bond orders from template
    new_mol = AllChem.AssignBondOrdersFromTemplate(template, mol)
    

    Also when generating conformers it is a good idea to add the hydrogens to your molecule.