NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3957 most downloaded on PyPI
Atomic Simulation Environment
Last release 3 months ago
21 Jun 2026
Release timing varies
gaps range from 2 weeks to 2.5 years
Rarely documented
notes for 6 of 34 stable releases
1 version withdrawn
withdrawn after publishing
11 years old
37 releases · first in 2015
Removed Vasp2 deprecated as of ASE 3.21.0 (4030)
Add support for reading and writing RuNNer's input.data files.
Changed ~ase.io.vasp.write_vasp_xdatcar so that it writes unwrapped scaled positions (4040)
~ase.calculators.plumed.Plumed computes stress and can be used in constant pressure molecular dynamics simulations (4027).
Removed Vasp2 deprecated as of ASE 3.21.0 (4030)
~ase.calculators.socketio.SocketIOCalculator: The ~ase.calculators.socketio.SocketClient now goes into the “ready” state after computing forces whereas previously it would request a reinitialization. This change ensures future compatibility with the driver as implemented in i-pi and may be significantly faster in larger, fast-running computations (e.g. with MLIPs). (4069)
In the CP2K calculator, on calculator startup, when waiting for a ready message from the CP2K shell, skip lines until the message is encountered. This fixes a bug where the calculator fails on builds that print extra startup messages.
Add ase.optimizers.rfo.RFO class for minimizing geometries with RFO (Rational Function Optimizer) combined with BFGS-based Hessian updates.
Add ~ase.md.thermalize_momenta to supersede ~ase.md.velocitydistribution.MaxwellBoltzmannDistribution. The new function takes temperature only in K (ASE standard), both as positional and keyword arguments. (4016)
Deprecate ~ase.md.velocitydistribution.MaxwellBoltzmannDistribution in favor of ~ase.md.thermalize_momenta. (4016)
Remove the deprecated parameter temp (temperature in eV) from ~ase.md.velocitydistribution.MaxwellBoltzmannDistribution. (4016)
Atoms, lines, and text on the canvas once again take the colour set via gui_foreground_color in ~/.ase/gui.py
Change ase.geometry.rdf.get_rdf to accept multiple images to compute the average RDF over them (3994)
The default command for the CP2K calculator was changed from cp2k_shell to cp2k.psmp -s.
.VibrationsData.todict no longer throws an error when the length of .VibrationsData._indices is not 1 but differs from the length of .VibrationsData._atoms
Fix ~ase.io.vasp.read_vasp_configuration so that it can parse the VASP-POSCAR format with POTCAR hashes in place of element symbols like Na_pv/6a2f546d (3968)
Fixed ~ase.mep.neb.NEB so that it stores unconstrained forces as raw forces correctly (4026)
Added divergence check for infinite direction norm in ase.mep.dimer.MinModeTranslate.step (4041)
Prevent step in ase.mep.dimer.MinModeTranslate.step from becoming NaN (4041)
Fixed ~ase.eos.EquationOfState to provide the correct energy at the equilibrium volume for the Anton-Schmidt EOS (4062)
Snap near-integer coordinates in build() to absorb floating-point noise, preventing boundary atoms from erroneously splitting into an extra layer.
Intercept vacuum=0.0 in surface(), which unphysically shrinks the Z-axis to the atomic bounding box and causes layers to overlap. Now warns and falls back to vacuum=None.
Fixed the VASP calculator to treat the drotmax (DRotMax) parameter as an integer key instead of a float key, so it is written correctly to the INCAR file (4116).
Fix ase.calculators.eam.EAM.write_potential to write the potential consistent with the given one (4122)
Fix ase.optimize.lbfgs.LBFGS.replay_trajectory broken since ASE 3.27.0 (4125)
Fix ~ase.io.vasp.read_vasp to ignore the leading whitespace before the keywords like Selective, Cartesian (or K), Direct to be consistent with VASP (4141)
Fix vasp parser read constraints error when contcar is empty.
One column per quarter.
BREAKING CHANGE: Changes have been made to ase.visualize.plot.plot_atoms. These are intended to "do the right thing" and streamline common usage espec…
Accelerate ~ase.io.lammpsrun.read_lammps_dump_text using a NumPy structured array (3939)
Accelerate ~ase.io.lammpsrun.read_lammps_dump_text and ~ase.io.lammpsrun.read_lammps_dump_binary by parsing the data file only for necessary frames (3959, 3972)
Improvements to elk-in writer: (3950) - add the string parameter type - parameters: top-level tuple to describe an input block - nested tuples to describe the multi-key inputs within a line - remove partial inconsistent ase->elk units conversion
Modified ~ase.io.vasp.write_vasp_xdatcar to print the header, including the cell, for every image (2873)
Fixed a bug in CASTEP .phonon file reader: q-points beyond the first were not loaded. (3977)
Added missing unit tests for CASTEP .phonon reader
Add writers for MDL Molfile V2000 based MOL and SDF formats. (4008)
BREAKING CHANGE: Changes have been made to ase.visualize.plot.plot_atoms. These are intended to "do the right thing" and streamline common usage especially in tutorial material. (3979)
always remove axis decorations to give a cleaner output.
If no existing Axes are provided, create a new Figure. (Existing behaviour is to work on the "current" Axes, possibly overwriting an unrelated plot.)
A lower-level function ase.visualize.plot.plot_atoms_raw is provided which simply plots to a provided Matplotlib Axes; other formatting is left to the user. This is recommended for use in composite figures where the default/fixed behaviours of ~ase.visualize.plot.plot_atoms are unweildy.
Added with_tags parameter to ~ase.calculators.dftb.Dftb calculator to enable using atom tags to distinguish between chemically identical species. This allows different Slater-Koster parameter sets for atoms with the same element but different tags. (3702)
Change the default method for ~ase.mep.neb.NEB to 'improvedtangent' (previously 'aseneb').
For compatibility with older code, re-add opt.converged() as a way to check convergence. (Note that opt.run() returns whether it converged or not, and opt.irun() yields for each step whether it converged or not.) (3990)
Add ~ase.md.MaskedMTKNPT for cell fluctuation along specified axes. This can be used to perform NPzT ensemble MD simulations. (3807)
Bug fix in Bussi dynamics: Would crash with GPAW calculator due to random number not being properly synchronized. (3976)
Deprecate fixcm=True in ~ase.md.Langevin because its implementation does not strictly sample the correct NVT distribution. Use ~ase.constraints.FixCom instead (3986)
Users can now specify default values for the movie box in the GUI, through their '~/.ase/gui.py' settings file.
Move and Rotate modes no longer turn on if no atoms are selected.
An indicator is added to the bottom right corner that shows that a movement mode is active. This indicator also includes a contextual hint about modifier keys.
Rotation vectors are transformed to give a more intuitive pitch/yaw/roll experience in rotate mode which is also consistent with mouse movements.
Number fields in the GUI can now do basic arithmetic using Python syntax.
Default radii for atoms in ~/.ase/gui.py can now be specified as a dictionary. Both the list and dictionary syntaxes now support using atomic symbols as an alternative to atomic numbers.
The updated tutorials based on sphinx-gallery are now the main tutorials.
Move Partly occupied Wannier Functions tutorial to sphinx gallery
Move Surface diffusion energy barriers using the Nudged Elastic Band (NEB) method to sphinx gallery.
Moved periodic table plot from gallery/ to examples/gallery, using the sphinx_gallery style.
Calls to spglib adapted to support the future change of error handling in spglib 2.8+. (3948)
Deprecate ase.geometry.analysis.Analysis.get_rdf due to bugs when elements is not None. This method will be removed soon. Use ase.geometry.rdf.get_rdf instead (3993)
Change ase.geometry.rdf.get_rdf so that elements can accept chemical symbols (3993)
Fixed ase.optimize.optimize.Optimizer.todict to return None for restart when not set (3923)
Ctrl/Shift key handling is refactored in the GUI to try and combat a bug where Num Lock would continuously register as a modifier. This was causing the arrow keys to behave incorrectly in "Move" and "Rotate" modes.
Fixed ~ase.spectrum.band_structure.BandStructure legend plotting for figures with multiple axes (3935)
Fixed ~ase.spectrum.band_structure.BandStructure to save the figure associated with the axes (3935)
Make MolecularDynamics.run() return a boolean value. (3938)
Fix ~ase.io.lammpsrun.read_lammps_dump_text and ~ase.io.lammpsrun.read_lammps_dump_binary to interpret index with negative start / stop / step correctly (3959, 3972)
Fixed ~ase.io.vasp.read_vasp_xml to get not the enthalpy but the energy without PV to be consistent with ~ase.io.vasp.read_vasp_out (2685)
Fixed a bug where graphs could not be rendered when launching the GUI via IPython/Jupyter (3945)
FHI-aims molecular calculations with spin collinear now have correct eigenvalue reading portions (3951)
Setting the default radii for atoms in ~/.ase/gui.py works once again.
Introduced checks to ensure no PBCs are used in Thermochemistry when calculating rotational moments of inertia. Also warn user if trying to use ~ase.atoms.get_moments_of_inertia when PBCs are present. (3953)
Fix missing @writer decorator for :func:~ase.io.espresso.write_fortran_namelist` so can take str filenames (4007)
Make vasp constraint reader which is called by outcar reader ignore empty CONTCAR/POSCAR files as well as non-existent ones (4014)
Breaking change: The vib_energies property of thermochemistry classes is now deprecated. It will still be around for a while until all classes moved t…
Multiple changes to the ~ase.thermochemistry module (3358):
Breaking change: The vib_energies property of thermochemistry classes is now deprecated. It will still be around for a while until all classes moved to the new modes-based framework. Adapt your workflows accordingly. See also below for more details on the new modes-based framework.
Major parts of the thermochemistry module have been rewritten to include a range of new methods: MSRRHOThermo based on the modified rigid-rotor-harmonic-oscillator (msRRHO) approximation by Grimme et al. (10.1002/chem.201200497 and 10.1039/D1SC00621E) and Otlyotov and Minenkov 10.1002/jcc.27129.
A new base class for thermochemistry, ase.thermochemistry.ThermoBase, has been introduced to facilitate the implementation of new thermochemistry methods.
Multiple classes are now based on a framework of individual modes rather than just a list of vibrational energies. This allows for a flexible mixing of different treatments of vibrational modes (e.g., Grimme's msRRHO for low-frequency modes and harmonic oscillator for high-frequency modes). Each vibrational mode is represented by an instance of the ase.thermochemistry.AbstractMode class or one of its subclasses. Multiple modes are then used to build a ase.thermochemistry.BaseThermoChem instance or one of its subclasses. The old way of passing a list of vibrational energies is still supported for backwards compatibility, but it is recommended to switch to the new modes-based framework. The vib_energies property is still available for backwards compatibility, but it is recommended to use the modes property instead, which returns a list of mode instances.
Add support for reading Mulliken charges in ~ase.io.gamess_us.read_gamess_us_out and ~ase.io.gamess_us.read_gamess_us_punch (3761)
Add support to parse general triclinic boxes in ~ase.io.lammpsdata.read_lammps_data, ~ase.io.lammpsrun.read_lammps_dump_text, and ~ase.io.lammpsrun.read_lammps_dump_binary (3797)
Add support for reading the energy and the dipole moment from "external" in ase.io.gaussian.read_gausian_out (3801)
ASE now follows the EON convention for handling cell geometries.
Update ~ase.io.lammpsdata.write_lammps_data to parse atom types read by ~ase.io.lammpsdata.read_lammps_data (3847)
Breaking Trajectories and logfiles passed as filenames are not kept open during simulations. Instead, the file is opened, written to (generally by appending), then closed again. This improves IO safety and prevents resource leaks in many cases. It is still possible to pass trajectories and logfiles that are already open, and then the caller is responsible for closing them. Doing so may be beneficial in fast runs on slow file systems. (3899, 3930)
Updated ~ase.io.lammpsdata.read_lammps_data and ~ase.io.lammpsdata.write_lammps_data to parse Atom Type Labels (3916)
Add LAMMPSlib features to support arbitrary startup flags (e.g. to enable kokkos) and arbitrary initialization callbacks (e.g. calling lammps.mliap.activate_mliappy)
The Vasp calculator now has a more generic way of handling pseudopotentials. If the user specifies the pp_version keyword argument or equivalent VASP_PP_VERSION environment variable, the calculator will look for pseudopotentials in the corresponding VASP-provided pseudopotential directory. Simply download the pseudopotential folders provided by VASP and put them in one parent directory, defined by VASP_PP_PATH. If pp_version is None (default), the Vasp calculator will only look for potpaw (LDA) and potpaw_PBE (PBE) to maintain backwards compatability. If pp_version="64" (for instance), the calculator will look for pseudopotentials in the potpaw.64 and potpaw_PBE.64, respectively.
The potpaw_GGA (PW91) pseudpotential folder has been removed. This means setting xc="PW91" will no longer use the deprecated PW91 pseudopotential folder. It is recommended the PBE pseudopotentials are used for the PW91 functional instead.
Updated ~ase.calculators.lammpsrun.LAMMPS to recognize the LAMMPS velocity command (3805)
All optimizers (except GPMin) can now work with flat position and gradient arrays.
Gradients now have the correct sign in the Optimizable API. The Optimizable API is still experimental and may change. (3908)
The "NPT" thermostat has been renamed to "MelchionnaNPT" for clearer comparison with alternatives, and to avoid giving the impression that this is a generally recommended default choice for NPT.
For backward compatibility an ase.md.npt.NPT class remains in place, which aliases the renamed class at its new location ase.md.melchionna.MelchionnaNPT.
The alias is marked as "deprecated" and will be removed in a future ASE version.
New LangevinBAOAB variable-cell Langevin integrator with Leimkhler's BAOAB method
Added a history feature, i.e. undo/redo, to the ASE GUI.
Move database introduction tutorial to sphinx gallery
Move Surface adsorption study using the ASE database tutorial to sphinx gallery
Move Move "Calculating Delta-values tutorial" to examples/deltacodesdft sphinx gallery
Fixed backward-compatibility of ~ase.constraints.FixedLine and ~ase.constraints.FixedPlane made before ASE 3.23.0 to be read with ~ase.constraints.dict2constraint after ASE 3.23.0 (3786)
ASE now requires Python 3.10+.
Fix deprecated SQL syntax 3815.
Added ase.lattice.match_to_lattice which matches an input cell to a specific Bravais lattice and returns a list of matching representations.
ase-ga project.
Improved efficiency of ~ase.geometry.rdf.get_rdf using ~ase.neighborlist.NeighborList (3888)
Remove subscripting of images iterable in extxyz writer so it works with non-subscriptable iterables when "move_mask" key is present in atoms.arrays (3795)
Fix ~ase.io.extxyz.write_extxyz to ignore constraints other than ~ase.constraints.FixAtoms and ~ase.constraints.FixCartesian when move_mask is present in columns (default since ASE 3.26.0) (3808)
Fix ~ase.io.extxyz.write_extxyz to handle multiple ~ase.constraints.FixAtoms correctly (3812)
Fix ~ase.io.extxyz.write_extxyz to handle unconstrained atoms in ~ase.Atoms with ~ase.constraints.FixCartesian correctly (3812)
Make ~ase.calculators.vasp.Vasp calculator INCAR reader use first instance of each tag, to be same as VASP code itself (3842)
Fix constraints from first frame being applied to all frames (leading to errors) in ~ase.io.extxyz.write_extxyz (3920)
Fixed partial RDFs in ~ase.geometry.rdf.get_rdf to be conssitent with the common definition in, e.g., LAMMPS compute rdf (3921)
Fixed ~ase.calculators.lammpsrun.LAMMPS to be robust against LAMMPS log files with non-ASCII characters (3925)
Fixed ~ase.calculators.lammpsrun.LAMMPS to not run the default fix nve command when users set fix explicitly (3805)
Breaking change: Removed IOFormat.open() method. It is untested and appears to be unused. 3738
Added communicator argument to parprint, which defaults to world if None, analogous as for paropen
Added single float encoding for ~ase.io.jsonio (3682)
Changed ~ase.io.extxyz.write_extxyz to store ~ase.constraints.FixAtoms and ~ase.constraints.FixCartesian by default without explicitly specifying move_mask in columns (3713)
Breaking change: Removed IOFormat.open() method. It is untested and appears to be unused. 3738
Fix ~ase.io.vasp.read_vasp to correctly read both atomic and lattice velocities if present in POSCAR (3762)
Added per-atom energies consistent with LAMMPS to ~ase.calculators.tersoff.Tersoff (3656)
Added toggles between analytical and numerical forces/stress in ~ase.calculators.fd.FiniteDifferenceCalculator (3678)
Added calculators mattersim and mace_mp to the get_calculator() function
Changed ~ase.calculators.elk.ELK based on ~ase.calculators.GenericFileIOCalculator (3736)
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. (3740)
Logfile and trajectory inputs now accept both string and Path objects.
Breaking change: The ~ase.utils.abc.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. (3732)
Added anisotropic NpT with MTK equations (3595).
Fixed bug in Nose-Hoover chain thermostat which would inconsistently update extended variables for the thermostat.
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 (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 (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 (3790).
Enable ruff on all scripts inside documentation
Web page now uses sphinx book theme (3684).
Documentation moved to ase-lib.org.
Removed Quaternions (subclass of Atoms). The quaternions read from a LAMMPS data file is still accessible as an array in Atoms. (3709)
Re-added the spin option of ~ase.spectrum.band_structure.BandStructurePlot.plot to plot only the specified spin channel (3726)
Fixed ~ase.calculators.tersoff.Tersoff to compute properties correctly (3653, 3655, 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. (3530)
Fix duplicated transformation (e.g. rotation) of symmetry labels in ~ase.dft.bz.bz_plot (3617).
Fixed bug in io.utils.PlottingVariables where automatic bounding boxes were incorrectly centered due the image center not being scaled for paper space (3769).
Fixed bug in io.pov.POVRAY where unspecified image (canvas) dimensions would use defaults with an incorrect aspect ratio (3769).
Added score_key='metric' to ~ase.build.find_optimal_cell_shape for scoring a cell based on its metric tensor (3616)
Deprecate ~ase.utils.lazyproperty and ~ase.utils.lazymethod since Python now provides functools.cached_property (3565).
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 (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. (3599)
Added ~ase.io.castep.write_castep_geom and ~ase.io.castep.write_castep_md (3229)
Fixed ase.data.pubchem module to convert # in SMILES to HEX %23 for URL (3620).
ase.db: Unique IDs are now based on UUID rather than pseudorandom numbers that could become equal due to seeding (3614).
ase.db: Fix bug where unique_id could be converted to float or int (3613).
Vasp: More robust reading of CHGCAR (3607).
Lammpsdump: Read timestep from lammpsdump and set element based on mass (3529).
Vasp: Read and write velocities (3597).
DB: Support for LMDB via ase-db-backends project (3564, 3639).
Espresso: Fix bug reading alat in some cases (3562).
GPAW: Fix reading of total charge from text file (3519).
extxyz: Somewhat restrict what properties are automatically written (3516).
Lammpsdump: Read custom property/atom LAMMPS dump data (3510).
More robust reading of Castep XC functional (3612).
More robust saving of calculators to e.g. trajectories (3610).
Lammpslib: Fix outdated MPI check (3594).
Morse: Optionally override neighbor list implementation (3593).
EAM: Calculate stress (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. (3502)
Fix step counting in the ~ase.optimize.cellawarebfgs.CellAwareBFGS (3588).
Slightly more efficient/robust GoodOldQuasiNewton (3570).
Merged self.communicator into self.comm (3631).
Improved random sampling in countour exploration (3643).
Fix small energy error in Langevin dynamics (3567).
Isotropic NPT with MTK equations (3550).
Bussi dynamics now work in parallel (3569).
Improvements to documentation (3566).
Make Nose-Hoover chain NVT faster and fix domain decomposition with Asap3 (3571).
NPT now works with cells that are upper or lower triangular matrices (3277) aside from upper-only as before.
Fix inconsistent irun for NPT (3598).
Fix windowing bug on WSL (3478).
Added button to wrap atoms into cell (3587).
Changelog is now generated using scriv (3572).
CI cleanup; pypi dependencies in CI jobs are now cached (3628, 3629).
Maximum automatic pytest workers reduced to 8 (3628).
Ruff formatter to be gradually enabled across codebase (3600).
~ase.cell.Cell.standard_form can convert to upper triangular (3623).
Bugfix: ~ase.geometry.geometry.get_duplicate_atoms now respects pbc (3609).
Bugfix: Constraint masks in cell filters are now respected down to numerical precision. Previously, the constraints could be violated by a small amount (3603).
Deprecate ~ase.utils.lazyproperty and ~ase.utils.lazymethod since Python now provides functools.cached_property (3565).
Remove nomad-upload and nomad-get commands due to incompatibility with recent Nomad (3563).
Fix normalization of phonon DOS (3472).
~ase.io.utils.PlottingVariables towards rotating the camera rather than the atoms (2895).
The norm argument to ~ase.build.supercells.get_deviation_from_optimal_cell_shape is now deprecated.
The minimum supported Python version has increased to 3.9 (3473)
Support numpy 2 (3398, 3400, 3402)
Support spglib 2.5.0 (3452)
New method ~ase.Atoms.get_number_of_degrees_of_freedom() (3380)
New methods ~ase.Atoms.get_kinetic_stress(), ~ase.Atoms.get_kinetic_stresses() (3362)
Prevent truncation when printing Atoms objects with 1000 or more atoms (2518)
Ensure correct float format when writing to Postgres database (3475)
Add atom tagging to ase.build.general_surface (2773)
Fix bug where code could return the wrong lattice when trying to fix the handedness of a 2D lattice (3387)
Major improvements to ~ase.build.find_optimal_cell_shape: improve target metric; ensure rotationally invariant results; avoid negative determinants; improved performance via vectorisation (3404, 3441, 3474). The norm argument to ~ase.build.supercells.get_deviation_from_optimal_cell_shape is now deprecated.
Performance improvements to ase.spacegroup.spacegroup.Spacegroup (3434, 3439, 3448)
Deprecated ase.spacegroup.spacegroup.get_spacegroup as results can be misleading (3455).
Amber: Fix scaling of velocities in restart files (3427)
Amber: Raise an error if cell is orthorhombic (3443)
CASTEP
BREAKING Removed legacy read_cell and write_cell functions from ase.io.castep. (3435)
.castep file reader bugfix for Windows (3379), testing improved (3375)
fix read from Castep geometry optimisation with stress only (3445)
EAM: Fix calculations with self.form = "eam" (3399)
FHI-aims
make free_energy the default energy (3406)
add legacy DFPT parser hook (3495)
FileIOSocketClientLauncher: Fix an unintended API change (3453)
FiniteDifferenceCalculator: added new calculator which wraps other calculator for finite-difference forces and strains (3509)
GenericFileIOCalculator fix interaction with SocketIO (3381)
LAMMPS
fixed a bug reading dump file with only one atom (3423)
support initial charges (2846, 3431)
MixingCalculator: remove requirement that mixed calculators have common implemented_properties (3480)
MOPAC: Improve version-number parsing (3483)
MorsePotential: Add stress (3485)
NWChem: fixed reading files from other directories (3418)
Octopus: Improved IO testing (3465)
ONETEP calculator: allow pseudo_path to be set in config (3385)
Orca: Only parse dipoles if COM is found. (3426)
Quantum Espresso
allow arbitrary k-point lists (3339)
support keys from EPW (3421)
Fix path handling when running remote calculations from Windows (3464)
Siesta: support version 5.0 (3464)
Turbomole: fixed formatting of "density convergence" parameter (3412)
VASP
Fixed a bug handling the ICHAIN tag from VTST (3415)
Fixed bugs in CHG file writing (3428) and CHGCAR reading (3447)
Fix parsing POSCAR scale-factor line that includes a comment (3487)
Support use of unknown INCAR keys (3488)
Drop "INCAR created by Atomic Simulation Environment" header (3488)
Drop 1-space indentation of INCAR file (3488)
Use attached atoms if no atom argument provided to ase.calculators.vasp.Vasp.calculate (3491)
Refactoring of ase.gui.view.View to improve API for external projects (3419)
Force lines to appear black (3459)
Fix missing Alt+X/Y/Z/1/2/3 shortcuts to set view direction (3482)
Fix incorrect frame number after using Page-Up/Page-Down controls (3481)
Fix incorrect double application of repeat to energy in GUI (3492)
Added Bussi thermostat ase.md.bussi.Bussi (3350)
Added Nose-Hoover chain NVT thermostat ase.md.nose_hoover_chain.NoseHooverChainNVT (3508)
Improve force_temperature to work with constraints (3393)
Add **kwargs to MolecularDynamics, passed to parent Dynamics (3403)
Support modern Numpy PRNGs in Andersen thermostat (3454)
BREAKING The master parameter to each Optimizer is now passed via **kwargs and so becomes keyword-only. (3424)
Pass comm to BFGS and CellAwareBFGS as a step towards cleaner parallelism (3397)
BREAKING Removed deprecated force_consistent option from Optimizer (3424)
Fix scaling of phonon amplitudes (3438)
Implement atom-projected PDOS, deprecate ase.phonons.Phonons.dos in favour of ase.phonons.Phonons.get_dos (3460)
Suppress warnings about imaginary frequencies unless ase.phonons.Phonons.get_dos is called with new parameter verbose=True (3461)
New module ase.pourbaix written to replace ase.phasediagram.Pourbaix
Improved energy definition and diagram generation method
Improved visualisation
BREAKING ase.spectrum.band_structure.BandStructurePlot: the plot_with_colors() has been removed and its features merged into the plot() method.
Cleaner bandgap description from ase.dft.bandgap.GapInfo (3451)
The "legacy functionality" section has been removed (3386)
Other minor improvements and additions (2520, 3377, 3388, 3389, 3394, 3395, 3407, 3413, 3416, 3446, 3458, 3468)
Remove some dangling open files (3384)
Ensure all test modules are properly packaged (3489)
Added 2022 CODATA values (3450)
Fixed value of vacuum magnetic permeability _mu0 in (non-default) CODATA 2018 (3486)
Set up ruff linter (3392, 3420)
Further linting (3396, 3425, 3430, 3433, 3469, 3520)
Refactoring of ase.build.bulk (3390), ase.spacegroup.spacegroup (3429)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →