Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Removed

Fixed
-----
- Numpy 2.0.0 compatibility in (#228).

2024-06-06 - version 0.6.0
==========================
Expand Down
7 changes: 7 additions & 0 deletions diffsims/constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import numpy as np

# TODO: Remove this section when minimum numpy version is 1.25.0
if np.__version__ >= "1.25.0":
from numpy.exceptions import VisibleDeprecationWarning
else:
VisibleDeprecationWarning = np.VisibleDeprecationWarning
2 changes: 1 addition & 1 deletion diffsims/generators/diffraction_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ def calculate_ed_data(

# Add z-coordinate
z_range = max(
z_range, coordinates[:, -1].ptp()
z_range, np.ptp(coordinates[:, -1])
) # enforce minimal resolution in reciprocal space
x = [
self.detector[0],
Expand Down
1 change: 1 addition & 0 deletions diffsims/simulations/simulation2d.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ def current_size(self):
return self.rotations.size

def deepcopy(self):

return copy.deepcopy(self)

def _get_transformed_coordinates(
Expand Down
13 changes: 7 additions & 6 deletions diffsims/tests/crystallography/test_get_hkl.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,14 @@
get_hkl,
ReciprocalLatticeVector,
)
from diffsims.constants import VisibleDeprecationWarning


class TestGetHKL:
@pytest.mark.parametrize("highest_hkl, n", [([1, 2, 3], 105), ([1, 1, 1], 27)])
def test_get_hkl(self, highest_hkl, n):
highest_hkl = np.array(highest_hkl)
with pytest.warns(np.VisibleDeprecationWarning):
with pytest.warns(VisibleDeprecationWarning):
hkl = get_hkl(highest_hkl)
assert np.allclose(hkl.max(axis=0), highest_hkl)
assert np.allclose(hkl.min(axis=0), -highest_hkl)
Expand All @@ -52,7 +53,7 @@ def test_get_hkl(self, highest_hkl, n):
"d, hkl", [(0.5, [6, 6, 21]), (1, [3, 3, 11]), (1.5, [2, 2, 7])]
)
def test_get_highest_hkl(self, silicon_carbide_phase, d, hkl):
with pytest.warns(np.VisibleDeprecationWarning):
with pytest.warns(VisibleDeprecationWarning):
hkl_out = get_highest_hkl(
silicon_carbide_phase.structure.lattice, min_dspacing=d
)
Expand All @@ -64,7 +65,7 @@ def test_get_highest_hkl(self, silicon_carbide_phase, d, hkl):

def test_get_equivalent_hkl(self):
phase_225 = Phase(space_group=225)
with pytest.warns(np.VisibleDeprecationWarning):
with pytest.warns(VisibleDeprecationWarning):
hkl1 = get_equivalent_hkl(
[1, 1, 1], operations=phase_225.point_group, unique=True
)
Expand All @@ -86,12 +87,12 @@ def test_get_equivalent_hkl(self):
g1 = ReciprocalLatticeVector(phase_225, hkl=[1, 1, 1])
assert np.allclose(g1.symmetrise().hkl, hkl1.data)

with pytest.warns(np.VisibleDeprecationWarning):
with pytest.warns(VisibleDeprecationWarning):
hkl2 = get_equivalent_hkl([1, 1, 1], operations=phase_225.point_group)
assert hkl2.shape[0] == g1.symmetrise().size * 6 == 48

phase_186 = Phase(space_group=186)
with pytest.warns(np.VisibleDeprecationWarning):
with pytest.warns(VisibleDeprecationWarning):
hkl3, mult3 = get_equivalent_hkl(
[2, 2, 0],
operations=phase_186.point_group,
Expand All @@ -102,7 +103,7 @@ def test_get_equivalent_hkl(self):
assert mult3 == g3.symmetrise().size == 12
assert np.allclose(hkl3.data[:2], [[2, 2, 0], [-2.7321, 0.7321, 0]], atol=1e-4)

with pytest.warns(np.VisibleDeprecationWarning):
with pytest.warns(VisibleDeprecationWarning):
hkl4, mult4 = get_equivalent_hkl(
Vector3d([[2, 2, 0], [4, 0, 0]]),
phase_186.point_group,
Expand Down
15 changes: 8 additions & 7 deletions diffsims/tests/utils/test_deprecation.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import warnings

import numpy as np
import pytest

from diffsims.utils._deprecated import deprecated, deprecated_argument

from diffsims.constants import VisibleDeprecationWarning


class TestDeprecationWarning:
def test_deprecation_since(self):
Expand All @@ -18,7 +19,7 @@ def foo(n):
"""Some docstring."""
return n + 1

with pytest.warns(np.VisibleDeprecationWarning) as record:
with pytest.warns(VisibleDeprecationWarning) as record:
assert foo(4) == 5
desired_msg = (
"Function `foo()` is deprecated and will be removed in version 0.8. Use "
Expand All @@ -41,7 +42,7 @@ def foo2(n):
"""
return n + 2

with pytest.warns(np.VisibleDeprecationWarning) as record2:
with pytest.warns(VisibleDeprecationWarning) as record2:
assert foo2(4) == 6
desired_msg2 = "Function `foo2()` is deprecated."
assert str(record2[0].message) == desired_msg2
Expand All @@ -58,7 +59,7 @@ def test_deprecation_no_old_doc(self):
def foo(n):
return n + 1

with pytest.warns(np.VisibleDeprecationWarning) as record:
with pytest.warns(VisibleDeprecationWarning) as record:
assert foo(4) == 5
desired_msg = (
"Function `foo()` is deprecated and will be removed in version 0.8. Use "
Expand All @@ -79,7 +80,7 @@ def test_deprecation_not_function(self):
def foo(n):
return n + 1

with pytest.warns(np.VisibleDeprecationWarning) as record:
with pytest.warns(VisibleDeprecationWarning) as record:
assert foo(4) == 5
desired_msg = (
"Function `foo()` is deprecated and will be removed in version 0.8. Use "
Expand Down Expand Up @@ -118,7 +119,7 @@ def bar_arg_alt(self, **kwargs):
assert my_foo.bar_arg(b=1) == {"b": 1}

# Warns
with pytest.warns(np.VisibleDeprecationWarning) as record2:
with pytest.warns(VisibleDeprecationWarning) as record2:
assert my_foo.bar_arg(a=2) == {"a": 2}
assert str(record2[0].message) == (
r"Argument `a` is deprecated and will be removed in version 1.4. "
Expand All @@ -127,7 +128,7 @@ def bar_arg_alt(self, **kwargs):
)

# Warns with alternative
with pytest.warns(np.VisibleDeprecationWarning) as record3:
with pytest.warns(VisibleDeprecationWarning) as record3:
assert my_foo.bar_arg_alt(a=3) == {"b": 3}
assert str(record3[0].message) == (
r"Argument `a` is deprecated and will be removed in version 1.4. "
Expand Down
4 changes: 2 additions & 2 deletions diffsims/tests/utils/test_fourier_transform.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,9 @@ def test_freq(shape, dX, rX, dY, rY):
if dX[i] is not None:
assert abs(x[i].item(1) - x[i].item(0)) <= dX[i] + 1e-8
if rY[i] is not None:
assert y[i].ptp() >= rY[i] - 1e-8
assert np.ptp(y[i]) >= rY[i] - 1e-8
if rX[i] is not None:
assert x[i].ptp() >= rX[i] - 1e-8
assert np.ptp(x[i]) >= rX[i] - 1e-8
if dY[i] is not None:
assert abs(y[i].item(1) - y[i].item(0)) <= dY[i] + 1e-8

Expand Down
12 changes: 7 additions & 5 deletions diffsims/utils/_deprecated.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
from typing import Callable, Optional, Union
import warnings

import numpy as np
from diffsims.constants import VisibleDeprecationWarning


class deprecated:
Expand Down Expand Up @@ -90,12 +90,14 @@ def __call__(self, func: Callable):
@functools.wraps(func)
def wrapped(*args, **kwargs):
warnings.simplefilter(
action="always", category=np.VisibleDeprecationWarning, append=True
action="always",
category=VisibleDeprecationWarning,
append=True,
)
func_code = func.__code__
warnings.warn_explicit(
message=msg,
category=np.VisibleDeprecationWarning,
category=VisibleDeprecationWarning,
filename=func_code.co_filename,
lineno=func_code.co_firstlineno + 1,
)
Expand Down Expand Up @@ -143,12 +145,12 @@ def wrapped(*args, **kwargs):
kwargs[self.alternative] = kwargs.pop(self.name)
msg += f"See the documentation of `{func.__name__}()` for more details."
warnings.simplefilter(
action="always", category=np.VisibleDeprecationWarning
action="always", category=VisibleDeprecationWarning
)
func_code = func.__code__
warnings.warn_explicit(
message=msg,
category=np.VisibleDeprecationWarning,
category=VisibleDeprecationWarning,
filename=func_code.co_filename,
lineno=func_code.co_firstlineno + 1,
)
Expand Down
3 changes: 2 additions & 1 deletion diffsims/utils/discretise_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
exp,
prod,
)
import numpy as np
from psutil import virtual_memory
import numba

Expand Down Expand Up @@ -321,7 +322,7 @@ def rebin(x, loc, r, k, mem):
else:
r = r.copy()
xmin = array([X.item(0) if X.size > 1 else -1e5 for X in x], dtype=x[0].dtype)
nbins = [int(ceil(x[i].ptp() / r[i])) + 1 for i in range(3)]
nbins = [int(ceil(np.ptp(x[i]) / r[i])) + 1 for i in range(3)]
if prod(nbins) * 32 * 10 > mem:
raise MemoryError
Len = zeros(nbins, dtype="i4")
Expand Down
Loading