A repository for serving QikProp v3 as a webservice and API access point.
This version of QikProp has been provided by William L. Jorgensen and hosted as a service by the Molecular Sciences Software Institute (MolSSI). To report a problem or suggest improvements, please open an issue on the Project GitHub. Additional features and options will be added over time.
There are two main components for this project:
- A web application where data can be uploaded in the form, and provides the endpoint for the API
- A standalone API wrapper for CLI calls to the service hosted through the web app
Please visit each subproject's folder and to see the documentation for each one.
The web application and service can be found at https://qikprop.molssi.org.
The CLI tool and Python Library are downloadable through PyPI or Conda-Forge
conda install -c conda-forge qikpropserviceOR
pip install qikpropservicefrom pathlib import Path
from apiwrapper.qikpropservice import qikprop_as_a_service, qikprop_reasonable
# Batch mode: returns a map of Path -> QikProp property dictionary (parsed in memory)
result = qikprop_as_a_service(["*.mol"], fast=True)
for path, properties in result["results"].items():
print(path, properties["QPlogPo/w"])
# Single molecule screening: accepts .mol/.sdf path or SMILES string
is_reasonable = qikprop_reasonable(Path("candidate.mol"))
print(is_reasonable)The wrapper now streams the tarball output from the service directly into memory, extracts
QP.CSV, and converts the rows into a flat dictionary. The values are compared against the
recommended ranges from the QikProp user manual (see Table 4). Those ranges are captured in
assets/qikprop_ref.csv and applied automatically when you call
apiwrapper.qikpropservice.qplib.evaluate_against_qikprop_criteria.
Any property that violates the recommended bounds is reported as a human-readable string (for strict
mode). By default, the helper runs in quick mode, which simply fails if the submitted structure
reports any Lipinski Rule-of-Five violations (RuleOfFive > 0). Switch to strict mode by passing
mode="strict" to qikprop_reasonable or evaluate_against_qikprop_criteria if you need the full
Table 4 evaluation.
SMILES support: If you provide a SMILES string to
qikprop_reasonable, the function will try to build a temporary.molfile via RDKit. Install RDKit or provide a structure file directly if SMILES parsing is unavailable in your environment.
qikprop_as_a_service no longer writes *.qpout.tar.gz files to disk by default. Instead, it
returns parsed results so you can immediately inspect properties or apply screening logic. If you
still need the raw tarball, use QikpropAsAService.get_result() and supply a filename.