Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 4 additions & 7 deletions pygem/ffd_parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def __init__(self, n_control_points=None):
self.position_vertex_3 = np.array([0., 0., 1.])


def read_parameters_file(self, filename=None):
def read_parameters_file(self, filename='parameters.prm'):
"""
Reads in the parameters file and fill the self structure.

Expand All @@ -110,9 +110,6 @@ def read_parameters_file(self, filename=None):
if not isinstance(filename, basestring):
raise TypeError("filename must be a string")

if filename is None:
filename = 'parameters.prm'

# Checks if the parameters file exists. If not it writes the default class into filename.
if not os.path.isfile(filename):
self.write_parameters_file(filename)
Expand Down Expand Up @@ -186,7 +183,7 @@ def read_parameters_file(self, filename=None):
self.inv_psi_mapping = np.diag([self.lenght_box_x, self.lenght_box_y, self.lenght_box_z])


def write_parameters_file(self, filename=None):
def write_parameters_file(self, filename='parameters.prm'):
"""
This method writes a parameters file (.prm) called `filename` and fills it with all
the parameters class members.
Expand All @@ -195,8 +192,8 @@ def write_parameters_file(self, filename=None):
document better

"""
if filename is None:
filename = 'parameters.prm'
if not isinstance(filename, basestring):
raise TypeError("filename must be a string")

with open(filename, 'w') as output_file:
output_file.write('\nn_control_points_x: ' + str(self.n_control_points[0]) + '\n')
Expand Down
58 changes: 58 additions & 0 deletions tests/test_datasets/parameters_default.prm
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@

n_control_points_x: 2
n_control_points_y: 1
n_control_points_z: 1

lenght_box_x: 1.0
lenght_box_y: 1.0
lenght_box_z: 1.0

origin_box_x: 0.0
origin_box_y: 0.0
origin_box_z: 0.0

rot_angle_x: 0.0
rot_angle_y: 0.0
rot_angle_z: 0.0

mu_x:
0 0 0 0.0
0 0 1 0.0
0 1 0 0.0
0 1 1 0.0
1 0 0 0.0
1 0 1 0.0
1 1 0 0.0
1 1 1 0.0
2 0 0 0.0
2 0 1 0.0
2 1 0 0.0
2 1 1 0.0

mu_y:
0 0 0 0.0
0 0 1 0.0
0 1 0 0.0
0 1 1 0.0
1 0 0 0.0
1 0 1 0.0
1 1 0 0.0
1 1 1 0.0
2 0 0 0.0
2 0 1 0.0
2 1 0 0.0
2 1 1 0.0

mu_z:
0 0 0 0.0
0 0 1 0.0
0 1 0 0.0
0 1 1 0.0
1 0 0 0.0
1 0 1 0.0
1 1 0 0.0
1 1 1 0.0
2 0 0 0.0
2 0 1 0.0
2 1 0 0.0
2 1 1 0.0
88 changes: 65 additions & 23 deletions tests/test_ffd_parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,145 +126,187 @@ def test_class_members_generic_array_mu_z(self):


def test_read_parameters_file_conversion_unit(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
assert params.conversion_unit == 1.


def test_read_parameters_file_n_control_points(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
assert params.n_control_points == [2, 1, 1]


def test_read_parameters_file_lenght_box_x(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
assert params.lenght_box_x == 45.0


def test_read_parameters_file_lenght_box_y(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
assert params.lenght_box_y == 90.0


def test_read_parameters_file_lenght_box_z(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
assert params.lenght_box_z == 90.0


def test_read_parameters_file_origin_box(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
origin_box_exact = np.array([-20.0, -55.0, -45.0])
np.testing.assert_array_almost_equal(params.origin_box, origin_box_exact)


def test_read_parameters_file_rot_angle_x(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
assert params.rot_angle_x == 20.3


def test_read_parameters_file_rot_angle_y(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
assert params.rot_angle_y == 11.0


def test_read_parameters_file_rot_angle_z(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
assert params.rot_angle_z == 0.


def test_read_parameters_file_array_mu_x(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
array_mu_x_exact = np.array([0.2, 0., 0., 0., 0.5, 0., 0., 0., 1., 0., 0., 0.]).reshape((3, 2, 2))
np.testing.assert_array_almost_equal(params.array_mu_x, array_mu_x_exact)


def test_read_parameters_file_array_mu_y(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
array_mu_y_exact = np.array([0., 0., 0.5555555555, 0., 0., 0., 0., 0., -1., 0., 0., 0.]).reshape((3, 2, 2))
np.testing.assert_array_almost_equal(params.array_mu_y, array_mu_y_exact)


def test_read_parameters_file_array_mu_z(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
array_mu_z_exact = np.array([0., -0.2, 0., -0.45622985, 0., 0., 0., 0., -1.22, 0., -1., 0.]).reshape((3, 2, 2))
np.testing.assert_array_almost_equal(params.array_mu_z, array_mu_z_exact)


def test_read_parameters_file_psi_mapping(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
psi_mapping_exact = np.diag([0.02222222, 0.01111111, 0.01111111])
np.testing.assert_array_almost_equal(params.psi_mapping, psi_mapping_exact)


def test_read_parameters_file_inv_psi_mapping(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
inv_psi_mapping_exact = np.diag([45., 90., 90.])
np.testing.assert_array_almost_equal(params.inv_psi_mapping, inv_psi_mapping_exact)


def test_read_parameters_file_rotation_matrix(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
rotation_matrix_exact = np.array([0.98162718, 0., 0.190809, 0.06619844, 0.93788893, \
-0.34056147, -0.17895765, 0.34693565, 0.92065727]).reshape((3,3))
np.testing.assert_array_almost_equal(params.rotation_matrix, rotation_matrix_exact)


def test_read_parameters_file_position_vertex_0_origin(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
np.testing.assert_array_almost_equal(params.position_vertex_0, params.origin_box)


def test_read_parameters_file_position_vertex_0(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
position_vertex_0_exact = np.array([-20.0, -55.0, -45.0])
np.testing.assert_array_almost_equal(params.position_vertex_0, position_vertex_0_exact)


def test_read_parameters_file_position_vertex_1(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
position_vertex_1_exact = np.array([24.17322326, -52.02107006, -53.05309404])
np.testing.assert_array_almost_equal(params.position_vertex_1, position_vertex_1_exact)


def test_read_parameters_file_position_vertex_2(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
position_vertex_2_exact = np.array([-20., 29.41000412, -13.77579136])
np.testing.assert_array_almost_equal(params.position_vertex_2, position_vertex_2_exact)


def test_read_parameters_file_position_vertex_3(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')
position_vertex_3_exact = np.array([-2.82719042, -85.65053198, 37.85915459])
np.testing.assert_array_almost_equal(params.position_vertex_3, position_vertex_3_exact)


def test_read_parameters_file_failing_filename_type(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
with self.assertRaises(TypeError):
params.read_parameters_file(3)


def test_read_parameters_file_filename_default_existance(self):
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file()
outfilename = 'parameters.prm'
assert os.path.isfile(outfilename)
os.remove(outfilename)


def test_read_parameters_file_filename_default(self):
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file()
outfilename = 'parameters.prm'
outfilename_expected = 'tests/test_datasets/parameters_default.prm'

self.assertTrue(filecmp.cmp(outfilename, outfilename_expected))
os.remove(outfilename)


def test_write_parameters_file_failing_filename_type(self):
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
with self.assertRaises(TypeError):
params.write_parameters_file(5)


def test_write_parameters_file_filename_default_existance(self):
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.write_parameters_file()
outfilename = 'parameters.prm'
assert os.path.isfile(outfilename)
os.remove(outfilename)


def test_write_parameters_file_filename_default(self):
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.write_parameters_file()
outfilename = 'parameters.prm'
outfilename_expected = 'tests/test_datasets/parameters_default.prm'

self.assertTrue(filecmp.cmp(outfilename, outfilename_expected))
os.remove(outfilename)


def test_write_parameters_file(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.read_parameters_file('tests/test_datasets/parameters_sphere.prm')

outfilename = 'tests/test_datasets/parameters_sphere_out.prm'
Expand All @@ -276,6 +318,6 @@ def test_write_parameters_file(self):


def test_print_info(self):
params = ffdp.FFDParameters([2, 1, 1])
params = ffdp.FFDParameters(n_control_points=[2, 1, 1])
params.print_info()