def test_vmf_rvs(): mu, kappa = random_pars() n_pts = int(1e4) tolerance = 0.1 #... acceptable angular deviation between set mean and sample mean P_i = vmf_rvs(mu, kappa, n_pts) sample_mean = mean_dir(P_i) angle_between = np.arccos(np.dot(mu, sample_mean)) assert(angle_between < tolerance)
def test_estimate_kappa(): mus = [[0., 0., 1.],[0., 1., 0.], [1., 0., 0.]] kappas = [1.,] for mu, kappa in zip(mus, kappas): n_pts = int(1e4) tolerance = 0.1 # acceptable deviation between set kappa (hopefully), # and estimated kappa. # Could really do with a way to define a # set of points with an established kappa. P_i = vmf_rvs(mu, kappa, n_pts) khat = estimate_kappa(P_i, mu=mu) diff = np.abs(khat - kappa) assert(diff < tolerance)