Changelog
Git master branch
2025-05-13
Calculators
Optimizers
Logfile and trajectory inputs now accept both string and Path objects.
GUI
Atomic spins can now be visualized as arrows
Development
Enable ruff for whole documentation
Bugfixes
Version 3.25.0
I/O
Moved Postgres, MariaDB and MySQL backends to separate project: https://gitlab.com/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()
andwrite_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 aase.calculators.tersoff.TersoffParameters
object, or the Calculator may be constructed from a LAMMPS-style file using itsfrom_lammps
classmethod. (MR: !3502)
Optimizers
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()
andlazymethod()
since Python now providesfunctools.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
New method
get_number_of_degrees_of_freedom()
(MR: !3380)New methods
get_kinetic_stress()
,get_kinetic_stresses()
(MR: !3362)Prevent truncation when printing Atoms objects with 1000 or more atoms (MR: !2518)
DB
Ensure correct float format when writing to Postgres database (MR: !3475)
Structure tools
Add atom tagging to
ase.build.general_surface
(MR: !2773)Fix bug where code could return the wrong lattice when trying to fix the handedness of a 2D lattice (MR: !3387)
Major improvements to
find_optimal_cell_shape()
: improve target metric; ensure rotationally invariant results; avoid negative determinants; improved performance via vectorisation (MR: !3404, MR: !3441, MR: !3474). Thenorm
argument toget_deviation_from_optimal_cell_shape()
is now deprecated.Performance improvements to
ase.spacegroup.spacegroup.Spacegroup
(MR: !3434, MR: !3439, MR: !3448)Deprecated
ase.spacegroup.spacegroup.get_spacegroup()
as results can be misleading (MR: !3455).
Calculators / IO
Amber: Fix scaling of velocities in restart files (MR: !3427)
Amber: Raise an error if cell is orthorhombic (MR: !3443)
CASTEP
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 (by finite differences) (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
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
Added Bussi thermostat
ase.md.bussi.Bussi
(MR: !3350)Added Nose-Hoover chain NVT thermostat
ase.md.nose_hoover_chain.NoseHooverChainNVT
(MR: !3508)Improve
force_temperature
to work with constraints (MR: !3393)Add
**kwargs
to MolecularDynamics, passed to parent Dynamics (MR: !3403)Support modern Numpy PRNGs in Andersen thermostat (MR: !3454)
Optimizers
Phonons
Fix scaling of phonon amplitudes (MR: !3438)
Implement atom-projected PDOS, deprecate
ase.phonons.Phonons.dos()
in favour ofase.phonons.Phonons.get_dos()
(MR: !3460)Suppress warnings about imaginary frequencies unless
ase.phonons.Phonons.get_dos()
is called with new parameterverbose=True
(MR: !3461)
Pourbaix (MR: !3280)
New module
ase.pourbaix
written to replacease.phasediagram.Pourbaix
Improved energy definition and diagram generation method
Improved visualisation
Spectrum
BREAKING
ase.spectrum.band_structure.BandStructurePlot
: theplot_with_colors()
has been removed and its features merged into theplot()
method.
Misc
Cleaner bandgap description from
ase.dft.bandgap.GapInfo
(MR: !3451)
Documentation
Testing
Units
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.