def setUp(self): star1 = Star(0, 0, sph=(0, np.pi / 2)) self.scene1 = Scene([star1]) star1 = Star(1, 0, sph=(0, 0)) star2 = Star(2, 0, sph=(0, np.deg2rad(5))) star3 = Star(3, 0, sph=(2 * np.pi - np.deg2rad(5), 0)) self.scene2 = Scene([star1, star2, star3])
def test_find_matching_triplets_none(self): ms1 = Star(3,0,sph=(np.pi,0)) ms2 = Star(4,0,sph=(4*np.pi/3,0)) ms3 = Star(5,0,sph=(np.pi,np.pi/6+0.001)) full_scene = Scene([ms1,ms2,ms3]) distances = full_scene.get_all_angular_distances() pyramid = Pyramid(self.scene,full_scene) with self.assertRaises(Exception, msg='No suitable stars found.'): matches = pyramid.find_matching_triplets(self.scene,distances)
def test_get_all_angular_distances_sorted(self): star1 = Star(1,1,sph=(0,np.pi/4)) star2 = Star(2,1,sph=(0,np.pi/2)) star3 = Star(3,1,sph=(0,np.pi)) distance1 = AngularDistance(star1, star2) distance2 = AngularDistance(star1, star3) distance3 = AngularDistance(star2, star3) scene = Scene([star1,star2,star3]) distances = scene.get_all_angular_distances() self.assertEquals(distance1,distances.distances[0]) self.assertEquals(distance3,distances.distances[1]) self.assertEquals(distance2,distances.distances[2])
def test_get_all_angular_distances_max(self): star1 = self.star1 star2 = self.star2 star3 = self.star3 distance1 = AngularDistance(star1, star2) distance2 = AngularDistance(star1, star3) distance3 = AngularDistance(star2, star3) scene = Scene([star1,star2,star3]) max_distance = 2 distances = scene.get_all_angular_distances(max_distance) self.assertIn(distance1, distances.distances) self.assertIn(distance2, distances.distances)
def test_get_triplets(self): s1 = self.star1 s2 = self.star2 s3 = self.star3 s4 = self.star4 stars = [s1,s2,s3,s4] scene = Scene(stars) left_out = [] for small_scene in scene.get_triplets(): self.assertEquals(len(small_scene.stars), 3) left_out += [s for s in stars if s not in small_scene.stars] for star in left_out: self.assertIn(star, stars)
def test_find_matching_triplets(self): ms1 = Star(3,0,sph=(np.pi,0)) ms2 = Star(4,0,sph=(4*np.pi/3,0)) ms3 = Star(5,0,sph=(np.pi,np.pi/6)) ms4 = Star(6,0,sph=(5*np.pi/6,0)) ms5 = Star(7,0,sph=(np.pi,np.pi/2)) ms6 = Star(8,0,sph=(np.pi/2,np.pi/6)) full_scene = Scene([ms1,ms2,ms3,ms4,ms5,ms6]) distances = full_scene.get_all_angular_distances() pyramid = Pyramid(self.scene,full_scene) matches = pyramid.find_matching_triplets(self.scene,distances) self.assertEquals(len(matches), 1) self.assertIn(ms1,matches[0].stars) self.assertIn(ms2,matches[0].stars) self.assertIn(ms3,matches[0].stars)
def setUp(self): #Degrees to radians d2r = np.pi/180 self.d2r = d2r self.star1 = Star(1,3.1,sph=(45*d2r,45*d2r)) self.star2 = Star(2,4.5,sph=(90*d2r,-45*d2r)) self.star3 = Star(3,1.3,sph=(180*d2r,60*d2r)) self.star4 = Star(4,2.4,sph=(225*d2r,20*d2r)) self.star5 = Star(5,6.1,sph=(315*d2r,-30*d2r)) stars = [self.star1,self.star2,self.star3,self.star4,self.star5] self.scene = Scene(stars)
def test_find_matching_triplets_many(self): ms1 = Star(3,0,sph=(np.pi,0)) ms2 = Star(4,0,sph=(4*np.pi/3,0)) ms3 = Star(5,0,sph=(np.pi,np.pi/6)) ms4 = Star(6,0,sph=(2*np.pi/3,0)) full_scene = Scene([ms1,ms2,ms3,ms4]) distances = full_scene.get_all_angular_distances() pyramid = Pyramid(self.scene,full_scene) matches = pyramid.find_matching_triplets(self.scene,distances) self.assertEquals(len(matches), 2) self.assertIn(ms1,matches[0].stars) self.assertIn(ms3,matches[0].stars) self.assertIn(ms1,matches[1].stars) self.assertIn(ms3,matches[1].stars) odd1 = [s for s in matches[0].stars if s not in matches[1].stars] odd2 = [s for s in matches[1].stars if s not in matches[0].stars] self.assertEquals(len(odd1+odd2),2) self.assertIn(ms2,odd1+odd2) self.assertIn(ms4,odd1+odd2)
def setUp(self): s1 = Star(0,0,sph=(0,0)) s2 = Star(1,0,sph=(np.pi/3,0)) s3 = Star(2,0,sph=(0,np.pi/6)) self.scene = Scene([s1,s2,s3])