def set_minimum_distance_to_post(dataset):
    # cull based on trajectory length
    keys_to_remove = []
    for k, trajec in dataset.trajecs.iteritems():
        remove = False
            
            
        if trajec.frame_nearest_to_post == 0:
            remove = True
        
        # check that before coming close to post, there is a frame where fly is 20cm away from the post
        frames = np.arange(0, trajec.frame_nearest_to_post)
        frame_before_nearest = tas.get_frame_at_distance(trajec, 0.2, singleframe=False, frames=frames)
        
        if frame_before_nearest is None:
            remove = True
        
        # check that after coming close to post, there is a frame where fly is 20cm away from post
        # should be for FLYBY's only
        frames = np.arange(trajec.frame_nearest_to_post, trajec.length)
        frame_after_nearest = tas.get_frame_at_distance(trajec, 0.2, singleframe=False, frames=frames)

        if frame_after_nearest is None:
            remove = True

        if remove is True:
            keys_to_remove.append(k)
        else:
            trajec.framerange = [frame_before_nearest[-1], frame_after_nearest[0]]        
                    
    for k in keys_to_remove:   
        dataset.del_trajec(k)
def calc_frame_of_landing(trajec):    
    
    if trajec.behavior == 'landing':
        frames = np.arange(trajec.framerange[0], trajec.frame_nearest_to_post+1)
        tmp_frames_of_landing = tas.get_frame_at_distance(trajec, 0.005, singleframe=False, frames=frames)
        trajec.frame_of_landing = tmp_frames_of_landing[0]
    
    elif trajec.behavior == 'flyby':
        trajec.frame_of_landing = trajec.length