Releases: ecrl/padelpy
0.1.16 - bug fix for Python 3.12
See PR #53 for details.
Thanks to @JacksonBurns for the contribution!
0.1.15 - update to build/install method, testing
No functional changes, but:
- Build/installation now uses
pyproject.toml
instead of the deprecatedsetup.py
- Removed Azure-based unit testing, using GitHub workflows and
pytest
- New releases are automatically deployed to PyPI
Fix to multiprocessing file mismatch
As outlined in #46, if two parallel processes started their descriptor calculations at the same time, a single temporary file would be associated with each process. This fix adds a random number to the filename such that two processes started at the same time cannot share the same temporary file. Credit to @pikakolendo02 for finding the error and supplying a fix.
0.1.13
0.1.12
A few pull requests/features included in this update, thanks to all who contributed!
1.) Now cleans up orphaned CSV files if KeyboardInterrupt triggered
2.) Added option to control runtime per molecule
3.) Added option to specify the number of CPU threads used
Release 0.1.11
This update allows users to generate descriptors/fingerprints from an SDF file.
Preventing PaDEL's GUI/splash screen from displaying
- This update adds an additional argument to padelpy.wrapper.padeldescriptor,
headless
, True by default, to prevent the PaDEL-Descriptor splash screen from displaying on execution
from_smiles now returns descriptors in same order as input SMILES
Release 0.1.8
This release allows users to submit multiple SMILES strings (i.e. list of strings) to the "from_smiles" function:
from padelpy import from_smiles
# obtain descriptors for propane and butane
descriptors = from_smiles(['CCC', 'CCCC'])
In issue #15 it was pointed out that multiprocessing/multithreading could not be utilized for the "from_smiles" function. The updated implementation allows for this. If your code/pipeline currently supplies one SMILES string to the "from_smiles" function, it will continue to operate as expected.
Additionally, error handling/reporting has been updated to ensure proper feedback, and the default maximum runtimes for the "from_smiles" and "from_mdl" functions has been increased from 12 seconds to 60 seconds.
Unit tests for submitting multiple SMILES strings and proper exception handling/reporting have been included.
Error handling for PaDEL-Descriptor not returning any calculated values
This update includes handling for an error observed in issue #12, where some compounds would return no computed descriptors/fingerprints (temporary CSV not saving an entry for the compound).
For example, the compound "buprenorphine" with SMILES string "Oc7ccc5c1c7O[C@H]3[C@]6(OC)C@HC@@(C)C(C)(C)C" would produce an output CSV file with no entry for the compound when the following is executed:
from padelpy import from_smiles
from_smiles('Oc7ccc5c1c7O[C@H]3[C@]6(OC)C@HC@@(C)C(C)(C)C', output_csv='output.csv')
When PaDELPy re-imports these descriptors to return to the user, an indexing error occurred due to the from_smiles function (and the from_mdl function, it has the same behavior) looking through an empty list.
This update ensures that the following exception is raised if this behavior occurs:
RuntimeError: PaDEL-Descriptor returned no calculated values. Ensure the input structure is correct.
One of buprenorphine's alternate SMILES strings, "C[C@([C@H]1C[C@@]23CC[C@@]1([C@H]4[C@@]25CCN([C@@h]3CC6=C5C(=C(C=C6)O)O4)CC7CC7)OC)(C(C)(C)C)O", also produces this error. Another alternate SMILES string, "CC(C)(C)C(C)(C1CC23CCC1(C4C25CCN(C3CC6=C5C(=C(C=C6)O)O4)CC7CC7)OC)O", simply causes a timeout error (unable to calculate descriptors given 60 minutes of available runtime, as stated in the above issue).
The issue cited above states that the GUI version of PaDEL-Descriptor is also unable to calculate values for these SMILES, therefore I theorize that the underlying issue is likely within PaDEL-Descriptor.
This update also includes updated DocStrings.