示例#1
0
def astro_darkness(sitecode, utc_date, round_ad=True):

    accurate = True
    if accurate == True:
        (ad_start, ad_end) = accurate_astro_darkness(sitecode, utc_date)
    else:
        (ad_start, ad_end) = crude_astro_darkness(sitecode, utc_date)

    if ad_start != None and ad_end != None:
        if round_ad == True:
            ad_start = round_datetime(ad_start, 10)
            ad_end = round_datetime(ad_end, 10)

    return ad_start, ad_end
示例#2
0
def call_compute_ephem(elements, dark_start, dark_end, site_code, ephem_step_size, alt_limit=0, mag_limit=99):
    '''Wrapper for compute_ephem to enable use within plan_obs (or other codes)
    by making repeated calls for datetimes from <dark_start> -> <dark_end> spaced
    by <ephem_step_size> seconds. The results are assembled into a list of tuples
    in the same format as returned by read_findorb_ephem()'''

#    print
#    formatted_elem_lines = mpc_8lineformat(elements)
#    for line in formatted_elem_lines:
#        print line

    slot_length = 0 # XXX temporary hack
    step_size_secs = 300
    if str(ephem_step_size)[-1] == 'm':
        try:
            step_size_secs = float(ephem_step_size[0:-1]) * 60
        except ValueError:
            pass
    else:
        step_size_secs = ephem_step_size
    ephem_time = round_datetime(dark_start, step_size_secs / 60, False)

    full_emp = []
    while ephem_time < dark_end:
        emp_line = compute_ephem(ephem_time, elements, site_code, dbg=False, perturb=True, display=False)
        full_emp.append(emp_line)
        ephem_time = ephem_time + timedelta(seconds=step_size_secs)

# Get subset of ephemeris when it's dark and object is up
    visible_emp = dark_and_object_up(full_emp, dark_start, dark_end, slot_length, alt_limit)
    emp = []
    for line in visible_emp:
        formatted_emp_line = format_emp_line(line, site_code)
        if 'Limits' not in formatted_emp_line and '-999' not in formatted_emp_line \
            and float(formatted_emp_line[4]) < mag_limit:
            emp.append(format_emp_line(line, site_code))

    return emp