From 8954f5a9fdd463b1c7173c3ac8fbe232f36b7531 Mon Sep 17 00:00:00 2001 From: Joseph Areeda Date: Mon, 18 Dec 2023 08:38:19 -0800 Subject: [PATCH] Up default maximum lookback window to 60 min. Better logging of why we did not run. --- omicron/cli/process.py | 25 +++++++++++++++---------- omicron/utils.py | 15 +++++++++++++++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/omicron/cli/process.py b/omicron/cli/process.py index 6f53865..75aaa4f 100644 --- a/omicron/cli/process.py +++ b/omicron/cli/process.py @@ -60,7 +60,7 @@ """ import time -from omicron.utils import gps_to_hr +from omicron.utils import gps_to_hr, deltat_to_hr prog_start = time.time() @@ -276,7 +276,7 @@ def create_parser(): help='maximum number of channels to process in a single ' 'condor job (default: %(default)s)', ) - procg.add_argument('--max-online-lookback', type=int, default=40 * 60, + procg.add_argument('--max-online-lookback', type=int, default=60 * 60, help='With no immediately previous run, or one that was long ago this is the max time of an ' 'online job. Default: %(default)d') # max concurrent omicron jobs @@ -733,12 +733,14 @@ def main(args=None): segfile = str(rundir / "segments.txt") keepfiles.append(segfile) max_lookback = args.max_online_lookback + now = tconvert() if newdag and online: # get limit of available data (allowing for padding) end = data.get_latest_data_gps(ifo, frametype) - padding - logger.info(f'Last available frame data: {gps_to_hr(end)}') - now = tconvert() + frame_age = deltat_to_hr(int(now - end)) + logger.info(f'Last available frame data: {gps_to_hr(end)} age: frame_age') + earliest_online = now - max_lookback try: # start from where we got to last time last_run_segment = segments.get_last_run_segment(segfile) @@ -783,8 +785,7 @@ def main(args=None): dataduration = dataend - datastart logger.info(f'Processing segment determined as: {gps_to_hr(datastart)} - {gps_to_hr(dataend)}') - dur_str = '{} {}'.format(int(dataduration / 86400) if dataduration > 86400 else '', - time.strftime('%H:%M:%S', time.gmtime(int(dataduration)))) + dur_str = deltat_to_hr(dataduration) logger.info(f"Duration = {dataduration} - {dur_str}") span = (start, end) @@ -996,10 +997,14 @@ def main(args=None): trigsegs = type(segs)(type(s)(*s) for s in segs).contract(padding) # display segments - logger.info("Final data segments selected as") - for seg in segs: - logger.info(f" {seg[0]:d} {seg[1]:d} {abs(seg):d}") - logger.info(f"Duration = {abs(segs):d} seconds") + if len(segs) == 0: + logger.info('No analyzable segments found. Exiting.') + exit(0) + else: + logger.info("Final data segments selected as") + for seg in segs: + logger.info(f" {seg[0]:d} {seg[1]:d} {abs(seg):d}") + logger.info(f"Duration = {abs(segs):d} seconds") span = type(trigsegs)([trigsegs.extent()]) diff --git a/omicron/utils.py b/omicron/utils.py index c2e7a1e..18aaaae 100644 --- a/omicron/utils.py +++ b/omicron/utils.py @@ -22,6 +22,7 @@ import os import subprocess import sys +import time from pathlib import Path from shutil import which from tempfile import gettempdir @@ -131,3 +132,17 @@ def gps_to_hr(gps): dt_str = dt.strftime('%x %X') ret = f'{int(gps)} ({dt_str})' return ret + +def deltat_to_hr(dt): + """ + Convert a time in secos to human readable + @param int dt: delta t + @return str: [] HH:MM:SS + """ + ret = f'{dt}' + if dt > 0: + day = f'{int(dt)/86400}' if dt >= 86400 else '' + time_str = time.strftime('%H:%M:%S', time.gmtime(int(dt))) + ret += ' - ' + time_str + + return ret \ No newline at end of file