Skip to content

lrcfmd/ipcsp-spp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Integer programming with Statistical Proxy Potentials (SPPs) for Crystal Structure Prediction

ipcsp graphic

The task of finding a periodic allocation of atoms on a grid in space that minimises their pairwise interaction energy can be encoded as an integer program. Such integer program can be solved either using advanced solvers to obtain provably optimal solutions or using quantum annealers (or any other Ising machine) for a potential speed-up or energy efficiency. Subsequently, solutions of the periodic lattice allocation problems can be used to predict crystal structures of materials or perform other investigations of the potential energy surfaces.

This package provides implementation of this encoding for uniform grids in cubic/non-cubic unit cells, where the interaction energy is a sum of Statistical Proxy Potentials(SPPs). In the current implementation, the resulting integer programs can be solved either using Gurobi or D-Wave quantum annealer.

If the package is run as a module, the program presents an interactive menu to perform crystal prediction of either several well-known crystal structures or a composition (e.g. SrTiO3) provided by the user. Solutions of integer programs are reported alongside the outcomes of subsequent local minimisations and the expected outcomes.

Installation

Dependencies

On top of the commonly used python packages, the code relies on:

  • Gurobi to solve integer programs on classical computers (tested with v13.0). Academic licence is available free of charge.
  • D-Wave Leap and its SDK to solve quadratic unconstrained binary problems (tested with dwave-ocean-sdk v9.3.0). Classical simulation annealing algorithm is available as well in the same package for testing purposes and requires no registration.
  • CHGNet for subsequent local optimisations of periodic lattice allocations (tested with v0.4.2).
  • GULP for calculating SPP scores of periodic lattice allocations and their relaxed structures (tested with 6.3.4).
  • Atomic Simulation Environment to run CHGNet, GULP calculations and handle crystal files.
  • Statistical Proxy Potentials to download SPP.zip.

Package

It can be installed using pip:

pip install git+https@github.com:lrcfmd/ipcsp-spp.git

This package requires SPP files that are distributed separately as a ZIP archive. Download the SPP.zip from the link provided in the Dependencies section, extract it and place the extracted folder at the same level as __main__.py.

For development installation:

git clone git@github.com:lrcfmd/ipcsp-spp.git
cd ipcsp-spp
pip install -e .

Usage

The code can be run as a module:

python -m ipcsp2

Upon launching, the program presents an interactive menu in your terminal. You will be prompted to choose one of two available options.

Choose an option:
1. Run predefined benchmarks
2. Enter custom chemical composition

Enter your choice (1 or 2):

Option 1 will perform prediction of a variety of well-known crystal structures e.g. SrTiO3, Y203. Option 2 requires you to provide chemical composition (e.g. SrTiO3, Co4As8), unit cell parameters, grid number(s) for each side of the cell, space group number, K-Best solutions of the integer programming. The experimentally determined structures corresponding to the benchmark test cases are stored in structures/. Crystal structure prediction problems to run with option 1 can be selected by modifying test key in the settings dictionary defined in __main__.py as well as other parameters of the corresponding lattice allocation problems.

Citation

This repository accompanies the manuscript "Quantum-ready Crystal Structure Prediction using Statistical Proxy Potentials", which is currently under review for publication in Philosophical Transactions of the Royal Society A.

The code is provided to facilitate reproduction of the results reported in the manuscript. Upon publication, the corresponding citation and DOI will be added to this repository.

About

Integer Programming encoding using Statistical Proxy Potentials for Crystal Structure Prediction with classic and quantum computing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors