Exemplo n.º 1
0
 def calcOrbit(self):
     #converts every coordinate into correct units
     #time0 = time.time()
     mag = max([x.mag for x in self.dets])
     errs = 0.1
     if mag <= 21:
         errs = 0.1
     else:
         errs = 0.1 + (mag - 21.0) / 10.0
     ralist = [ephem.hours(np.deg2rad(det.ra)) for det in self.dets]
     #time1 = time.time()
     declist = [ephem.degrees(np.deg2rad(det.dec)) for det in self.dets]
     #time2 = time.time()
     datelist = [
         ephem.date((Time(det.mjd, format='mjd')).datetime)
         for det in self.dets
     ]
     #time3 = time.time()
     orbit = Orbit(dates=datelist,
                   ra=ralist,
                   dec=declist,
                   obscode=np.ones(len(self.dets), dtype=int) * 807,
                   err=errs)
     self.orbit = orbit
     #time4 = time.time()
     #print('time1: ' + str(time1-time0))
     #print('time2: ' + str(time2-time1))
     # print('time3: ' + str(time3-time2))
     #print('time4: ' + str(time4-time3))
     orbit.get_elements()
     self.chiSq = orbit.chisq
     self.elements, self.errs = orbit.get_elements()
     return self.elements, self.errs
Exemplo n.º 2
0
class DESKBO(object):
    def __init__(self, obsfile, name=None, field=None, pltcolor='k'):
#        print 'Reading file ', obsfile
        self.name=name
        self.field=field
        self.obsfile=obsfile
        self.observations = Catalog(self.obsfile, date=DateTime, ra=hours, dec=degrees, expnum=int, exptime=float, band=str, ccdnum=int, mag=float, \
                                    ml_score=float, snobjid=int, orderedby='date')
        self.observations.add_constant('obscode', 807)
        self.observations.add_constant('err', 0.15)
        self.orbit = Orbit(self.observations)   # Warning: somehow orbit.predict_pos() does not work from here.
        self.body = self.orbit.ellipticalBody(name=self.name)
        self.pltcolor=pltcolor
        self.elements, self.errs = self.orbit.get_elements()
        obsdates = sorted([o.date for o in self.observations])
        self.body.compute(obsdates[0])
        self.discoveryDistance = self.body.sun_distance
        self.size = KBOsize(self)
        self.epoch = self.orbit.jd0
        self.mu = (self.epoch-self.elements['top'])*np.sqrt(combinedMass/self.elements['a']**3)*DAY*180/np.pi
        if self.mu<0: self.mu += 360.0
        
    def predict(self, d, obscode=807):
        # d is an ephem.Date object
        self.body.compute(d)
        pos = {'ra':self.body.a_ra, 'dec':self.body.a_dec}
        return pos
Exemplo n.º 3
0
 def setOrbit(self):
     mag = min([x.mag for x in self.dets])
     #time0 = time.time()
     errs = 0.1
     if mag <= 21:
         errs = 0.15
     else:
         errs = 0.15 + (mag - 21.0) / 40.0
     #time1 = time.time()
     ralist = [ephem.hours(np.deg2rad(det.ra)) for det in self.dets]
     #print('ra:' + str(time.time()-time1))
     #time2 = time.time()
     declist = [ephem.degrees(np.deg2rad(det.dec)) for det in self.dets]
     #print('dec:' + str(time.time()-time2))
     datelist = [
         ephem.date((Time(det.mjd, format='mjd')).datetime)
         for det in self.dets
     ]
     #time3 = time.time()
     #print('date:' + str(time3-time2))
     #time2 = time.time()i
     orbit = Orbit(dates=datelist,
                   ra=ralist,
                   dec=declist,
                   obscode=np.ones(len(self.dets), dtype=int) * 807,
                   err=errs)
     self.orbit = orbit
     self.chisq = orbit.chisq
     #time3 = time.time()
     self.elements, self.errs = orbit.get_elements()
     #time4 = time.time()
     #print('time0:' + str(time1-time0))
     #print('dateTime:' + str(time2-time1))
     #print('orbitTime:' + str(time3-time2))
     #print('getTime:' + str(time4-time3))
     return orbit