def calc_final_error(dt):

    tStartTracker = tracker_times.min() - owl_times.min() - dt

    if args.item == "cloth":
        used_leds = [i for pair in led_pairs for i in pair]
        led2ind = {}
        for (ind, led) in enumerate(used_leds):
            led2ind[led] = ind
        ind_pairs = [(led2ind[led0], led2ind[led1])
                     for (led0, led1) in led_pairs]
        marker2info = ev.calculate_cloth_tracking_score1(
            tracker_arr, tracker_times - tStartTracker, tracker_triangles,
            owl_arr[:, used_leds, :], owl_times, ind_pairs)
    elif args.item == "rope":
        used_leds = rope_leds
        marker2info = ev.calculate_rope_tracking_score(
            tracker_arr, tracker_times - tStartTracker,
            owl_arr[:, used_leds, :], owl_times, used_leds)

    errors = []
    for info in marker2info:
        err_q = ev.norms(info["position_relative"], 1)
        errors.extend(err_q.tolist())
    final_error = np.median(errors)
    print dt, final_error
    return final_error
def calc_final_error(dt):
    
    tStartTracker = tracker_times.min() - owl_times.min() - dt
    
    if args.item == "cloth":
        used_leds = [i for pair in led_pairs for i in pair]    
        led2ind = {}
        for (ind,led) in enumerate(used_leds):
            led2ind[led] = ind
        ind_pairs = [(led2ind[led0], led2ind[led1]) for (led0, led1) in led_pairs]    
        marker2info =  ev.calculate_cloth_tracking_score1(tracker_arr, tracker_times-tStartTracker, tracker_triangles, owl_arr[:,used_leds,:], owl_times, ind_pairs)
    elif args.item == "rope":
        used_leds = rope_leds
        marker2info = ev.calculate_rope_tracking_score(tracker_arr, tracker_times-tStartTracker, owl_arr[:,used_leds,:], owl_times, used_leds)
    
    errors = []
    for info in marker2info:
        err_q = ev.norms(info["position_relative"],1)    
        errors.extend(err_q.tolist())
    final_error = np.median(errors)  
    print dt, final_error
    return final_error
    bag_data_file = np.load(bag_data_cache_file)
    bag_data = [bag_data_file[key] for key in sorted(bag_data_file.keys())]
tracker_arr, tracker_times, tracker_triangles, owl_arr, owl_times = bag_data

#assert abs(tracker_times.max() - owl_times.max()) < 1
tracker_times -= (tracker_times.min() - owl_times.min() - 2)

if args.item == "cloth":
    used_leds = [i for pair in led_pairs for i in pair]
    led2ind = {}
    for (ind, led) in enumerate(used_leds):
        led2ind[led] = ind
    ind_pairs = [(led2ind[led0], led2ind[led1]) for (led0, led1) in led_pairs]
    marker2info = ev.calculate_cloth_tracking_score1(tracker_arr,
                                                     tracker_times,
                                                     tracker_triangles,
                                                     owl_arr[:, used_leds, :],
                                                     owl_times, ind_pairs)
elif args.item == "rope":
    used_leds = rope_leds
    marker2info = ev.calculate_rope_tracking_score(tracker_arr, tracker_times,
                                                   owl_arr[:, used_leds, :],
                                                   owl_times, used_leds)

if 1:
    errors = []
    median_errors = []
    for info in marker2info:
        err_q = ev.norms(info["position_relative"], 1)
        errors.extend(err_q.tolist())
        median_errors.append(np.median(err_q))
else:
    bag_data_file = np.load(bag_data_cache_file)
    bag_data = [bag_data_file[key] for key in sorted(bag_data_file.keys())]
tracker_arr, tracker_times, tracker_triangles, owl_arr, owl_times = bag_data


#assert abs(tracker_times.max() - owl_times.max()) < 1
tracker_times -= (tracker_times.min() - owl_times.min()-2)

if args.item == "cloth":
    used_leds = [i for pair in led_pairs for i in pair]    
    led2ind = {}
    for (ind,led) in enumerate(used_leds):
        led2ind[led] = ind
    ind_pairs = [(led2ind[led0], led2ind[led1]) for (led0, led1) in led_pairs]    
    marker2info =  ev.calculate_cloth_tracking_score1(tracker_arr, tracker_times, tracker_triangles, owl_arr[:,used_leds,:], owl_times, ind_pairs)
elif args.item == "rope":
    used_leds = rope_leds
    marker2info = ev.calculate_rope_tracking_score(tracker_arr, tracker_times, owl_arr[:,used_leds,:], owl_times, used_leds)

if 1:
    errors = []
    median_errors = []
    for info in marker2info:
        err_q = ev.norms(info["position_relative"],1)
        errors.extend(err_q.tolist())
        median_errors.append(np.median(err_q))
        
        
    import scipy.stats as ss
    per_errors = []