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