def test_example_trajectories_were_cleaned_correctly(self): trajs_raw_not_clean = session.query(models.Trajectory).filter_by(raw=True, clean=False).all() for traj in trajs_raw_not_clean[:N_EXAMPLE_TRAJS_TO_CLEAN]: # get cleaning parameters insect = traj.experiment.insect cleaning_params_list = session.query(models.TrajectoryCleaningParameter.param, models.TrajectoryCleaningParameter.value).\ filter_by(insect=insect).all() cleaning_params = dict(cleaning_params_list) # clean traj clean_portions = clean_traj(traj, cleaning_params) # check to make sure the correct number of clean trajectories were generated with the right ids # and that they have the right timepoint indicators for ctr, clean_portion in enumerate(clean_portions): clean_id = traj.id + '_c{}'.format(ctr) traj_cleaned = session.query(models.Trajectory).get(clean_id) self.assertFalse(traj_cleaned is None) self.assertEqual(traj_cleaned.start_timepoint_id, clean_portion[0]) self.assertEqual(traj_cleaned.end_timepoint_id, clean_portion[1]) # make sure that there is no additional trajectory that was created self.assertTrue(session.query(models.Trajectory). \ get(traj.id + '_c{}'.format(len(clean_portions))) is None)
def test_example_trajectories_were_cleaned_correctly(self): trajs_raw_not_clean = session.query(models.Trajectory).filter_by( raw=True, clean=False).all() for traj in trajs_raw_not_clean[:N_EXAMPLE_TRAJS_TO_CLEAN]: # get cleaning parameters insect = traj.experiment.insect cleaning_params_list = session.query(models.TrajectoryCleaningParameter.param, models.TrajectoryCleaningParameter.value).\ filter_by(insect=insect).all() cleaning_params = dict(cleaning_params_list) # clean traj clean_portions = clean_traj(traj, cleaning_params) # check to make sure the correct number of clean trajectories were generated with the right ids # and that they have the right timepoint indicators for ctr, clean_portion in enumerate(clean_portions): clean_id = traj.id + '_c{}'.format(ctr) traj_cleaned = session.query(models.Trajectory).get(clean_id) self.assertFalse(traj_cleaned is None) self.assertEqual(traj_cleaned.start_timepoint_id, clean_portion[0]) self.assertEqual(traj_cleaned.end_timepoint_id, clean_portion[1]) # make sure that there is no additional trajectory that was created self.assertTrue(session.query(models.Trajectory). \ get(traj.id + '_c{}'.format(len(clean_portions))) is None)
def test_two_long_pauses_in_middle_with_too_short_traj_between_is_cleaned_correctly(self): speeds = cc([np.random.uniform(0, 1, 100) + 3, np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 30) + 3, # short trajectory np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 80) + 3]) dists = cc([np.random.uniform(0, 1, 100) + 3, np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 30) + 3, # short trajectory np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 80) + 3]) start_timepoint_id = 1003 traj = Trajectory(start_timepoint_id, speeds, dists) clean_portions = clean_trajectories.clean_traj(traj, CLEANING_PARAMS) self.assertEqual(len(clean_portions), 2) self.assertEqual(clean_portions[0, 0], start_timepoint_id) self.assertEqual(clean_portions[0, 1], start_timepoint_id + 100 -1) self.assertEqual(clean_portions[1, 0], start_timepoint_id + 170) self.assertEqual(clean_portions[1, 1], traj.end_timepoint_id)
def test_traj_with_three_pauses_is_cleaned_correctly(self): speeds = cc([np.random.uniform(0, 1, 100) + 3, np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 80) + 3, np.random.uniform(0, 0.01, 5), # short pause np.random.uniform(0, 1, 95) + 3, np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 80) + 3]) dists = cc([np.random.uniform(0, 1, 100) + 3, np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 80) + 3, np.random.uniform(0, 0.01, 5), # short pause np.random.uniform(0, 1, 95) + 3, np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 80) + 3]) start_timepoint_id = 98 traj = Trajectory(start_timepoint_id, speeds, dists) clean_portions = clean_trajectories.clean_traj(traj, CLEANING_PARAMS) self.assertEqual(len(clean_portions), 3) self.assertEqual(clean_portions[0, 0], start_timepoint_id) self.assertEqual(clean_portions[0, 1], start_timepoint_id + 100 - 1) self.assertEqual(clean_portions[1, 0], start_timepoint_id + 120) self.assertEqual(clean_portions[1, 1], start_timepoint_id + 300 - 1) self.assertEqual(clean_portions[2, 0], start_timepoint_id + 320) self.assertEqual(clean_portions[2, 1], traj.end_timepoint_id)
def test_good_trajectory_but_too_short(self): speeds = np.random.uniform(0, 1, 10) + 3 dists = np.random.uniform(0, 5, 10) + 9 start_timepoint_id = 4000 traj = Trajectory(start_timepoint_id, speeds, dists) clean_portions = clean_trajectories.clean_traj(traj, CLEANING_PARAMS) self.assertEqual(len(clean_portions), 0)
def test_traj_starting_with_short_pause_is_untouched(self): speeds = cc([np.random.uniform(0, 0.01, 5), np.random.uniform(0, 1, 500) + 3]) dists = cc([np.random.uniform(0, 0.003, 5), np.random.uniform(0, 1, 500) + 9]) start_timepoint_id = 20010 traj = Trajectory(start_timepoint_id, speeds, dists) clean_portions = clean_trajectories.clean_traj(traj, CLEANING_PARAMS) self.assertEqual(len(clean_portions), 1) self.assertEqual(clean_portions[0, 0], start_timepoint_id) self.assertEqual(clean_portions[0, 1], traj.end_timepoint_id)
def test_good_trajectory_is_left_untouched(self): speeds = np.random.uniform(0, 1, 500) + 3 dists = np.random.uniform(0, 5, 500) + 9 start_timepoint_id = 1790 traj = Trajectory(start_timepoint_id, speeds, dists) clean_portions = clean_trajectories.clean_traj(traj, CLEANING_PARAMS) self.assertEqual(len(clean_portions), 1) self.assertEqual(clean_portions[0, 0], traj.start_timepoint_id) self.assertEqual(clean_portions[0, 1], traj.end_timepoint_id)
def test_traj_ends_with_long_pause_has_pause_removed(self): speeds = cc([np.random.uniform(0, 1, 500) + 3, np.random.uniform(0, 0.01, 20)]) dists = cc([np.random.uniform(0, 1, 500) + 9, np.random.uniform(0, 0.003, 20)]) start_timepoint_id = 1008 traj = Trajectory(start_timepoint_id, speeds, dists) clean_portions = clean_trajectories.clean_traj(traj, CLEANING_PARAMS) self.assertEqual(len(clean_portions), 1) self.assertEqual(clean_portions[0, 0], start_timepoint_id) self.assertEqual(clean_portions[0, 1], traj.end_timepoint_id - 20)
def test_trajectory_with_speed_pause_but_not_distance_pause_is_left_untouched(self): speeds = cc([np.random.uniform(0, 1, 500) + 3, np.random.uniform(0, 0.01, 20), np.random.uniform(0, 1, 500) + 3]) dists = cc([np.random.uniform(0, 1, 500) + 9, np.random.uniform(0, 0.003, 20) + 4, np.random.uniform(0, 1, 500) + 9]) start_timepoint_id = 10883 traj = Trajectory(start_timepoint_id, speeds, dists) clean_portions = clean_trajectories.clean_traj(traj, CLEANING_PARAMS) self.assertEqual(len(clean_portions), 1) self.assertEqual(clean_portions[0, 0], traj.start_timepoint_id) self.assertEqual(clean_portions[0, 1], traj.end_timepoint_id)
def test_traj_with_pause_in_middle_has_pause_removed(self): speeds = cc([np.random.uniform(0, 1, 500) + 3, np.random.uniform(0, 0.01, 20), np.random.uniform(0, 1, 500) + 3]) dists = cc([np.random.uniform(0, 1, 500) + 9, np.random.uniform(0, 0.003, 20), np.random.uniform(0, 1, 500) + 9]) start_timepoint_id = 10883 traj = Trajectory(start_timepoint_id, speeds, dists) clean_portions = clean_trajectories.clean_traj(traj, CLEANING_PARAMS) self.assertEqual(len(clean_portions), 2) self.assertEqual(clean_portions[0, 0], start_timepoint_id) self.assertEqual(clean_portions[0, 1], start_timepoint_id + 500 - 1) self.assertEqual(clean_portions[1, 0], start_timepoint_id + 520) self.assertEqual(clean_portions[1, 1], traj.end_timepoint_id)
def test_traj_with_middle_and_end_pause_is_cleaned_correctly(self): speeds = cc([np.random.uniform(0, 1, 100) + 3, np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 80) + 3, np.random.uniform(0, 0.01, 20)]) # long pause dists = cc([np.random.uniform(0, 1, 100) + 3, np.random.uniform(0, 0.01, 20), # long pause np.random.uniform(0, 1, 80) + 3, np.random.uniform(0, 0.01, 20)]) # long pause start_timepoint_id = 9809 traj = Trajectory(start_timepoint_id, speeds, dists) clean_portions = clean_trajectories.clean_traj(traj, CLEANING_PARAMS) self.assertEqual(len(clean_portions), 2) self.assertEqual(clean_portions[0, 0], start_timepoint_id) self.assertEqual(clean_portions[0, 1], start_timepoint_id + 100 - 1) self.assertEqual(clean_portions[1, 0], start_timepoint_id + 120) self.assertEqual(clean_portions[1, 1], traj.end_timepoint_id - 20)