fix naming
This commit is contained in:
40
tests/node_tests/level_plane.py
Normal file
40
tests/node_tests/level_plane.py
Normal file
@@ -0,0 +1,40 @@
|
||||
import numpy as np
|
||||
from tests.node_tests._shared import make_field
|
||||
|
||||
|
||||
def test_plane_level():
|
||||
from backend.nodes.level_plane import PlaneLevelField
|
||||
node = PlaneLevelField()
|
||||
|
||||
N = 64
|
||||
y, x = np.mgrid[0:N, 0:N] / N
|
||||
signal = np.sin(2 * np.pi * 5 * x)
|
||||
data = 100 * x + 50 * y + signal
|
||||
field = make_field(data=data)
|
||||
|
||||
result, = node.process(field)
|
||||
assert result.data.shape == field.data.shape
|
||||
assert abs(result.data.mean()) < 1e-10
|
||||
corr = np.corrcoef(result.data.ravel(), signal.ravel())[0, 1]
|
||||
assert corr > 0.98
|
||||
|
||||
yy_px, xx_px = np.mgrid[0:N, 0:N]
|
||||
|
||||
def fit_pixel_plane(data_in, region):
|
||||
A = np.column_stack([np.ones(int(np.count_nonzero(region))), xx_px[region].astype(np.float64), yy_px[region].astype(np.float64)])
|
||||
coeffs, _, _, _ = np.linalg.lstsq(A, data_in[region].ravel().astype(np.float64), rcond=None)
|
||||
return float(coeffs[0]), float(coeffs[1]), float(coeffs[2])
|
||||
|
||||
mask = np.zeros((N, N), dtype=np.uint8)
|
||||
mask[20:44, 22:46] = 255
|
||||
feature = np.zeros((N, N), dtype=np.float64)
|
||||
feature[mask > 0] = 35.0
|
||||
masked_field = make_field(data=100 * x + 50 * y + feature)
|
||||
|
||||
unmasked, = node.process(masked_field)
|
||||
masked, = node.process(masked_field, masking="exclude", mask=mask)
|
||||
|
||||
outside = mask == 0
|
||||
_, unmasked_bx, unmasked_by = fit_pixel_plane(unmasked.data, outside)
|
||||
_, masked_bx, masked_by = fit_pixel_plane(masked.data, outside)
|
||||
assert np.hypot(masked_bx, masked_by) < np.hypot(unmasked_bx, unmasked_by) * 1e-3
|
||||
Reference in New Issue
Block a user