-
Notifications
You must be signed in to change notification settings - Fork 242
/
discrete_surfaces_data.py
126 lines (102 loc) · 3.4 KB
/
discrete_surfaces_data.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import random
import geomstats.backend as gs
import geomstats.datasets.utils as data_utils
from geomstats.geometry.discrete_surfaces import DiscreteSurfaces, ElasticMetric
from tests.data_generation import _ManifoldTestData, _RiemannianMetricTestData
vertices, faces = data_utils.load_cube()
vertices = gs.array(vertices, dtype=gs.float64)
faces = gs.array(faces)
class DiscreteSurfacesTestData(_ManifoldTestData):
space_args_list = [(faces,)]
shape_list = [(8, 3)]
n_samples_list = random.sample(range(2, 5), 2)
n_points_list = random.sample(range(2, 5), 2)
n_vecs_list = random.sample(range(2, 5), 2)
Space = DiscreteSurfaces
def vertex_areas_test_data(self):
smoke_data = [dict(faces=faces, point=vertices)]
return self.generate_tests(smoke_data)
def normals_test_data(self):
smoke_data = [dict(faces=faces, point=vertices)]
return self.generate_tests(smoke_data)
def surface_one_forms_test_data(self):
smoke_data = [dict(faces=faces, point=vertices)]
return self.generate_tests(smoke_data)
def faces_area_test_data(self):
smoke_data = [dict(faces=faces, point=vertices)]
return self.generate_tests(smoke_data)
def surface_metric_matrices_test_data(self):
smoke_data = [dict(faces=faces, point=vertices)]
return self.generate_tests(smoke_data)
def laplacian_test_data(self):
smoke_data = [
dict(
faces=faces,
point=vertices,
tangent_vec=tangent_vec,
expected=gs.zeros_like(vertices),
)
for tangent_vec in [gs.zeros_like(vertices), gs.ones_like(vertices)]
]
return self.generate_tests(smoke_data)
class ElasticMetricTestData(_RiemannianMetricTestData):
n_samples_list = [1]
a0_list = [1, 5]
a1_list = [1, 5]
b1_list = [1, 5]
c1_list = [1, 5]
d1_list = [1, 5]
a2_list = [1, 5]
connection_args_list = metric_args_list = [
{
"a0": a0,
"a1": a1,
"b1": b1,
"c1": c1,
"d1": d1,
"a2": a2,
}
for a0, a1, b1, c1, d1, a2 in zip(
a0_list, a1_list, b1_list, c1_list, d1_list, a2_list
)
]
shape_list = [(8, 3)]
space_list = [DiscreteSurfaces(faces)]
n_points_list = [1]
n_tangent_vecs_list = [1]
n_points_a_list = [1]
n_points_b_list = [1]
alpha_list = [1] * 2
n_rungs_list = [1] * 2
scheme_list = ["pole"] * 2
Metric = ElasticMetric
def path_energy_per_time_is_positive_test_data(self):
smoke_data = [
dict(
space=DiscreteSurfaces(faces=faces),
a0=1,
a1=1,
b1=1,
c1=1,
d1=1,
a2=1,
path=gs.array([vertices, vertices, vertices]),
atol=1e-6,
)
]
return self.generate_tests(smoke_data, [])
def path_energy_is_positive_test_data(self):
smoke_data = [
dict(
space=DiscreteSurfaces(faces=faces),
a0=1,
a1=1,
b1=1,
c1=1,
d1=1,
a2=1,
path=gs.array([vertices, vertices, vertices]),
atol=1e-6,
)
]
return self.generate_tests(smoke_data, [])