You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two different specifications of the same molecule that according to RDKit have the same isomeric smiles definition, result in two different molecules when using them to assign bond orders to a molecule extracted from PDB coordinates.
I verified the structure of the complexed ligand (90L in 5YSY) and the paper describing it and the smiles definition provided by PDB seem correct.
To Reproduce
I am trying to generate the mol object corresponding to the ligand in a protein-ligand complex from PDB.
I experience problem with ligand 90L from 5YSY.
# Isomeric Smiles specified in PDB:isomeric_smiles_90L='C[C@H](CCCC(C)(C)O)[C@H]1CC[C@@H]2C(=CCC[C@]12C)\C=C\C3=C[C@@H](O)[C@H](CCCO)[C@H](O)C3'# I use this function obtain one instance of the ligand from PDB:defget_instance_ligand(pdb_id, comp_id):
response=requests.get('https://files.rcsb.org/download/{}.pdb'.format(pdb_id))
ifresponse.status_code==200:
pdbblock=response.textpdbblock=pdbblock.split('\n')
keep= []
foriinpdbblock:
if ('HETATM'ini) and (comp_idini):
keep+= [i]
keep='\n'.join(keep)
mol=Chem.MolFromPDBBlock(keep, sanitize=False)
mol=Chem.GetMolFrags(mol, asMols=True, sanitizeFrags=True)[0]
returnmolelse:
returnNone# assign bond orders from smiles specification:instance_90L=get_instance_ligand('5YSY', '90L')
instance_90L=Chem.AssignBondOrdersFromTemplate(refmol=Chem.MolFromSmiles(isomeric_smiles), mol=instance_90L)
# assign stereochemistry:Chem.AssignStereochemistryFrom3D(instance_90L)
# Now if I compare the smiles of instance_90L with the isomeric_smiles, they are not the same!Chem.MolToSmiles(instance_90L) !=isomeric_smiles'C[C@H](CCCC(C)(C)O)[C@H]1CC[C@@H]2C(C=CC3=C[C@@H](O)[C@@H](CCCO)[C@H](O)C3)=CCC[C@@]21C'!='C[C@H](CCCC(C)(C)O)[C@H]1CC[C@@H]2C(/C=C/C3=C[C@@H](O)[C@H](CCCO)[C@H](O)C3)=CCC[C@@]21C'# The behaviour changes if to assign bonds I use the rdkit mol object obtained from the HET model .sdf specified in PDB# And this function to obtain the PDB HET ligand definition from a sdf file:defget_sdf_ligand(comp_id):
response=requests.get('https://files.rcsb.org/ligands/download/{}_model.sdf'.format(comp_id))
ifresponse.status_code==200:
sdf=response.textmol=Chem.MolFromMolBlock(sdf)
AllChem.AssignStereochemistryFrom3D(mol)
returnmolelse:
returnNonemodel_90L=get_sdf_ligand('90L')
# assign bond orders from model specification:instance_90L=get_instance_ligand('5YSY', '90L')
instance_90L=Chem.AssignBondOrdersFromTemplate(refmol=model_90L, mol=instance_90L)
# assign stereochemistry:Chem.AssignStereochemistryFrom3D(instance_90L)
# Now the smiles are the same!Chem.MolToSmiles(instance_90L) ==isomeric_smiles# andChem.MolToSmiles(instance_90L) !=Chem.MolToSmiles(model_90L)
'C[C@H](CCCC(C)(C)O)[C@H]1CC[C@@H]2C(/C=C/C3=C[C@@H](O)[C@@H](CCCO)[C@H](O)C3)=CCC[C@@]21C'=='C[C@H](CCCC(C)(C)O)[C@H]1CC[C@@H]2C(/C=C/C3=C[C@@H](O)[C@@H](CCCO)[C@H](O)C3)=CCC[C@@]21C'
Expected behavior
I expected that using the isomeric smiles or the .sdf obtained from PDB as a reference to assign bond orders to generate the same output. But when I use the isomeric smiles I obtain a stereoisomer of the isomeric smiles instead...
Configuration:
RDKit version: 2020.03.4
OS: Ubuntu 18.04.5 LTS
Python version: Python 3.7.8
Are you using conda? Yes
If you are using conda, which channel did you install the rdkit from? conda-forge
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Two different specifications of the same molecule that according to RDKit have the same isomeric smiles definition, result in two different molecules when using them to assign bond orders to a molecule extracted from PDB coordinates.
I verified the structure of the complexed ligand (90L in 5YSY) and the paper describing it and the smiles definition provided by PDB seem correct.
To Reproduce
I am trying to generate the mol object corresponding to the ligand in a protein-ligand complex from PDB.
I experience problem with ligand 90L from 5YSY.
Expected behavior
I expected that using the isomeric smiles or the .sdf obtained from PDB as a reference to assign bond orders to generate the same output. But when I use the isomeric smiles I obtain a stereoisomer of the isomeric smiles instead...
Configuration:
Beta Was this translation helpful? Give feedback.
All reactions