Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to a form of Semantic Versioning called Realistic (or Practical) Semantic Versioning.

0.0.6 (2025-09-10)

Added

Changed

  • Atoms objects created from ccu.adsorption.complexes.generate_complexes() have metadata describing the adsorbate, site, and orientation in addition to the structure

  • Moved generate_figure to ccu.fancyplots.plotting

  • bader module renamed to pop

  • You can now pass the annotations parameter of ccu.fancyplots.plotting.generate_figure() as a list of appropriately typed tuples

  • ccu.adsorption.adsorbatecomplex renamed to ccu.adsorption.complex

  • ccu.adsorption.sitefinder renamed to ccu.adsorption.sites

  • ccu.adsorption.adsorbateorientation renamed to ccu.adsorption.orientation

  • AdsorbateOrientationFactory replaced with protocol, OrientationFactory

  • ccu.adsorption.adsorbateorientation.AdsorbateOrientation replaced with ccu.structure.geometry.MolecularOrientation

  • ccu.adsorption.adsorbates.ALL renamed to ccu.adsorption.adsorbates.ALL_ADSORBATES

  • ccu.adsorption.complexes.AdsorbateComplexFactory:

    • constructor overhauled; see new signature/docstring for details

    • AdsorbateComplexFactory.next_complex replaced with AdsorbateComplexFactory.generate_complexes

    • removed: AdsorbateComplexFactory.adsorbate_orientations, AdsorbateComplexFactory.orient_adsorbate

    • AdsorbateComplexFactory.place_adsorbate no longer accepts the centre argument but instead accepts a site argument and shifts the asdorbate position by site position

    • structure is no longer an attribute but is passed as an argument to .generate_complexes and .place_adsorbate

  • generate_complexes():

    • generate_complexes no longer saves the adsorption complexes to files; this can be accomplished using write_complexes(); accordingly, the destination argument was removed

    • a list of Atoms objects is returned instead of a list of tuples

    • special_centres argument removed and replaced with similar argument, centers

    • symmetric argument removed and replaced with similar argument, symmetry

    • The finder argument now accepts adherents to the SiteFinder protocol instead of strings (as a consequence, the vertical argument has been removed since these being returned is controlled by the finder)

    • adsorbate_tag argument has been added

  • ccu.adsorption.adsorbates: the special centres key has been changed to special_centres

  • documentation refactored (inspired by diataxis)

  • expanded development guide to include dedicated sections for documentation and maintenance

  • calculate_norm moved to ccu.structure.geometry

  • CLI

    • CLI-related modules/packages have been privatized by appending leading underscores

    • ccu adsorb

      • ccu adsorption place-adsorbate command renamed to ccu adsorb

      • added --tag option to ccu adsorb

      • --special-centres option renamed to --centers and changed from flag option to value-accepting option

      • --symmetric option changed to on/off flag --no-symmetry/--symmetry

      • removed --vertical option

      • added --finder option

  • ccu.structure.symmetry.SymmetryOperation removed and replaced with ccu.structure.symmetry.Transformation

  • only annotations with text are added in FancyPlots

  • GUI subpackage is now private ccu.fed._gui

Fixed

  • FancyPlots

  • Fix plotting transition states in ccu.fancyplots

  • saving annotations in FancyPlots

  • duplicate annotations are not added in FancyPlots

Removed

  • AdsorbateComplex class

  • AdsorbateOrientationFactory

  • ccu.structure.symmetry.Symmetry and ccu.structure.symmetry.RotationSymmetry

  • ccu.hubbard subpackage

0.0.5 (2024-06-11)

Added

Fixed

  • xscale and yscale were incorrectly used to set xlim and ylim, respectively

  • Saving FancyPlots figures now works

  • No more duplicate legend labels

  • Tooltips are now visible

  • Raised exception when trying to show graph when graph already showing

Removed

  • .plotting.plot_solid_lines()

  • .plotting.plot_dashed_lines()

0.0.4 (2024-06-06)

Added

  • logging via a rotating file handler

Fixed

  • fixed bug where the legend wasn’t rendered

  • fixed bug in FancyPlots when incrementing number of pathways after defining the number of steps (see commit c188153d)

0.0.3 (2024-06-03)

Added

  • ccu.fancyplots.validation: classes and functions for validating user input

  • tooltip.Tooltip: a robust tooltip class

  • .gui.root.Windows: TypedDict containing all FancyPlots subwindows

  • .gui.root.Sections: TypedDict containing the immediate subframes of a FancyPlots appliction

  • ccu.fancyplots.data: data models for importing/exporting FancyPlots data

  • ccu.fancyplots.gui.annotation: GUI elements for the annotation section

  • ccu.fancyplots.gui.energy: GUI elements for the free energy declaration window

  • ccu.fancyplots.gui.formatting: GUI elements for the formatting parameters section

  • ccu.fancyplots.gui.frames: custom GUI elements with built-in validation and custom event generation (<<Validation>>)

  • ccu.fancyplots.gui.instructions: GUI elements for displaying instructions

  • ccu.fancyplots.gui.mechanism: GUI elements for defining reaction mechanisms

  • ccu.fancyplots.gui.palette: GUI elements for displaying the matplotlib colour palette

  • ccu.fancyplots.styles: custom Tkinter styles for themed widgets

  • ccu.fancyplots.gui.utils.open_image(): open Tkinter-compatible image

  • ccu.fancyplots.gui.utils.print_easter_egg(): print Easter egg

  • ccu.fancyplots.validation: lightweight, Pydantic-like validation from type-hints

  • ccu adsorption place-adsorbate: --list CLI option

  • ccu.thermo.chempot.ChemPotDatabase: database of chemical potential parametrization data

  • ccu.thermo.chempot.ChemPotCalculator: class encapsulating chemical potential calculation logic

  • logging and terminal printing control for all CLI commands via ccu --log-level, ccu-thermo-gibbs --log-file, ccu --verbose, and ccu --quiet CLI options that can be passed alongside any subcommand options

  • ccu.cli.utils: utilities for CLI commands

Changed

  • FancyPlots re-written with ttk

  • .root.FancyPlotsGUI replaces Root

  • ~ccu.fancyplots.gui.root.FancyPlotsGUI refactored to encompass all GUI elements as children

  • redefined as ~tkinter.ttk.LabelFrame or ~tkinter.Frame subclasses

    • ccu.fancyplots.gui.annotation.AnnotationSection

    • ccu.fancyplots.gui.footer.FooterSection

  • redefined as ~tkinter.Toplevel subclasses

    • ccu.fancyplots.gui.energy.EnergyWindow

    • ccu.fancyplots.gui.fed.FreeEnergyDiagram

  • ccu.fancyplots.gui.menu.make_textmenu() renamed to ccu.fancyplots.gui.menu.create_edit_menu()

  • ccu.fancyplots.gui.menu.show_textmenu() renamed to ccu.fancyplots.gui.menu.show_edit_menu() and re-written as factory

  • ccu.fancyplots.gui.fancyplots renamed to ccu.fancyplots.gui.plotting

    • functions no longer depend on global variables

    • main function (init) renamed to ccu.fancyplots.gui.plotting.generate_figure()

  • ccu.fancyplots.gui.utils.mouse_coordinates moved to instance method ccu.fancyplots.gui.fed.FreeEnergyDiagram.mouse_coordinates()

  • ccu thermo chempot-calculator refactored and renamed to ccu thermo chempot; parametrized data moved to resource; CLI options added for molecule, temperature and pressure

Removed

  • .tooltip.ToolTip: use ccu.fancyplots.gui.tooltip.Tooltip

  • ccu.fancyplots.gui.defaults: use ccu.fancyplots.data instead

  • ccu.fancyplots.gui.utils

    • .add_path

    • .add_text_converter

    • .convert_path_to_list

    • .get_path

    • .obtain_boxsizes

  • ccu-thermo-gibbs --verbose and ccu-bader-sum --verbose (use ccu --verbose instead; e.g., ccu --verbose thermo gibbs)

  • Reordering steps in FancyPlots is temporarily removed until further notice

0.0.2 (2024-05-23)

Added

  • Changelog descriptions for release 0.0.1.

  • ccu structure permute: create permutations of atoms within a structure

  • ccu fed: a GUI utility for creating free energy diagrams

  • ccu adsorption place-adsorbate now includes additional intermediates

  • ccu bader: CLI utility for Bader charge analysis

  • ccu.hubbard: calculation of Hubbard U parameter by the linear response method of M. Cococcioni and S. de Gironcoli, Phys. Rev. B 71, 035105 (2005).

  • ccu.relaxation: standard function for running DFT calculation with ASE

  • ccu.thermo: CLI utility and Python API for thermochemistry

Changed

  • Format changelog in Keep a Changelog style.

  • Testing with Tox to Nox

  • Drop pylint for Ruff + Mypy

  • .sitefinder.MOFSiteFinder no longer includes between-linker sites by default, pass between_linkers=True to obtain previous behaviour

0.0.1 (2023-06-22)

Added

  • First release on PyPI.

  • Created ccu.adsorption and ccu.structure subpackages and unit tests