libAtoms / workflow

python workflow toolkit
GNU General Public License v2.0
32 stars 18 forks source link

RDKit is dependency #315

Closed galjos closed 4 months ago

galjos commented 4 months ago

I think you missed the RDKit dependency in your project.toml.

Example

from wfl.generate import smiles

# quinone smile
smile = 'C1=CC(=O)C=CC1=O'
system = smiles.smi_to_atoms(smile)

Error Message

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[1], [line 5](vscode-notebook-cell:?execution_count=1&line=5)
      [3](vscode-notebook-cell:?execution_count=1&line=3) # quinone smile
      [4](vscode-notebook-cell:?execution_count=1&line=4) smile = 'C1=CC(=O)C=CC1=O'
----> [5](vscode-notebook-cell:?execution_count=1&line=5) system = smiles.smi_to_atoms(smile)

File ~/projects/ThermoScreening/venv/lib/python3.12/site-packages/wfl/generate/smiles.py:16, in smi_to_atoms(smi, useBasicKnowledge, useExpTorsionAnglePrefs, randomSeed)
     [13](https://file+.vscode-resource.vscode-cdn.net/Users/jog/projects/ThermoScreening/examples/Notebooks/dftbplus/~/projects/ThermoScreening/venv/lib/python3.12/site-packages/wfl/generate/smiles.py:13) def smi_to_atoms(smi, useBasicKnowledge=True, useExpTorsionAnglePrefs=True, randomSeed=-1):
     [14](https://file+.vscode-resource.vscode-cdn.net/Users/jog/projects/ThermoScreening/examples/Notebooks/dftbplus/~/projects/ThermoScreening/venv/lib/python3.12/site-packages/wfl/generate/smiles.py:14)     """Converts smiles to 3D Atoms object"""
---> [16](https://file+.vscode-resource.vscode-cdn.net/Users/jog/projects/ThermoScreening/examples/Notebooks/dftbplus/~/projects/ThermoScreening/venv/lib/python3.12/site-packages/wfl/generate/smiles.py:16)     mol = Chem.MolFromSmiles(smi)
     [17](https://file+.vscode-resource.vscode-cdn.net/Users/jog/projects/ThermoScreening/examples/Notebooks/dftbplus/~/projects/ThermoScreening/venv/lib/python3.12/site-packages/wfl/generate/smiles.py:17)     mol = Chem.AddHs(mol)
     [18](https://file+.vscode-resource.vscode-cdn.net/Users/jog/projects/ThermoScreening/examples/Notebooks/dftbplus/~/projects/ThermoScreening/venv/lib/python3.12/site-packages/wfl/generate/smiles.py:18)     _ = AllChem.EmbedMolecule(mol, useBasicKnowledge=useBasicKnowledge,
     [19](https://file+.vscode-resource.vscode-cdn.net/Users/jog/projects/ThermoScreening/examples/Notebooks/dftbplus/~/projects/ThermoScreening/venv/lib/python3.12/site-packages/wfl/generate/smiles.py:19)                               useExpTorsionAnglePrefs=useExpTorsionAnglePrefs,
     [20](https://file+.vscode-resource.vscode-cdn.net/Users/jog/projects/ThermoScreening/examples/Notebooks/dftbplus/~/projects/ThermoScreening/venv/lib/python3.12/site-packages/wfl/generate/smiles.py:20)                               randomSeed=randomSeed)

NameError: name 'Chem' is not defined
bernstei commented 4 months ago

Because wfl supports wrappers to all sorts of random things, we haven't been putting all of them all as dependencies.

I guess we could change that policy, but for now we should certainly print a more sensible error.

bernstei commented 4 months ago

Maybe also add a message at pip install time letting the user know about other packages they might want?

[added] apparently that's not a thing

bernstei commented 4 months ago

@galjos would you mind testing this branch, and seeing if at least the error is more informative?

galjos commented 4 months ago

Works 👍

RuntimeError: rdkit must be installed for SMILES support