def datetimerange_inversion(): value = DateTimeRange( TEST_END_DATETIME, TEST_START_DATETIME) value.start_time_format = ISO_TIME_FORMAT value.end_time_format = ISO_TIME_FORMAT return value
def datetimerange_inversion(): value = DateTimeRange(TEST_END_DATETIME, TEST_START_DATETIME) value.start_time_format = ISO_TIME_FORMAT value.end_time_format = ISO_TIME_FORMAT return value
def intersect_arcs(df_rs: pd.DataFrame, logger: logging.Logger) -> Tuple[int, pd.DataFrame]: """ intersect_arcs determines which observation intervals belong to which TLE interval """ cFuncName = colored(os.path.basename(__file__), 'yellow') + ' - ' + colored( sys._getframe().f_code.co_name, 'green') # number of arcs according to observations nr_arcs_obs = [] for prn in df_rs.index: # find maximum number of arcs in observations nr_arcs_obs.append(longest(df_rs.loc[prn]['obs_arc_count'])) logger.info( '{func:s}: number of observed arcs per prn: {arcs!s}'.format( arcs=nr_arcs_obs, func=cFuncName)) # find number of ars per PRN from TLE nr_arcs_tle = [] for prn in df_rs.index: # find maximum number of arcs in observations nr_arcs_tle.append(longest(df_rs.loc[prn]['tle_arc_count'])) nr_arcs = max(nr_arcs_tle) logger.info( '{func:s}: number of predicted arcs per prn: {arcs!s}'.format( arcs=nr_arcs_tle, func=cFuncName)) # make the arcs fit together by comparing the start / end dates between observed and TLEs df_rs['intersect'] = pd.Series(dtype=object) J2000 = datetime(2000, 1, 1) for i_prn, prn in enumerate(df_rs.index): logger.info('{func:s}: PRN {prn:s}'.format(prn=prn, func=cFuncName)) prn_intersect = [np.nan] * nr_arcs_obs[i_prn] for i_tle, (tle_rise, tle_set) in enumerate( zip(df_rs.loc[prn]['tle_rise'], df_rs.loc[prn]['tle_set'])): tle_range = DateTimeRange(datetime.combine(J2000, tle_rise), datetime.combine(J2000, tle_set)) tle_range.start_time_format = '%H:%M:%S' tle_range.end_time_format = '%H:%M:%S' logger.info('{func:s}: tle_range = {tler!s}'.format( tler=tle_range, func=cFuncName)) for i_obs, (obs_start, obs_end) in enumerate( zip(df_rs.loc[prn]['obs_rise'], df_rs.loc[prn]['obs_set'])): obs_range = DateTimeRange(datetime.combine(J2000, obs_start), datetime.combine(J2000, obs_end)) obs_range.start_time_format = '%H:%M:%S' obs_range.end_time_format = '%H:%M:%S' logger.info( '{func:s}: obs_range = {obsr!s} intersect = {int!s}' .format(obsr=obs_range, int=tle_range.is_intersection(obs_range), func=cFuncName)) if tle_range.is_intersection(obs_range): prn_intersect[i_obs] = i_tle # store in the itersection column df_rs.loc[prn, 'intersect'] = prn_intersect return nr_arcs, df_rs