QCEngine

Quantum chemistry program executor and IO standardizer (QCSchema) for quantum chemistry.

Program Execution

A simple example of QCEngine’s capabilities is as follows:

>>> import qcengine as qcng
>>> import qcelemental as qcel

>>> mol = qcel.models.Molecule.from_data("""
O  0.0  0.000  -0.129
H  0.0 -1.494  1.027
H  0.0  1.494  1.027
""")

>>> input = qcel.models.ResultInput(
    molecule=mol,
    driver="energy",
    model={"method": "SCF", "basis": "sto-3g"},
    keywords={"scf_type": "df"}
    )

These input specifications can be executed with the compute syntax along with a program specifier:

>>> ret = qcng.compute(input, "psi4")

The results contain a complete record of the computation:

>>> ret.return_result
-74.45994963230625

>>> ret.properties.scf_dipole_moment
[0.0, 0.0, 0.6635967188869244]

>>> ret.provenance.cpu
Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz

Backends

Currently available compute backends for single results are as follow:

In addition, several procedures are available:

Configuration Determination

In addition, QCEngine can automatically determine the following quantites:

  • The number of physical cores on the system and to use.

  • The amount of physical memory on the system and the amount to use.

  • The provenance of a computation (hardware, software versions, and compute resources).

  • Location of scratch disk space.

  • Location of quantum chemistry programs binaries or Python modules.

Each of these options can be specified by the user as well.

>>> qcng.get_config()
<JobConfig ncores=2 memory=2.506 scratch_directory=None>

>>> qcng.get_config(local_options={"scratch_directory": "/tmp"})
<JobConfig ncores=2 memory=2.506 scratch_directory='/tmp'>

>>> os.environ["SCRATCH"] = "/my_scratch"
>>> qcng.get_config(local_options={"scratch_directory": "$SCRATCH"})
<JobConfig ncores=2 memory=2.506 scratch_directory='/my_scratch'>