Skip to content

Latest commit

 

History

History
108 lines (73 loc) · 2.56 KB

readme.rst

File metadata and controls

108 lines (73 loc) · 2.56 KB

Psi Phi Package

Do you need RDKit? Do you need quantum chemistry? We got you. This package is a simple bridge between RDKit and quantum chemistry (QC) packages that lack Python interfaces.

Current version has calculator wrappers for

  • GAMESS
  • Gaussian
  • MNDO
  • MOPAC
  • Orca
  • xTB

Example

Assume all codesnippets below are using RDKit molecule objs.

molecule = Chem.MolFromSmiles("O")
Chem.AddHydrogens(molecule)
AllChem.UFFOptimizeMolecule(molecule)

The simple usage is to make an instance of a QC software. For example, using the popular package xTB, you can define the amount of cores to allocate and the exact path to the executable.

from ppqm import XtbCalculator
xtb = XtbCalculator(cmd="xtb", cores=4)

The format for running calculations are based on Python dictionaries, which are translated into the right format. So for example running a GFN2 optimization in water, the input would be

# Define the calculation
optimize_options = {,
    "gfn": 2,,
    "alpb": "h2o",
    "opt": None,
}

# Run the calculation
results = xtb.calculate(molecule, optimize_options)

# Results is a List of Dict properties
for i, propeties in enumerate(results):
    print(f"Conformer {i} properties: {properties}")

For more documentation by example, checkout the notebooks directory.

Notes on Jupyter usage

Example notebooks uses nglview to visualize the molecules in notebooks

# install nglview
conda install nglview -c conda-forge
# install plugin for jupyter lab
jupyter labextension install nglview-js-widgets

Please note, if you are using Jupyter Lab (not notebook) there are som additional notes to consider

Contributions

Fork, branch and use pre-commit.

Other code bases

"is this the first python wrapper for quantum chemistry?" No, check the others and find the one right for your project. Know one, not on the list? Add it. In alphabetic order.

Future work

  • Separation of concern. The ppqm package should adapt to using cclib or

similar to collect quantum output.