98 lines
2.6 KiB
Python
98 lines
2.6 KiB
Python
import torch
|
|
|
|
from pina import LabelTensor
|
|
from pina.domain import Union, EllipsoidDomain, CartesianDomain
|
|
|
|
|
|
def test_constructor_two_CartesianDomains():
|
|
Union(
|
|
[
|
|
CartesianDomain({"x": [0, 1], "y": [0, 1]}),
|
|
CartesianDomain({"x": [0.5, 2], "y": [-1, 0.1]}),
|
|
]
|
|
)
|
|
|
|
|
|
def test_constructor_two_EllipsoidDomains():
|
|
Union(
|
|
[
|
|
EllipsoidDomain({"x": [-1, 1], "y": [-1, 1], "z": [-1, 1]}),
|
|
EllipsoidDomain(
|
|
{"x": [-0.5, 0.5], "y": [-0.5, 0.5], "z": [-0.5, 0.5]}
|
|
),
|
|
]
|
|
)
|
|
|
|
|
|
def test_constructor_EllipsoidDomain_CartesianDomain():
|
|
Union(
|
|
[
|
|
EllipsoidDomain({"x": [-1, 1], "y": [-1, 1]}),
|
|
CartesianDomain({"x": [-0.5, 0.5], "y": [-0.5, 0.5]}),
|
|
]
|
|
)
|
|
|
|
|
|
def test_is_inside_two_CartesianDomains():
|
|
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5]]), ["x", "y"])
|
|
pt_2 = LabelTensor(torch.tensor([[-1, -1]]), ["x", "y"])
|
|
domain = Union(
|
|
[
|
|
CartesianDomain({"x": [0, 1], "y": [0, 1]}),
|
|
CartesianDomain({"x": [0.5, 2], "y": [-1, 0.1]}),
|
|
]
|
|
)
|
|
assert domain.is_inside(pt_1) == True
|
|
assert domain.is_inside(pt_2) == False
|
|
|
|
|
|
def test_is_inside_two_EllipsoidDomains():
|
|
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5, 0.5]]), ["x", "y", "z"])
|
|
pt_2 = LabelTensor(torch.tensor([[-1, -1, -1]]), ["x", "y", "z"])
|
|
domain = Union(
|
|
[
|
|
EllipsoidDomain({"x": [-1, 1], "y": [-1, 1], "z": [-1, 1]}),
|
|
EllipsoidDomain(
|
|
{"x": [-0.5, 0.5], "y": [-0.5, 0.5], "z": [-0.5, 0.5]}
|
|
),
|
|
]
|
|
)
|
|
assert domain.is_inside(pt_1) == True
|
|
assert domain.is_inside(pt_2) == False
|
|
|
|
|
|
def test_is_inside_EllipsoidDomain_CartesianDomain():
|
|
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5]]), ["x", "y"])
|
|
pt_2 = LabelTensor(torch.tensor([[-1, -1]]), ["x", "y"])
|
|
domain = Union(
|
|
[
|
|
EllipsoidDomain(
|
|
{
|
|
"x": [-1, 1],
|
|
"y": [-1, 1],
|
|
}
|
|
),
|
|
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
|