.. pymolpro documentation master file, created by
sphinx-quickstart on Thu Oct 13 06:35:46 2022.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
pymolpro (version |release|)
============================
**pymolpro** is a Python library that provides support
for working with the `Molpro quantum chemistry package `_.
The principal feature is
the :py:meth:`Project` class that provides access to a complete Molpro job, including input
and output files together with metadata such as job status information.
The project is stored as a bundle implemented as a directory in the file system.
The class is a Python binding of the
`sjef `_ library with additional Molpro-specific customisation,
and the project bundle can be accessed
also through a command-line interface and the `gmolpro `_
graphical user interface.
For technical reasons, :py:meth:`Project` invokes the submodular class :py:meth:`pymolpro.project.Project`.
Normally all that is required to instantiate a class, on either a new or existing bundle,
is to pass a single argument which is the path of the bundle, with or without the compulsory
suffix `.molpro`.
Simply running Molpro and inspecting the output can be achieved as::
from pymolpro import Project
p=Project("Neon")
p.write_input("""
geometry={Ne}
rhf
ccsd(t)
""")
p.run()
print(p.out)
Normally, :py:meth:`pymolpro.project.Project.run()` launches the job in the background, potentially on a remote machine via a suitably configured `backend `_,
and its status is available through the :py:attr:`pymolpro.project.Project.status` attribute.
Additionally, the job launching request is ignored if the project has already run the job successfully using the same input; this introduces the convenience of being able to re-run an entire workflow, for example in a Jupyter notebook, without needless recomputation.
Molpro produces an xml file that contains all the essential results, marked up using the `molpro-output `_ schema.
The pymolpro Project class contains functions that interpret that output, and at the lowest level this can be
achieved through a suitable `XPath `_ search.
For extracting calculated properties, including energies, convenience functions
:py:meth:`pymolpro.project.Project.properties()`,
:py:meth:`pymolpro.project.Project.energies()`,
that wrap
suitable XPath searches, are provided.
These functions can return either a Python dictionary containing all information about the property, or just its value.
The following is a simple example where a job is created, run and
analysed.::
from pymolpro import Project
p = Project("Neon")
p.write_input("geometry={Ne}; rhf; ccsd(t)")
p.run(wait=True)
assert p.status == 'completed' and not p.errors()
energies = {}
for node in p.xpath("//property[@name='Energy' or @name='total energy']"):
energies[node.xpath("@method")[0]] = float(node.xpath("@value")[0])
energy_values = p.energies()
all_principal_properties_dict = p.properties(principal=True, dict=True)
final_energy = p.energy(method='CCSD(T)')
Installation
------------
pymolpro is on `conda forge `_ and can be installed on most systems using ``conda install -c conda-forge pymolpro``.
On Microsoft Windows, you need to also install `msys2 `_,
and then, in an msys command window, ``pacman -S rsync openssh``.
For a complete set-up of pymolpro within Jupyter notebooks driven from the comand line on linux or macOS,
* Install `Molpro `_
* Install `Miniconda `_. On macOS with homebrew, this can be done with ``brew install miniconda``. You may need to then type ``conda init`` and restart the shell.
* Create a conda environment to contain at least these packages; of course you can add any others you need, e.g. ``matplotlib``: ``conda create -n pymolpro-jupyter -c conda-forge pymolpro jupyter nb_conda_kernels``.
* If you intend to run Molpro jobs on a remote machine, set up password-free ssh access to it, using the following or otherwise: ``ssh-keygen; ssh-copy-id`` user@host. Then edit the file ``~/.sjef/molpro/backends.xml`` to `specify the backend `_.
* Activate the environment: ``conda activate pymolpro-jupyter``. To create a new notebook, ``jupyter notebook``; to open an existing notebook ``jupyter notebook existing_file.ipynb``
For a complete set-up of pymolpro within Jupyter notebooks on Windows,
* Install `Molpro `_, and msys2 as described above.
* Install `Anaconda3 `_
* Open Anaconda Navigator
* Select the ``Environments`` tab and press the ``Create`` button. Give your new conda environment a name, e.g. ``pymolpro-jupyter``.
* With the ``Channels`` button, add the ``conda-forge`` channel, and then select ``Not installed`` and search for, and install ``pymolpro``, ``jupyter``, ``nb_conda_kernels``, as well as any other packages you might want, such as ``matplotlib``.
* If you intend to run Molpro jobs on a remote machine, from the command menu run ``MSYS2``, and (a) create a password-free ssh key by running ``ssh-keygen``; (b) authorize that key for login on the desired remote machine: ``ssh-copy-id`` user@host; (c) edit the file ``.sjef\molpro\backends.xml`` (relative to your Windows home directory) to `specify the backend `_.
* Select the ``Home`` tab and run the Jupyter Notebook application, ensuring that the selected environment is ``pymolpro-jupyter``.
.. toctree::
:maxdepth: 2
:caption: Contents:
modules
databases
examples
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`