def test_pivot_smoke(): M, N = 3, 10 evs = list(_pivot_data_helper(M, N)) ev_dict = {ev['uid']: ev for ev in evs} pevs = list(pivot_timeseries(evs, 'abg', 'cdh')) for j, ev in enumerate(pevs): assert j == ev['seq_no'] assert ev['data']['_ind'] == j % M desc = ev['descriptor'] for k in 'abgcdh': assert k in desc['data_keys'] assert desc['data_keys']['a']['shape'] == () assert desc['data_keys']['b']['shape'] == () assert desc['data_keys']['c']['shape'] == (3, ) assert desc['data_keys']['g']['shape'] == (2, 2) assert desc['data_keys']['h']['shape'] == (3, 2, 2) assert set(desc['data_keys']) == set(ev['data']) assert set(desc['data_keys']) == set(ev['timestamps']) for k in 'cdh': assert desc['data_keys'][k]['source'] == 'syn' assert_array_equal(ev['data'][k], evs[j // M]['data'][k]) for k in 'abg': src = desc['data_keys'][k]['source'] assert src == str(j // M) source_ev = ev_dict[src] assert_array_equal(ev['data'][k], source_ev['data'][k][ev['data']['_ind']])
def clean_images(header, pivot_key, timesource_key, dark_images=None, static_keys=None): if static_keys is None: static_keys = ['sx', 'sy', 'temp_a', 'temp_b', 'sz'] # sort out which descriptor has the key we want to pivot on pv_desc = [d for d in header['descriptors'] if pivot_key in d['data_keys']][0] # sort out which descriptor has the key that we want to zip with to get time stamps ts_desc = [d for d in header['descriptors'] if timesource_key in d['data_keys']][0] ts_events = get_events_generator(ts_desc) pv_events = get_events_generator(pv_desc) # fill_event works in place, sillyness to work around that pv_events = ((ev, fill_event(ev))[0] for ev in pv_events) pivoted_events = pivot_timeseries(pv_events, [pivot_key], static_keys) if dark_images: pivoted_events = correct_events(pivoted_events, pivot_key, dark_images) merged_events = zip_events(pivoted_events, ts_events) out_ev = reset_time(merged_events, timesource_key) yield from out_ev
def clean_images(header, pivot_key, timesource_key, dark_images=None, static_keys=None): if static_keys is None: static_keys = ["sx", "sy", "temp_a", "temp_b", "sz"] # sort out which descriptor has the key we want to pivot on pv_desc = [d for d in header["descriptors"] if pivot_key in d["data_keys"]][0] # sort out which descriptor has the key that we want to zip with to get time stamps ts_desc = [d for d in header["descriptors"] if timesource_key in d["data_keys"]][0] ts_events = get_events_generator(ts_desc) pv_events = get_events_generator(pv_desc) # fill_event works in place, sillyness to work around that pv_events = ((ev, fill_event(ev))[0] for ev in pv_events) pivoted_events = pivot_timeseries(pv_events, [pivot_key], static_keys) if dark_images: pivoted_events = correct_events(pivoted_events, pivot_key, dark_images) merged_events = zip_events(pivoted_events, ts_events) out_ev = reset_time(merged_events, timesource_key) yield from out_ev