def test_frame_combos(self): #test that the frame range is always the minimum to the maximum combine_prints(self.ex_df, 4, 5) self.assertTrue(self.ex_df.first_frame[5] == 12) self.assertTrue(self.ex_df.last_frame[5] == 20) #check with odd ordering of first and last combine_prints(self.ex_df, 2, 3) self.assertTrue(self.ex_df.first_frame[3] == 1) self.assertTrue(self.ex_df.last_frame[3] == 14)
def test_max_idx_kept(self): combine_prints(self.ex_df, 0, 1) self.assertTrue(1 in self.ex_df.index.values) self.assertFalse(0 in self.ex_df.index.values) combine_prints(self.ex_df, 1, 5) self.assertTrue(5 in self.ex_df.index.values) self.assertFalse(1 in self.ex_df.index.values) self.assertTrue(10 in self.ex_df.print_numb.values) self.assertFalse(2 in self.ex_df.print_numb.values)
def on_key_press(self, event): """handles each of the different key events. l,r,h, and f change the print classification of selected print d deletes the print, and has a helper method to do it. c and enter """ if self.selected_print is not None: #if its a keypress to set one of the paw id props if event.key in ['l', 'r', 'h', 'f']: self.change_print_classification(event.key) elif event.key == 'd': self.delete_print(self.selected_print) elif event.key == 'c': self.in_combo_state = ~self.in_combo_state if self.in_combo_state: self.select_panel.display_combo_text(self.selected_print) else: if self.second_selected is not None: self.recolor(self.second_selected) self.second_selected = None self.select_panel.set_selected( self.selected_print, self.combo_prints.is_right[self.selected_print], self.combo_prints.is_hind[self.selected_print]) elif event.key == 'enter': if self.in_combo_state and self.second_selected is not None: #the prints have to have the same front and side class if (self.combo_prints.is_right[self.second_selected] == \ self.combo_prints.is_right[self.selected_print] and self.combo_prints.is_hind[self.second_selected] == \ self.combo_prints.is_hind[self.selected_print]): #TODO: a temporary hack self.combo_prints[ 'print_numb'] = self.combo_prints.index.values combine_prints(self.combo_prints, self.selected_print, self.second_selected, hulls_df=self.hulls_df) self.handle_combine_graphics(self.selected_print, self.second_selected) self.in_combo_state = False self.second_selected = None self.selected_print = None else: #TODO: display this onscreen somehow print("PAWS MUST MATCH") self.in_combo_state = False self.recolor(self.second_selected) self.second_selected = None self.select_panel.set_selected( self.selected_print, self.combo_prints.is_right[self.selected_print], self.combo_prints.is_hind[self.selected_print]) #TODO: TEMPORARY elif event.key == 'm': self.initiate_split_window()
def test_max_area_stats_kept_keep_idx_and_big_same(self): #when big_idx and keep_idx are the same self.assertTrue(self.ex_df.max_area[3]==22) self.assertTrue(self.ex_df.X[3]==9) self.assertTrue(self.ex_df.Y[3]==70) self.assertTrue(self.ex_df.frame_max_a[3]==6) combine_prints(self.ex_df, 2, 3) self.assertTrue(self.ex_df.max_area[3]==22) self.assertTrue(self.ex_df.X[3]==9) self.assertTrue(self.ex_df.Y[3]==70) self.assertTrue(self.ex_df.frame_max_a[3]==6)
def test_max_area_stats_kept_keep_idx_and_big_diff(self): #when big_idx and keep_idx are different self.assertTrue(self.ex_df.max_area[2]==10) self.assertTrue(self.ex_df.X[2]==8) self.assertTrue(self.ex_df.Y[2]==66) self.assertTrue(self.ex_df.frame_max_a[2]==5) combine_prints(self.ex_df, 1, 2) self.assertTrue(self.ex_df.max_area[2]==40) self.assertTrue(self.ex_df.X[2]==6) self.assertTrue(self.ex_df.Y[2]==10) self.assertTrue(self.ex_df.frame_max_a[2]==3)
def test_no_combine_different_classes(self): with self.assertRaises(ValueError): combine_prints(self.ex_df_varied,4,5)