Simam3D-GPU / tests /test_evaluate_pointcloud.py
junaid-simamdigital's picture
test: cover point cloud evaluator
4121c99 verified
Raw History Blame Contribute Delete
1.23 kB
import numpy as np
from evaluate_pointcloud import load_points, pointcloud_metrics
def test_pointcloud_metrics_is_perfect_for_identical_clouds():
points = np.array([[0, 0, 0], [1, 0, 0], [0, 1, 0]], dtype=float)
metrics = pointcloud_metrics(points, points, threshold=0.01)
assert metrics["chamfer_l1"] == 0.0
assert metrics["precision"] == 1.0
assert metrics["recall"] == 1.0
assert metrics["fscore"] == 1.0
def test_pointcloud_metrics_exposes_one_sided_missing_geometry():
prediction = np.array([[0, 0, 0], [1, 0, 0]], dtype=float)
reference = np.array([[0, 0, 0], [1, 0, 0], [2, 0, 0]], dtype=float)
metrics = pointcloud_metrics(prediction, reference, threshold=0.1)
assert metrics["precision"] == 1.0
assert metrics["recall"] < 1.0
assert metrics["fscore"] < 1.0
def test_load_points_reads_simam3d_ascii_ply(tmp_path):
path = tmp_path / "points.ply"
path.write_text("\n".join([
"ply", "format ascii 1.0", "element vertex 2", "property float x",
"property float y", "property float z", "end_header", "0 1 2 99", "3 4 5 88", "",
]), encoding="utf-8")
assert np.array_equal(load_points(path), np.array([[0, 1, 2], [3, 4, 5]], dtype=float))