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()
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']
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