Solving problems related to Geometry (#118)
* fix and add tests * minor fix on domain classes --------- Co-authored-by: Dario Coscia <dariocoscia@cli-10-110-0-208.WIFIeduroamSTUD.units.it> Co-authored-by: Dario Coscia <dariocoscia@dhcp-040.eduroam.sissa.it>
This commit is contained in:
committed by
Nicola Demo
parent
62ec69ccac
commit
982af4a04d
@@ -12,10 +12,26 @@ def test_constructor():
|
||||
CartesianDomain({'x': [0, 1], 'y': [0, 1]})
|
||||
|
||||
|
||||
def test_is_inside():
|
||||
def test_is_inside_check_border():
|
||||
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5]]), ['x', 'y'])
|
||||
pt_2 = LabelTensor(torch.tensor([[1.0, 0.5]]), ['x', 'y'])
|
||||
pt_3 = LabelTensor(torch.tensor([[1.5, 0.5]]), ['x', 'y'])
|
||||
domain = CartesianDomain({'x': [0, 1], 'y': [0, 1]})
|
||||
for pt, exp_result in zip([pt_1, pt_2, pt_3], [True, True, False]):
|
||||
assert domain.is_inside(pt) == exp_result
|
||||
assert domain.is_inside(pt, check_border=True) == exp_result
|
||||
|
||||
def test_is_inside_not_check_border():
|
||||
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5]]), ['x', 'y'])
|
||||
pt_2 = LabelTensor(torch.tensor([[1.0, 0.5]]), ['x', 'y'])
|
||||
pt_3 = LabelTensor(torch.tensor([[1.5, 0.5]]), ['x', 'y'])
|
||||
domain = CartesianDomain({'x': [0, 1], 'y': [0, 1]})
|
||||
for pt, exp_result in zip([pt_1, pt_2, pt_3], [True, False, False]):
|
||||
assert domain.is_inside(pt, check_border=False) == exp_result
|
||||
|
||||
def test_is_inside_fixed_variables():
|
||||
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5]]), ['x', 'y'])
|
||||
pt_2 = LabelTensor(torch.tensor([[1.0, 0.5]]), ['x', 'y'])
|
||||
pt_3 = LabelTensor(torch.tensor([[1.0, 1.5]]), ['x', 'y'])
|
||||
domain = CartesianDomain({'x': 1, 'y': [0, 1]})
|
||||
for pt, exp_result in zip([pt_1, pt_2, pt_3], [False, True, False]):
|
||||
assert domain.is_inside(pt, check_border=False) == exp_result
|
||||
30
tests/test_ellipsoid.py
Normal file
30
tests/test_ellipsoid.py
Normal file
@@ -0,0 +1,30 @@
|
||||
import torch
|
||||
import pytest
|
||||
|
||||
from pina import LabelTensor
|
||||
from pina.geometry import EllipsoidDomain
|
||||
|
||||
|
||||
|
||||
def test_constructor():
|
||||
EllipsoidDomain({'x': [0, 1], 'y': [0, 1]})
|
||||
EllipsoidDomain({'x': [0, 1], 'y':[0, 1]}, sample_surface=True)
|
||||
|
||||
|
||||
def test_is_inside_sample_surface_false():
|
||||
domain = EllipsoidDomain({'x': [0, 1], 'y':[0, 1]}, sample_surface=False)
|
||||
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5]]), ['x', 'y'])
|
||||
pt_2 = LabelTensor(torch.tensor([[1.0, 0.5]]), ['x', 'y'])
|
||||
pt_3 = LabelTensor(torch.tensor([[1.5, 0.5]]), ['x', 'y'])
|
||||
for pt, exp_result in zip([pt_1, pt_2, pt_3], [True, False, False]):
|
||||
assert domain.is_inside(pt) == exp_result
|
||||
for pt, exp_result in zip([pt_1, pt_2, pt_3], [True, True, False]):
|
||||
assert domain.is_inside(pt, check_border=True) == exp_result
|
||||
|
||||
def test_is_inside_sample_surface_true():
|
||||
domain = EllipsoidDomain({'x': [0, 1], 'y':[0, 1]}, sample_surface=True)
|
||||
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5]]), ['x', 'y'])
|
||||
pt_2 = LabelTensor(torch.tensor([[1.0, 0.5]]), ['x', 'y'])
|
||||
pt_3 = LabelTensor(torch.tensor([[1.5, 0.5]]), ['x', 'y'])
|
||||
for pt, exp_result in zip([pt_1, pt_2, pt_3], [False, True, False]):
|
||||
assert domain.is_inside(pt) == exp_result
|
||||
@@ -44,3 +44,16 @@ def test_is_inside_EllipsoidDomain_CartesianDomain():
|
||||
CartesianDomain({'x': [0.6, 1.5], 'y': [-2, 0]})])
|
||||
assert domain.is_inside(pt_1) == True
|
||||
assert domain.is_inside(pt_2) == False
|
||||
|
||||
def test_sample():
|
||||
n = 100
|
||||
domain = Union([EllipsoidDomain({'x': [-1, 1], 'y': [-1, 1]}),
|
||||
CartesianDomain({'x': [-0.5, 0.5], 'y': [-0.5, 0.5]})])
|
||||
pts = domain.sample(n)
|
||||
assert isinstance(pts, LabelTensor)
|
||||
assert pts.shape[0] == n
|
||||
|
||||
n = 105
|
||||
pts = domain.sample(n)
|
||||
assert isinstance(pts, LabelTensor)
|
||||
assert pts.shape[0] == n
|
||||
Reference in New Issue
Block a user