diff --git a/pygem/ffd_parameters.py b/pygem/ffd_parameters.py index f8d8bec..fc07801 100644 --- a/pygem/ffd_parameters.py +++ b/pygem/ffd_parameters.py @@ -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. @@ -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) @@ -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. @@ -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') diff --git a/tests/test_datasets/parameters_default.prm b/tests/test_datasets/parameters_default.prm new file mode 100644 index 0000000..9dc51e0 --- /dev/null +++ b/tests/test_datasets/parameters_default.prm @@ -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 diff --git a/tests/test_ffd_parameters.py b/tests/test_ffd_parameters.py index 0571694..11000bb 100644 --- a/tests/test_ffd_parameters.py +++ b/tests/test_ffd_parameters.py @@ -126,97 +126,97 @@ 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)) @@ -224,47 +224,89 @@ def test_read_parameters_file_rotation_matrix(self): 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' @@ -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()