def reprocess_movies(movie_dataset, name=None, save=False): new_movie_dataset = {} for key, npmovie in movie_dataset.items(): print "processing: ", key pm.segment_fly(npmovie) pm.calc_obj_motion(npmovie) pm.smooth_legs(npmovie) clas.calc_fly_coordinates(npmovie) calc_frame_of_landing(npmovie) calc_timestamps(npmovie) try: align_sa1_flydra(npmovie) except: pass mnpmovie = pm.MiniNPM(npmovie) mnpmovie.behavior = copy.copy(npmovie.behavior) mnpmovie.path = copy.copy(npmovie.path) mnpmovie.posttype = copy.copy(npmovie.posttype) mnpmovie.extras = copy.copy(npmovie.extras) mnpmovie.id = copy.copy(npmovie.id) del (npmovie) new_movie_dataset.setdefault(mnpmovie.id, mnpmovie) if save: if name is None: name = "sa1_movie_dataset_2_repro" pm.save(new_movie_dataset, name) return new_movie_dataset
def process_movie(MOVIE_ID, movie_info=None, dataset=None): if movie_info is None: filename = '/home/floris/data/windtunnel/SA1/movie_info' fname = (filename) fd = open( fname, mode='r' ) movie_info = pickle.load(fd) fd.close() movie_filename = movie_info[MOVIE_ID]['Path'] + MOVIE_ID + '.avi' print 'loading: ', movie_filename movie = pm.Movie(movie_filename) npmovie = pm.npMovie() npmovie.objid = movie_info[MOVIE_ID]['Obj_ID'] npmovie.epochtime = movie_info[MOVIE_ID]['EpochTime'] npmovie.filename = MOVIE_ID npmovie.id = MOVIE_ID npmovie.behavior = movie_info[MOVIE_ID]['Behavior'] npmovie.path = movie_info[MOVIE_ID]['Path'] npmovie.posttype = movie_info[MOVIE_ID]['PostType'] npmovie.extras = movie_info[MOVIE_ID]['Extras'] npmovie.trigger_stamp = movie_info[MOVIE_ID]['Trigger Stamp'] npmovie.timestamps = movie_info[MOVIE_ID]['Timestamps'] # make a mask mask = np.ones([movie.height, movie.width]) mask[0:movie.height-movie.width, :] = 0 movie.mask = mask # make a tracking mask -- 0 where no tracking desired tracking_mask = np.abs(nim.plot_circle(1024,1024,[512,512], 150)-1) npmovie.tracking_mask = tracking_mask npmovie.calc_background(movie) npmovie.load_frames(movie, timerange=None) npmovie.fps = 5000. npmovie.obj = pm.Object(npmovie) pm.auto_adjust_uimg(npmovie) pm.segment_fly(npmovie) frames = smp.get_active_frames(npmovie) if len(frames) < 5: del(movie) return npmovie pm.calc_obj_pos(npmovie) pm.calc_obj_motion(npmovie) pm.smooth_legs(npmovie) pm.calc_polarpos(npmovie) pm.smooth_axis_ratio(npmovie) trajec, time_err = sa1a.get_flydra_trajectory(npmovie, dataset) print 'trajectory in process_movie: ', trajec npmovie.trajec = copy.copy(trajec) clas.calc_fly_coordinates(npmovie) smp.calc_frame_of_landing(npmovie) if trajec is not None: smp.sync_2d_3d_data(npmovie) if len(npmovie.sync2d3d.frames3d) > 2: smp.calc_body_orientations(npmovie) smp.calc_smoothyaw(npmovie, plot=False) else: npmovie.sync2d3d = None npmovie.cluster = None #strobe_img = pm.strobe_image(movie) #movie_info[MOVIE_ID].setdefault('StrobeImg', strobe_img) #npmovie_filename = '/home/floris/data/windtunnel/SA1/sa1_npmovie_' + MOVIE_ID #pm.save(npmovie, npmovie_filename) del(movie) return npmovie
def recalc_motion_movies(movie_dataset): for key, npmovie in movie_dataset.items(): pm.calc_obj_motion(npmovie) pm.smooth_legs(npmovie) clas.calc_fly_coordinates(npmovie) calc_frame_of_landing(npmovie)