コード例 #1
0
 def test_get_ephem(self):
     """Test memory and disk caching"""
     # Create and save to memory only
     id1 = id(get_ephem(write_cache=False))
     # Load from memory
     id2 = id(get_ephem())
     self.assertEqual(id1, id2)
     # Save to disk.
     id3 = id(get_ephem())
     self.assertEqual(id1, id3)
     # Clear memory cache.
     _ephem = None
     # Read from disk.
     id4 = id(get_ephem())
     self.assertEqual(id1, id4)
コード例 #2
0
ファイル: test_ephem.py プロジェクト: schlafly/desisurvey
    def test_ephem_table(self):
        """Test basic table structure"""
        ephem = get_ephem()
        self.assertEqual(ephem.num_nights,
                         (ephem.stop_date - ephem.start_date).days)

        etable = ephem._table
        self.assertEqual(len(etable), 31)
        self.assertTrue(np.all(etable['dusk'] > etable['noon']))
        self.assertTrue(np.all(etable['dawn'] > etable['dusk']))
        self.assertTrue(np.all(etable['dusk'] > etable['brightdusk']))
        self.assertTrue(np.all(etable['dawn'] < etable['brightdawn']))
        self.assertGreater(np.max(etable['moon_illum_frac']), 0.99)
        self.assertLessEqual(np.max(etable['moon_illum_frac']), 1.0)
        self.assertLess(np.min(etable['moon_illum_frac']), 0.01)
        self.assertGreaterEqual(np.min(etable['moon_illum_frac']), 0.00)
        self.assertTrue(np.all(etable['moonrise'] < etable['moonset']))

        hrs1 = ephem.get_program_hours(ephem.start_date,
                                       ephem.stop_date,
                                       include_twilight=True).sum(axis=1)
        hrs2 = ephem.get_program_hours(ephem.start_date,
                                       ephem.stop_date,
                                       include_twilight=False).sum(axis=1)
        hrs3 = ephem.get_program_hours(ephem.start_date,
                                       ephem.stop_date,
                                       include_twilight=True,
                                       include_full_moon=True).sum(axis=1)
        self.assertEqual(hrs1[0], hrs2[0])
        self.assertEqual(hrs1[1], hrs2[1])
        self.assertGreater(hrs1[2], hrs2[2])
        self.assertLess(hrs1[0], hrs3[0])
        self.assertEqual(hrs1[1], hrs3[1])
        self.assertLess(hrs1[2], hrs3[2])
コード例 #3
0
 def test_moon_phase(self):
     """Verfify moon illuminated fraction for first week of 2020"""
     ephem = get_ephem()
     for i, jd in enumerate(self.table['jd']):
         t = Time(jd, format='jd')
         frac = ephem.get_moon_illuminated_fraction(t.mjd)
         truth = 1e-2 * self.table['frac'][i]
         self.assertTrue(abs(frac - truth) < 0.01)
コード例 #4
0
 def test_moon_radec(self):
     """Verify moon (ra,dec) for first week of 2020"""
     ephem = get_ephem()
     for i, jd in enumerate(self.table['jd']):
         t = Time(jd, format='jd')
         night = ephem.get_night(t)
         f_moon = get_object_interpolator(night, 'moon', altaz=False)
         dec, ra = f_moon(t.mjd)
         truth = ICRS(ra=self.table['ra'][i] * u.deg,
                      dec=self.table['dec'][i] * u.deg)
         calc = ICRS(ra=ra * u.deg, dec=dec * u.deg)
         sep = truth.separation(calc)
         self.assertTrue(abs(sep.to(u.deg).value) < 0.3)
コード例 #5
0
 def test_moon_altaz(self):
     """Verify moon (alt,az) for first week of 2020"""
     ephem = get_ephem()
     location = get_location()
     for i, jd in enumerate(self.table['jd']):
         t = Time(jd, format='jd')
         night = ephem.get_night(t)
         f_moon = get_object_interpolator(night, 'moon', altaz=True)
         alt, az = f_moon(t.mjd)
         truth = AltAz(alt=self.table['alt'][i] * u.deg,
                       az=self.table['az'][i] * u.deg,
                       obstime=t,
                       location=location,
                       pressure=0)
         calc = AltAz(alt=alt * u.deg,
                      az=az * u.deg,
                      obstime=t,
                      location=location,
                      pressure=0)
         sep = truth.separation(calc)
         self.assertTrue(abs(sep.to(u.deg).value) < 0.3)
コード例 #6
0
 def test_lst_hours(self):
     """Test consistent LST and hourly schedules"""
     ephem = get_ephem()
     gen = np.random.RandomState(123)
     weather = gen.uniform(size=ephem.num_nights)
     for twilight in True, False:
         for full_moon in True, False:
             for monsoon in True, False:
                 lst_hist, lst_bins = ephem.get_available_lst(
                     ephem.start_date,
                     ephem.stop_date,
                     weather=weather,
                     include_monsoon=monsoon,
                     include_full_moon=full_moon,
                     include_twilight=twilight)
                 hrs = ephem.get_program_hours(ephem.start_date,
                                               ephem.stop_date,
                                               include_monsoon=monsoon,
                                               include_full_moon=full_moon,
                                               include_twilight=twilight)
                 hrs_sum = (hrs * weather).sum(axis=1)
                 lst_sum = lst_hist.sum(
                     axis=1) * 0.99726956583  # sidereal / solar hours
                 self.assertTrue(np.allclose(hrs_sum, lst_sum))