Skip to content

v0.2.1

Latest
Compare
Choose a tag to compare
@bpuchala bpuchala released this 14 Apr 02:02

CASM v0.2.1 includes a number of changes and bug fixes from the Van der Ven group repository. As it involves a number of changes, it would be wise to create a backup of existing project data before operating on them with the new version, but it should be able to work with existing CASM projects without major issue.

Major changes include:

  • Bug fix in the niggli cell standard orientation function. The standard orientation niggli cell could be "forgotten" if it was the first niggli cell found. This means it is possible existing CASM projects might have non-canonical supercells, and even potentially have duplicate supercells, though we don't know of an example of this. A warning is printed if any non-canonical supercells like this are found, and any calculations in those supercells should be re-imported using casm import, and then the the non-canonical supercells can be removed via casm rm. For example:
    casm files --settings 'all' --calc 'status' | grep '$NONCANONICAL_SCELNAME' | grep 'properties.calc.json' > batch 
    casm import --batch batch -d --copy-additional-files --min-energy
    # after checking everything was re-imported successfully, remove -n (--dry-run):
    casm rm --scelnames $NONCANONICAL_SCELNAME -fn
    
  • Optional GNU autotools install
  • SeqQuest wrapper
  • Use any casm query operation to make observations during Monte Carlo calculations
  • casm enum plugins:
    • Write custom Configuration enumerators, place them in .casm/enumerators, and they can be automatically compiled and used from casm enum
    • With this change, the casm enum input options have changed
    • Some documentation exists in the Doxygen docs Container/Enumerators module
    • For some examples, see:
      • tests/unit/App/TestEnum.hh and tests/unit/App/TestEnum.cc
      • include/casm/clex/ConfigEnumAllOccupations.hh and related implementation
      • `include/casm/clex/ScelEnum.hh' and related implementation
  • casm query plugins:
    • Write custom casm query functions, place them in .casm/query/Configuration, and they can then by used via casm select, casm query, and to make observations during casm monte.
    • The easiest way is to write a function that returns a GenericConfigFormatter<ValueType> object. A GenericConfigFormatter is constructed with the function of signature ValueType f(const Configuration& config) which is evaluated when the query is called.
      • See tests/unit/App/TestConfigName.hh and tests/unit/App/TestConfigName.cc for an example
  • casm rm to erase calculated Configuration data or entire Supercells (including assocated Configurations and data)
  • casm import --copy-additional-files option to copy other calculation files into the CASM training_data directory along with imported POSCAR or properties.calc.json files
  • Python tools for plotting CASM data using bokeh. See notes below.

Plotting:
The casm.plotting Python module has been cleaned up and example scripts and input files included demonstrating how to generate plots of project data. Includes a hull plot, scatter plot, "rank" plot, and histogram via the scripts casm.plot.hull, casm.plot.scatter, casm.plot.rankplot, casm.plot.hist. Also a casm.plot.layout script that allows generating multiple at the same time. The plotting uses the Python bokeh library which provides a server that serves the plots to a web page, making them interactive.

  • Before running a casm.plot.X script you must start the bokeh server via bokeh serve on the command line.
  • If you have casm view set up, you can click on a configuration in a plot and launch a visualization of the unrelaxed configuration.
  • Using casm.plot.layout data is linked between plots so as you hover over a data point in one plot the same configuration is highlighted in other plots.
  • "Tooltips", additional data shown about each configuration when your mouse hovers over it, can be customized.
  • Colors, markers, etc. can be customized via the input files.
  • You can easily zoom, pan, select, etc.

Some examples:

Histogram of basis deformation, indicating how many configurations in each bin are selected / unselected:
image

Convex hull:
image

Rank plot, using a custom Python function for "scoring" configurations to rank them.
image

Layout with scatter plots, highlighting configurations linked between plots:
image