Exemple #1
0
def normalise_dt_intervals(dt_intervals, dt_earliest):
    '''Convert datetime Intervals into normalised kernel Intervals.'''

    epoch_earliest = datetime_to_epoch(dt_earliest)

    epoch_timepoints = []
    for tp in dt_intervals.toDictList():
        epoch_time = normalise(datetime_to_epoch(tp['time']), epoch_earliest)
        epoch_timepoints.append({'time': epoch_time, 'type': tp['type']})

    return Intervals(epoch_timepoints)
    def test_construct_global_availability(self):
        tel_name = '1m0a.doma.lsc'
        sem_start = datetime(2012, 10, 1)

        # Resource is available from 3-7
        dt0 = datetime(2013, 3, 22, 3)
        dt1 = datetime(2013, 3, 22, 7)

        dt_resource_int = Intervals([
            {
                'time': dt0,
                'type': 'start'
            },
            {
                'time': dt1,
                'type': 'end'
            },
        ])
        epoch_resource_int = normalise_dt_intervals(dt_resource_int, sem_start)
        resource_windows = {tel_name: epoch_resource_int}

        # Resource is unavailable from 4-5
        dt2 = datetime(2013, 3, 22, 4)
        dt3 = datetime(2013, 3, 22, 5)
        masked_inervals = {
            '1m0a.doma.lsc':
            Intervals([{
                'time': dt2,
                'type': 'start'
            }, {
                'time': dt3,
                'type': 'end'
            }])
        }

        # Expected available intervals after masking are
        # 3-4, 5-7
        received = construct_global_availability(masked_inervals, sem_start,
                                                 resource_windows)
        received_int = received[tel_name]
        timepoints = received_int.toDictList()
        assert_equal(len(timepoints), 4)
        r0 = normalised_epoch_to_datetime(timepoints[0]['time'],
                                          datetime_to_epoch(sem_start))
        r1 = normalised_epoch_to_datetime(timepoints[1]['time'],
                                          datetime_to_epoch(sem_start))
        # r2 = normalised_epoch_to_datetime(timepoints[2]['time'],
        #                                   datetime_to_epoch(sem_start))
        r3 = normalised_epoch_to_datetime(timepoints[3]['time'],
                                          datetime_to_epoch(sem_start))
        assert_equal(r0, dt0)
        assert_equal(r1, dt2)
        assert_equal(r3, dt1)
Exemple #3
0
    def test_datetime_epoch_conversions_are_inverses(self):
        # 12th January, 2012, 2:55:47
        dt_value = datetime(2012, 1, 12, 2, 55, 47)
        value = 1326336947

        # 1st January 2012, 00:00:00
        dt_start = datetime(2012, 1, 1, 0, 0, 0)
        start = 1325376000

        # Check the low level conversion routines
        assert_equal(datetime_to_epoch(dt_value), value)
        assert_equal(epoch_to_datetime(value), dt_value)

        # Check conversion plus normalisation/unnormalisation
        normed_epoch_value = datetime_to_normalised_epoch(dt_value, dt_start)
        assert_equal(normalised_epoch_to_datetime(normed_epoch_value, start),
                     dt_value)