Esempio n. 1
0
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
Esempio n. 2
0
def datetimerange_null_start():
    value = DateTimeRange(None, TEST_END_DATETIME)
    value.time_format = None
    value.end_time_format = ISO_TIME_FORMAT

    return value
Esempio n. 3
0
def datetimerange_null():
    value = DateTimeRange(None, None)
    value.time_format = None
    value.end_time_format = None

    return value
Esempio n. 4
0
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
Esempio n. 5
0
def datetimerange_null_start():
    value = DateTimeRange(None, TEST_END_DATETIME)
    value.time_format = None
    value.end_time_format = ISO_TIME_FORMAT

    return value
Esempio n. 6
0
def datetimerange_null():
    value = DateTimeRange(None, None)
    value.time_format = None
    value.end_time_format = None

    return value
Esempio n. 7
0
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