def test_atomic_rotate(self): """Test random rotation for atomic grid.""" rad_pts = np.array([0.1, 0.5, 1]) rad_wts = np.array([0.3, 0.4, 0.3]) rad_grid = OneDGrid(rad_pts, rad_wts) degs = [3, 5, 7] atgrid = AtomGrid(rad_grid, degrees=degs) # make sure True and 1 is not the same result atgrid1 = AtomGrid(rad_grid, degrees=degs, rotate=True) atgrid2 = AtomGrid(rad_grid, degrees=degs, rotate=1) # test diff points, same weights assert not np.allclose(atgrid.points, atgrid1.points) assert not np.allclose(atgrid.points, atgrid2.points) assert not np.allclose(atgrid1.points, atgrid2.points) assert_allclose(atgrid.weights, atgrid1.weights) assert_allclose(atgrid.weights, atgrid2.weights) assert_allclose(atgrid1.weights, atgrid2.weights) # test same integral value = np.prod(atgrid.points**2, axis=-1) value1 = np.prod(atgrid.points**2, axis=-1) value2 = np.prod(atgrid.points**2, axis=-1) res = atgrid.integrate(value) res1 = atgrid1.integrate(value1) res2 = atgrid2.integrate(value2) assert_almost_equal(res, res1) assert_almost_equal(res1, res2) # test rotated shells for i in range(len(degs)): non_rot_shell = atgrid.get_shell_grid(i).points rot_shell = atgrid2.get_shell_grid(i).points rot_mt = R.random(random_state=1 + i).as_matrix() assert_allclose(rot_shell, non_rot_shell @ rot_mt)
def test_get_shell_grid(self): """Test angular grid get from get_shell_grid function.""" rad_pts = np.array([0.1, 0.5, 1]) rad_wts = np.array([0.3, 0.4, 0.3]) rad_grid = OneDGrid(rad_pts, rad_wts) degs = [3, 5, 7] atgrid = AtomGrid(rad_grid, degrees=degs) assert atgrid.n_shells == 3 # grep shell with r^2 for i in range(atgrid.n_shells): sh_grid = atgrid.get_shell_grid(i) assert isinstance(sh_grid, AngularGrid) ref_grid = AngularGrid(degree=degs[i]) assert np.allclose(sh_grid.points, ref_grid.points * rad_pts[i]) assert np.allclose(sh_grid.weights, ref_grid.weights * rad_wts[i] * rad_pts[i]**2) # grep shell without r^2 for i in range(atgrid.n_shells): sh_grid = atgrid.get_shell_grid(i, r_sq=False) assert isinstance(sh_grid, AngularGrid) ref_grid = AngularGrid(degree=degs[i]) assert np.allclose(sh_grid.points, ref_grid.points * rad_pts[i]) assert np.allclose(sh_grid.weights, ref_grid.weights * rad_wts[i])