Package: padelpy
PaDELPy: A Python wrapper for PaDEL-Descriptor softwarePaDELPy provides a Python wrapper for thePaDEL-Descriptormolecular descriptor calculation software. It was created to allow direct access to the PaDEL-Descriptor command-line interface via Python.InstallationInstallation via pip:$ pip install padelpyInstallation via cloned repository:$ git clone https://github.com/ecrl/padelpy
$ cd padelpy
$ pip install .PaDEL-Descriptor is bundled into PaDELPy, therefore an external installation/download of PaDEL-Descriptor is not necessary. There are currently no additional Python dependencies for PaDELPy, however it requires an installation of theJava JREversion 6+.Basic UsageIn addition to providing a complete interface between Python and PaDEL-Descriptor's command line tool, PaDELPy offers two functions to acquire descriptors/fingerprints within Python - obtaining descriptors/fingerprints from a SMILES string, and obtaining descriptors/fingerprints from an MDL MolFile.SMILES to Descriptors/FingerprintsThe "from_smiles" function accepts a SMILES string or list of SMILES strings as an argument, and returns a Python dictionary with descriptor/fingerprint names/values as keys/values respectively - if multiple SMILES strings are supplied, "from_smiles" returns a list of dictionaries.frompadelpyimportfrom_smiles# calculate molecular descriptors for propanedescriptors=from_smiles('CCC')# calculate molecular descriptors for propane and butanedescriptors=from_smiles(['CCC','CCCC'])# in addition to descriptors, calculate PubChem fingerprintsdesc_fp=from_smiles('CCC',fingerprints=True)# only calculate fingerprintsfingerprints=from_smiles('CCC',fingerprints=True,descriptors=False)# setting the number of threads, this uses one cpu thread to compute descriptorsdescriptors=from_smiles(['CCC','CCCC'],threads=1)# save descriptors to a CSV file_=from_smiles('CCC',output_csv='descriptors.csv')MDL MolFile to Descriptors/FingerprintsThe "from_mdl" function accepts a filepath (to an MDL MolFile) as an argument, and returns a list. Each list element is a dictionary with descriptors/fingerprints corresponding to each supplied molecule (indexed as they appear in the MolFile).frompadelpyimportfrom_mdl# calculate molecular descriptors for molecules in `mols.mdl`descriptors=from_mdl('mols.mdl')# in addition to descriptors, calculate PubChem fingerprintsdesc_fp=from_mdl('mols.mdl',fingerprints=True)# only calculate fingerprintsfingerprints=from_mdl('mols.mdl',fingerprints=True,descriptors=False)# setting the number of threads, this uses one cpu thread to compute descriptorsdesc_fp=from_mdl('mols.mdl',threads=1)# save descriptors to a CSV file_=from_mdl('mols.mdl',output_csv='descriptors.csv')SDF to Descriptors/FingerprintsThe "from_sdf" function accepts a filepath as an argument, and returns a list.
Each list element is a dictionary with descriptors/fingerprints corresponding to each supplied
molecule (indexed as they appear in the SDF file).frompadelpyimportfrom_sdf# calculate molecular descriptors for molecules in `mols.sdf`descriptors=from_sdf('mols.sdf')# in addition to descriptors, calculate PubChem fingerprintsdesc_fp=from_sdf('mols.sdf',fingerprints=True)# only calculate fingerprintsfingerprints=from_sdf('mols.sdf',fingerprints=True,descriptors=False)# setting the number of threads, this uses one cpu thread to compute descriptorsdesc_fp=from_mdl('mols.sdf',threads=1)# save descriptors to a CSV file_=from_sdf('mols.sdf',output_csv='descriptors.csv')Command Line WrapperAlternatively, you can have more control over PaDEL-Descriptor with the command-line wrapper function. Any combination of arguments supported by PaDEL-Descriptor can be accepted by the "padeldescriptor" function.frompadelpyimportpadeldescriptor# to supply a configuration filepadeldescriptor(config='\\path\\to\\config')# to supply an input (MDL) and output filepadeldescriptor(mol_dir='molecules.mdl',d_file='descriptors.csv')# to supply an input (SDF) and output filepadeldescriptor(mol_dir='molecules.sdf',d_file='descriptors.csv')# a SMILES file can be suppliedpadeldescriptor(mol_dir='molecules.smi',d_file='descriptors.csv')# a path to a directory containing structural files can be suppliedpadeldescriptor(mol_dir='\\path\\to\\mols\\',d_file='descriptors.csv')# to calculate 2-D and 3-D descriptorspadeldescriptor(d_2d=True,d_3d=True)# to calculate PubChem fingerprintspadeldescriptor(fingerprints=True)# to convert molecule into a 3-D structurepadeldescriptor(convert3d=True)# to supply a descriptortypes filepadeldescriptor(descriptortype='\\path\\to\\descriptortypes')# to detect aromaticitypadeldescriptor(detectaromaticity=True)# to calculate fingerprintspadeldescriptor(fingerprints=True)# to save process status to a log filepadeldescriptor(log=True)# to remove salts from the molecule(s)padeldescriptor(removesalt=True)# to retain 3-D coordinates when standardizingpadeldescriptor(retain3d=True)# to retain order (output same order as input)padeldescriptor(retainorder=True)# to standardize nitro groups to N(:O):Opadeldescriptor(standardizenitro=True)# to standardize tautomerspadeldescriptor(standardizetautomers=True)# to specify a SMIRKS tautomers filepadeldescriptor(tautomerlist='\\path\\to\\tautomers\\')# to use filenames as molecule namespadeldescriptor(usefilenameasmolname=True)# to set the maximum number of compounds in a resulting descriptors filepadeldescriptor(maxcpdperfile=32)# to set the maximum runtime (in mS) per moleculepadeldescriptor(maxruntime=10000)# to set the maximum number of waiting jobs in the queuepadeldescriptor(waitingjobs=10)# to set the maximum number of threads usedpadeldescriptor(threads=2)# to prevent padel-splash image from loading.padeldescriptor(headless=True)Contributing, Reporting Issues and Other SupportTo contribute to PaDELPy, make a pull request. Contributions should include tests for new features added, as well as extensive documentation.To report problems with the software or feature requests, file an issue. When reporting problems, include information such as error messages, your OS/environment and Python version.For additional support/questions, contact Travis Kessler (Travis_Kessler@student.uml.edu).