#! /usr/bin/env python
"""
Output LST, Julian date, and Sun position at the provided location
"""

import aipy as a, numpy as n, sys, optparse, ephem

o = optparse.OptionParser()
o.set_usage('lst [options] jd1 jd2 ...')
o.set_description(__doc__)
a.scripting.add_standard_options(o, cal=True, src=True)
opts, args = o.parse_args(sys.argv[1:])

if not opts.src is None:
    srclist,cutoff,catalogs = a.scripting.parse_srcs(opts.src, opts.cat)
else: srclist,cutoff,catalogs = [], None, []
cat = a.cal.get_catalog(opts.cal, srclist, cutoff, catalogs)
aa = a.cal.get_aa(opts.cal, n.array([.15]))
sun = ephem.Sun()
moon = ephem.Moon()
if len(args) == 0: args = [a.phs.ephem2juldate(ephem.now())]
for jd in map(float, args):
    aa.set_jultime(jd)
    sun.compute(aa)
    moon.compute(aa)
    print 'LST:', aa.sidereal_time(),
    print 'LST radians:', float( aa.sidereal_time()),
    print '     Julian Date:', jd,
    print '     Day:', aa.date
    print 'Sun is at (RA, DEC):', str((str(sun.ra), str(sun.dec)))
    print 'Moon is at (RA, DEC):', str((str(moon.ra), str(moon.dec)))
    cat.compute(aa)
    for src in cat:
        print src, '\tALT=%11s' % cat[src].alt, 
        print '\tNEXT TRANSIT=%9.5f' % a.phs.ephem2juldate(aa.next_transit(cat[src]))
    print '-' * 70

