split node tests into standalone files
This commit is contained in:
35
tests/node_tests/test_psdf.py
Normal file
35
tests/node_tests/test_psdf.py
Normal file
@@ -0,0 +1,35 @@
|
||||
import numpy as np
|
||||
from backend.data_types import DataField
|
||||
|
||||
|
||||
def test_psdf_node():
|
||||
from backend.nodes.fft_2d import FFT2D
|
||||
from backend.nodes.psdf import PSDF
|
||||
|
||||
field = DataField(
|
||||
data=np.random.default_rng(17).standard_normal((64, 64)),
|
||||
xreal=2.0e-6, yreal=1.0e-6, si_unit_xy="m", si_unit_z="nm",
|
||||
)
|
||||
|
||||
fft_node = FFT2D()
|
||||
psdf_node = PSDF()
|
||||
|
||||
fft_psdf = fft_node.process(field, windowing="hann", level="plane")[3]
|
||||
psdf, = psdf_node.process(field, windowing="hann", level="plane")
|
||||
assert np.allclose(psdf.data, fft_psdf.data)
|
||||
assert psdf.data.shape == field.data.shape
|
||||
assert psdf.domain == "frequency"
|
||||
assert psdf.si_unit_xy == "1/m"
|
||||
assert psdf.si_unit_z == "nm^2 m^2"
|
||||
assert np.all(psdf.data >= 0.0)
|
||||
|
||||
white = DataField(
|
||||
data=np.random.default_rng(123).standard_normal((128, 128)),
|
||||
xreal=1.0e-6, yreal=1.0e-6, si_unit_xy="m", si_unit_z="m",
|
||||
)
|
||||
psdf_white, = psdf_node.process(white, windowing="none", level="none")
|
||||
variance = float(np.var(white.data))
|
||||
dk_x = psdf_white.xreal / psdf_white.xres
|
||||
dk_y = psdf_white.yreal / psdf_white.yres
|
||||
integral = float(np.sum(psdf_white.data) * dk_x * dk_y)
|
||||
assert 0.8 < integral / variance < 1.2
|
||||
Reference in New Issue
Block a user