def test__cos_and_sin_from_x(self): elliptical_profile = geometry_profiles.EllProfile( centre=(1.0, 1.0), elliptical_comps=(0.0, 0.0)) cos_phi, sin_phi = elliptical_profile.cos_and_sin_to_x_axis() assert cos_phi == 1.0 assert sin_phi == 0.0 elliptical_profile = geometry_profiles.EllProfile.from_axis_ratio_and_phi( centre=(1, 1), axis_ratio=0.1, angle=45.0) cos_phi, sin_phi = elliptical_profile.cos_and_sin_to_x_axis() assert cos_phi == pytest.approx(0.707, 1e-3) assert sin_phi == pytest.approx(0.707, 1e-3) elliptical_profile = geometry_profiles.EllProfile.from_axis_ratio_and_phi( centre=(1, 1), axis_ratio=0.1, angle=60.0) cos_phi, sin_phi = elliptical_profile.cos_and_sin_to_x_axis() assert cos_phi == pytest.approx(0.5, 1e-3) assert sin_phi == pytest.approx(0.866, 1e-3) elliptical_profile = geometry_profiles.EllProfile.from_axis_ratio_and_phi( centre=(1, 1), axis_ratio=0.1, angle=225.0) cos_phi, sin_phi = elliptical_profile.cos_and_sin_to_x_axis() assert cos_phi == pytest.approx(0.707, 1e-3) assert sin_phi == pytest.approx(0.707, 1e-3)
def test__grid_to_eccentric_radii(self, ): elliptical_profile = geometry_profiles.EllProfile( elliptical_comps=(0.0, 0.0)) eccentric_radius = elliptical_profile.grid_to_eccentric_radii( grid=np.array([[1.0, 1.0]])) assert eccentric_radius == pytest.approx(2.0**0.5, 1e-3) eccentric_radius = elliptical_profile.grid_to_eccentric_radii( grid=np.array([[1.0, 1.0]])) assert eccentric_radius == pytest.approx(2.0**0.5, 1e-3) # eccentric_radius = sqrt(axis_ratio) * sqrt( x**2 + (y**2 / axis_ratio**2)) # eccentric_radius = sqrt(0.5) * sqrt(1.0**2 + (1.0**2 / 0.5**2)) # eccentric radius = sqrt(0.5) * sqrt( 5 ) = 1.58113 elliptical_profile = geometry_profiles.EllProfile.from_axis_ratio_and_phi( axis_ratio=0.5, angle=0.0) eccentric_radius = elliptical_profile.grid_to_eccentric_radii( np.array([[1.0, 1.0]])) assert eccentric_radius == pytest.approx(1.58113, 1e-3)
def test__transform_grids_with_mapped_centres(self, ): elliptical_profile1 = geometry_profiles.EllProfile( elliptical_comps=(0.0, 0.0), centre=(0, 0)) grid1 = elliptical_profile1.transform_grid_to_reference_frame( grid=np.array([[1.0, 1.0]])) elliptical_profile2 = geometry_profiles.EllProfile( elliptical_comps=(0.0, 0.0), centre=(-1, -1)) grid2 = elliptical_profile2.transform_grid_to_reference_frame( grid=np.array([[0.0, 0.0]])) assert (grid1 == grid2).all() elliptical_profile1 = geometry_profiles.EllProfile.from_axis_ratio_and_phi( axis_ratio=0.1, angle=55.0, centre=(0, 0)) grid1 = elliptical_profile1.transform_grid_to_reference_frame( grid=np.array([[1.0, 1.0]])) elliptical_profile2 = geometry_profiles.EllProfile.from_axis_ratio_and_phi( axis_ratio=0.1, angle=55.0, centre=(-1, -1)) grid2 = elliptical_profile2.transform_grid_to_reference_frame( grid=np.array([[0.0, 0.0]])) assert (grid1 == grid2).all() elliptical_profile1 = geometry_profiles.EllProfile.from_axis_ratio_and_phi( axis_ratio=0.1, angle=55.0, centre=(1, 1)) grid1 = elliptical_profile1.transform_grid_to_reference_frame( grid=np.array([[1.0, 1.0]])) elliptical_profile2 = geometry_profiles.EllProfile.from_axis_ratio_and_phi( axis_ratio=0.1, angle=55.0, centre=(-1, -1)) grid2 = elliptical_profile2.transform_grid_to_reference_frame( grid=np.array([[-1.0, -1.0]])) assert (grid1 == grid2).all()
def test__transform_grid_to_and_from_reference_frame(self): elliptical_profile = geometry_profiles.EllProfile( elliptical_comps=(0.0, 0.0)) transformed_grid = elliptical_profile.transform_grid_to_reference_frame( grid=np.array([[1.0, 1.0]])) assert transformed_grid == pytest.approx(np.array([[1.0, 1.0]]), 1e-3) transformed_back_grid = elliptical_profile.transform_grid_from_reference_frame( transformed_grid) assert transformed_back_grid == pytest.approx(np.array([[1.0, 1.0]]), 1e-3) transformed_back_grid = elliptical_profile.transform_grid_from_reference_frame( transformed_grid) assert transformed_back_grid == pytest.approx(np.array([[1.0, 1.0]]), 1e-3) elliptical_profile = geometry_profiles.EllProfile.from_axis_ratio_and_phi( axis_ratio=0.1, angle=90.0, centre=(2.0, 3.0)) transformed_grid = elliptical_profile.transform_grid_to_reference_frame( grid=np.array([[3.0, 4.0]])) assert transformed_grid == pytest.approx(np.array([[-1.0, 1.0]]), 1e-3) transformed_back_grid = elliptical_profile.transform_grid_from_reference_frame( transformed_grid) assert transformed_back_grid == pytest.approx(np.array([[3.0, 4.0]]), 1e-3) elliptical_profile = geometry_profiles.EllProfile.from_axis_ratio_and_phi( axis_ratio=0.1, angle=45.0) grid_original = np.array([[5.2221, 2.6565]]) grid_elliptical = elliptical_profile.transform_grid_to_reference_frame( grid_original) transformed_grid = elliptical_profile.transform_grid_from_reference_frame( grid_elliptical) assert transformed_grid == pytest.approx(grid_original, 1e-5)