  Modelling and understanding properties of materials from first principles
require knowledge of the underlying atomistic structure. This entails knowing
the individual identity and position of all involved atoms. Obtaining such
information for macro-molecules, nano-particles, clusters, and for the surface,
interface, and bulk phases of amorphous and solid materials represents a
difficult high dimensional global optimization problem. The rise of machine
learning techniques in materials science has, however, led to many compelling
developments that may speed up such structure searches. The complexity of the
new methods have established the necessity for an efficient way of
experimenting with and assembling them into global optimization algorithms. In
this paper we introduce the Atomistic Global Optimization X (AGOX) framework
and code, as a customizable approach to building efficient global optimization
algorithms. A modular way of expressing global optimization algorithms is
described and modern programming practices are used to enable that modularity
in the freely available AGOX python package. Two examples of global
optimization problems are analyzed: One that is computationally inexpensive
which is used to showcase that AGOX enables the expression of multiple global
optimization algorithms. As the other example, AGOX is used for solving a
complex atomistic optimization problem for a metal-nitride nano-cluster
embedded in a graphene sheet as described at the density functional theory
(DFT) level.

Chemical Physics;Materials Science