Changelog
Git master branch
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.