def main(): import argparse import sys parser = argparse.ArgumentParser( description='Swift Nav derive/interpolate obs.') parser.add_argument('file', help='Specify the log file to use.') parser.add_argument('-n', '--num_records', nargs=1, default=[None], help='Number of GPS observation records to process.') parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output.') gps_time_tabs = [ 'rover_iar_state', 'rover_logs', 'rover_tracking', 'rover_acq', 'rover_thread_state', 'rover_uart_state', 'rover_ephemerides', 'base_ephemerides' ] # TODO (Buro): Add in handling for explicit overwrites. Currently, # this will fill in and overwrite (specifically sdiffs, etc.) that # you might have. # # parser.add_argument('-o', '--output', # nargs=1, # default=[None], # help='Test results output filename') # parser.add_argument('-w', '--overwrite', # action='store_true' # help='Overwrite .') args = parser.parse_args() log_datafile = args.file num_records = args.num_records[0] verbose = args.verbose with pd.HDFStore(log_datafile) as store: try: if verbose: print "Verbose output specified..." print "Loading table %s ." % str(store) print "Interpolating times for tables %s." % ', '.join( gps_time_tabs) if not store.rover_spp.empty: get_gps_time_col(store, gps_time_tabs, verbose=verbose) reindex_tables(store, ['rover_iar_state', 'rover_logs'], verbose=verbose) else: raise Exception( "No single-point solutions available for interpolation.") except (KeyboardInterrupt, SystemExit): print "Exiting!" sys.exit() finally: store.close()
def test_gps_time_col(): filename = "data/serial-link-20150429-163230.log.json.hdf5" assert os.path.isfile(filename) with pd.HDFStore(filename) as store: tables = ['rover_iar_state', 'rover_logs', 'rover_tracking'] t.get_gps_time_col(store, tables) gpst = store.rover_iar_state.T.approx_gps_time assert gpst.shape == (1487,) assert pd.DatetimeIndex(gpst).is_monotonic_increasing gpst = store.rover_logs.T.approx_gps_time assert gpst.shape == (2457,) assert pd.DatetimeIndex(gpst).is_monotonic_increasing gpst = store.rover_tracking[:, 'approx_gps_time', :] assert gpst.shape == (32, 7248)
def test_gps_time_col(): filename = "data/serial-link-20150429-163230.log.json.hdf5" assert os.path.isfile(filename) with pd.HDFStore(filename) as store: tables = ['rover_iar_state', 'rover_logs', 'rover_tracking'] t.get_gps_time_col(store, tables) gpst = store.rover_iar_state.T.approx_gps_time assert gpst.shape == (1487, ) assert pd.DatetimeIndex(gpst).is_monotonic_increasing gpst = store.rover_logs.T.approx_gps_time assert gpst.shape == (2457, ) assert pd.DatetimeIndex(gpst).is_monotonic_increasing gpst = store.rover_tracking[:, 'approx_gps_time', :] assert gpst.shape == (32, 7248)
def main(): import argparse import sys parser = argparse.ArgumentParser(description='Swift Nav derive/interpolate obs.') parser.add_argument('file', help='Specify the log file to use.') parser.add_argument('-n', '--num_records', nargs=1, default=[None], help='Number of GPS observation records to process.') parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output.') gps_time_tabs = ['rover_iar_state', 'rover_logs', 'rover_tracking', 'rover_acq', 'rover_thread_state', 'rover_uart_state', 'rover_ephemerides', 'base_ephemerides'] # TODO (Buro): Add in handling for explicit overwrites. Currently, # this will fill in and overwrite (specifically sdiffs, etc.) that # you might have. # # parser.add_argument('-o', '--output', # nargs=1, # default=[None], # help='Test results output filename') # parser.add_argument('-w', '--overwrite', # action='store_true' # help='Overwrite .') args = parser.parse_args() log_datafile = args.file num_records = args.num_records[0] verbose = args.verbose with pd.HDFStore(log_datafile) as store: try: if verbose: print "Verbose output specified..." print "Loading table %s ." % str(store) print "Interpolating times for tables %s." % ', '.join(gps_time_tabs) if not store.rover_spp.empty: get_gps_time_col(store, gps_time_tabs, verbose=verbose) reindex_tables(store, ['rover_iar_state', 'rover_logs'], verbose=verbose) else: raise Exception("No single-point solutions available for interpolation.") except (KeyboardInterrupt, SystemExit): print "Exiting!" sys.exit() finally: store.close()