Hi Emre! You can get more detailed info on failed conformer generations through rdDistGeom.EmbedFailureCauses, see: https://greglandrum.github.io/rdkit-blog/posts/2023-05-17-understanding-confgen-errors.html
Bests, -- Amy He Hadad Lab @ OSU he.1...@osu.edu From: Emre Apaydın <emreapaydin1...@gmail.com> Date: Wednesday, January 10, 2024 at 8:47 AM To: rdkit-discuss@lists.sourceforge.net <rdkit-discuss@lists.sourceforge.net> Subject: [Rdkit-discuss] Ligand conversion problem from 2D to 3D Hello, I want to convert the 2D ligands I downloaded as sdf format from the ZINC library to 3D, but almost half of them are not converted to 3D. Some of them are; ZINC000008214373, ZINC000001530666, ZINC000085545180. 208 ligands are not converted Hello, I want to convert the 2D ligands I downloaded as sdf format from the ZINC library to 3D, but almost half of them are not converted to 3D. Some of them are; ZINC000008214373, ZINC000001530666, ZINC000085545180. 208 ligands are not converted to 3D in this way. When I run the script, I do not get any warning or error in IDE. When I look at the output of my Try, Except commands, I see "ZINC000008214373.sdf : rdDistGeom.EmbedMolecule(mol, etkdgv3) = Failed ZINC000008214373.sdf : rdForceFieldHelpers.UFFOptimizeMolecule(mol) = Failed" It outputs like this for ligands that are not translated to 3D. When I try different methods, the ligands are converted to 3D. I wonder if there is something missing or wrong with my script. I would be grateful if you can help me. Thank you! ``` from rdkit import Chem from rdkit.Chem import rdDistGeom from rdkit.Chem import rdForceFieldHelpers from rdkit.Chem import rdPartialCharges import os ligands_dir = "ligands" output_dir = "new_ligands" status_file = "process_status.txt" if not os.path.exists(output_dir): os.makedirs(output_dir) sdf_files = [f for f in os.listdir(ligands_dir) if f.endswith(".sdf")] with open(status_file, 'w') as status: for sdf_file in sdf_files: input_path = os.path.join(ligands_dir, sdf_file) output_path = os.path.join(output_dir, sdf_file) mol = Chem.MolFromMolFile(input_path) # Add hydrogens try: mol = Chem.AddHs(mol, addCoords=True) except: status.write(f"{sdf_file} : Chem.AddHs(mol) = Failed\\n") continue # 3D embedding etkdgv3 = rdDistGeom.ETKDGv3() embed_status = rdDistGeom.EmbedMolecule(mol, etkdgv3) if embed_status == -1: status.write(f"{sdf_file} : rdDistGeom.EmbedMolecule(mol, etkdgv3) = Failed\\n") # Compute Gasteiger charges try: rdPartialCharges.ComputeGasteigerCharges(mol) except: status.write(f"{sdf_file} : rdPartialCharges.ComputeGasteigerCharges(mol) = Failed\\n") # UFF energy minimization try: rdForceFieldHelpers.UFFOptimizeMolecule(mol) except: status.write(f"{sdf_file} : rdForceFieldHelpers.UFFOptimizeMolecule(mol) = Failed\\n") Chem.MolToMolFile(mol, output_path) ```
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss