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?
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)
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.