split node tests into standalone files
This commit is contained in:
39
tests/node_tests/test_acf_2d.py
Normal file
39
tests/node_tests/test_acf_2d.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import numpy as np
|
||||
from backend.data_types import DataField
|
||||
|
||||
|
||||
def test_acf():
|
||||
from backend.nodes.acf_2d import ACF2D
|
||||
|
||||
node = ACF2D()
|
||||
data = np.array([
|
||||
[1.0, 2.0, 3.0, 4.0],
|
||||
[5.0, 6.0, 7.0, 8.0],
|
||||
[2.0, 1.0, 0.0, -1.0],
|
||||
[0.0, 1.0, 2.0, 3.0],
|
||||
], dtype=np.float64)
|
||||
field = DataField(data=data, xreal=8.0, yreal=4.0, si_unit_xy="nm", si_unit_z="V")
|
||||
|
||||
acf, = node.process(field, level="none")
|
||||
assert acf.data.shape == (3, 3)
|
||||
assert acf.domain == "spatial"
|
||||
assert acf.si_unit_xy == "nm"
|
||||
assert acf.si_unit_z == "V^2"
|
||||
assert np.isclose(acf.xreal, 6.0)
|
||||
assert np.isclose(acf.yreal, 3.0)
|
||||
assert np.isclose(acf.xoff, -3.0)
|
||||
assert np.isclose(acf.yoff, -1.5)
|
||||
|
||||
expected = np.zeros((3, 3), dtype=np.float64)
|
||||
for iy, dy in enumerate(range(-1, 2)):
|
||||
for ix, dx in enumerate(range(-1, 2)):
|
||||
y0a = max(0, dy)
|
||||
y1a = min(data.shape[0], data.shape[0] + dy)
|
||||
x0a = max(0, dx)
|
||||
x1a = min(data.shape[1], data.shape[1] + dx)
|
||||
lhs = data[y0a:y1a, x0a:x1a]
|
||||
rhs = data[y0a - dy:y1a - dy, x0a - dx:x1a - dx]
|
||||
expected[iy, ix] = float(np.mean(lhs * rhs))
|
||||
|
||||
assert np.allclose(acf.data, expected)
|
||||
assert np.allclose(acf.data, acf.data[::-1, ::-1])
|
||||
Reference in New Issue
Block a user