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
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