10
0
forked from pool/python-ase

Compare commits

6 Commits

Author SHA256 Message Date
ffb3dc3422 Accepting request 1301637 from devel:languages:python:numeric
- Update to 3.26.0:
  * Requirements
    + The minimum supported Python version has increased to 3.9
  * Breaking changes
    + Removed unused IOFormat.open() method.
    + The Optimizable interface now works in terms of arbitrary degrees of
      freedom rather than Cartesian (Nx3) ones.
    + ase.io.orca.read_orca_output now returns Atoms with attached
      properties. ase.io.read() will use this function.
    + The master parameter to each Optimizer is now passed via **kwargs and
      so becomes keyword-only.
    + Removed legacy read_cell and write_cell functions from ase.io.castep.
    + Removed deprecated force_consistent option from Optimizer.
    + ase.spectrum.band_structure.BandStructurePlot: the plot_with_colors()
      has been removed and its features merged into the plot() method.
  * Highlights
   + Changed ELK based on GenericFileIOCalculator.
   + The “heavy-weight” database backends in ase.db have been moved to a
     separate project.
   + Major improvements to find_optimal_cell_shape(): improve target metric;
     ensure rotationally invariant results; avoid negative determinants;
     improved performance via vectorisation.
   + Added new FiniteDifferenceCalculator, which wraps other calculator for
     finite-difference forces and strains.
   + Added two new MD thermostats: ase.md.bussi.Bussi and
     ase.md.nose_hoover_chain.NoseHooverChainNVT.
- Drop patch ase-mr3400-numpy2.patch, included upstream.

OBS-URL: https://build.opensuse.org/request/show/1301637
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ase?expand=0&rev=6
2025-08-28 15:18:49 +00:00
34db0b515a - Update to 3.26.0:
* Requirements
    + The minimum supported Python version has increased to 3.9
  * Breaking changes
    + Removed unused IOFormat.open() method.
    + The Optimizable interface now works in terms of arbitrary degrees of
      freedom rather than Cartesian (Nx3) ones.
    + ase.io.orca.read_orca_output now returns Atoms with attached
      properties. ase.io.read() will use this function.
    + The master parameter to each Optimizer is now passed via **kwargs and
      so becomes keyword-only.
    + Removed legacy read_cell and write_cell functions from ase.io.castep.
    + Removed deprecated force_consistent option from Optimizer.
    + ase.spectrum.band_structure.BandStructurePlot: the plot_with_colors()
      has been removed and its features merged into the plot() method.
  * Highlights
   + Changed ELK based on GenericFileIOCalculator.
   + The “heavy-weight” database backends in ase.db have been moved to a
     separate project.
   + Major improvements to find_optimal_cell_shape(): improve target metric;
     ensure rotationally invariant results; avoid negative determinants;
     improved performance via vectorisation.
   + Added new FiniteDifferenceCalculator, which wraps other calculator for
     finite-difference forces and strains.
   + Added two new MD thermostats: ase.md.bussi.Bussi and
     ase.md.nose_hoover_chain.NoseHooverChainNVT.
- Drop patch ase-mr3400-numpy2.patch, included upstream.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-ase?expand=0&rev=11
2025-08-28 04:33:55 +00:00
13002fe010 Accepting request 1198016 from devel:languages:python:numeric
OBS-URL: https://build.opensuse.org/request/show/1198016
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ase?expand=0&rev=5
2024-09-02 11:13:57 +00:00
f0bdb19295 - Unpin numpy
- Add ase-mr3400-numpy2.patch gl#ase/ase#3400

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-ase?expand=0&rev=9
2024-08-31 09:19:11 +00:00
9b69aab4f5 Accepting request 1188288 from devel:languages:python:numeric
- Update to 3.23.0:
  * Add FixSubsetCom to fix the center of mass of the specified subset
    of atoms.
  * Add the indices option to ase.Atoms.get_center_of_mass() to compute
    the center of mass of the specified subset of atoms.
  * All saddle-point search and minimum-energy path methods have been
    moved into a new ase.mep module. You should start importing from this
    location; e.g., from ase.mep import NEB, DyNEB.
  * Fix ase.constraints.FixCom.adjust_momenta() to have no center-of-mass
    momentum
  * ase.build.surface.graphene() now takes a thickness argument
  * ase.build.bulk() now assigns initial magnetic moments to BCC Fe, Co,
    and Ni.
  * ase.build.make_supercell() can now control how to order the atoms in
    the supercell via the option order
  * mask() returns the mask of nonzero cell vectors, an array of three
    booleans.
  * reciprocal() now guarantees that cell vectors which are zero correspond
    to reciprocal cell vectors that are also zero. Previously the
    reciprocal cell vectors could have small nonzero values due to floating
    point tolerance.
  * The Cell object now has normal() and normals() which calculate normal
    vectors to one or all pairs of cell vectors. Also added area() and
    areas(), which return the area spanned by one or all pairs of cell
    vectors.
  * New a2b and periodic formats for Formula objects. The abc format has
    been renamed to ab2.
  * IO formats can now be implemented in separate packages and registered
    in ase with the entry point ase.ioformats in the external package
    configuration.

OBS-URL: https://build.opensuse.org/request/show/1188288
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ase?expand=0&rev=4
2024-07-19 13:26:33 +00:00
9afc9e5bca - Update to 3.23.0:
* Add FixSubsetCom to fix the center of mass of the specified subset
    of atoms.
  * Add the indices option to ase.Atoms.get_center_of_mass() to compute
    the center of mass of the specified subset of atoms.
  * All saddle-point search and minimum-energy path methods have been
    moved into a new ase.mep module. You should start importing from this
    location; e.g., from ase.mep import NEB, DyNEB.
  * Fix ase.constraints.FixCom.adjust_momenta() to have no center-of-mass
    momentum
  * ase.build.surface.graphene() now takes a thickness argument
  * ase.build.bulk() now assigns initial magnetic moments to BCC Fe, Co,
    and Ni.
  * ase.build.make_supercell() can now control how to order the atoms in
    the supercell via the option order
  * mask() returns the mask of nonzero cell vectors, an array of three
    booleans.
  * reciprocal() now guarantees that cell vectors which are zero correspond
    to reciprocal cell vectors that are also zero. Previously the
    reciprocal cell vectors could have small nonzero values due to floating
    point tolerance.
  * The Cell object now has normal() and normals() which calculate normal
    vectors to one or all pairs of cell vectors. Also added area() and
    areas(), which return the area spanned by one or all pairs of cell
    vectors.
  * New a2b and periodic formats for Formula objects. The abc format has
    been renamed to ab2.
  * IO formats can now be implemented in separate packages and registered
    in ase with the entry point ase.ioformats in the external package
    configuration.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-ase?expand=0&rev=7
2024-07-18 03:51:42 +00:00
5 changed files with 45 additions and 238 deletions

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:91a2aa31d89bd90b0efdfe4a7e84264f32828b2abfc9f38e65e041ad76fec8ae
size 2336462

3
ase-3.26.0.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a071a355775b0a8062d23e9266e9d811b19d9f6d9ec5215e8032f7d93dc65075
size 2405567

View File

@@ -1,222 +0,0 @@
From 06c59143e7fdf15483491cf71800afba8b862bda Mon Sep 17 00:00:00 2001
From: yuzie007 <yuji.ikeda.ac.jp@gmail.com>
Date: Thu, 20 Jun 2024 17:44:31 +0200
Subject: [PATCH 1/7] Use `np.exceptions.ComplexWarning`
---
ase/test/vibrations/test_vib.py | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Index: ase-3.23.0/ase/test/vibrations/test_vib.py
===================================================================
--- ase-3.23.0.orig/ase/test/vibrations/test_vib.py
+++ ase-3.23.0/ase/test/vibrations/test_vib.py
@@ -6,6 +6,10 @@ import numpy as np
import pytest
from numpy.testing import (assert_array_almost_equal,
assert_array_equal)
+try:
+ from numpy.exceptions import ComplexWarning # NumPy 2.0.0
+except ImportError:
+ from numpy import ComplexWarning
import ase.io
from ase import Atoms, units
@@ -438,14 +442,14 @@ def test_constrained_atoms(n2_data):
def test_dos(n2_vibdata):
- with pytest.warns(np.ComplexWarning):
+ with pytest.warns(ComplexWarning):
dos = n2_vibdata.get_dos()
assert_array_almost_equal(dos.get_energies(),
n2_vibdata.get_energies())
def test_pdos(n2_vibdata):
- with pytest.warns(np.ComplexWarning):
+ with pytest.warns(ComplexWarning):
pdos = n2_vibdata.get_pdos()
assert_array_almost_equal(pdos[0].get_energies(),
n2_vibdata.get_energies())
Index: ase-3.23.0/ase/constraints.py
===================================================================
--- ase-3.23.0.orig/ase/constraints.py
+++ ase-3.23.0/ase/constraints.py
@@ -1161,19 +1161,19 @@ class FixInternals(FixConstraint):
# Projection
hh = []
for i, constraint in enumerate(self.constraints):
- hh.append(aa[:, i] * np.row_stack(aa[:, i]))
+ hh.append(aa[:, i] * np.vstack(aa[:, i]))
- txx = aa[:, self.n] * np.row_stack(aa[:, self.n])
- tyy = aa[:, self.n + 1] * np.row_stack(aa[:, self.n + 1])
- tzz = aa[:, self.n + 2] * np.row_stack(aa[:, self.n + 2])
- rxx = aa[:, self.n + 3] * np.row_stack(aa[:, self.n + 3])
- ryy = aa[:, self.n + 4] * np.row_stack(aa[:, self.n + 4])
- rzz = aa[:, self.n + 5] * np.row_stack(aa[:, self.n + 5])
+ txx = aa[:, self.n] * np.vstack(aa[:, self.n])
+ tyy = aa[:, self.n + 1] * np.vstack(aa[:, self.n + 1])
+ tzz = aa[:, self.n + 2] * np.vstack(aa[:, self.n + 2])
+ rxx = aa[:, self.n + 3] * np.vstack(aa[:, self.n + 3])
+ ryy = aa[:, self.n + 4] * np.vstack(aa[:, self.n + 4])
+ rzz = aa[:, self.n + 5] * np.vstack(aa[:, self.n + 5])
T = txx + tyy + tzz + rxx + ryy + rzz
for vec in hh:
T += vec
- ff = np.dot(T, np.row_stack(ff))
- forces[:, :] -= np.dot(T, np.row_stack(ff)).reshape(-1, 3)
+ ff = np.dot(T, np.vstack(ff))
+ forces[:, :] -= np.dot(T, np.vstack(ff)).reshape(-1, 3)
def __repr__(self):
constraints = [repr(constr) for constr in self.constraints]
Index: ase-3.23.0/ase/mep/autoneb.py
===================================================================
--- ase-3.23.0.orig/ase/mep/autoneb.py
+++ ase-3.23.0/ase/mep/autoneb.py
@@ -544,7 +544,7 @@ class AutoNEB:
try:
energies.append(a.get_potential_energy())
except RuntimeError:
- energies.append(np.NaN)
+ energies.append(np.nan)
return energies
def get_energies_one_image(self, image):
@@ -553,7 +553,7 @@ class AutoNEB:
try:
energy = image.get_potential_energy()
except RuntimeError:
- energy = np.NaN
+ energy = np.nan
return energy
def get_highest_energy_index(self):
Index: ase-3.23.0/ase/dft/__init__.py
===================================================================
--- ase-3.23.0.orig/ase/dft/__init__.py
+++ ase-3.23.0/ase/dft/__init__.py
@@ -1,4 +1,8 @@
import numpy as np
+try:
+ from numpy import trapezoid # NumPy 2.0.0
+except ImportError:
+ from numpy import trapz as trapezoid
from ase.dft.dos import DOS
from ase.dft.kpoints import monkhorst_pack
@@ -19,9 +23,9 @@ def get_distribution_moment(x, y, order=
y = np.asarray(y)
if order == 0:
- return np.trapz(y, x)
+ return trapezoid(y, x)
elif isinstance(order, int):
- return np.trapz(x**order * y, x) / np.trapz(y, x)
+ return trapezoid(x**order * y, x) / trapezoid(y, x)
elif hasattr(order, '__iter__'):
return [get_distribution_moment(x, y, n) for n in order]
else:
Index: ase-3.23.0/ase/md/switch_langevin.py
===================================================================
--- ase-3.23.0.orig/ase/md/switch_langevin.py
+++ ase-3.23.0/ase/md/switch_langevin.py
@@ -1,6 +1,10 @@
from typing import Any, List, Optional
import numpy as np
+try:
+ from numpy import trapezoid # NumPy 2.0.0
+except ImportError:
+ from numpy import trapz as trapezoid
from ase import Atoms
from ase.calculators.mixing import MixedCalculator
@@ -117,7 +121,7 @@ class SwitchLangevin(Langevin):
lambdas = self.path_data[:, 1]
U1 = self.path_data[:, 2]
U2 = self.path_data[:, 3]
- delta_F = np.trapz(U2 - U1, lambdas)
+ delta_F = trapezoid(U2 - U1, lambdas)
return delta_F
Index: ase-3.23.0/ase/test/calculator/test_harmonic.py
===================================================================
--- ase-3.23.0.orig/ase/test/calculator/test_harmonic.py
+++ ase-3.23.0/ase/test/calculator/test_harmonic.py
@@ -1,6 +1,10 @@
import numpy as np
import pytest
from numpy.testing import assert_array_almost_equal
+try:
+ from numpy import trapezoid # NumPy 2.0.0
+except ImportError:
+ from numpy import trapz as trapezoid
from ase import Atoms
from ase.calculators.calculator import CalculationFailed, CalculatorSetupError
@@ -266,7 +270,7 @@ def test_thermodynamic_integration():
e0, e1 = calc_linearCombi.get_energy_contributions(atoms)
ediffs[lamb].append(float(e1) - float(e0))
ediffs[lamb] = np.mean(ediffs[lamb])
- dA = np.trapz([ediffs[lamb] for lamb in lambs], x=lambs) # anharm. corr.
+ dA = trapezoid([ediffs[lamb] for lamb in lambs], x=lambs) # anharm. corr.
assert -0.005 < dA < 0.005 # the MD run is to short for convergence
if dA == 0.0:
raise ValueError('there is most likely something wrong, but it could '
Index: ase-3.23.0/ase/io/octopus/input.py
===================================================================
--- ase-3.23.0.orig/ase/io/octopus/input.py
+++ ase-3.23.0/ase/io/octopus/input.py
@@ -516,7 +516,7 @@ def atoms2kwargs(atoms, use_ase_cell):
if atoms.cell.orthorhombic:
Lsize = 0.5 * np.diag(cell)
- kwargs['lsize'] = [[repr(size) for size in Lsize]]
+ kwargs['lsize'] = [[str(size) for size in Lsize]]
# ASE uses (0...cell) while Octopus uses -L/2...L/2.
# Lsize is really cell / 2, and we have to adjust our
# positions by subtracting Lsize (see construction of the coords
@@ -533,7 +533,7 @@ def atoms2kwargs(atoms, use_ase_cell):
if sym is None:
raise ValueError('Cannot represent atom X without tags and '
'species info in atoms.info')
- coord_block.append([repr(sym)] + [repr(x) for x in pos])
+ coord_block.append([repr(sym)] + [str(x) for x in pos])
kwargs[coordtype] = coord_block
npbc = sum(atoms.pbc)
Index: ase-3.23.0/ase/dft/band_structure.py
===================================================================
--- ase-3.23.0.orig/ase/dft/band_structure.py
+++ ase-3.23.0/ase/dft/band_structure.py
@@ -1,6 +1,9 @@
import warnings
-from numpy import VisibleDeprecationWarning
+try:
+ from numpy.exceptions import VisibleDeprecationWarning # NumPy 2.0.0
+except ImportError:
+ from numpy import VisibleDeprecationWarning
from ase.spectrum.band_structure import * # noqa: F401,F403
Index: ase-3.23.0/ase/test/test_imports.py
===================================================================
--- ase-3.23.0.orig/ase/test/test_imports.py
+++ ase-3.23.0/ase/test/test_imports.py
@@ -3,7 +3,10 @@ from importlib import import_module
from pathlib import Path
import pytest
-from numpy import VisibleDeprecationWarning
+try:
+ from numpy.exceptions import VisibleDeprecationWarning # NumPy 2.0.0
+except ImportError:
+ from numpy import VisibleDeprecationWarning
import ase

View File

@@ -1,3 +1,34 @@
-------------------------------------------------------------------
Thu Aug 28 04:31:25 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>
- Update to 3.26.0:
* Requirements
+ The minimum supported Python version has increased to 3.9
* Breaking changes
+ Removed unused IOFormat.open() method.
+ The Optimizable interface now works in terms of arbitrary degrees of
freedom rather than Cartesian (Nx3) ones.
+ ase.io.orca.read_orca_output now returns Atoms with attached
properties. ase.io.read() will use this function.
+ The master parameter to each Optimizer is now passed via **kwargs and
so becomes keyword-only.
+ Removed legacy read_cell and write_cell functions from ase.io.castep.
+ Removed deprecated force_consistent option from Optimizer.
+ ase.spectrum.band_structure.BandStructurePlot: the plot_with_colors()
has been removed and its features merged into the plot() method.
* Highlights
+ Changed ELK based on GenericFileIOCalculator.
+ The “heavy-weight” database backends in ase.db have been moved to a
separate project.
+ Major improvements to find_optimal_cell_shape(): improve target metric;
ensure rotationally invariant results; avoid negative determinants;
improved performance via vectorisation.
+ Added new FiniteDifferenceCalculator, which wraps other calculator for
finite-difference forces and strains.
+ Added two new MD thermostats: ase.md.bussi.Bussi and
ase.md.nose_hoover_chain.NoseHooverChainNVT.
- Drop patch ase-mr3400-numpy2.patch, included upstream.
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Aug 30 12:50:49 UTC 2024 - Ben Greiner <code@bnavigator.de> Fri Aug 30 12:50:49 UTC 2024 - Ben Greiner <code@bnavigator.de>

View File

@@ -1,7 +1,7 @@
# #
# spec file for package python-ase # spec file for package python-ase
# #
# Copyright (c) 2024 SUSE LLC # Copyright (c) 2025 SUSE LLC and contributors
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@@ -17,31 +17,29 @@
Name: python-ase Name: python-ase
Version: 3.23.0 Version: 3.26.0
Release: 0 Release: 0
Summary: Atomic Simulation Environment Summary: Atomic Simulation Environment
License: LGPL-2.1-or-later License: LGPL-2.1-or-later
URL: https://wiki.fysik.dtu.dk/ase URL: https://wiki.fysik.dtu.dk/ase
Source: https://files.pythonhosted.org/packages/source/a/ase/ase-%{version}.tar.gz Source: https://files.pythonhosted.org/packages/source/a/ase/ase-%{version}.tar.gz
# PATCH-FIX-UPSTREAM ase-mr3400-numpy2.patch https://gitlab.com/ase/ase/-/merge_requests/3400 BuildRequires: %{python_module base >= 3.9}
Patch0: ase-mr3400-numpy2.patch
BuildRequires: %{python_module pip} BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools} BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel} BuildRequires: %{python_module wheel}
BuildRequires: python-rpm-macros BuildRequires: python-rpm-macros
# SECTION test requirements # SECTION test requirements
BuildRequires: %{python_module matplotlib >= 3.1.0} BuildRequires: %{python_module matplotlib >= 3.3.4}
BuildRequires: %{python_module numpy >= 1.15.0} BuildRequires: %{python_module numpy >= 1.19.5}
BuildRequires: %{python_module pytest-mock} BuildRequires: %{python_module pytest >= 7}
BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest-xdist >= 2.1}
BuildRequires: %{python_module pytest} BuildRequires: %{python_module scipy >= 1.6.0}
BuildRequires: %{python_module scipy >= 1.1.0}
BuildRequires: %{python_module tk} BuildRequires: %{python_module tk}
# /SECTION # /SECTION
BuildRequires: fdupes BuildRequires: fdupes
Requires: python-matplotlib >= 3.1.0 Requires: python-matplotlib >= 3.3.4
Requires: python-numpy >= 1.15.0 Requires: python-numpy >= 1.19.5
Requires: python-scipy >= 1.1.0 Requires: python-scipy >= 1.6.0
Requires(post): update-alternatives Requires(post): update-alternatives
Requires(postun): update-alternatives Requires(postun): update-alternatives
BuildArch: noarch BuildArch: noarch