Skip to content

Latest commit

 

History

History
112 lines (94 loc) · 4.54 KB

extensions.md

File metadata and controls

112 lines (94 loc) · 4.54 KB

Extensions

Due to its flexibility and modular nature, many extensions have been developed based on PySCF. As a courtesy, repositories for some of these extensions are hosted by the PySCF organization's GitHub. However, the PySCF organization provides no support for these extensions, nor a guarantee of future compatibility. Questions should be addressed to the authors of the extension, and issues can be raised on the GitHub repository of the extension.

Once an extension module has been correctly installed (see How to install extensions), you can use it as a regular submodule of PySCF, e.g.,

import pyscf
from pyscf.semiempirical import MINDO3
mol = pyscf.M(atom='N 0 0 0; N 0 0 1')
MINDO3(mol).run()

A list of PySCF extensions is given below.

Project URL
cas_ac0 https://github.com/CQCL/pyscf-ac0
cornell-shci https://github.com/pyscf/cornell-shci
ccpy https://github.com/piecuch-group/ccpy
cppe https://github.com/maxscheurer/cppe
dftd3 https://github.com/pyscf/dftd3
dispersion https://github.com/pyscf/dispersion
dmrgscf https://github.com/pyscf/dmrgscf
doci https://github.com/pyscf/doci
fciqmc https://github.com/pyscf/fciqmc
forge https://github.com/pyscf/pyscf-forge
icmpspt https://github.com/pyscf/icmpspt
mbd https://github.com/pyscf/mbd
naive-hci https://github.com/pyscf/naive-hci
nao https://github.com/pyscf/nao
properties https://github.com/pyscf/properties
pyqmc https://github.com/WagnerGroup/pyqmc
qsdopt https://github.com/pyscf/qsdopt
rt https://github.com/pyscf/rt
semiempirical https://github.com/pyscf/semiempirical
shciscf https://github.com/pyscf/shciscf
zquatev https://github.com/sunqm/zquatev
tblis https://github.com/pyscf/pyscf-tblis

How to install extensions

Many extension modules (e.g., the semiempirical module) can be installed using pip's extra dependency mechanism,

pip install pyscf[semiempirical]

Although not recommended, all extension modules can be installed,

pip install pyscf[all]

How to install extensions (advanced)

Based on the technique of namespace packages specified in PEP 420, PySCF has developed a couple of methods to install the extension modules.

Pip command

For pip version newer than 19.0, projects hosted on GitHub can be installed on the command line,

pip install git+https://github.com/pyscf/semiempirical

A particular release on GitHub can be installed with the release URL you can look up on GitHub,

pip install https://github.com/pyscf/semiempirical/archive/v0.1.0.tar.gz

Pip command for local paths

If you wish to load an extension module developed in a local directory, you can use the local install mode of pip. Use of a Python virtual environment is recommended to avoid polluting the system default Python runtime environment, for example,

python -m venv /home/abc/pyscf-local-env
source /home/abc/pyscf-local-env/bin/activate
git clone https://github.com/pyscf/semiempirical /home/abc/semiempirical
pip install -e /home/abc/semiempirical

Environment variable PYSCF_EXT_PATH

You can place the location of each extension module (or a file that contains these locations) in this environment variable. The PySCF library will parse the paths defined in this environment variable, and load the relevant submodules. For example,

git clone https://github.com/pyscf/semiempirical /home/abc/semiempirical
git clone https://github.com/pyscf/doci /home/abc/doci
git clone https://github.com/pyscf/dftd3 /home/abc/dftd3
echo /home/abc/doci > /home/abc/.pyscf_ext_modules
echo /home/abc/dftd3 >> /home/abc/.pyscf_ext_modules
export PYSCF_EXT_PATH=/home/abc/semiempirical:/home/abc/.pyscf_ext_modules

Using this definition of PYSCF_EXT_PATH, the three extension submodules (semiempirical, doci, dftd3) are loaded when PySCF is imported, and you don't have to use a Python virtual environment.