Example #1
0
 def testRADec(self):
     # We won't compare Vmag, because this also needs information on trailing losses.
     times = self.jpl['mjdUTC'].unique()
     deltaRA = np.zeros(len(times), float)
     deltaDec = np.zeros(len(times), float)
     for i, t in enumerate(times):
         # Find the JPL objIds visible at this time.
         j = self.jpl.query('mjdUTC == @t').sort_values('objId')
         # Set the ephems, using the objects seen at this time.
         suborbits = self.orbits.orbits.query(
             'objId in @j.objId').sort_values('objId')
         subOrbits = Orbits()
         subOrbits.setOrbits(suborbits)
         ephems = PyOrbEphemerides()
         ephems.setOrbits(subOrbits)
         ephs = ephems.generateEphemerides([t],
                                           timeScale='UTC',
                                           obscode=807,
                                           ephMode='N',
                                           ephType='Basic',
                                           byObject=False)
         deltaRA[i] = np.abs(ephs['ra'] - j['ra_deg'].values).max()
         deltaDec[i] = np.abs(ephs['dec'] - j['dec_deg'].values).max()
     # Convert to mas
     deltaRA *= 3600. * 1000.
     deltaDec *= 3600. * 1000.
     # Much of the time we're closer than 1mas, but there are a few which hit higher values.
     print('max JPL errors', np.max(deltaRA), np.max(deltaDec))
     print('std JPL errors', np.std(deltaRA), np.std(deltaDec))
     self.assertLess(np.max(deltaRA), 25)
     self.assertLess(np.max(deltaDec), 25)
     self.assertLess(np.std(deltaRA), 3)
     self.assertLess(np.std(deltaDec), 3)
 def setUp(self):
     self.testdir = os.path.join(getPackageDir('sims_movingObjects'),
                                 'tests/orbits_testdata')
     self.orbits = Orbits()
     self.orbits.readOrbits(os.path.join(self.testdir, 'test_orbitsQ.des'))
     self.orbitsKEP = Orbits()
     self.orbitsKEP.readOrbits(
         os.path.join(self.testdir, 'test_orbitsA.des'))
     self.ephems = PyOrbEphemerides()
Example #3
0
 def setUp(self):
     self.testdatadir = os.path.join(getPackageDir('sims_movingObjects'), 'tests/orbits_testdata')
     self.coeffFile = 'test_coeffs'
     self.residFile = 'test_resids'
     self.failedFile = 'test_failed'
     self.orbits = Orbits()
     self.orbits.readOrbits(os.path.join(self.testdatadir, 'test_orbitsNEO.s3m'), skiprows=1)
     self.pyephems = PyOrbEphemerides(os.path.join(os.getenv('OORB_DATA'), 'DE405.dat'))
     self.pyephems.setOrbits(self.orbits)
     self.tStart = self.orbits.orbits.epoch.iloc[0]
     self.interval = 15
     self.nCoeffs = 14
     self.nDecimal = 13
     self.chebyFits = ChebyFits(self.orbits, self.tStart, self.interval, ngran=64,
                                skyTolerance=2.5, nDecimal=self.nDecimal, nCoeff_position=self.nCoeffs,
                                obscode=807, timeScale='TAI')
     self.setLength = 0.5
     self.chebyFits.calcSegmentLength(length=self.setLength)
     self.chebyFits.calcSegments()
     self.chebyFits.write(self.coeffFile, self.residFile, self.failedFile, append=False)
     self.coeffKeys = ['objId', 'tStart', 'tEnd', 'ra', 'dec', 'delta', 'vmag', 'elongation']
Example #4
0
        type=str,
        default=None,
        help=
        'List of MJD times for ephemerides (if >1: in quotes, separated by spaces'
    )
    parser.set_defaults()
    args = parser.parse_args()

    # Read orbits.
    orbits = Orbits()
    orbits.readOrbits(args.orbitFile)
    print('Read %d orbits, first one with epoch of %f.' %
          (len(orbits), orbits.orbits.epoch.iloc[0]))

    # Set up ephemeris generation.
    pyephems = PyOrbEphemerides()

    print(pyephems.ephfile)
    # set observatory code
    obscode = args.obsCode

    # Set up dates to predict ephemerides.
    if args.ephTimes is not None:
        times = np.array(args.ephTimes.split(), float)
        obshistids = np.arange(0, len(times))

    elif args.ephTimesFile is not None:
        times = pd.read_table(args.ephTimesFile,
                              delim_whitespace=True,
                              names=['times'])
        times = times['times'].values