Skip to main content

ASE-compatible Python bindings for the QUIP and GAP codes

Project description

QUIP - QUantum mechanics and Interatomic Potentials

Build Status build Docker Pulls

The QUIP package is a collection of software tools to carry out molecular dynamics simulations. It implements a variety of interatomic potentials and tight binding quantum mechanics, and is also able to call external packages, and serve as plugins to other software such as LAMMPS, CP2K and also the python framework ASE. Various hybrid combinations are also supported in the style of QM/MM, with a particular focus on materials systems such as metals and semiconductors.

For more details, see the online documentation.

Long term support of the package is ensured by:

  • Noam Bernstein (Naval Research Laboratory)
  • Gabor Csanyi (University of Cambridge)
  • James Kermode (University of Warwick)

Portions of this code were written by: Albert Bartok-Partay, Livia Bartok-Partay, Federico Bianchini, Anke Butenuth, Marco Caccin, Silvia Cereda, Gabor Csanyi, Alessio Comisso, Tom Daff, ST John, Chiara Gattinoni, Gianpietro Moras, James Kermode, Letif Mones, Alan Nichol, David Packwood, Lars Pastewka, Giovanni Peralta, Ivan Solt, Oliver Strickson, Wojciech Szlachta, Csilla Varnai, Steven Winfield, Tamas K Stenczel, Adam Fekete.

Copyright 2006-2019.

Most of the publicly available version is released under the GNU General Public license, version 2, with some portions in the public domain. The GAP code, included as a submodule, is distributed under a non-commerical academic source license

Features

The following interatomic potentials are presently coded or linked in QUIP:

  • BKS (van Beest, Kremer and van Santen) (silica)
  • EAM (fcc metals)
  • Fanourgakis-Xantheas (water)
  • Finnis-Sinclair (bcc metals)
  • Flikkema-Bromley
  • GAP (Gaussian Approximation Potentials) with (growing...) online documentation
  • Guggenheim-McGlashan
  • Brenner (carbon)
  • OpenKIM (general interface)
  • Lennard-Jones
  • MBD (many-body dispersion correction)
  • Morse
  • Partridge-Schwenke (water monomer)
  • Stillinger-Weber (carbon, silicon, germanium)
  • SiMEAM (silicon)
  • Sutton-Chen
  • Tangney-Scandolo (silica, titania etc)
  • Tersoff (silicon, carbon)
  • Tkatchenko-Sheffler pairwise dispersion correction

The following tight-binding functional forms and parametrisations are implemented:

  • Bowler
  • DFTB
  • GSP
  • NRL-TB

The following external packages can be called:

  • CASTEP
  • VASP
  • CP2K
  • ASAP
  • Molpro
  • ASE (required if using quippy Python interface; latest version recommended)

Code philosophy and goals

QUIP was born because of the need to efficiently tie together a wide variety of different models, both empirical and quantum mechanical. It will not be competitive in terms of performance with codes such as LAMMPS and Gromacs. The Atomic Simulation Environment also does does this, and is much more widely used, but QUIP has a number of unique features:

  • Access to Fortran types and routines from Python via the quippy package
  • Support for Gaussian Approximation Potentials (GAP) - online docs
  • Does not assume minimum image convention, so interatomic potentials can have cutoffs that are larger than the periodic unit cell size

Binary Installation of QUIP and quippy

Binary wheels for QUIP and the associated quippy Python bindings that provide interopability with the Atomic Simulation Environment (ASE) are available from the Python package index (PyPI) under the package name quippy-ase. This means you can install the latest release with:

pip install quippy-ase

Installing via pip also makes the quip and gap_fit command line programs available (providing the directory that pip installs scripts to is on your PATH).

Currently, wheels are available for x86_64 architectures with Python 3.6+ on Mac OS X and glibc-based Linux distributions (e.g. Ubuntu, CentOS). The wheels are updated periodically using the quippy-wheels repository using GitHub Actions CI. Please open issues there if you have problems installing with pip.

Precompiled Containers

If you have access to Docker or Singularity, you can try one of the precompiled images to get up and running quickly.

Compilation Instructions

  1. To compile QUIP the minimum requirements are:

    • A working Fortran compiler. QUIP is tested with gfortran 4.4 and later, and ifort 11.1.

    • Linear algebra libraries BLAS and LAPACK. QUIP is tested with reference versions libblas-dev and liblapack-dev on Ubuntu 12.04, and mkl 11.1 with ifort.

  2. Clone the QUIP repository from GitHub. The --recursive option brings in submodules automatically (If you don't do this, then you will need to run git submodule update --init --recursive from the top-level QUIP directory after cloning) ::

    git clone --recursive https://github.com/libAtoms/QUIP.git
    

    One submodule is the GAP code, which can be found in src/GAP. Note that GAP is distributed under a diferent license.

    GAP is a machine learning method that uses Gaussian process regression, and needs large data files to run. You can find potentials that have been published as well as training data in our data repository, see also the online docs.

  3. Decide your architecture by looking in the arch/ directory, and define an environmental variable QUIP_ARCH, e.g.::

    export QUIP_ARCH=linux_x86_64_gfortran
    

    for standard gfortran on Linux. Here is where you can adjust which compiler is being used, if you do not like the defaults. You may need to create your own arch/Makefile.${QUIP_ARCH} file based on an existing file for more exotic systems.

  4. Customise QUIP, set the maths libraries and provide linking options::

    make config
    

    Makefile.config will create a build directory, build/${QUIP_ARCH}, and all the building happen there. First it will ask you some questions about where you keep libraries and other stuff, if you don't use something it is asking for, just leave it blank. The answers will be stored in Makefile.inc in the build/${QUIP_ARCH} directory, and you can edit them later (e.g. to change compiler, optimisation or debug options).

    If you later make significant changes to the configuration such as enabling or disabling tight-binding support you should force a full rebuild by doing a make deepclean; make.

  5. Compile all programs, modules and libraries::

    make
    

    From the top-level QUIP directory. All programs are built in build/${QUIP_ARCH}/. You can also find compiled object files and libraries (libquip.a) in that directory. Programs can be called directly from that directory.

    Other useful make targets include:

    • make install : copies all compiled programs it can find to QUIP_INSTALLDIR, if it's defined and is a directory (full path required), and copies bundled structures to QUIP_STRUCTS_DIR if it is defined.

    • make libquip: Compile QUIP as a library and link to it. This will make all the various libraries and combine them into one: build/${QUIP_ARCH}/libquip.a, which is what you need to link with (as well as LAPACK).

  6. A good starting point is to use the quip program, which can calculate the properties of an atomic configuration using a variety of models. For example::

    quip atoms_filename=test.xyz init_args='IP LJ' \
        param_filename=share/Parameters/ip.parms.LJ.xml E
    

    assuming that you have a file called test.xyz with the following data in it representing Cu atoms in a cubic fcc lattice::

    4
    Lattice="3.61 0 0 0 3.61 0 0 0 3.61" Properties=species:S:1:pos:R:3
    Cu     0.000 0.000 0.000
    Cu     0.000 1.805 1.805
    Cu     1.805 0.000 1.805
    Cu     1.805 1.805 0.000
    

    The Lennard-Jones parameters in the above example are defined in the ip.parms.LJ.xml file under share/Parameters (ensure the path to this file is correct). The format of the atomic configuration is given in Extended XYZ format, in which the first line is the number of atoms, the second line is a series of key=value pairs, which must at least contain the Lattice key giving the periodic bounding box and the Properties key that describes the remaining lines. The value of Properties is a sequence of triplets separated by a colon (:), that give the name, type and number of columns, with the type given by I for integers, R for reals, S for strings.

    Most string arguments can be replaced by --help and QUIP programs will then print a list of allowable keywords with brief help messages as to their usage, so e.g. init_args=--help will give a list of potential model types (and some combinations). The parsing is recursive, so init_args="IP --help" will then proceed to list the types of interatomic potentials (IP) that are available.

  7. To compile the Python wrappers (quippy), the minimum requirements are as follows. f90wrap will be installed automatically by the build process, but you might need to check that the directory where pip installs executuable scripts to is on your path (e.g. by setting PATH=~/.local/bin:$PATH).

    Note: If you are using a Python virtual environment (virtualenv) and would like to install quippy into it, ensure the environment is activated (source <env_dir>/bin/activate, where <env_dir> is the root of your virtual environment) before building quippy (otherwise library versions may cause unexpected conflicts).

  8. To compile the Python wrappers (quippy), run::

    make quippy
    

    Quippy can be used by adding the lib directory in quippy/build/${QUIP_ARCH} to your $PYTHONPATH, however it can be more convenient to install into a specific Python distribution::

    make install-quippy
    

    will either install into the current virtualenv or attempt to install systemwide (usually fails without sudo). To install only for the current user (into ~/.local), execute the command QUIPPY_INSTALL_OPTS=--user make install-quippy, or use QUIPPY_INSTALL_OPTS=--prefix=<directory> to install into a specific directory. QUIPPY_INSTALL_OPTS can also be set in the file build/${QUIP_ARCH}/Makefile.inc.

  9. More details on the quippy installation process and troubleshooting for common build problems are available in the online documentation.

  10. To run the unit and regression tests, which depend on quippy:: bash make test

  11. To get back to a state near to a fresh clone, use bash make distclean

  12. Some functionality is only available if you check out other modules within the QUIP/src/ directories, e.g. the ThirdParty (DFTB parameters, TTM3f water model).

  13. In order to run QUIP potentials via LAMMPS, make libquip to get QUIP into library form, and then follow the instructions in the LAMMPS documentation. You need at least 11 Aug 2017 version or later.

Developer notes:

Fixing/updating the version of GAP:

cd src/GAP
git checkout <commit> 

OR

git checkout main

Updating the version in the QUIP repository:

cd ../..
git add src/GAP # or src/f90wrap
git commit -m "updating the version of GAP"

Mac OS

We do not recommend Apple-shipped compilers and python, and we do not test compatibility with them. Either use MacPorts or Homebrew to obtain GNU compilers, and also use the python from there or Anaconda. As of this edit, gcc-8.1 produces as internal compiler error, but gcc-4.6 through to gcc-7 is fine.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

quippy_ase-0.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

quippy_ase-0.9.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

quippy_ase-0.9.7-cp39-cp39-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

quippy_ase-0.9.7-cp39-cp39-macosx_10_10_x86_64.whl (27.0 MB view details)

Uploaded CPython 3.9 macOS 10.10+ x86-64

quippy_ase-0.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

quippy_ase-0.9.7-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (25.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

quippy_ase-0.9.7-cp38-cp38-macosx_10_10_x86_64.whl (27.1 MB view details)

Uploaded CPython 3.8 macOS 10.10+ x86-64

quippy_ase-0.9.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.1 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

quippy_ase-0.9.7-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

quippy_ase-0.9.7-cp37-cp37m-macosx_10_10_x86_64.whl (27.0 MB view details)

Uploaded CPython 3.7m macOS 10.10+ x86-64

quippy_ase-0.9.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.1 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

quippy_ase-0.9.7-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

quippy_ase-0.9.7-cp36-cp36m-macosx_10_10_x86_64.whl (27.0 MB view details)

Uploaded CPython 3.6m macOS 10.10+ x86-64

File details

Details for the file quippy_ase-0.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for quippy_ase-0.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f959902cc8e58d31779004f37f1dd2176492e2cb36f6ee7ef9b8d36f5130091f
MD5 ce51bfa69757c5ad49310c237e16ff51
BLAKE2b-256 a091c358d1f88450664512f054081329345c30285c3562b0dcaa26a1cdc7472e

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for quippy_ase-0.9.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 beda9b50f1db9852ee0f70f8130baa3cc624a3a63e965e0697e60e8c320fcf51
MD5 56bb13d3e59e9eb743891715101bdbc6
BLAKE2b-256 cce119d53e75466b2d7ed96191be67b48f5344bc137e76972d0a1fedcfad3440

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: quippy_ase-0.9.7-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 22.4 MB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for quippy_ase-0.9.7-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e506f2bdbd27ca133475f0a4fc7ad7295bd373ac2c96941a6faa25459d83a3a7
MD5 1efabbb2be90fdb532ef4a302573d4a2
BLAKE2b-256 7ad790f8904847fd22061fd078406d07226db053fa8b9b23260d0b03d849ae38

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp39-cp39-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: quippy_ase-0.9.7-cp39-cp39-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 27.0 MB
  • Tags: CPython 3.9, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for quippy_ase-0.9.7-cp39-cp39-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 fb48f423346eacb63a971ec9872235ed43ebf0817a6de2cf7bfcdf0a75c07067
MD5 a7dfa82cea08b340c88dc34eed8c2d70
BLAKE2b-256 d444fb084c8a8817aa58edde52c25574bc667c96d1720a4bad0c0121ef2faf04

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for quippy_ase-0.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 44a031df7017e1eb0804a8942eab13b049c4dec4c5d4a4f1872d24880bea9980
MD5 299799f5ade39e2b926cb50e873e6983
BLAKE2b-256 07016358147e1da913a7020a46a50b07b3c08162a29c341101e207ff2638f371

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for quippy_ase-0.9.7-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 bbc1fe31101254a1795ce349f6bce1fafa34d9b7867996aab9715ba71ff7bdf0
MD5 4eff1a8ea295216a782832c3521ae0d7
BLAKE2b-256 2c5db5e03c62305944277e349fb5c0afe0df0dd322bcd56726ed81cea7f18586

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp38-cp38-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: quippy_ase-0.9.7-cp38-cp38-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 27.1 MB
  • Tags: CPython 3.8, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for quippy_ase-0.9.7-cp38-cp38-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 61f5612ce2692e26ce2bbea2afeb771be3f5fc027d87fa1fdd7a9b2e9274acfe
MD5 ff39e0e55d50c534174d3db7d3b707d3
BLAKE2b-256 932c74ad1ff7ba0fd35913159bb9a9cd945fa93734e1d1ff460251e584ab92c8

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for quippy_ase-0.9.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 593c6054d2d078240287c8339bdc5d8cbe011dfcf7133dfdf1e7223ea36c9e3f
MD5 cb93ccd054c9366baf19d5a9afb223e9
BLAKE2b-256 a6c29d86017c05c2d55fd5f5b306a335fd994c2fc68e2e13e5fce7c6940891ea

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for quippy_ase-0.9.7-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 abaa6038b193cb9ed69c8989a4b5eb5b7f3419d98ab1a547d02a0480960bc5ce
MD5 87fac7a1e5d5a00d69d9063e185019eb
BLAKE2b-256 fc7e8c7e04e7474822b3685f0fe238cbe417368183a0c2280b73a3dcd45b863d

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp37-cp37m-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: quippy_ase-0.9.7-cp37-cp37m-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 27.0 MB
  • Tags: CPython 3.7m, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for quippy_ase-0.9.7-cp37-cp37m-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 7a2f38841654e9339f20857c375303cc55d70e1f48151a144cdaba72ba4f2945
MD5 8decd02c2bb9cf07355ab5d51d5ff1a1
BLAKE2b-256 dc4ba0380b498fe2caf8f3245b45b60bcdc625d8a28b7831eee2e8a445b62f5d

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for quippy_ase-0.9.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e16998d3943bd0b761140b3f127a8e5a1943cbea4aed2bb855fd967a481aeb72
MD5 3e62c4ca4458a4fa1903e2e486f6f21c
BLAKE2b-256 3310853ee5ebec52d827e4ad40c42f7eaf76f21d9c836aaee341284657097a93

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for quippy_ase-0.9.7-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 f610fed297ca11df2ce92fb536161cb8653db6f80f8677661a88ffe39574f3ff
MD5 7c894f45bd14dd34b08d80ff040d0dae
BLAKE2b-256 235719387e9247bea5f7393cf61e949b9b40f73f8df1795012f3b705f85a49c9

See more details on using hashes here.

File details

Details for the file quippy_ase-0.9.7-cp36-cp36m-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: quippy_ase-0.9.7-cp36-cp36m-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 27.0 MB
  • Tags: CPython 3.6m, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for quippy_ase-0.9.7-cp36-cp36m-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 5e3915f76b6dcd081762505f405810a212b7601f65ebdb42470124728e351ff4
MD5 5a659d9dd60bcf2d7b2d7da5dba87c83
BLAKE2b-256 cbb8f9e1d5d465b686b50d53856031bd34b312767ddfc01a107aab4717e88284

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page