History of USPEX

The USPEX (Universal Structure Predictor: Evolutionary Xtalloraphy...and in Russian "uspekh" means "success" - owing to the high success rate and many useful results produced by this method!) code possesses rather unique capabilities: it allows one to predict the stable structure of a given compound at given conditions (pressure, temperature) just from the knowledge of the chemical composition and using no experimental information. From the beginning, this non-empirical crystal structure prediction was the main aim. This is achieved by merging a specially developed evolutionary algorithm featuring local optimization and real-space representation with ab initio simulations. In addition to this fully non-empirical search, USPEX allows one to predict also a large set of robust metastable structures and perform several types of simulations using various degrees of prior knowledge.

The problem of crystal structure prediction is very old and does, in fact, constitute the central problem of theoretical crystal chemistry. In 1988 John Maddox wrote that:

"One of the continuing scandals in the physical sciences is that it remains in general impossible to predict the structure of even the simplest crystalline solids from a knowledge of their chemical composition solids such as crystalline water (ice) are still thought to lie beyond mortals' ken".

USPEX employs an evolutionary algorithm devised by A.R. Oganov and C.W. Glass, with major later contributions by A.O. Lyakhov and Q. Zhu. Its efficiency draws from the carefully designed frame of the algorithm (type of selection, niching, etc.) and problem-specific variation operators, while its reliability is largely due to the use of state-of-the-art ab initio simulations inside the evolutionary algorithm.

A major motivation for our development of USPEX has been the discovery of the post-perovskite phase of MgSiO3, which has been made independently by two groups in 2004 and has significantly changed models of the Earth's internal structure. When C.W. Glass joined Oganov's group in August 2004, we started the development of USPEX. In 2006 -2008, when Yanming Ma was A.R. Oganov's postdoc and applied USPEX to a number of important problems, many new results were obtained. A new major turn took place in August 2007, when A. Lyakhov took over the role of the main code developer. Space group determination was contributed by visiting student Y. Wang. Q. Zhu (current USPEXmaster and an active code developer) joined us in September 2009. By September 2010, when USPEX was publicly released, over 50 paper (including 2 in Nature, 5 in Phys. Rev. Lett., 4 in PNAS) were written on USPEX or using this methodology, and its user community numbered nearly 200. The popularity of USPEX is due to its extremely good efficiency and reliability. This was shown in the First Blind Test for Inorganic Crystal Structure Prediction, where USPEX outperformed the other methods it was tested against (simulated annealing and random sampling).

In its current version, the code has a minimal input: the number of atoms of each sort, pressure-temperature conditions and algorithm parameter values: size of the population (i.e. the number of structures in each generation) and its percentage used for producing the next generation, constraints, and percentages of structures obtained by lattice mutation, atomic permutation and heredity. Other parameters define how often structure slices combined in heredity are randomly shifted, how many atomic permutations are done per structure, and how strong lattice mutation is. The use of specially designed fingerprint functions for niching helps to speed up structure search and prevent sticking to local minima. Optionally, calculations can be performed under fixed lattice parameters (if these are known from experiment). It is possible to perform variable-composition simulations, where one specifies only the atomic types, and USPEX should find both the stable compositions and the corresponding structures. It is also possible to predict structures of low-dimensional objects - nanoparticles and surfaces, and to study packing of molecules in molecular crystals.

Version history

  • v.1 - Evolutionary algorithm without local optimization. Real-space representation, interface with VASP. Experimental version. October 2004.

  • v.2 - CMA-ES implementation (CMA-ES is a powerful global optimization method developed by N. Hansen). Experimental version. January 2005.

  • v.3 - Evolutionary algorithm with local optimization.

    • v.3.1 - Working versions, sequential. Major basic developments.

      • 3.1.1-3.1.3 - Versions for debugging. April 2005.

      • 3.1.4-3.1.5 - First production version. Based largely on heredity with slice-shifting and with minimum-parent contribution (hard-coded to be 0.25). May 2005.

      • 3.1.6-3.1.7 - Experimental versions (development of new options). August 2005.

      • 3.1.8 - Adaptation of k-point grids. 15/10/2005.

      • 3.1.9 - Improved output. 28/10/2005.

      • 3.1.10 - Automatic control of local optimization. Slice-shift mutation. 31/10/2005.

      • 3.1.11 - Restart from arbitrary generation. 04/11/2005.

      • 3.1.12 - Production version based on v.3.1.11, variable slice-shift mutation. 11/11/2005.

      • 3.1.13 - Adaptive scaling volume. 29/11/2005.

      • 3.1.14 - Basic seed technique. 29/11/2005 (debugged 6/12/2005).

      • 3.1.15 - Improved output. Replaced InterplanarDistance constraint by LatticeParameter constraint.15/12/2005.

    • v.3.2 - Massive parallel version.

      • 3.2.1 - Massive parallelization. 16/11/2005.

      • - Corrected version with an arbitrary number of CPUs/job. 21/11/2005.

      • 3.2.2 - Improved output. Replaced InterplanarDistance constraint by LatticeParameter constraint. 15/12/2005.

  • v.4 - Unified parallel/sequential version.

    • 4.1.1 - Unified 3.1.15 and 3.2.2. Lattice mutation. 20/12/2005 (debugged 10/01/2006).

    • 4.2.1 - Interfaced with SIESTA. Initial population size allowed to be different from the running population size. 24/01/2006 (debugged 20/04/2006).

    • 4.2.2 - Number of kept best individuals can be specified. Experimental version. 21/04/06.

    • 4.2.3 - Best individuals may or may not be reoptimized in each generation. Version with fully debugged massive parallelism. 25/04/06.

    • 4.3.1 - Implementation for CRAY XT3 supercomputer. 22/05/2006.

    • 4.4.1 - Interfaced with GULP. 08/05/2006.

    • 4.4.2 - POTCAR_1, POTCAR_2 etc. allowed. 08/05/06.

  • v.5 - Completely rewritten and debugged version, clear modular structure of the code.

    • 5.1.1 - new platforms: Blanc, Gonzales. Sequential mode abandoned. Atom-specific permutation, code interoperability, on-the-fly reading of parameters from INPUT_EA.txt. 20/12.2006.

    • 5.2.1 - SIESTA-interface for Z-matrix, rotational mutation operator, only remote job submission enabled (experimental version). 01/03/2007.

  • v.6 - Production version, with both remote and local job submission enabled.

    • 6.1.1 - Variation in CPU numbers allowed. Created standard tests. 04/04/2007.

    • 6.1.2 - Density of k-points changes within local optimization (from stage_1 to stage_2 to ...), allowing extremely accurate and cheap treatment of metals and semiconductors. 06/04/2007.

    • 6.1.3 - To efficiently fulfil hard constraints for large systems, an optimizer has been implemented within USPEX. 07/06/2007.

    • 6.2 - Development version.

    • 6.3.1-6.3.2 - Introduced angular constraints for cell diagonals. Completely rewritten remote submission. Cleaned up input format. Further extended standard tests. 07/12/2007.

    • 6.3.3 - X-com grid interface (with participation of STikhonov and SSobolev). 05/03/2008.

    • 6.4.1 - Fingerprint functions for niching. 07/04/2008.

    • 6.4.2 - Debugged fingerprinting. Separate identity threshold for survival of the fittest. (16/04/2008).

    • 6.4.3 - Debugged SIESTA- and GULP-interfaces. 19/04/2008.

    • 6.4.4 - Space group recognition (debug), with an option to switch them off. Fast fingerprints (from tables). 05/05/2008.

    • 6.4.5-6.4.7 - Further debugging. Development of features for next version. (June-July 2008)

    • 6.5.1 - Split cell method for very large systems. Easy remote submission. Variable number of best structures. 16/07/2008.

    • 6.6.1 - A very robust version, and improved fingerprint and split-cell implementations. 13/08/2008.

    • 6.6.2 - adaptation of v6.6.1 for compatibility with older versions of Matlab. 16/08/2008.

    • 6.6.3 - Heredity with multiple parents implemented. 01/10/2008

    • 6.6.4 - Added a threshold for parents participating in heredity. 03/10/2008

    • 6.6.5 - changes in remote submission files, clean-up of the USPEX code. 11/2008

    • 6.6.6 - multicomponent fingerprints that are more robust compared to the simple single-component fingerprints. 04/12/2008

    • 6.6.7, 6.7.1 and 6.7.2 - Implemented quasi-entropy to measure the diversity of the population, moved CEL and SPF to separate folder. 10/12/2008

    • 6.7.3 - largely debugged for the case of 2-atom molecules. Changed stopping criterion to the one based on the quasientropy of the population. 14/01/2009.

  • v.7 - Production version

    • 7.1.1-7.1.7 - series of improved versions. v.7.1.7 has been widely distributed to nearly 200 users. Variable composition partly coded, most known bugs fixed, improved tricks based on energy landscapes. Improved cell splitting, implemented pseudo-subcells. Implemented multicomponent fingerprints (much more sensitive to the structure than one-component fingerprints). 28/04/2009 (version finalized 28/05/2009).

    • 7.2.5 - first fully functional version of the variable-composition method (7.2.1-7.2.4 . development versions). Introduced transmutation operator and compositional entropy. 6/09/2009.

    • 7.2.7 - thoroughly debugged, improved restart capabilities, improved seeding, interface to MBaskes.s MD++ code, introduced perturbations within local optimization, introduced biased fitness function for variable-composition. 25/09/2009, further improved in versions 7.2.8/9.

    • 7.3.0 - Full fingerprint support in the variable-composition code, including niching. 'Fair' algorithm for producing the first generation of compositions. 22/10/2009.

    • 7.3.1 - introduced (optionally) heredity and permutation biased by local order parameters. Found and fixed two bugs in the heredity operator. 30/09/2009.

    • 7.4.1 - introduced coordinate mutation based on local order (Oganov & Valle, 2009). Heredity and transmutation are also biased by local order. Introduced computation of the hardness and new types of optimization by hardness and density. 04/01/2010

    • 7.4.2 - debugging, implementation of multiple parents heredity biased by local order. 15/01/2010.

    • 7.4.3 - debugging, implementation of new types of optimization (to maximize structural order and diversity of the population), eliminated parameters volTimeConst and volBestHowMany. Implemented antiseeds technique. 24/01/2010.

  • v.8 - Production version, written to include new types of optimization.

    • 8.1.1-8.2.8 - development versions. Local order and coordinate mutation operator. Softmutation operator. Calculation and optimization of the hardness. Prediction of the structure of nanoparticles. Implementation of point groups. Greatly improved overall performance. Option to perform PSO simulations (for testing purposes). GoodBonds transformed into a matrix and used for generation of nanoparticles. 01/02/2010-22/09/2010.

    • USPEX i8 was released in September 2010

      USPEX i8 was released in September 2010. This was a preliminary version of the code before the full v8 release. Some of the features from internal versions 7.2.1 - 8.2.8 included in this release (mostly those published in [Lyakhov, Oganov and Valle, 2010] ):

      1. Improved restart capabilities, improved seeding, improved selection.

      2. Introduced (optionally) heredity and permutation biased by local order parameters.

      3. Introduced coordinate mutation based on local order (Oganov & Valle, 2009). Heredity and transmutation are also biased by local order. Introduced a new types of optimization by density.

      4. Implemented multiple parents heredity biased by local order.

      5. Implemented new types of optimization (to maximize structural order and diversity of the population), eliminated parameters volTimeConst and volBestHowMany.

      6. Interface to Quantum Espresso, CP2K, DMACRYS, M. Baskes's MD++ codes.

      7. Improved support of Octave.

    • 8.3.1 - debugged PSO method, cleaned-up input. 08/10/2010.

    • 8.3.2 - for clusters, introduced a check on connectivity (extremely useful), and improved dynamicalKeepBestHM=2 option, as well as mechanism for producing purely softmutated generations. Improved fingerprints for clusters. Debugged interface to Quantum Espresso and CP2K codes. 11/10/2010.

    • 8.4 - Family of development versions containing improved antiseed functionalities and several improvements for nanoparticles. Development branches pseudo-metadynamics, molecular crystals.

    • 8.5.0 - initialization of the first random generation using the space group code of H.Stokes added. New formulation of metadynamics implemented and finalized, for now in a separate code. Several debugs for varcomp, antiseeds, nanoparticles, computation of hardness. 18/03/2011.

    • 8.6.0 - added space group determination program from H. Stokes. Merged with the updated code for molecular crystals. Fixed a bug for SIESTA (indicated by DSkachkov). 06/05/2011.

    • Release version 8.6.2. 26/08/2011

      Release version 8.6.2. 26/08/2011. Distributed among more than 600 users. Some of the features included in this release version:

      1. Full implementation of the new powerful softmutation operator.

      2. The possibility to predict the structure of nanoparticles.

      3. Option to optimize physical properties (density [Q. Zhu et al., 2011], hardness [Lyakhov A.O., Oganov A.R. (2011)], etc.), which is very useful for designing new materials.

      4. An extension of the algorithm to variable-composition systems, which enables one to predict the most stable compositions in a multicomponent system (or compositions possessing desired properties, in case of property optimization). [see, for example, Oganov et al., Rev. Min. Geochem. 71, 2010]

      5. Thanks to Harold Stokes, we now have a powerful symmetry finder, which finds the space group for all the produced structures and outputs them in the form of *.cif file.

    • 8.6.1-8.7.2 - development versions, quite robust. Improved symmetric initialization for the case of fixed cell. Graphical output enabled. Improved softmutation (by better criteria of mode and directional degeneracies) and heredity (by using energy-order correlation coefficient) operators. Most variables now have default values, which allows to use very short input files. Shortened and improved the format of log-files. 13/11/2011.

    • 8.7.3 - improved split-cell algorithm and debugged enhanced constraints, graphical output now includes random structures. 21/11/2011.

    • 8.7.5 - improved variable composition code, graphical output now includes many extra figures and approximate atomic volumes are suggested to user in variable composition calculations. Added utility to extract all structures close to convex hull for easier post-processing. 21/3/2012.

  • v.9 - Production version, made more user-friendly and written to include new types of functionality and to set the new standard in the field.

    • 9.0.0 - Evolutionary metadynamics added to USPEX package, added tensor version of metadynamics, added additional figures and post-processing tools, cleaned the code output. A few parameters removed from the input. Improved soft-mode mutation. April 2012.

    • Release version 9.1.0

      9.1.0 - Release version. Cleaned up, documented. The user community is >800 people. Released 28/05/2012. Some of the features included in this release version:

      1. Evolutionary metadynamics (Zhu Q., Oganov A.R., Lyakhov A.O. (2012)Cryst.Eng.Comm. 14, 3596-3601), a very powerful method for predicting stable structures, which also gives a large number of metastable structures that can be reached from a particular user-chosen state. For instance, you can find all carbon structures that can be made by compressing graphite (Zhu Q., Zeng Q., Oganov A.R. (2012) Phys. Rev. B85, 201407), carbon nanotubes, etc. etc. This method also gives transition pathways between the structures, so in many ways it is complementary to USPEX. Test case is added as an illustration.

      2. Extension of our evolutionary algorithm to molecular crystals (Zhu Q., Oganov A.R., Glass C.W., Stokes H.T. (2012) Acta Cryst. B68, 215-226), which enables affordable and reliable predictions. Test cases are added as an illustration.

      3. PSO (Particle Swarm Optimization) method. The original version for crystal structure prediction, developed by A.Boldyrev in early 2000s and its 2010 Wang-Lv-Zhu-Ma reimplementation, was improved by us by removing some unphysicalities. However, the performance is inferior compared to USPEX - and the same is true of the older PSO versions (e.g., PSO only works if symmetry is used, its success rates and efficiency are lower, etc.). Use for testing purposes only.

      4. Graphical output, which enables rapid pre-analysis.

    • 9.1.7 - a few minor bugs fixed and tests speed improved. Released in July 2012.

    • Release version 9.2.4

      9.2.4 - Release version. The user community is >1000 people. Released 10/12/2012. Some of the features included in this version:

      1. Improved symmetrical initialization and order enhanced heredity for nanoparticles (clusters).

      2. Better defaults, various minor bugs fixed.

      3. New property (quasientropy) can be optimized.

      Release version 9.2.7

      9.2.7 - Release version. The user community is 1160 people. Released 30/12/2012.

      Enabled optimization of order for alloys, without structure relaxation (for easy creation of quasirandom structures, based on the more general definition than the so-called “special quasi-random structures”). Symmetry generation was improved (particularly important for fixed-cell calculations). For fixed-cell calculations, now can specify the cell parameters, not only in the form of a 3 x 3 matrix, but also as a row of six values (three length in Angstrom and three angles in degrees). For the max. number of permutations swaps (parameter howManySwaps), we have introduced an intelligent default. Added new tests and cleaned and reran the old ones. Added interface to CASTEP (thanks to Z. Raza, X. Dong and AL).

      Release version 9.3.0-9.3.3

      9.3.0-9.3.3 - Release version. Released 20/03/2013.

      Fixed a bug in generation of random symmetric structures (this bug appeared in 9.2.7). Significantly simplified input and output. Created file OUTPUT.txt with the most important information. Enabled split-cell trick for molecular crystals. Improved variable-composition calculations by allowing one to specify initial compositions. Added interface to CASTEP and LAMMPS. Added new test cases.

      Release version 9.3.4

      9.3.4 - Release version. Released 25/03/2013.

      Release version, cleaned up.

Locations of visitors to this page