Release notes



  • Now requires the c++14 compiler flag.

  • Fixed updating current energy for metadynamics. See !590.



  • Added CleaseCacheCalculator, as a primitive cache calculator object with no cache validation.

  • Performance improvements to updating correlation functions.

  • Performance improvements to calculating the translation matrix, so the first calculation of the clusters should be faster.

  • Performance improvements to the LowestEnergyStructure. Correlation functions are also no longer tracked by default, but can be enabled with the track_cf key.

  • The default SGC observer in SGCMonteCarlo should now be reset automatically upon changing the temperature.



  • insert_structure() returns both the initial and final ID if both an initial and final structure was inserted.

  • Fixes a bug with writing the Clease calculator to a DB row.


  • Added the ignore_sizes keyword to plot_eci()

  • Changing the maximum cluster diameter will now clear any cached clusters, and requires a new build.

  • Calling observers in canonical MC can now be disabled with the call_observers keyword for performing burn-in, without executing observers.


  • 21 June 2022 - CLEASE is no longer considered beta.

  • Evaluate can now properly support fitting with custom LinearRegression schemes, even if they don’t support alpha cross-validation.

  • Evaluate now required explicit calls to fit(). Calls to get_eci() and get_eci_dict() can no longer implicitly do fitting. This un-does a change introduced in version 0.11.6.

  • Added the current_accept_rate property, and export the current accept rate in the thermodynamic quantities dictionary under the accept_rate key.

  • Removed a series of deprecated things:

    • Removed the clease.concentration module.

    • Removed the clease.new_struct module.

    • Removed old regression imports. Regression classes must now be imported from the clease.regression module.

    • Removed the clease.structure_generator module.

    • Removed the max_cluster_size settings argument.


  • Some small performance optimizations.

  • Added a warn_on_skip parameter to the insert_structure() method.

  • Evaluate should now correctly remember if it doesn’t need to re-fit the ECI’s (see the new fit() and fit_required() methods).

  • Introduced load_eci() for loading stored ECI values, which is convenient for subsequent plotting.

  • Added get_attempt_freq() which allows for more flexible customization of the attempt frequencies.

  • Added the interactive keyword to plot_fit().

  • Added an experimental parallelization feature. See Parallelization.

  • Added clease info to the CLI to display some information about the installation.


  • Fixed a bug with interactive plotting and convex hulls.

  • Added the max_sphere_dia_in_cell() for calculating sphere diameters within the given cell boundaries.

  • Changing the temperature of the Montecarlo object will now reset the internal energy averagers. Also, BaseMC now requires a temperature, and the temperature property has been renamed temperature. The old T attribute name is still accessible for backwards compatibility.

    For more information, see #302.

  • Added iter_reconfigure_db_entries().


  • Fixed an issue where attach_calculator would incorrectly try to snap the atoms onto a grid.

  • Typo in the axis labeling in plot_fit.


  • MCStep and SystemChange instances are now savable to json via the jsonio module.

  • Fixed a bug which prevented the primitive to have more than 255 atoms.

  • The primitive cell is now always wrapped in the settings object.

  • Changing db_name will check if the primitive exists in the new DB, and write it if it’s missing.

  • size and supercell_factor are now stored and managed by the TemplateAtoms object.

  • Made some adjustments to the compilation process.

  • Removed the include_background_atoms setter in the settings object. This value must now be set explicitly in the constructor for consistency reasons. For more information, see #292.

  • Fixes a bug with the ConcentrationObserver.


  • Introduces a new TransMatrix dataclass for the translation matrix.

  • Temporarily restricts ASE to <3.23, until we resolve issues with current ASE master.

  • Montecarlo will no longer consider background indices in the default swap move generator, if background is ignored.

  • Added a new irun() method, for iteratively running MC calculations.

  • MC observers can now override observe_step() instead, which takes a MCStep object.

  • Added a new MC observer: clease.montecarlo.observers.MoveObserver.


  • Fixed a bug in the FixedIndices constraint class.

  • Greatly improved speed of supercell generation - this mostly affects performance concerning large supercells.

  • Improved performance of the trans matrix generation.


  • Python 3.7+ is now required.

  • Removed old deprecated functions and classes.

  • Some performance improvements.


  • Now caches the CF names if requesting every CF name. Chops off some of the computation time during a full reconfigure.

  • Introduces a new FinalStructPropertyGetter, which can be used to get arbitrary properties stored as key-value pairs in the database. Use the prop keyword in the Evaluate class to use this feature.

  • Added the check_db keyword to NewStructures

  • Some minor optimizations


  • Fixes an issue with the coefficients generated by the Lasso method.

  • Fixes an issue with the interactive convex hull plot.

  • No longer opens an extra unnecessary GUI window with interactive plots.

  • Fixed a bug with the fingerprint grouping, where the relative tolerance would reduce the numerical sensitivity too much.

  • Now uses the packaging package for managing version numbers and comparisons. Removes usage of the deprecated distutils version comparisons.



  • Fixed a bug in the clease.convexhull.ConvexHull where multiple end-points wouldn’t always find the correct minimum energy structure for that end-point.

  • Added MCEvaluator.

  • The settings class should now be much faster to construct, since the construction of the translation matrix and cluster list is defered until requested.

  • The built in GUI (based on Kivy) has been removed, in favor of the new Jupyter based clease-gui package.

  • Deprecated the use of max_cluster_size for specifying clusters in ClusterExpansionSettings. Clusters should now be specified only though max_cluster_dia, where the size of the cluster is infered from the length of the list. The index 0 corresponds to 2-body clusters, index 1 to 3-body etc., i.e. max_cluster_dia = [5, 4, 3] would result in clusters of up to diameter 5 Å for 2-body clisters, 4 Å for 3-body and 3 Å for 4-body.


  • Added clease.logging_utils.log_stream() and clease.logging_utils.log_stream_context() functions to simplify printing the CLEASE logs to a file. The global CLEASE logger can be retreived with clease.logging_utils.get_root_clease_logger().


  • Fixed a bug with sorting the figures in ClusterList would cause a de-synchronization of the indices, and crashing any further usage.

  • Now supports clusters of arbitrary size. Used to be limited to 2-, 3- and 4-body clusters.



  • clease.montecarlo.SSTEBarrier renamed to clease.montecarlo.BEPBarrier

  • Added release notes

  • Added the clease.jsonio module. This has been applied to the clease.settings.ClusterExpansionSettings, clease.settings.Concentration and clease.basis_function.BasisFunction classes, providing them with save() and load() functions.

  • Tests now automatically run in the pytest temporary directory.

  • Moved new_struct and structure_generator into the structgen module. These should now be imported from here, instead.

  • Fixed a bug, where the current step counter in the clease.montecarlo.Montecarlo class would not be reset upon starting a new run.