molfeat icon indicating copy to clipboard operation
molfeat copied to clipboard

Problem with jtvae_zinc_no_kl on Windows: os.unlink(tmp_file.name)

Open rflameiro opened this issue 1 year ago • 2 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues and found nothing

Bug description

Trying to use jtvae_zinc_no_kl to featurize a SMILES dataset, code adapted from https://molfeat.datamol.io/featurizers/jtvae_zinc_no_kl to run as a python script. The step features = transformer(smiles) throws a series of errors due to os.unlink(tmp_file.name) on dgl_pretrained.py

How to reproduce the bug

# run as: $python jtnn.py
import pandas as pd
from molfeat.trans.pretrained import PretrainedDGLTransformer

df = pd.read_csv("training_set.csv", sep=";", header=0)
smiles = df['standard_SMILES'].to_list()

transformer = PretrainedDGLTransformer(kind='jtvae_zinc_no_kl', dtype=float)
features = transformer(smiles)

df2 = pd.DataFrame(features)
df2.to_csv("training_set_jt.csv", sep=";", index=False)

Error messages and logs

(molfeat-env) C:\Users\rafae\Desktop\jtnn>python jtnn.py
Extracting file to C:\Users\rafae\.dgl/jtvae
Traceback (most recent call last):
  File "C:\Users\rafae\Desktop\jtnn\jtnn.py", line 8, in <module>
    features = transformer(smiles)
  File "C:\Users\rafae\miniconda3\envs\molfeat-env\lib\site-packages\molfeat\trans\base.py", line 385, in __call__
    features = self.transform(mols, ignore_errors=ignore_errors, enforce_dtype=False, **kwargs)
  File "C:\Users\rafae\miniconda3\envs\molfeat-env\lib\site-packages\sklearn\utils\_set_output.py", line 273, in wrapped
    data_to_wrap = f(self, X, *args, **kwargs)
  File "C:\Users\rafae\miniconda3\envs\molfeat-env\lib\site-packages\molfeat\trans\pretrained\base.py", line 208, in transform
    out = self._embed(converted_mols, **kwargs)
  File "C:\Users\rafae\miniconda3\envs\molfeat-env\lib\site-packages\molfeat\trans\pretrained\dgl_pretrained.py", line 222, in _embed
    dataset, successes = self.graph_featurizer(smiles, kind=self.kind)
  File "C:\Users\rafae\miniconda3\envs\molfeat-env\lib\site-packages\molfeat\trans\pretrained\dgl_pretrained.py", line 258, in graph_featurizer
    os.unlink(tmp_file.name)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process:

Environment

Current environment
OS: Windows 10
dgl                       2.0.0                
dgllife                   0.3.2
molfeat                   0.10.0
#- How you installed Molfeat: conda

Additional context

No response

rflameiro avatar Feb 05 '24 04:02 rflameiro