icet — A pythonic approach to cluster expansions#
icet (pronounced /aɪs ti/) is a tool for the construction and sampling of alloy cluster expansions [AngMunRah19].
It is written in Python, which enables easy integration with many first-principles codes and analysis tools accessible from Python, and allows for a simple and intuitive user interface.
All computationally demanding parts are, however, written in C++
ensuring performance while maintaining portability.
In atomic scale materials modeling the alloy cluster expansion (CE) technique is widely used for predicting the energy as a function of composition [SanDucGra84] [Wal09]. CEs are usually trained to match as closely as possible a set of first-principles calculations and subsequently used to sample configuration space with Monte Carlo simulations [EkbRosFra24]. In this way, CEs can be used to predict alloy phase diagrams.
More generally, CEs provide a mapping between a configuration and a property of interest. The configuration is not restricted to be atomic but could for example also represent the sequence of amino acids in a protein [NelHarZho13]. Similarly, properties of interest can also be more general and include for example migration barriers, lattice constants, or transport coefficients [AngLinErh16].
In addition to a comprehensive introduction provided in the get started section, there is an extensive set of tutorials [EkbRosFra24]. The following snippet provides a minimal example for the usage of icet.
>>> cs = ClusterSpace(primitive_cell, cutoffs, species)
>>> sc = StructureContainer(cs)
>>> for structure, energy in zip(training_structures, energies):
... sc.add_structure(structure, properties={'energy': energy})
>>> opt = Optimizer(sc.get_fit_data())
>>> opt.train()
>>> ce = ClusterExpansion(cs, opt.parameters)
icet has been developed at the Department of Physics of Chalmers University of Technology (Gothenburg, Sweden) and the Data and Software Management Center at the European Spallation Source (Copenhagen, Denmark). Please consult the credits page for information on how to cite icet. icet and its development are hosted on gitlab. For questions and help please use the icet discussion forum on matsci.org.