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)
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)