File: changelog.rst

package info (click to toggle)
python-ase 3.26.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,484 kB
  • sloc: python: 148,112; xml: 2,728; makefile: 110; javascript: 47
file content (408 lines) | stat: -rw-r--r-- 16,023 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
.. _changelog:

=========
Changelog
=========

Git master branch
=================

.. CHANGELOG HOWTO.

   To add an entry to the changelog, create a file named
   <timestamp>_<subject>.rst inside the ase/changelog.d/ directory.
   Timestamp should be at least YYYYMMDD.

   You can also install scriv (https://pypi.org/project/scriv/) and run
   "scriv create" to do this automatically, if you do this often.

   Edit the file following a similar style to other changelog entries and
   try to choose an existing section for the release note.

   For example ase/changelog.d/20250108_amber_fix_velocities.rst with contents:

     Calculators
     -----------

     - Amber: Fix scaling of velocities in restart files (:mr:`3427`)

   For each release we generate a full changelog which is inserted below.

.. scriv-auto-changelog-start

Version 3.26.0
==============

I/O
---

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

- Added single float encoding for :mod:`~ase.io.jsonio` (:mr:`3682`)

- Changed :func:`~ase.io.extxyz.write_extxyz` to store
  :class:`~ase.constraints.FixAtoms` and
  :class:`~ase.constraints.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`

- Fix :func:`~ase.io.vasp.read_vasp` to correctly read both atomic and lattice velocities if present in POSCAR (:mr:`3762`)

Calculators
-----------

- Added per-atom ``energies`` consistent with LAMMPS to
  :class:`~ase.calculators.tersoff.Tersoff` (:mr:`3656`)

- Added toggles between analytical and numerical forces/stress in
  :class:`~ase.calculators.fd.FiniteDifferenceCalculator` (:mr:`3678`)

- Added calculators ``mattersim`` and ``mace_mp`` to the ``get_calculator()`` function

- Changed :class:`~ase.calculators.elk.ELK` based on
  :class:`~ase.calculators.GenericFileIOCalculator` (:mr:`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.  (:mr:`3740`)

Optimizers
----------

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

- **Breaking change:** The :class:`~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. (:mr:`3732`)

Molecular dynamics
------------------

- Added anisotropic NpT with MTK equations (:mr:`3595`).

- Fixed bug in Nose-Hoover chain thermostat which would inconsistently update extended variables for the thermostat.

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`).

- Documentation moved to `ase-lib.org <https://ase-lib.org/>`_.

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`)

- Re-added the ``spin`` option of
  :meth:`~ase.spectrum.band_structure.BandStructurePlot.plot`
  to plot only the specified spin channel (:mr:`3726`)

Bugfixes
--------

- Fixed :class:`~ase.calculators.tersoff.Tersoff` to compute properties
  correctly (:mr:`3653`, :mr:`3655`, :mr:`3657`).

- Enable :func:`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 :func:`~ase.dft.bz.bz_plot` (:mr:`3617`).

- Fixed bug in :class:`io.utils.PlottingVariables` where automatic
  bounding boxes were incorrectly centered due the image center not being
  scaled for paper space (:mr:`3769`).

- Fixed bug in :class:`io.pov.POVRAY` where unspecified image (canvas)
  dimensions would use defaults with an incorrect aspect ratio (:mr:`3769`).

Structure tools
---------------

- Added ``score_key='metric'`` to :func:`~ase.build.find_optimal_cell_shape`
  for scoring a cell based on its metric tensor (:mr:`3616`)

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 :func:`~ase.io.castep.write_castep_geom` and
  :func:`~ase.io.castep.write_castep_md` (:mr:`3229`)

- Fixed `:mod:`ase.data.pubchem` module to convert ``#`` in SMILES to HEX
  ``%23`` for URL (:mr:`3620`).

 - :mod:`ase.db`: Unique IDs are now based on UUID rather than pseudorandom numbers that could become equal due to seeding (:mr:`3614`).
 - :mod:`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 :class:`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 :class:`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
   :class:`~ase.optimize.cellawarebfgs.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 :meth:`irun` for NPT (:mr:`3598`).

GUI
---

 - Fix windowing bug on WSL (:mr:`3478`).

 - Added button to wrap atoms into cell (:mr:`3587`).

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
-------------

 - :meth:`~ase.cell.Cell.standard_form` can convert to upper triangular (:mr:`3623`).

 - Bugfix: :func:`~ase.geometry.geometry.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 :func:`~ase.utils.lazyproperty` and :func:`~ase.utils.lazymethod`
   since Python now provides :func:`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`).
 - :class:`~ase.io.utils.PlottingVariables` towards rotating the
   camera rather than the atoms (:mr:`2895`).

.. scriv-auto-changelog-end


Version 3.24.0
==============

Requirements
------------

* The minimum supported Python version has increased to 3.9 (:mr:`3473`)
* Support numpy 2 (:mr:`3398`, :mr:`3400`, :mr:`3402`)
* Support spglib 2.5.0 (:mr:`3452`)

Atoms
-----
* New method :func:`~ase.Atoms.get_number_of_degrees_of_freedom()` (:mr:`3380`)
* New methods :func:`~ase.Atoms.get_kinetic_stress()`, :func:`~ase.Atoms.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 :func:`~ase.build.find_optimal_cell_shape`: improve target metric; ensure rotationally invariant results; avoid negative determinants; improved performance via vectorisation (:mr:`3404`, :mr:`3441`, :mr:`3474`). The ``norm`` argument to :func:`~ase.build.supercells.get_deviation_from_optimal_cell_shape` is now deprecated.
* Performance improvements to :class:`ase.spacegroup.spacegroup.Spacegroup` (:mr:`3434`, :mr:`3439`, :mr:`3448`)
* Deprecated :func:`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

  - **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
  
  - make free_energy the default energy (:mr:`3406`)
  - add legacy DFPT parser hook (:mr:`3495`)

* 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

  - fixed a bug reading dump file with only one atom (:mr:`3423`)
  - support initial charges (:mr:`2846`, :mr:`3431`)

* 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 :func:`ase.calculators.vasp.Vasp.calculate` (:mr:`3491`)

GUI
---
* Refactoring of :class:`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 :class:`ase.md.bussi.Bussi` (:mr:`3350`)
* Added Nose-Hoover chain NVT thermostat :class:`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
----------
* **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
-------

* Fix scaling of phonon amplitudes (:mr:`3438`)
* Implement atom-projected PDOS, deprecate :func:`ase.phonons.Phonons.dos` in favour of :func:`ase.phonons.Phonons.get_dos` (:mr:`3460`)
* Suppress warnings about imaginary frequencies unless :func:`ase.phonons.Phonons.get_dos` is called with new parameter ``verbose=True`` (:mr:`3461`)

Pourbaix (:mr:`3280`)
---------------------

* New module :mod:`ase.pourbaix` written to replace :class:`ase.phasediagram.Pourbaix`
* Improved energy definition and diagram generation method
* Improved visualisation

Spectrum
--------
* **BREAKING** :class:`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 :class:`ase.dft.bandgap.GapInfo` (:mr:`3451`)

Documentation
-------------
* The "legacy functionality" section has been removed (:mr:`3386`)
* Other minor improvements and additions (:mr:`2520`, :mr:`3377`, :mr:`3388`, :mr:`3389`, :mr:`3394`, :mr:`3395`, :mr:`3407`, :mr:`3413`, :mr:`3416`, :mr:`3446`, :mr:`3458`, :mr:`3468`)

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
-----------------------
* Set up ruff linter (:mr:`3392`, :mr:`3420`)
* Further linting (:mr:`3396`, :mr:`3425`, :mr:`3430`, :mr:`3433`, :mr:`3469`, :mr:`3520`)
* Refactoring of ``ase.build.bulk`` (:mr:`3390`), ``ase.spacegroup.spacegroup`` (:mr:`3429`)

Earlier releases
================

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