Changelog#

Git master branch#

2025-07-15#

I/O#

  • Added communicator argument to parprint, which defaults to world if None, analogous as for paropen

  • Added single float encoding for jsonio (MR: !3682)

  • Changed write_extxyz() to store FixAtoms and FixCartesian by default without explicitly specifying move_mask in columns (MR: !3713)

  • Breaking change: Removed IOFormat.open() method. It is untested and appears to be unused. MR: !3738

Calculators#

  • Added per-atom energies consistent with LAMMPS to Tersoff (MR: !3656)

  • Added toggles between analytical and numerical forces/stress in FiniteDifferenceCalculator (MR: !3678)

  • Added calculators mattersim and mace_mp to the get_calculator() function

  • DFTD3 no longer warns about systems that are neither 3D periodic nor 0D, because there is no way to adapt the code that resolves the condition warned about. (MR: !3740)

Optimizers#

  • Logfile and trajectory inputs now accept both string and Path objects.

  • Breaking change: The Optimizable interface now works in terms of arbitrary degrees of freedom rather than Cartesian (Nx3) ones. Please note that the interface is still considered an internal feature and may still change significantly. (MR: !3732)

GUI#

  • Atomic spins can now be visualized as arrows

  • Mouse button 2 and 3 are now equivalent in the GUI, which simplifies life on particularly MacOS (MR: !3669).

  • Menu shortcut keys now work as expected on MacOS.

  • In Rotate and Translate mode, Ctrl + arrow key now works as intended on MacOS. Left alt and Command now have the same effect (MR: !3669).

  • Changed Alt+X, Alt+Y, Alt+Z to Shift+X, Shift+Y, Shift+Z to view planes from “other side”

  • Changed views into basis vector planes to I, J, K, Shift+I, Shift+J, Shift+K

  • Added general window to view and edit data on atoms directly in the same style as the cell editor. The window currently edits symbols and Cartesian positions only (MR: !3790).

Development#

  • Enable ruff for whole documentation

Documentation#

  • Web page now uses sphinx book theme (MR: !3684).

Other changes#

  • Removed \(Quaternions\) (subclass of \(Atoms\)). The \(quaternions\) read from a LAMMPS data file is still accessible as an array in \(Atoms\). (MR: !3709)

Bugfixes#

  • Fixed Tersoff to compute properties correctly (MR: !3653, MR: !3655, MR: !3657).

  • Enable ase.io.magres.read_magres() to handle cases from CASTEP < 23 where indices and labels are “munged” together if the index exceeds 99. If an index exceeds 999 the situation remains ambiguous and an error will be raised. (MR: !3530)

  • Fix duplicated transformation (e.g. rotation) of symmetry labels in bz_plot() (MR: !3617).

Structure tools#

Version 3.25.0#

I/O#

  • Moved Postgres, MariaDB and MySQL backends to separate project: ase/ase-db-backends. Install from PyPI with pip install ase-db-backends (MR: !3545).

  • BREAKING ase.io.orca \(read_orca_output\) now returns Atoms with attached properties. \(ase.io.read\) will use this function. The previous behaviour (return results dictionary only) is still available from function \(read_orca_outputs\). (MR: !3599)

  • Added write_castep_geom() and write_castep_md() (MR: !3229)

  • Fixed \(:mod:`ase.data.pubchem\) module to convert # in SMILES to HEX %23 for URL (MR: !3620).

  • ase.db: Unique IDs are now based on UUID rather than pseudorandom numbers that could become equal due to seeding (MR: !3614).

  • ase.db: Fix bug where unique_id could be converted to float or int (MR: !3613).

  • Vasp: More robust reading of CHGCAR (MR: !3607).

  • Lammpsdump: Read timestep from lammpsdump and set element based on mass (MR: !3529).

  • Vasp: Read and write velocities (MR: !3597).

  • DB: Support for LMDB via \(ase-db-backends\) project (MR: !3564, MR: !3639).

  • Espresso: Fix bug reading \(alat\) in some cases (MR: !3562).

  • GPAW: Fix reading of total charge from text file (MR: !3519).

  • extxyz: Somewhat restrict what properties are automatically written (MR: !3516).

  • Lammpsdump: Read custom property/atom LAMMPS dump data (MR: !3510).

Calculators#

  • More robust reading of Castep XC functional (MR: !3612).

  • More robust saving of calculators to e.g. trajectories (MR: !3610).

  • Lammpslib: Fix outdated MPI check (MR: !3594).

  • Morse: Optionally override neighbor list implementation (MR: !3593).

  • EAM: Calculate stress (MR: !3581).

  • A new Calculator ase.calculators.tersoff.Tersoff has been added. This is a Python implementation of a LAMMPS-style Tersoff interatomic potential. Parameters may be passed directly to the calculator as a ase.calculators.tersoff.TersoffParameters object, or the Calculator may be constructed from a LAMMPS-style file using its from_lammps classmethod. (MR: !3502)

Optimizers#

  • Fix step counting in the CellAwareBFGS (MR: !3588).

  • Slightly more efficient/robust GoodOldQuasiNewton (MR: !3570).

Molecular dynamics#

  • Merged \(self.communicator\) into \(self.comm\) (MR: !3631).

  • Improved random sampling in countour exploration (MR: !3643).

  • Fix small energy error in Langevin dynamics (MR: !3567).

  • Isotropic NPT with MTK equations (MR: !3550).

  • Bussi dynamics now work in parallel (MR: !3569).

  • Improvements to documentation (MR: !3566).

  • Make Nose-Hoover chain NVT faster and fix domain decomposition with Asap3 (MR: !3571).

  • NPT now works with cells that are upper or lower triangular matrices (MR: !3277) aside from upper-only as before.

  • Fix inconsistent irun() for NPT (MR: !3598).

GUI#

Development#

  • Changelog is now generated using scriv (MR: !3572).

  • CI cleanup; pypi dependencies in CI jobs are now cached (MR: !3628, MR: !3629).

  • Maximum automatic pytest workers reduced to 8 (MR: !3628).

  • Ruff formatter to be gradually enabled across codebase (MR: !3600).

Other changes#

  • standard_form() can convert to upper triangular (MR: !3623).

  • Bugfix: get_duplicate_atoms() now respects pbc (MR: !3609).

  • Bugfix: Constraint masks in cell filters are now respected down to numerical precision. Previously, the constraints could be violated by a small amount (MR: !3603).

  • Deprecate lazyproperty() and lazymethod() since Python now provides functools.cached_property() (MR: !3565).

  • Remove \(nomad-upload\) and \(nomad-get\) commands due to incompatibility with recent Nomad (MR: !3563).

  • Fix normalization of phonon DOS (MR: !3472).

  • PlottingVariables towards rotating the camera rather than the atoms (MR: !2895).

Version 3.24.0#

Requirements#

Atoms#

DB#

  • Ensure correct float format when writing to Postgres database (MR: !3475)

Structure tools#

Calculators / IO#

  • Amber: Fix scaling of velocities in restart files (MR: !3427)

  • Amber: Raise an error if cell is orthorhombic (MR: !3443)

  • CASTEP

    • BREAKING Removed legacy read_cell and write_cell functions from ase.io.castep. (MR: !3435)

    • .castep file reader bugfix for Windows (MR: !3379), testing improved (MR: !3375)

    • fix read from Castep geometry optimisation with stress only (MR: !3445)

  • EAM: Fix calculations with self.form = “eam” (MR: !3399)

  • FHI-aims

  • FileIOSocketClientLauncher: Fix an unintended API change (MR: !3453)

  • FiniteDifferenceCalculator: added new calculator which wraps other calculator for finite-difference forces and strains (MR: !3509)

  • GenericFileIOCalculator fix interaction with SocketIO (MR: !3381)

  • LAMMPS

  • MixingCalculator: remove requirement that mixed calculators have common implemented_properties (MR: !3480)

  • MOPAC: Improve version-number parsing (MR: !3483)

  • MorsePotential: Add stress (MR: !3485)

  • NWChem: fixed reading files from other directories (MR: !3418)

  • Octopus: Improved IO testing (MR: !3465)

  • ONETEP calculator: allow pseudo_path to be set in config (MR: !3385)

  • Orca: Only parse dipoles if COM is found. (MR: !3426)

  • Quantum Espresso

    • allow arbitrary k-point lists (MR: !3339)

    • support keys from EPW (MR: !3421)

    • Fix path handling when running remote calculations from Windows (MR: !3464)

  • Siesta: support version 5.0 (MR: !3464)

  • Turbomole: fixed formatting of “density convergence” parameter (MR: !3412)

  • VASP

    • Fixed a bug handling the ICHAIN tag from VTST (MR: !3415)

    • Fixed bugs in CHG file writing (MR: !3428) and CHGCAR reading (MR: !3447)

    • Fix parsing POSCAR scale-factor line that includes a comment (MR: !3487)

    • Support use of unknown INCAR keys (MR: !3488)

    • Drop “INCAR created by Atomic Simulation Environment” header (MR: !3488)

    • Drop 1-space indentation of INCAR file (MR: !3488)

    • Use attached atoms if no atom argument provided to ase.calculators.vasp.Vasp.calculate() (MR: !3491)

GUI#

  • Refactoring of ase.gui.view.View to improve API for external projects (MR: !3419)

  • Force lines to appear black (MR: !3459)

  • Fix missing Alt+X/Y/Z/1/2/3 shortcuts to set view direction (MR: !3482)

  • Fix incorrect frame number after using Page-Up/Page-Down controls (MR: !3481)

  • Fix incorrect double application of \(repeat\) to \(energy\) in GUI (MR: !3492)

Molecular Dynamics#

Optimizers#

  • BREAKING The master parameter to each Optimizer is now passed via **kwargs and so becomes keyword-only. (MR: !3424)

  • Pass comm to BFGS and CellAwareBFGS as a step towards cleaner parallelism (MR: !3397)

  • BREAKING Removed deprecated force_consistent option from Optimizer (MR: !3424)

Phonons#

Pourbaix (MR: !3280)#

  • New module ase.pourbaix written to replace ase.phasediagram.Pourbaix

  • Improved energy definition and diagram generation method

  • Improved visualisation

Spectrum#

  • BREAKING ase.spectrum.band_structure.BandStructurePlot: the plot_with_colors() has been removed and its features merged into the plot() method.

Misc#

  • Cleaner bandgap description from ase.dft.bandgap.GapInfo (MR: !3451)

Documentation#

Testing#

  • Remove some dangling open files (MR: !3384)

  • Ensure all test modules are properly packaged (MR: !3489)

Units#

  • Added 2022 CODATA values (MR: !3450)

  • Fixed value of vacuum magnetic permeability _mu0 in (non-default) CODATA 2018 (MR: !3486)

Maintenance and dev-ops#

Earlier releases#

Releases earlier than ASE 3.24.0 do not have separate release notes and changelog. Their changes are only listed in the Release notes.