Skip to content

lilyminium/psiresp

Repository files navigation

PsiRESP

😪-RESP

Latest release Last release tag GitHub commits since latest release (by date) for a branch Documentation Status
Installation Conda (channel only) Conda Downloads PyPI version PyPI - Downloads
Status GH Actions Status codecov Language grade: Python
Community License: LGPL v3

PsiRESP is a package for calculating atomic partial charges from restrained and unrestrained electrostatic potential fits using Psi4. It is highly flexible, configurable, easy to use, and totally written in Python. It supports fitting to multiple orientations and conformers, as well as both intra-molecular and inter-molecular charge constraints for multi-molecule fits. It is written to correspond closely with existing tools such as the RESP ESP charge Derive (R.E.D.) tools.

As of now, the following implementations are well-tested to reproduce results from existing tools, primarily R.E.D.:

  • standard 2-stage RESP (convenience class: psiresp.configs.TwoStageRESP)
  • standard 1-stage RESP (convenience class: psiresp.configs.OneStageRESP)
  • standard unrestrained ESP (convenience class: psiresp.configs.ESP)

These implementations are not as well-tested:

  • ESP using HF/STO-3G (convenience class: psiresp.configs.WeinerESP) -- Psi4 seems to minimize to a relatively different geometry than GAMESS with STO-3G.
  • psiresp.configs.ATBRESP, mimicking the method used by the Automated Topology Builder is not tested at all. The published methods do not indicate the point density, moreover, the results generated seem to have changed since the original paper. Use at your own risk.
  • psiresp.configs.RESP2, as the methods are expensive

Installation

The recommended way to install PsiRESP is via anaconda, as the required dependencies are most easily installed distributed through conda. We further recommend using mamba to resolve dependencies.

For the fully featured version, install:

# to install mamba if you do not have it already
conda install -c conda-forge mamba
# to install psiresp
mamba install -c conda-forge psiresp
# to install Psi4 if you need it
mamba install -c psi4 psi4

This will pull in all dependencies necessary for full functionality, including RDKit and QCFractal. Psi4 is installed separately for now. As QCFractal and Psi4 can have finicky dependencies, it is often a good idea to create a new environment for PsiRESP instead of adding to another.

For minimal functionality, install:

conda install -c conda-forge psiresp-base

psiresp-base installs the package with minimal dependencies, so that only functionality that does not depend on RDKit, Psi4,or QCFractal is available.

The library can also be installed with minimal dependencies via Pypi:

pip install psiresp

Alternatively, to build from source:

  • clone this repository
  • create a new environment with dependencies
  • build the package
git clone https://github.com/lilyminium/psiresp.git
cd psiresp
conda env create -f devtools/conda-envs/environment.yaml
conda activate psiresp
pip install .

Please see the Installation docs for more information on installation and dependencies.

Example

Examples for PsiRESP are provided as tutorials both online and as downloadable Jupyter notebooks in the examples folder. More information can also be found in the documentation.

A minimal example is provided below, running a standard 2-stage restrained electrostatic potential fit (Bayly et al., 1993). This requires the full installation of psiresp, instead of the minimal psiresp-base, as it makes use of RDKit, Psi4 and QCFractal.

import psiresp
from psiresp.testing import FractalSnowflake
import qcfractal.interface as ptl

# set up server and client
server = FractalSnowflake()
client = ptl.FractalClient(server)

# set up molecule
dmso = psiresp.Molecule.from_smiles("CS(=O)C")

# set up job
job = psiresp.Job(molecules=[dmso])
charges = job.run(client=client)

Contributing

All contributions are welcomed! This can include sharing bug reports, bug fixes, requesting or adding new features, or improving the documentation. If you notice any issues or have feature requests, please open an issue on the Issue tracker. Otherwise, please check out the Contributing page in the documentation.

Copyright

Copyright (c) 2020, Lily Wang

Acknowledgements

Project based on the Computational Molecular Science Python Cookiecutter version 1.2.

Pre-configured models and reorientation algorithm are written to directly match results from RESP ESP charge Derive (R.E.D.). Dupradeau, F.-Y. et al. The R.E.D. tools: advances in RESP and ESP charge derivation and force field library building. Phys. Chem. Chem. Phys. 12, 7821 (2010).

ATBRESP tries to match results from Automated Topology Builder (A.T.B.). Malde, A. K. et al. An Automated Force Field Topology Builder (ATB) and Repository: Version 1.0. J. Chem. Theory Comput. 7, 4026–4037 (2011).

RESP2 tries to match results from RESP2. Schauperl, M. et al. Non-bonded force field model with advanced restrained electrostatic potential charges (RESP2). Commun Chem 3, 1–11 (2020).

Some tests compare results to output from resp, the current RESP plugin for Psi4. Alenaizan, A., Burns, L. A. & Sherrill, C. D. Python implementation of the restrained electrostatic potential charge model. International Journal of Quantum Chemistry 120, e26035 (2020).