Ejemplo n.º 1
0
from itertools import count
from ephem import hours, degrees, Equatorial, Ecliptic
from Orbit import Orbit
from Catalog import Catalog, DateTime, TimeDelta, Point
from DECamField import DECamField
from DECamExposure import DECamExposure
from ccdBounds import *
from MPCRecord import MPCRecord
import easyaccess as ea

sidereal_year = 365.256363
sidereal_rate = ephem.degrees(2*np.pi/sidereal_year)


fields = Catalog('fields.csv', name=str, centerra=float, centerdec=float, opposition=float, visitspath=str, orderedby='name')
fields.add_property('center', lambda pt: Equatorial(hours(pt.centerra), degrees(pt.centerdec)))
#fields.add_property('visits', lambda pt: Catalog(pt.visitspath, nite=int, date=float, dlon=float, dlat=float, vlon=float, vlat=float))
fields.refactor('opposition', DateTime)
#for field in fields: field.visits.refactor('date', DateTime)

def _exp_contains(self, ra1, dec1): return DECamField(self.ra, self.dec).contains(ra1, dec1)
def _exp_ellipse(self): return DECamField(self.ra, self.dec).ellipse()

exposures = Catalog('exposures.csv', expnum=int, date=float, ra=float, dec=float, exptime=float, nite=int, band=str, tag=str, object=str,
    fwhm_asec=float, t_eff=float, ellipticity=float, skybrightness=float, accepted=str, analyst=str, analyst_comment=str, lastchanged_time=str)
exposures.refactor('date', lambda date: ephem.date(date))
exposures.refactor('ra', lambda ra: hours(ra))
exposures.refactor('dec', lambda dec: degrees(dec))
exposures.add_function('contains', _exp_contains)
exposures.add_function('ellipse', _exp_contains)
exposures_by_nite = exposures.groupby(lambda pt: pt.nite)