{"id":21292074,"url":"https://github.com/ecrl/padelpy","last_synced_at":"2025-04-04T20:09:11.065Z","repository":{"id":34925400,"uuid":"190634351","full_name":"ecrl/padelpy","owner":"ecrl","description":"A Python wrapper for PaDEL-Descriptor software","archived":false,"fork":false,"pushed_at":"2023-11-10T22:48:17.000Z","size":20461,"stargazers_count":193,"open_issues_count":13,"forks_count":36,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-28T19:08:11.429Z","etag":null,"topics":["command-line-wrapper","computational-chemistry","molecular-descriptors","molecular-fingerprints","padel","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ecrl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-06T18:58:52.000Z","updated_at":"2025-03-18T08:50:28.000Z","dependencies_parsed_at":"2023-01-15T10:45:47.504Z","dependency_job_id":"0bea1fc3-b9ba-449f-8b8c-d64fb4166633","html_url":"https://github.com/ecrl/padelpy","commit_stats":{"total_commits":70,"total_committers":9,"mean_commits":7.777777777777778,"dds":0.5,"last_synced_commit":"6b992b47ad54c4c8aac96a6aeb2d3a5b5556cafe"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecrl%2Fpadelpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecrl%2Fpadelpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecrl%2Fpadelpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecrl%2Fpadelpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecrl","download_url":"https://codeload.github.com/ecrl/padelpy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242678,"owners_count":20907134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line-wrapper","computational-chemistry","molecular-descriptors","molecular-fingerprints","padel","python"],"created_at":"2024-11-21T13:47:31.309Z","updated_at":"2025-04-04T20:09:11.045Z","avatar_url":"https://github.com/ecrl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![UML Energy \u0026 Combustion Research Laboratory](https://sites.uml.edu/hunter-mack/files/2021/11/ECRL_final.png)](http://faculty.uml.edu/Hunter_Mack/)\n\n# PaDELPy: A Python wrapper for PaDEL-Descriptor software\n\n[![GitHub version](https://badge.fury.io/gh/ecrl%2Fpadelpy.svg)](https://badge.fury.io/gh/ecrl%2Fpadelpy)\n[![PyPI version](https://badge.fury.io/py/padelpy.svg)](https://badge.fury.io/py/padelpy)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/ecrl/padelpy/master/LICENSE.txt)\n\nPaDELPy provides a Python wrapper for the [PaDEL-Descriptor](https://pubmed.ncbi.nlm.nih.gov/21425294/) molecular descriptor calculation software. It was created to allow direct access to the PaDEL-Descriptor command-line interface via Python.\n\n## Installation\n\nInstallation via pip:\n\n```\n$ pip install padelpy\n```\n\nInstallation via cloned repository:\n\n```\n$ git clone https://github.com/ecrl/padelpy\n$ cd padelpy\n$ pip install .\n```\n\nPaDEL-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 the [Java JRE](https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html) version 6+.\n\n## Basic Usage\n\nIn 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.\n\n### SMILES to Descriptors/Fingerprints\n\nThe \"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.\n\n```python\nfrom padelpy import from_smiles\n\n# calculate molecular descriptors for propane\ndescriptors = from_smiles('CCC')\n\n# calculate molecular descriptors for propane and butane\ndescriptors = from_smiles(['CCC', 'CCCC'])\n\n# in addition to descriptors, calculate PubChem fingerprints\ndesc_fp = from_smiles('CCC', fingerprints=True)\n\n# only calculate fingerprints\nfingerprints = from_smiles('CCC', fingerprints=True, descriptors=False)\n\n# setting the number of threads, this uses one cpu thread to compute descriptors\ndescriptors = from_smiles(['CCC', 'CCCC'], threads = 1)\n\n# save descriptors to a CSV file\n_ = from_smiles('CCC', output_csv='descriptors.csv')\n```\n\n### MDL MolFile to Descriptors/Fingerprints\n\nThe \"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).\n\n```python\nfrom padelpy import from_mdl\n\n# calculate molecular descriptors for molecules in `mols.mdl`\ndescriptors = from_mdl('mols.mdl')\n\n# in addition to descriptors, calculate PubChem fingerprints\ndesc_fp = from_mdl('mols.mdl', fingerprints=True)\n\n# only calculate fingerprints\nfingerprints = from_mdl('mols.mdl', fingerprints=True, descriptors=False)\n\n# setting the number of threads, this uses one cpu thread to compute descriptors\ndesc_fp = from_mdl('mols.mdl', threads=1)\n\n# save descriptors to a CSV file\n_ = from_mdl('mols.mdl', output_csv='descriptors.csv')\n```\n\n### SDF to Descriptors/Fingerprints\n\nThe \"from_sdf\" function accepts a filepath as an argument, and returns a list.\nEach list element is a dictionary with descriptors/fingerprints corresponding to each supplied\nmolecule (indexed as they appear in the SDF file).\n\n```python\nfrom padelpy import from_sdf\n\n# calculate molecular descriptors for molecules in `mols.sdf`\ndescriptors = from_sdf('mols.sdf')\n\n# in addition to descriptors, calculate PubChem fingerprints\ndesc_fp = from_sdf('mols.sdf', fingerprints=True)\n\n# only calculate fingerprints\nfingerprints = from_sdf('mols.sdf', fingerprints=True, descriptors=False)\n\n# setting the number of threads, this uses one cpu thread to compute descriptors\ndesc_fp = from_mdl('mols.sdf', threads=1)\n\n# save descriptors to a CSV file\n_ = from_sdf('mols.sdf', output_csv='descriptors.csv')\n```\n\n### Command Line Wrapper\n\nAlternatively, 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.\n\n```python\nfrom padelpy import padeldescriptor\n\n# to supply a configuration file\npadeldescriptor(config='\\\\path\\\\to\\\\config')\n\n# to supply an input (MDL) and output file\npadeldescriptor(mol_dir='molecules.mdl', d_file='descriptors.csv')\n\n# to supply an input (SDF) and output file\npadeldescriptor(mol_dir='molecules.sdf', d_file='descriptors.csv')\n\n# a SMILES file can be supplied\npadeldescriptor(mol_dir='molecules.smi', d_file='descriptors.csv')\n\n# a path to a directory containing structural files can be supplied\npadeldescriptor(mol_dir='\\\\path\\\\to\\\\mols\\\\', d_file='descriptors.csv')\n\n# to calculate 2-D and 3-D descriptors\npadeldescriptor(d_2d=True, d_3d=True)\n\n# to calculate PubChem fingerprints\npadeldescriptor(fingerprints=True)\n\n# to convert molecule into a 3-D structure\npadeldescriptor(convert3d=True)\n\n# to supply a descriptortypes file\npadeldescriptor(descriptortype='\\\\path\\\\to\\\\descriptortypes')\n\n# to detect aromaticity\npadeldescriptor(detectaromaticity=True)\n\n# to calculate fingerprints\npadeldescriptor(fingerprints=True)\n\n# to save process status to a log file\npadeldescriptor(log=True)\n\n# to remove salts from the molecule(s)\npadeldescriptor(removesalt=True)\n\n# to retain 3-D coordinates when standardizing\npadeldescriptor(retain3d=True)\n\n# to retain order (output same order as input)\npadeldescriptor(retainorder=True)\n\n# to standardize nitro groups to N(:O):O\npadeldescriptor(standardizenitro=True)\n\n# to standardize tautomers\npadeldescriptor(standardizetautomers=True)\n\n# to specify a SMIRKS tautomers file\npadeldescriptor(tautomerlist='\\\\path\\\\to\\\\tautomers\\\\')\n\n# to use filenames as molecule names\npadeldescriptor(usefilenameasmolname=True)\n\n# to set the maximum number of compounds in a resulting descriptors file\npadeldescriptor(maxcpdperfile=32)\n\n# to set the maximum runtime (in mS) per molecule\npadeldescriptor(maxruntime=10000)\n\n# to set the maximum number of waiting jobs in the queue\npadeldescriptor(waitingjobs=10)\n\n# to set the maximum number of threads used\npadeldescriptor(threads=2)\n\n# to prevent padel-splash image from loading.\npadeldescriptor(headless=True)\n\n```\n\n## Contributing, Reporting Issues and Other Support\n\nTo contribute to PaDELPy, make a pull request. Contributions should include tests for new features added, as well as extensive documentation.\n\nTo 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.\n\nFor additional support/questions, contact Travis Kessler (Travis_Kessler@student.uml.edu).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fecrl%2Fpadelpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fecrl%2Fpadelpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fecrl%2Fpadelpy/lists"}