PyPI version

icet — A Pythonic approach to cluster expansions

icet is a tool for the construction and sampling of alloy cluster expansions. A detailed description of the functionality provided as well as an extensive tutorial can be found in the user guide.

icet 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.

The following snippet provides a minimal example for its usage:

>>> 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 in Gothenburg, Sweden, and the Data and Software Management Center at the European Spallation Source in Copenhagen, Denmark. Please consult the credits page for information on how to cite icet.

icet and its development are hosted on gitlab. Bugs and feature requests are ideally submitted via the gitlab issue tracker. The development team can also be reached by email via