# Generating SOAP descriptors in python

What is the best python package to construct Smooth Overlap of Atomic Positions (SOAP) descriptors given SMILES representation of a molecule? Is this even possible without providing 3D geometry? An example would be appreciated (The example in the paper from dscribe package is too trivial and cannot be extended to other molecules)

P.S. I'm trying to generate these descriptors for QM9 dataset molecules. Is there any databases that already has computed it?

• Just fyi you can convert smiles to 3d fairly easily although it isn't robust for inorganic molecules (maybe not at all) – Cody Aldaz Nov 9 '20 at 9:12
• @CodyAldaz Care for elaborate on this? Considering that SOAP works only knowing the exact 3D relationship between the atoms, this (converting smiles to 3D data) may be the best answer. – Greg Nov 9 '20 at 12:28
• @Blade I'm not sure why you are saying that dscribe is "too trivial." You can use dscribe's SOAP implementation for any molecule you like, provided you have 3D coordinates. – Andrew Rosen Nov 12 '20 at 21:34

If you do want to work from a SMILES string, Open Babel can do this with its gen3D option and there is an Open Babel Python package available. Once you have your co-ordinates, dscribe would be a great library to use to calculate the SOAP descriptors, although other libraries are available.
• Seconding this answer. It's called smooth overlap of atomic positions. That's going to be silly if you don't have... atomic positions ;). A reasonable approach for small organic molecules might be to use OpenBabel's gen3D as mentioned and then do a quick cleanup with GFN2-xTB. – Andrew Rosen Nov 12 '20 at 21:36