def test_speed_matchVisitComputeDistance(n=5000): # Explicitly convert n to int to ensure consistent behavior in indexing and numpy n = int(n) visits = np.arange(2*n) np.random.shuffle(visits) visit_obj1 = visits[:n] np.random.shuffle(visits) visit_obj2 = visits[:n] mu, sigma = 0, 3e-4 # mean 0, ~1 arcsec width mean_ra = 10 # degrees mean_dec = 20 # degrees ra_obj1 = mean_ra + np.random.normal(mu, sigma, n) * np.cos(np.deg2rad(mean_dec)) ra_obj2 = mean_ra + np.random.normal(mu, sigma, n) * np.cos(np.deg2rad(mean_dec)) dec_obj1 = mean_dec + np.random.normal(mu, sigma, n) dec_obj2 = mean_dec + np.random.normal(mu, sigma, n) matchVisitComputeDistance(visit_obj1, ra_obj1, dec_obj1, visit_obj2, ra_obj2, dec_obj2)
def test_missing_matchVisitComputeDistance(): visit_obj1 = [1, 2, 3, 4] visit_obj2 = [4, 1] ra_obj1 = np.deg2rad(np.array([10.0010, 10.0005, 10.0000, 10.0005])) ra_obj2 = np.deg2rad(np.array([10.0006, 10.0008])) dec_obj1 = np.deg2rad(np.array([20.001, 20.006, 20.002, 20.004])) dec_obj2 = np.deg2rad(np.array([20.003, 20.010])) exp = [1.75301e-05, 0.0001571138] obs = matchVisitComputeDistance(visit_obj1, ra_obj1, dec_obj1, visit_obj2, ra_obj2, dec_obj2) # matchVisitComputeDistance doesn't preserve order # Sort to compare exp = np.sort(exp) obs = np.sort(obs) assert_allclose(exp, obs, atol=1e-7) # 1e-7 rad == 5.73e-6 deg == 0.00036 arcsec