fix naming
This commit is contained in:
60
tests/node_tests/fractal_dimension.py
Normal file
60
tests/node_tests/fractal_dimension.py
Normal file
@@ -0,0 +1,60 @@
|
||||
import numpy as np
|
||||
from backend.data_types import LineData
|
||||
from backend.node_registry import get_node_info
|
||||
from backend.execution_context import active_node, execution_callbacks
|
||||
from tests.node_tests._shared import make_field
|
||||
|
||||
|
||||
def test_fractal_dimension():
|
||||
from backend.nodes.fractal_dimension import FractalDimension
|
||||
|
||||
node = FractalDimension()
|
||||
assert get_node_info("FractalDimension")["category"] == "Measure"
|
||||
|
||||
N = 129
|
||||
yy, xx = np.mgrid[0:N, 0:N] / (N - 1)
|
||||
data = 0.25 * xx + 0.12 * yy + 0.03 * np.sin(6.0 * np.pi * xx) + 0.02 * np.cos(4.0 * np.pi * yy)
|
||||
field = make_field(data=data, xreal=4.0e-6, yreal=4.0e-6)
|
||||
|
||||
overlays = []
|
||||
tables = []
|
||||
with execution_callbacks(
|
||||
overlay=lambda nid, payload: overlays.append(payload),
|
||||
table=lambda nid, rows: tables.append(rows),
|
||||
), active_node("test"):
|
||||
dimension, curve, table = node.process(
|
||||
field, method="partitioning", interpolation="linear", x1=0.0, y1=0.5, x2=1.0, y2=0.5,
|
||||
)
|
||||
|
||||
assert np.isfinite(dimension)
|
||||
assert 1.5 < dimension < 2.5
|
||||
assert isinstance(curve, LineData)
|
||||
assert len(curve) > 3
|
||||
assert curve.x_axis is not None
|
||||
assert np.all(np.diff(curve.x_axis) > 0.0)
|
||||
assert len(overlays) == 1
|
||||
assert overlays[0]["kind"] == "line_plot"
|
||||
assert len(tables) == 1
|
||||
assert table[0]["quantity"] == "Dimension"
|
||||
|
||||
methods = ["partitioning", "cube_counting", "triangulation", "psdf", "hhcf"]
|
||||
for method in methods:
|
||||
dim, line, measurements = node.process(
|
||||
field, method=method, interpolation="linear", x1=0.0, y1=0.5, x2=1.0, y2=0.5,
|
||||
)
|
||||
assert np.isfinite(dim), f"{method} should produce a finite fractal dimension"
|
||||
if method == "psdf":
|
||||
assert -1.0 < dim < 3.2
|
||||
else:
|
||||
assert 1.2 < dim < 3.2
|
||||
assert isinstance(line, LineData)
|
||||
assert len(line) >= 2
|
||||
assert measurements[0]["quantity"] == "Dimension"
|
||||
|
||||
narrowed_dim, _, narrowed_table = node.process(
|
||||
field, method="partitioning", interpolation="linear", x1=0.15, y1=0.5, x2=0.55, y2=0.5,
|
||||
)
|
||||
assert np.isfinite(narrowed_dim)
|
||||
fit_from = next(row["value"] for row in narrowed_table if row["quantity"] == "Fit from")
|
||||
fit_to = next(row["value"] for row in narrowed_table if row["quantity"] == "Fit to")
|
||||
assert fit_to > fit_from
|
||||
Reference in New Issue
Block a user