simba-uw-tf-dev 4.6.1__py3-none-any.whl → 4.6.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. simba/SimBA.py +2 -2
  2. simba/assets/icons/frames_2.png +0 -0
  3. simba/data_processors/agg_clf_counter_mp.py +52 -53
  4. simba/data_processors/cuda/image.py +3 -1
  5. simba/data_processors/cue_light_analyzer.py +5 -9
  6. simba/mixins/geometry_mixin.py +14 -28
  7. simba/mixins/image_mixin.py +10 -14
  8. simba/mixins/train_model_mixin.py +2 -2
  9. simba/plotting/ROI_feature_visualizer_mp.py +3 -5
  10. simba/plotting/clf_validator_mp.py +4 -5
  11. simba/plotting/cue_light_visualizer.py +6 -7
  12. simba/plotting/directing_animals_visualizer_mp.py +2 -3
  13. simba/plotting/distance_plotter_mp.py +378 -378
  14. simba/plotting/frame_mergerer_ffmpeg.py +137 -137
  15. simba/plotting/gantt_creator_mp.py +59 -31
  16. simba/plotting/geometry_plotter.py +270 -272
  17. simba/plotting/heat_mapper_clf_mp.py +2 -4
  18. simba/plotting/heat_mapper_location_mp.py +2 -2
  19. simba/plotting/light_dark_box_plotter.py +2 -2
  20. simba/plotting/path_plotter_mp.py +26 -29
  21. simba/plotting/plot_clf_results_mp.py +455 -454
  22. simba/plotting/pose_plotter_mp.py +27 -32
  23. simba/plotting/probability_plot_creator_mp.py +288 -288
  24. simba/plotting/roi_plotter_mp.py +29 -30
  25. simba/plotting/single_run_model_validation_video_mp.py +427 -427
  26. simba/plotting/spontaneous_alternation_plotter.py +2 -3
  27. simba/plotting/yolo_pose_track_visualizer.py +31 -27
  28. simba/plotting/yolo_pose_visualizer.py +32 -34
  29. simba/plotting/yolo_seg_visualizer.py +2 -3
  30. simba/roi_tools/roi_aggregate_stats_mp.py +4 -3
  31. simba/roi_tools/roi_clf_calculator_mp.py +3 -3
  32. simba/sandbox/cuda/egocentric_rotator.py +374 -0
  33. simba/sandbox/get_cpu_pool.py +5 -0
  34. simba/ui/pop_ups/clf_add_remove_print_pop_up.py +3 -1
  35. simba/ui/pop_ups/egocentric_alignment_pop_up.py +6 -3
  36. simba/ui/pop_ups/multiple_videos_to_frames_popup.py +10 -11
  37. simba/ui/pop_ups/single_video_to_frames_popup.py +10 -10
  38. simba/ui/pop_ups/video_processing_pop_up.py +63 -63
  39. simba/ui/tkinter_functions.py +7 -1
  40. simba/utils/data.py +89 -12
  41. simba/utils/enums.py +1 -0
  42. simba/utils/printing.py +9 -8
  43. simba/utils/read_write.py +3726 -3721
  44. simba/video_processors/clahe_ui.py +65 -22
  45. simba/video_processors/egocentric_video_rotator.py +6 -9
  46. simba/video_processors/video_processing.py +21 -10
  47. simba/video_processors/videos_to_frames.py +3 -2
  48. {simba_uw_tf_dev-4.6.1.dist-info → simba_uw_tf_dev-4.6.3.dist-info}/METADATA +1 -1
  49. {simba_uw_tf_dev-4.6.1.dist-info → simba_uw_tf_dev-4.6.3.dist-info}/RECORD +53 -50
  50. {simba_uw_tf_dev-4.6.1.dist-info → simba_uw_tf_dev-4.6.3.dist-info}/LICENSE +0 -0
  51. {simba_uw_tf_dev-4.6.1.dist-info → simba_uw_tf_dev-4.6.3.dist-info}/WHEEL +0 -0
  52. {simba_uw_tf_dev-4.6.1.dist-info → simba_uw_tf_dev-4.6.3.dist-info}/entry_points.txt +0 -0
  53. {simba_uw_tf_dev-4.6.1.dist-info → simba_uw_tf_dev-4.6.3.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,6 @@
1
1
  import os
2
+ import threading
3
+ import time
2
4
  from typing import Tuple, Union
3
5
 
4
6
  import cv2
@@ -32,29 +34,66 @@ def interactive_clahe_ui(data: Union[str, os.PathLike]) -> Tuple[float, int]:
32
34
  """
33
35
  global original_img, font_size, x_spacer, y_spacer, txt
34
36
 
37
+ callback_lock = threading.Lock()
38
+ last_update_time = [0]
39
+ update_delay = 0.05
40
+
35
41
  def _get_trackbar_values(v):
36
42
  global original_img, font_size, x_spacer, y_spacer, txt
37
- clip_limit = cv2.getTrackbarPos(CLIP_LIMIT, WIN_NAME) / 10.0
38
- tile_size = cv2.getTrackbarPos(TILE_SIZE, WIN_NAME)
39
- if tile_size % 2 == 0: tile_size += 1
40
- clahe = cv2.createCLAHE(clipLimit=clip_limit, tileGridSize=(tile_size, tile_size))
41
- img_clahe = clahe.apply(original_img)
42
- cv2.putText(img_clahe, txt,(TextOptions.BORDER_BUFFER_X.value, TextOptions.BORDER_BUFFER_Y.value + y_spacer), TextOptions.FONT.value, font_size, (255, 255, 255), 3)
43
- cv2.imshow(WIN_NAME, img_clahe)
44
- cv2.waitKey(100)
43
+ nonlocal callback_lock, last_update_time, update_delay
44
+ current_time = time.time()
45
+ if current_time - last_update_time[0] < update_delay:
46
+ return
47
+
48
+ if not callback_lock.acquire(blocking=False):
49
+ return
50
+
51
+ try:
52
+ if cv2.getWindowProperty(WIN_NAME, cv2.WND_PROP_VISIBLE) < 1:
53
+ return
54
+ try:
55
+ clip_limit = cv2.getTrackbarPos(CLIP_LIMIT, WIN_NAME) / 10.0
56
+ tile_size = cv2.getTrackbarPos(TILE_SIZE, WIN_NAME)
57
+ if tile_size % 2 == 0: tile_size += 1
58
+ clahe = cv2.createCLAHE(clipLimit=clip_limit, tileGridSize=(tile_size, tile_size))
59
+ img_clahe = clahe.apply(original_img)
60
+ cv2.putText(img_clahe, txt,(TextOptions.BORDER_BUFFER_X.value, TextOptions.BORDER_BUFFER_Y.value + y_spacer), TextOptions.FONT.value, font_size, (255, 255, 255), 3)
61
+ cv2.imshow(WIN_NAME, img_clahe)
62
+ cv2.waitKey(1)
63
+ last_update_time[0] = current_time
64
+ except cv2.error:
65
+ pass
66
+ finally:
67
+ callback_lock.release()
45
68
 
46
69
  def _change_img(v):
47
70
  global original_img, font_size, x_spacer, y_spacer, txt
48
- new_frm_id = cv2.getTrackbarPos(SELECT_VIDEO_FRAME, WIN_NAME)
49
- original_img = read_frm_of_video(video_path=data, frame_index=new_frm_id, greyscale=True)
50
- clip_limit = cv2.getTrackbarPos(CLIP_LIMIT, WIN_NAME) / 10.0
51
- tile_size = cv2.getTrackbarPos(TILE_SIZE, WIN_NAME)
52
- if tile_size % 2 == 0: tile_size += 1
53
- clahe = cv2.createCLAHE(clipLimit=clip_limit, tileGridSize=(tile_size, tile_size))
54
- img_clahe = clahe.apply(original_img)
55
- cv2.putText(img_clahe, txt,(TextOptions.BORDER_BUFFER_X.value, TextOptions.BORDER_BUFFER_Y.value + y_spacer), TextOptions.FONT.value, font_size, (255, 255, 255), 3)
56
- cv2.imshow(WIN_NAME, img_clahe)
57
- cv2.waitKey(100)
71
+ current_time = time.time()
72
+ if current_time - last_update_time[0] < update_delay:
73
+ return
74
+
75
+ if not callback_lock.acquire(blocking=False):
76
+ return
77
+
78
+ try:
79
+ if cv2.getWindowProperty(WIN_NAME, cv2.WND_PROP_VISIBLE) < 1:
80
+ return
81
+ try:
82
+ new_frm_id = cv2.getTrackbarPos(SELECT_VIDEO_FRAME, WIN_NAME)
83
+ original_img = read_frm_of_video(video_path=data, frame_index=new_frm_id, greyscale=True)
84
+ clip_limit = cv2.getTrackbarPos(CLIP_LIMIT, WIN_NAME) / 10.0
85
+ tile_size = cv2.getTrackbarPos(TILE_SIZE, WIN_NAME)
86
+ if tile_size % 2 == 0: tile_size += 1
87
+ clahe = cv2.createCLAHE(clipLimit=clip_limit, tileGridSize=(tile_size, tile_size))
88
+ img_clahe = clahe.apply(original_img)
89
+ cv2.putText(img_clahe, txt,(TextOptions.BORDER_BUFFER_X.value, TextOptions.BORDER_BUFFER_Y.value + y_spacer), TextOptions.FONT.value, font_size, (255, 255, 255), 3)
90
+ cv2.imshow(WIN_NAME, img_clahe)
91
+ cv2.waitKey(1)
92
+ last_update_time[0] = current_time
93
+ except cv2.error:
94
+ pass
95
+ finally:
96
+ callback_lock.release()
58
97
 
59
98
  check_instance(source=interactive_clahe_ui.__name__, instance=data, accepted_types=(np.ndarray, str))
60
99
  if isinstance(data, str):
@@ -80,14 +119,18 @@ def interactive_clahe_ui(data: Union[str, os.PathLike]) -> Tuple[float, int]:
80
119
  break
81
120
  k = cv2.waitKey(1) & 0xFF
82
121
  if k == 27:
83
- clip_limit = cv2.getTrackbarPos(CLIP_LIMIT, WIN_NAME) / 10.0
84
- tile_size = cv2.getTrackbarPos(TILE_SIZE, WIN_NAME)
85
- if tile_size % 2 == 0: tile_size += 1
122
+ try:
123
+ clip_limit = cv2.getTrackbarPos(CLIP_LIMIT, WIN_NAME) / 10.0
124
+ tile_size = cv2.getTrackbarPos(TILE_SIZE, WIN_NAME)
125
+ if tile_size % 2 == 0: tile_size += 1
126
+ except cv2.error:
127
+ clip_limit = 1.0
128
+ tile_size = 8
86
129
  cv2.destroyAllWindows()
87
130
  return clip_limit, tile_size
88
131
 
89
132
 
90
- #interactive_clahe_ui(data=r"D:\EPM\sample_2\video_1.mp4")
133
+ #interactive_clahe_ui(data=r"C:\troubleshooting\cue_light\t1\project_folder\videos\2025-05-21 16-10-06_cropped.mp4")
91
134
 
92
135
  # # Function to update CLAHE
93
136
  # def update_clahe(x):
@@ -12,7 +12,7 @@ from simba.utils.checks import (check_file_exist_and_readable,
12
12
  check_valid_boolean, check_valid_tuple)
13
13
  from simba.utils.data import (align_target_warpaffine_vectors,
14
14
  center_rotation_warpaffine_vectors,
15
- egocentrically_align_pose)
15
+ egocentrically_align_pose, terminate_cpu_pool)
16
16
  from simba.utils.enums import Defaults, Formats
17
17
  from simba.utils.printing import SimbaTimer, stdout_success
18
18
  from simba.utils.read_write import (concatenate_videos_in_folder,
@@ -35,7 +35,6 @@ def egocentric_video_aligner(frm_range: np.ndarray,
35
35
  gpu: bool = True):
36
36
 
37
37
  video_meta = get_video_meta_data(video_path=video_path)
38
-
39
38
  batch, frm_range = frm_range[0], frm_range[1]
40
39
  save_path = os.path.join(temp_dir, f'{batch}.mp4')
41
40
  fourcc = cv2.VideoWriter_fourcc(*f'{Formats.MP4_CODEC.value}')
@@ -168,17 +167,15 @@ class EgocentricVideoRotator():
168
167
  for cnt, result in enumerate(pool.imap(constants, frm_list, chunksize=1)):
169
168
  if self.verbose:
170
169
  print(f"Rotate batch {result}/{self.core_cnt} complete...")
171
- pool.terminate()
172
- pool.join()
173
-
170
+ terminate_cpu_pool(pool=pool, force=False)
174
171
  concatenate_videos_in_folder(in_folder=temp_dir, save_path=self.save_path, remove_splits=True, gpu=self.gpu, verbose=self.verbose)
175
172
  video_timer.stop_timer()
176
173
  stdout_success(msg=f"Egocentric rotation video {self.save_path} complete", elapsed_time=video_timer.elapsed_time_str, source=self.__class__.__name__)
177
174
 
178
175
  if __name__ == "__main__":
179
- DATA_PATH = r"C:\Users\sroni\OneDrive\Desktop\rotate_ex\data\501_MA142_Gi_Saline_0513.csv"
180
- VIDEO_PATH = r"C:\Users\sroni\OneDrive\Desktop\rotate_ex\videos\501_MA142_Gi_Saline_0513.mp4"
181
- SAVE_PATH = r"C:\Users\sroni\OneDrive\Desktop\rotate_ex\videos\501_MA142_Gi_Saline_0513_rotated.mp4"
176
+ DATA_PATH = r"C:\Users\sroni\OneDrive\Desktop\desktop\rotate_ex\data\501_MA142_Gi_Saline_0513.csv"
177
+ VIDEO_PATH = r"C:\Users\sroni\OneDrive\Desktop\desktop\rotate_ex\videos\501_MA142_Gi_Saline_0513.mp4"
178
+ SAVE_PATH = r"C:\Users\sroni\OneDrive\Desktop\desktop\rotate_ex\videos\501_MA142_Gi_Saline_0513_rotated.mp4"
182
179
  ANCHOR_LOC = np.array([250, 250])
183
180
 
184
181
  df = read_df(file_path=DATA_PATH, file_type='csv')
@@ -186,5 +183,5 @@ if __name__ == "__main__":
186
183
  data = df[bp_cols].values.reshape(len(df), int(len(bp_cols)/2), 2).astype(np.int32)
187
184
 
188
185
  _, centers, rotation_vectors = egocentrically_align_pose(data=data, anchor_1_idx=5, anchor_2_idx=2, anchor_location=ANCHOR_LOC, direction=0)
189
- rotater = EgocentricVideoRotator(video_path=VIDEO_PATH, centers=centers, rotation_vectors=rotation_vectors, anchor_location=(400, 100), save_path=SAVE_PATH, verbose=True)
186
+ rotater = EgocentricVideoRotator(video_path=VIDEO_PATH, centers=centers, rotation_vectors=rotation_vectors, anchor_location=(400, 100), save_path=SAVE_PATH, verbose=True, core_cnt=16)
190
187
  rotater.run()
@@ -166,7 +166,7 @@ def convert_to_jpeg(path: Union[str, os.PathLike, List[Union[str, os.PathLike]]]
166
166
  dir, file_name, _ = get_fn_ext(filepath=file_path)
167
167
  save_path = os.path.join(save_dir, f'{file_name}.jpeg')
168
168
  if verbose:
169
- print(f"Converting file {file_cnt+1}/{len(file_paths)} ...")
169
+ print(f"Converting file {file_cnt+1}/{len(file_paths)} ({file_name}) ...")
170
170
  img = Image.open(file_path)
171
171
  if img.mode in ('RGBA', 'LA'): img = img.convert('RGB')
172
172
  img.save(save_path, format='JPEG', quality=quality)
@@ -218,7 +218,7 @@ def convert_to_bmp(path: Union[str, os.PathLike, List[Union[str, os.PathLike]]],
218
218
  dir, file_name, _ = get_fn_ext(filepath=file_path)
219
219
  save_path = os.path.join(save_dir, f'{file_name}.bmp')
220
220
  if verbose:
221
- print(f"Converting file {file_cnt + 1}/{len(file_paths)} ...")
221
+ print(f"Converting file {file_cnt + 1}/{len(file_paths)} ({file_name}) ...")
222
222
  img = Image.open(file_path)
223
223
  if img.mode in ('RGBA', 'LA'): img = img.convert('RGB')
224
224
  img.save(save_path, format='BMP')
@@ -557,8 +557,8 @@ def clahe_enhance_video_mp(file_path: Union[str, os.PathLike],
557
557
  tile_grid_size=tile_grid_size)
558
558
  for cnt, result in enumerate(pool.imap(constants, frm_idx, chunksize=1)):
559
559
  print(f'Batch {(result + 1)} / {core_cnt} complete...')
560
- pool.terminate()
561
- pool.join()
560
+
561
+ terminate_cpu_pool(pool=pool, force=False)
562
562
  print(f"Joining {video_meta_data['video_name']} multiprocessed video...")
563
563
  concatenate_videos_in_folder(in_folder=tempdir, save_path=save_path, remove_splits=True, gpu=gpu)
564
564
  video_timer.stop_timer()
@@ -3857,6 +3857,18 @@ def create_average_frm(video_path: Union[str, os.PathLike],
3857
3857
  """
3858
3858
  Create an image representing the average frame of a segment in a video or an entire video.
3859
3859
 
3860
+ .. seealso::
3861
+ See :func:`simba.data_processors.cuda.image.create_average_frm_cupy`, :func:`simba.data_processors.cuda.image.create_average_frm_cuda` for GPU acceleration.
3862
+ This one appears quicker than the GPU implementations...
3863
+
3864
+ .. csv-table::
3865
+ :header: EXPECTED RUNTIMES
3866
+ :file: ../../docs/tables/create_average_frame.csv
3867
+ :widths: 10, 45, 45
3868
+ :align: center
3869
+ :class: simba-table
3870
+ :header-rows: 1
3871
+
3860
3872
  .. video:: _static/img/create_average_frm_1.webm
3861
3873
  :width: 800
3862
3874
  :autoplay:
@@ -3882,10 +3894,6 @@ def create_average_frm(video_path: Union[str, os.PathLike],
3882
3894
  Either pass ``start_frm`` and ``end_frm`` OR ``start_time`` and ``end_time`` OR pass all four arguments as None.
3883
3895
  If all are None, then the entire video will be used to create the average frame.
3884
3896
 
3885
- .. seealso:
3886
- See :func:`simba.data_processors.cuda.image.create_average_frm_cupy`, :func:`simba.data_processors.cuda.image.create_average_frm_cuda` for GPU acceleration.
3887
- This one appears quicker than the GPU implementations...
3888
-
3889
3897
  :param Union[str, os.PathLike] video_path: The path to the video to create the average frame from. Default: None.
3890
3898
  :param Optional[int] start_frm: The first frame in the segment to create the average frame from. Default: None.
3891
3899
  :param Optional[int] end_frm: The last frame in the segment to create the average frame from. Default: None.
@@ -4844,8 +4852,7 @@ def get_video_slic(video_path: Union[str, os.PathLike],
4844
4852
  sigma=sigma)
4845
4853
  for cnt, core_batch in enumerate(pool.map(constants, frm_ranges, chunksize=1)):
4846
4854
  print(f'Core batch {core_batch} complete...')
4847
- pool.join()
4848
- pool.terminate()
4855
+ terminate_cpu_pool(pool=pool, force=False)
4849
4856
  timer.stop_timer()
4850
4857
  concatenate_videos_in_folder(in_folder=temp_folder, save_path=save_path)
4851
4858
  stdout_success(msg=f'SLIC video saved at {save_path}', elapsed_time=timer.elapsed_time_str)
@@ -5159,6 +5166,10 @@ def change_playback_speed_dir(data_dir: Union[str, os.PathLike],
5159
5166
 
5160
5167
 
5161
5168
 
5169
+
5170
+ #x = create_average_frm(video_path=r"D:\troubleshooting\mitra\project_folder\videos\average_cpu_test\20min.mp4", verbose=True)
5171
+
5172
+
5162
5173
  #change_playback_speed_dir(data_dir=r'E:\open_video\barnes_maze\test', speed=5)
5163
5174
 
5164
5175
 
@@ -13,6 +13,7 @@ import cv2
13
13
 
14
14
  from simba.utils.checks import (check_if_dir_exists, check_int, check_str,
15
15
  check_valid_boolean)
16
+ from simba.utils.data import terminate_cpu_pool
16
17
  from simba.utils.printing import SimbaTimer, stdout_success
17
18
  from simba.utils.read_write import (find_core_cnt, get_video_meta_data,
18
19
  read_frm_of_video)
@@ -117,8 +118,8 @@ def video_to_frames(video_path: Union[str, os.PathLike],
117
118
  for cnt, batch_id in enumerate(pool.imap(constants, frm_ids, chunksize=1)):
118
119
  if verbose:
119
120
  print(f'Video frame batch {batch_id} (of {core_cnt}) complete...')
120
- pool.join()
121
- pool.terminate()
121
+
122
+ terminate_cpu_pool(pool=pool, force=True)
122
123
  timer.stop_timer()
123
124
  if verbose:
124
125
  stdout_success(msg=f'All frames for video {video_path} saved in {save_dir}', elapsed_time=timer.elapsed_time_str)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: simba-uw-tf-dev
3
- Version: 4.6.1
3
+ Version: 4.6.3
4
4
  Summary: Toolkit for computer classification and analysis of behaviors in experimental animals
5
5
  Home-page: https://github.com/sgoldenlab/simba
6
6
  Author: Simon Nilsson, Jia Jie Choong, Sophia Hwang
@@ -7,7 +7,7 @@ scripts/make_qr_code.py,sha256=kRwIDxTpje8VFnSdiGWgetkJk1dKAe6HaQLZ-YqAehg,6503
7
7
  scripts/osf_download.py,sha256=245LvhkUaECzbAYh-QYK_Q5pO1MF-lta_e4OdFJHo9I,2435
8
8
  scripts/upgrade_simba_keep_configs.py,sha256=yk1hnt9of44FjGRINcis4RopUgNV_QIyRABv-sf--58,5274
9
9
  simba/.DS_Store,sha256=yMGLDvlm5TWUT_ePJnMtFflChocptQ5zbSINTYrioAw,20484
10
- simba/SimBA.py,sha256=LWzDOoRbGxGf1oTlK6OtnmFDJOmhBAjDYoDNB_VADUU,101270
10
+ simba/SimBA.py,sha256=MUjbsb4iIK6nFOPN4pXeBB0cfiV-kWD5y8tMGs9kx9Q,101274
11
11
  simba/SimBA_logo.ico,sha256=qq53eMXfA5Qfv7LINLCO47jSrcSY5ph4pXDdJZEz54g,243998
12
12
  simba/__init__.py,sha256=Zbw277SaA4dLpF3IDQnIjzOb-GWKgF-V6caod95b4YA,539
13
13
  simba/requirements.txt,sha256=Ou1KKYqIsOaqQ10UeqxTPorpHWBH5rTMGzpFif1VRWc,2072
@@ -181,6 +181,7 @@ simba/assets/icons/forward_large.png,sha256=-QyUgny_yU4g_2dHumBRtgGwSBj-Pj5g3J5o
181
181
  simba/assets/icons/four_squares.png,sha256=BphT6y0CwNvhWN4jVk649_H3QVIp2m_FyB38T9u6znk,640
182
182
  simba/assets/icons/fps.png,sha256=6EdSMr8Cf1Tub_qLlODkHLwDFyghT59g0Nc3Q7dwSNQ,4503
183
183
  simba/assets/icons/frames.png,sha256=qkF8nI9cc6vsWzIZh9lWACzQQ0K0l5VkxtAweMBbBMo,4804
184
+ simba/assets/icons/frames_2.png,sha256=GIlguV7GAQ_Y00g_V084UaXocLiucy04apENwiXxGdw,532
184
185
  simba/assets/icons/gamma.png,sha256=L4frUf_tgd2HXfl-ZCJqfql9jFv8PdclcER9h70GLrk,326
185
186
  simba/assets/icons/gantt_large.png,sha256=wr4Hlf0o4WiGhi36SH_Xk33KVtLXDMSYR8Lw-p_tr7I,1857
186
187
  simba/assets/icons/gantt_small.png,sha256=Or5AEPunTY0okYf4OJ4w7n6EbqdpzsAfh_vZXcPB9OU,1181
@@ -514,11 +515,11 @@ simba/data_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
514
515
  simba/data_processors/advanced_interpolator.py,sha256=p1Rv8D9bXwvvwaCqjkItO_JKUaUwRA9dyFwJhK484O4,15372
515
516
  simba/data_processors/advanced_smoothing.py,sha256=T_y-soZzH1gFkhmXTwTkbS9p-u1APd3gMtax71OdsOg,14359
516
517
  simba/data_processors/agg_clf_calculator.py,sha256=QR94LzQxrJ8eEyMZy4O5pSTgVUwrUUnzj1mK3tHcacQ,17362
517
- simba/data_processors/agg_clf_counter_mp.py,sha256=MEecrGM-peGRIqgyVFRzLz15JmuLytQeLA4bTsIy7XE,19909
518
+ simba/data_processors/agg_clf_counter_mp.py,sha256=rjjdJUGh6ODjwY3BtPK4AuK8XsoCoZHHxYtbE6q-vGk,19982
518
519
  simba/data_processors/blob_location_computer.py,sha256=NJ5ODuueYn3qGMtaLorq3Y02uMG0LXIv5Hfy4WJu-Z8,7812
519
520
  simba/data_processors/boolean_conditional_calculator.py,sha256=_uDuznm3JS7npqcNcmieH53ZOzoJ7mDqX8QwSaAWlIc,9685
520
521
  simba/data_processors/circling_detector.py,sha256=LLHulslIy6S1BdoCB40MxWmy8M25qscH7qmmrqv-Qc8,8936
521
- simba/data_processors/cue_light_analyzer.py,sha256=AdMmIlkPmpReS2tEPLay7N2u0DsECVF6dnQcu8kLZ3I,15120
522
+ simba/data_processors/cue_light_analyzer.py,sha256=NeiYq5gUKxsZrmIewfpyPjivwRQis0vKaVyRPHd8vs4,15082
522
523
  simba/data_processors/cue_light_clf_statistics.py,sha256=Msv1xe3tq4yn3j5sFswso-vS8UegcFC8wR4Ln0RgIoA,8582
523
524
  simba/data_processors/cue_light_movement_statistics.py,sha256=xQKJNdA2i1MOhMwct-MdTbJPPP75O-aOnHT292Zl1c4,9058
524
525
  simba/data_processors/directing_animal_to_bodypart.py,sha256=xsB5jiAUg4sIYBhEyINvxofJo6xL2zP554t_ysi7MCQ,11079
@@ -551,7 +552,7 @@ simba/data_processors/cuda/circular_statistics.py,sha256=EYhnkL0Fe_Ec9PU2kciv7Ry
551
552
  simba/data_processors/cuda/create_shap_log.py,sha256=yQlWb1RKjagwCKtahifSw8Esr4VOVsTuCAx7fLSfSvU,9603
552
553
  simba/data_processors/cuda/data.py,sha256=tZLunARZVlk1plh7atR3PY5QADMPZXfbYE92uvYkx1g,11831
553
554
  simba/data_processors/cuda/geometry.py,sha256=GcM2Pdn9fxcsaiY_aswN9BpgvTxG34AIG5239Tlk5PQ,24631
554
- simba/data_processors/cuda/image.py,sha256=ajlyBRY3rGijwCoKk6mamFLnaglmbOywi4oT9GQCbAI,85003
555
+ simba/data_processors/cuda/image.py,sha256=bygbKdztyD0mpZuvUZYA7uaVs5CoDVT9urGjKhKRZfU,85178
555
556
  simba/data_processors/cuda/statistics.py,sha256=G9jVSWQThf_jMcNsOxeM20o4wMFSteJamZivqYcqyMQ,45951
556
557
  simba/data_processors/cuda/timeseries.py,sha256=12UWvjSrnriOsT9UmDJJVyWSito_ueIrH1Gy5m1cCCA,16416
557
558
  simba/data_processors/cuda/utils.py,sha256=0Z51kEItgDl9MfPQ9_jvClzR2_pvIWxFkLcjb3xdDE8,8584
@@ -617,15 +618,15 @@ simba/mixins/circular_statistics.py,sha256=yzYRKsuY3xK_LgDC7rpu4OQnbSQpjXO0EiLv4
617
618
  simba/mixins/config_reader.py,sha256=oXxrIm09k236EIuLTd5I7hzOclk-atPwaqc2g8PFmTI,52050
618
619
  simba/mixins/feature_extraction_mixin.py,sha256=rUwHEG3wKpyreme8nXAeBEhktHG_Q75v3OJI2aFOOOA,59587
619
620
  simba/mixins/feature_extraction_supplement_mixin.py,sha256=6dPi1WFi26y-rmccsMgDe5sULm4fTQaBcSiH91DEkN0,44770
620
- simba/mixins/geometry_mixin.py,sha256=8r5dvMe1tNqqrvqQFdB-TKRu-SJ4v264fggGOOIkfUs,234487
621
- simba/mixins/image_mixin.py,sha256=IcNPcGwLxIm-kho5Bqv9CrIPz--AHX4vLS7QMUwDZvI,117763
621
+ simba/mixins/geometry_mixin.py,sha256=-dsittLxTLJzP817Uh1wnR2yfPkiJ2m9pL58VqUdUv0,234551
622
+ simba/mixins/image_mixin.py,sha256=Vp40GIohQLB0QjRCYnx6p2NpQvjGKof8peYelUGeiFA,117636
622
623
  simba/mixins/network_mixin.py,sha256=s_OsF6VSlsa2vb5sysDQKErLp4D5EfBF1MVQ_yKWC_Y,41125
623
624
  simba/mixins/plotting_mixin.py,sha256=3sgEYn-tVTRzrg_k5eFGeyp0Xb2c8HnEnyqE16cV0Pw,94837
624
625
  simba/mixins/pop_up_mixin.py,sha256=tAKC3Axp1jgQ8VH2GfvKO5HbLUpZzo_aWou2xS-SYxc,24701
625
626
  simba/mixins/pose_importer_mixin.py,sha256=bYl17qQcJAdd93_q-tDof8V1f5-OGeI9id7K8YGmN1E,22358
626
627
  simba/mixins/statistics_mixin.py,sha256=TTfVSIDIrFmq_MBd_Mu_XLgGQnZB-vZhlzRcqjecaYM,271030
627
628
  simba/mixins/timeseries_features_mixin.py,sha256=O3RMAfOHNSTr1cGEGDcaOCE8wpcKrDD_1rRbbqZb5yU,139305
628
- simba/mixins/train_model_mixin.py,sha256=T8mvB5Clvu5avDNASmn23OPY6M_J6P8L6NJvlAHapXk,174937
629
+ simba/mixins/train_model_mixin.py,sha256=d9iESYZmF1E888I82qwUirtf-xTvJfvhGYSIClKUtsY,174970
629
630
  simba/mixins/unsupervised_mixin.py,sha256=2R1pV4UxFxxwQcM_PzrdQNcx3NMcLDhLu4llGZUTDfY,5370
630
631
  simba/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
631
632
  simba/model/grid_search_multiclass_rf.py,sha256=NEneqrtsaZmybUNqDGJ1E3CwCSy4z34Cv7H8CG6-WGQ,16543
@@ -656,51 +657,51 @@ simba/outlier_tools/outlier_corrector_movement_mp.py,sha256=FVtEFt3rZIFDWl7ljddP
656
657
  simba/outlier_tools/skip_outlier_correction.py,sha256=KNVSnhpJ7kROa0jALgZJv8lJjN8DN5lNGMLNXpasvyw,2584
657
658
  simba/plotting/.DS_Store,sha256=ypUfSvW8NoWzmtXtzErKXxo-mQf4-T8F8B8mrpnPrEY,6148
658
659
  simba/plotting/ROI_feature_visualizer.py,sha256=evDHQ-OEp4Lt-mBHoaA4StRSiVWyqm2CIyKdFxEt1L0,19025
659
- simba/plotting/ROI_feature_visualizer_mp.py,sha256=JK6CVps-eqOKSFeeNg8kgL28GmLtSUqaxTH0B8HsdBc,27430
660
+ simba/plotting/ROI_feature_visualizer_mp.py,sha256=bscn29if3ZMfMXlAZpaNEG3kLVm0TIuoqFmiLEwkCDg,27387
660
661
  simba/plotting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
661
662
  simba/plotting/blob_plotter.py,sha256=gdz0Dw9Q0hxSWVgOB14umKb4Bo9FWhtf7-MpjElQPYU,8045
662
663
  simba/plotting/blob_visualizer.py,sha256=sG-ZRR1xIiHw5rCOh_8SQKOtSUvB4yRUVhHDpJJoSYw,12678
663
664
  simba/plotting/circular_feature_overlay_plotter.py,sha256=FWQWUsEsFuTHdHKtLbSxjTo9Lr7-vxVkevTaUguWssc,9549
664
665
  simba/plotting/circular_plotting.py,sha256=UUCAXbAsylHzA4x9EKgs0dFD7C-vrIzsU5_EJ81dUfk,8987
665
666
  simba/plotting/clf_validator.py,sha256=HxKLidM-nyj1uODuMbRK2cQp7HWTc2pM7u9sfKCNm6M,12609
666
- simba/plotting/clf_validator_mp.py,sha256=XpE0AUQv9C8TkomPxvejP_iYqf5REfdx2aiRdp_SIjI,17685
667
- simba/plotting/cue_light_visualizer.py,sha256=XQKGzERV4wcR7Hs-mdO7DXEiizjvdhVTDjQpqVCN8SM,14802
667
+ simba/plotting/clf_validator_mp.py,sha256=OfqY0lR1uCYGPTDKzqLvuQvDPiiQfyDBCiT-biR0LCI,17674
668
+ simba/plotting/cue_light_visualizer.py,sha256=bEl7sZZu4iCetJrDya46ZkiBR1eY2tfo0afuC5dWDUw,14803
668
669
  simba/plotting/data_plotter.py,sha256=CK8pqBtRnSNHbQ2YwDP_gF7U1Bg_5XzEBLlUrEAkw3I,15261
669
670
  simba/plotting/directing_animals_to_bodypart_visualizer.py,sha256=bWcovB7Bm9Qck3a03XfL0NDcbbhLI8kEtdy3DKeDAn0,8719
670
671
  simba/plotting/directing_animals_visualizer.py,sha256=Zt7zYPSIW8-u3BMc2rwOj5ry3lDtc292MNOieju3TFE,14754
671
- simba/plotting/directing_animals_visualizer_mp.py,sha256=ul1o7JOL5HDC6fyrs2LY6jqXRLZ8PHDcR3uMyALo-0E,18005
672
+ simba/plotting/directing_animals_visualizer_mp.py,sha256=tIAnTgy8fE9IyOIFSeN1J1uHan_xKLTLQNvfICN4ZPM,18026
672
673
  simba/plotting/distance_plotter.py,sha256=Qa4sVjw43NTnaqW-ge9dDx4i0_ElSmoYBI-C1tKGeAA,12066
673
- simba/plotting/distance_plotter_mp.py,sha256=eQzFg-C2GyTTv2Jq_L6I81_UJNkUvcAsG0SOloCzxkk,16998
674
+ simba/plotting/distance_plotter_mp.py,sha256=7tbp63Jn9JGkox0fCaqeunE3027pEl0xI7uNK51cMH8,17422
674
675
  simba/plotting/ez_path_plot.py,sha256=OSQSniIKdr55iO5-BMqmrgnEOfLIjxq0-ojrJn1y7lE,10350
675
- simba/plotting/frame_mergerer_ffmpeg.py,sha256=izD-tOF-5zODn4BPEkQ7drHcUqW2RNMpO7S0exbdWZw,8348
676
+ simba/plotting/frame_mergerer_ffmpeg.py,sha256=AqfUQ_Lx83VfOZbz89qa1tM1WK8ETNhNITPTjnTqqeY,8485
676
677
  simba/plotting/gantt_creator.py,sha256=mbTonMIbhdHHGh9e4zzaLljp2haoKWxgwfWwZ2IVh0s,11297
677
- simba/plotting/gantt_creator_mp.py,sha256=B-gkBBCDHIGJpNi9mLfIhYkOYJevHEPia8tVT2NfoRU,15055
678
+ simba/plotting/gantt_creator_mp.py,sha256=wjM-NL-UCGXnl5E3Pc-RcQW4ek2pHge8ShzJCaLdgrA,16635
678
679
  simba/plotting/gantt_plotly.py,sha256=s727fBblZnMksHvJpmbb4_G_Eq8J3bMhlNzyL1xap_M,8406
679
- simba/plotting/geometry_plotter.py,sha256=HnmHPU6wEo4y1gd7ELZUcEz21JfCbAjHhfX85wNP0bE,15242
680
+ simba/plotting/geometry_plotter.py,sha256=Jsl_695-ZWcba9_c3MiXq6S8MufWsKUcaGbCv9HYSoo,15499
680
681
  simba/plotting/heat_mapper_clf.py,sha256=rYFWuBS3v8v14EnXhaKKzPml4lJzkPBP5FJ8RxdnKik,10675
681
- simba/plotting/heat_mapper_clf_mp.py,sha256=3HfhgDzDy7pe16eHT3Ik7DWr0kSpIn2huBLHPa0bMxs,15859
682
+ simba/plotting/heat_mapper_clf_mp.py,sha256=v-hTtW4BjnB88kO5dhtKmnAxuCihbcAUgK2M5ptfwtI,15849
682
683
  simba/plotting/heat_mapper_location.py,sha256=j134hrFgpqPJ4tEpjVaMPw9zFwrmxbjj3KGSubYHs9o,12813
683
- simba/plotting/heat_mapper_location_mp.py,sha256=LlAIWnowBxzBKKHOPntjdlgrbr4aPDdYv9L4L7EbSv8,15875
684
+ simba/plotting/heat_mapper_location_mp.py,sha256=zrxVh2o7dhdDUyZqbxhyo-fHIftAiKvE1fW41JWE_VQ,15917
684
685
  simba/plotting/interactive_probability_grapher.py,sha256=5nROkdhKuxCKtE4FbgYFX3CbRchQo1-rS0FrKWaaSgM,12726
685
- simba/plotting/light_dark_box_plotter.py,sha256=5Xm1uuXnx_S6vP2rdkuxM17xOkJyOUn8mOD3W8v56C8,12797
686
+ simba/plotting/light_dark_box_plotter.py,sha256=4XJI7RO8MFHyRzO2VDvtzdrFDQTmV7XuXDHj2iAUQoA,12847
686
687
  simba/plotting/path_plotter.py,sha256=kErjJweSVUypg41mCPBkHq26a7oJJf4Sd5HeN7rY1rU,25485
687
- simba/plotting/path_plotter_mp.py,sha256=aTxxMSfVZKndi7TpCcY3HJMgUIrY9wc--Uk9d409WtM,31872
688
+ simba/plotting/path_plotter_mp.py,sha256=1N0uR-EoSyKHvppSJNfRhLcTKKWKko_UNKRtO9rDRJg,31901
688
689
  simba/plotting/plot_clf_results.py,sha256=MLm_S42RPvVIeng7KyrAa9z0aS5PGFSV4Pm9VCy3M18,22895
689
- simba/plotting/plot_clf_results_mp.py,sha256=T6udnm0v55kFYRCbQpP1MWyNBv8Z_uI1AqHuQNvKT-w,31785
690
+ simba/plotting/plot_clf_results_mp.py,sha256=46qiq9k5dD8wZBRfvCYThkYiPnvmeCEKZy2XEp2N3h4,32340
690
691
  simba/plotting/pose_plotter.py,sha256=aH48s-loMOy7Lyor3Z0hF6q8tgXeGBg-Mm_0ICONz2I,9145
691
- simba/plotting/pose_plotter_mp.py,sha256=0WEAakkAuZqTXUHBWQzrJvMnQSGAhCLFfFC2SUIXuM4,13675
692
+ simba/plotting/pose_plotter_mp.py,sha256=VcWp6hP-z1tUYH0sGyIg04YzSTDH3uYLPbqeT7Dr4Xk,13667
692
693
  simba/plotting/probability_plot_creator.py,sha256=8BHYtCtPXungLxzI0ZkCKUoDhuYBJsGefsChzHwrDLI,11878
693
- simba/plotting/probability_plot_creator_mp.py,sha256=AL_tLA3dpfGWTX--RtxfTLgdDZ8uJVs_ZKHQA3fBQcw,17046
694
+ simba/plotting/probability_plot_creator_mp.py,sha256=GVa_vaVTeBIBYHycg2UF1G4rOPvZe3BfJPl4cSdWkTs,17380
694
695
  simba/plotting/roi_plotter.py,sha256=ApMdsfeCm5iFbiCZWn7eUfpfXTTzXmcEB_j3nCbod6o,25693
695
- simba/plotting/roi_plotter_mp.py,sha256=sUuiwo03roENoEEWApXaTmQraRdSmju8OCf0TfoFPeY,32710
696
+ simba/plotting/roi_plotter_mp.py,sha256=xQTGa1niRqkU4EwPc6aFmYuZVmdux3gkxULDi14bOBc,32856
696
697
  simba/plotting/sam_plotter.py,sha256=XAQuFv-GJkTOno-PeEemUaz0CL83QH1SygJ6Cf1UsgI,6507
697
698
  simba/plotting/shap_agg_stats_visualizer.py,sha256=_SqN6vi60JvjTnr2FpxfDdAnGHwuad_ad4TxKQ6tRBY,15614
698
699
  simba/plotting/single_run_model_validation_video.py,sha256=75tP0f6UFK-ZpGDWxqLfaWlLrDybkBlEBoN_eKuRTBg,25973
699
- simba/plotting/single_run_model_validation_video_mp.py,sha256=4vIi8sFdEwRsjrwU7zqci3IgQMjq3zFhQ35qWA8ikLw,27042
700
- simba/plotting/spontaneous_alternation_plotter.py,sha256=ymuEPkBOLUBPutfXSYShoxcEUzmAkKQQJm3a1lN7j2o,13091
701
- simba/plotting/yolo_pose_track_visualizer.py,sha256=VsnJmv9jAVbP-Rgo-hGVjQSPr_NX53RtOjejeKOYmoo,16834
702
- simba/plotting/yolo_pose_visualizer.py,sha256=gTv8Z6YgdYDQu7pST3faQwknXkvRkMtkZ6E5OPll0Os,25437
703
- simba/plotting/yolo_seg_visualizer.py,sha256=uDGeiDDaE4ebno74sKam07bNf2lYfHoMzlkQY88yKxA,9196
700
+ simba/plotting/single_run_model_validation_video_mp.py,sha256=Mzheon7Mqn_tG11mGcGO_HxHTE_VbMOBmTW1B3pDp_8,27507
701
+ simba/plotting/spontaneous_alternation_plotter.py,sha256=HIgUEMhPCLq7qNXowbFp0bgCPLTvvwf8_DwlOiuWqA8,13117
702
+ simba/plotting/yolo_pose_track_visualizer.py,sha256=uNQIHOPY-mEqgWY6ufkloedZGIgRCB9vyueG2bErVBc,17328
703
+ simba/plotting/yolo_pose_visualizer.py,sha256=_iYELRtBNs6xJze-fyORdoqvdTtswtTvWYVZCX5sDMs,25510
704
+ simba/plotting/yolo_seg_visualizer.py,sha256=JoGvmESNgqJI9nxId-GVt1mIGoF12Jx3seclz6lxmnA,9221
704
705
  simba/plotting/yolo_visualize.py,sha256=6HqMzkboENti6vKrjAzOm19YBrkLFZVbH3SLy-xgBNw,6043
705
706
  simba/plotting/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
706
707
  simba/plotting/tools/tkinter_tools.py,sha256=TSLSRvNqTtQz6IYLFLeQ5w72UU1r6X43_ywYOQLAQT4,6895
@@ -761,9 +762,9 @@ simba/roi_tools/interactive_modifier_ui.py,sha256=8oAtparRN8wEi1JS_jPIVt6ZvS0Agi
761
762
  simba/roi_tools/interactive_roi_bufferer.py,sha256=IcEVv1R8K2-zmw3ouK4sk3Tk46TZbUg0ElV436tK4ec,11604
762
763
  simba/roi_tools/interactive_roi_modifier_tkinter.py,sha256=_F3vRcYN8obggFdAlSt2L6ZiwF1Atkci-AAqldDkx14,41633
763
764
  simba/roi_tools/roi_aggregate_statistics_analyzer.py,sha256=qNSKublSxPuMatqpUplEU5chRg1uycM-pYMZMwj9GkI,22303
764
- simba/roi_tools/roi_aggregate_stats_mp.py,sha256=Ubd-YACz9O8HKQJHgmuDdTcgdTPZYu0h3amk3eiBBrY,23440
765
+ simba/roi_tools/roi_aggregate_stats_mp.py,sha256=48EuqRBwbWPSaEE4lMKFrLOD6_CQNlUW2frX6melis4,23500
765
766
  simba/roi_tools/roi_clf_calculator.py,sha256=pOvUbKCPSPOEkAoxeJ_LQM4PXHODkp8IU56iwghm4qo,17634
766
- simba/roi_tools/roi_clf_calculator_mp.py,sha256=oZXgrZU3-89wX01Xm0o1-JyL_D0v3ymADNAwLkQTRFY,20572
767
+ simba/roi_tools/roi_clf_calculator_mp.py,sha256=nYIKTqTAX68sZwDO-CLkSPp1HyBd3P20jk8dyj-VM-I,20630
767
768
  simba/roi_tools/roi_ruler.py,sha256=3sBFBQx7gwKAw9Pk_5c4NxAdFwSEZusYEX62xKNo2JU,10956
768
769
  simba/roi_tools/roi_selector_circle_tkinter.py,sha256=aS_1g8bK7cL7SAyvHFeSyGJf9ODYYqmWkoVEtUzKp9Y,4859
769
770
  simba/roi_tools/roi_selector_polygon_tkinter.py,sha256=uZ7fi-2sOjHYcjYHTSOcubHf2mxfGO8CHv79Ej2htW4,6148
@@ -966,6 +967,7 @@ simba/sandbox/geometry_ex.py,sha256=oi5opD3Re3-5AjR1tKNGk2gw3Rt9wm1yQ9J_bYW3_sw,
966
967
  simba/sandbox/geometry_plotter.py,sha256=cDiT2x4dppwYLdAw4klsaEqgsS53xqSej0_7iulvefw,833
967
968
  simba/sandbox/get_confusion_matrix.py,sha256=OdatSeu1ine9RU_fdvt8V--O8nQSa7MQKnWUwa02v7g,155
968
969
  simba/sandbox/get_convex_hull_cuda.py,sha256=cXC8CkJZ8JaqT4imago_e_Tnk7jfWZ19GPzYmNpq6YM,461
970
+ simba/sandbox/get_cpu_pool.py,sha256=iSpLfmpsPtNl5QwwLOHi7luMYe8cf1aF4iS_la7tBWs,119
969
971
  simba/sandbox/get_playback_speed.py,sha256=AJcts3-TKb9bI_T4NdIdNXFcPg0SyKYlsMIwCo_773M,3154
970
972
  simba/sandbox/get_sequences.py,sha256=81WNJbTKvO2UVJ64wjeEdNtoIuGNe9_I01U8VhFTKS8,2573
971
973
  simba/sandbox/get_video_meta_data_ffmpeg.py,sha256=5fCsXVchLuhu-tq1D6y8f5KeHrcxOTJQ1vF6p3d5ggY,2784
@@ -1254,6 +1256,7 @@ simba/sandbox/ares/show_graph.py,sha256=ibOEXmtTyBL6TkBKSq7xYvnAZcmI3Fmwk67E-7x9
1254
1256
  simba/sandbox/ares/sleap_to_bbox.py,sha256=lpdCpn7-aBLlIb7Spc11Tzf36RhPnUrjIakV8RWtDFY,2254
1255
1257
  simba/sandbox/ares/to_graphs.py,sha256=kzxE8hKm8794Rer6XNu88M6xGgQ9OmIzzfCIY3yxlBo,1514
1256
1258
  simba/sandbox/cuda/__init__.py,sha256=s8rocDErFqpg0Gaapfmh6NP4fr0dmq8E03boCYuAIuM,2905
1259
+ simba/sandbox/cuda/egocentric_rotator.py,sha256=m6zZFaSrADF4CoDwTPAYTaZDu98bP_kFp5mWTKxM7dw,21123
1257
1260
  simba/sandbox/cuda/jitted_line_crosses_to_static_targets.py,sha256=zaO7R8nE64QQlzjTZDDFP0LqOkMTjxYPwUAmvejQSXA,4907
1258
1261
  simba/sandbox/maplight/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1259
1262
  simba/sandbox/maplight/add_videos_to_dlc_config.py,sha256=QUsdlOpc6XcF46vuHOxgbhY66A2lj3L6m84OD7Q9uwY,1176
@@ -1352,7 +1355,7 @@ simba/ui/import_videos_frame.py,sha256=i0LnQzPLFne9dA_nvpVWAHYGmi0aTRXpiHzEog_-R
1352
1355
  simba/ui/machine_model_settings_ui.py,sha256=hTfpBxtfYGH9Rsf3JdQ5Sc8z874tYAoZefvjF1JD6gA,38292
1353
1356
  simba/ui/ml_settings_frm.py,sha256=f1-E6pEGjWJVF3I6n0azO9zAnsskpZjInViguHIDntw,3101
1354
1357
  simba/ui/px_to_mm_ui.py,sha256=ETedZPFkloU0l3JeGnhiSIAsGBQzzv0YrDWtiVGOmJ4,9387
1355
- simba/ui/tkinter_functions.py,sha256=7d4lX6-7JoMMf8x2kkw4AxekV5Hkie9R-cGxlLntAkg,41016
1358
+ simba/ui/tkinter_functions.py,sha256=p880LwVcmnJgtA9Ya_iQdTBsP7p3dVLfF-zCQ7VnHnM,41222
1356
1359
  simba/ui/user_defined_pose_creator.py,sha256=QAfdp8r225DONLaCgQJe6kXiZZLj20VQCLJEnCvZsKs,9249
1357
1360
  simba/ui/video_info_ui.py,sha256=ld_fN-3vCYJDFv1t9i5B-VVtoaBCspDmiDUIfOSJb_8,17262
1358
1361
  simba/ui/pop_ups/.DS_Store,sha256=4PUcfpTZzBMd8yz2YahGab5mqPUVIpvdxzjvQ2MmsBY,6148
@@ -1367,7 +1370,7 @@ simba/ui/pop_ups/blob_visualizer_pop_up.py,sha256=6OzJMROHowZWIcI5FL9a8uIo70K_dZ
1367
1370
  simba/ui/pop_ups/boolean_conditional_slicer_pup_up.py,sha256=q3IGjO4rwCCM8ODS2O7CueNRPFvSkJLHAgcV31sE0y4,5506
1368
1371
  simba/ui/pop_ups/change_speed_popup.py,sha256=59Ck0kzLTQpE5AXURVRcNdK-a0kFOnwvTE0RZjs0lfI,5940
1369
1372
  simba/ui/pop_ups/check_videos_seekable_pop_up.py,sha256=WU7UnwiJAFzhCh_fXqg4_B-BDm1mhM3VePcCtb391vA,4247
1370
- simba/ui/pop_ups/clf_add_remove_print_pop_up.py,sha256=bvAOyQ5YTfbs1_py7nm3MM1edp8ENbQjgh4v8c7uK2Y,7065
1373
+ simba/ui/pop_ups/clf_add_remove_print_pop_up.py,sha256=7zYWW3X1OHQxuUVOiVt27h0J5L3qVaJNv23AFxTRVUw,7147
1371
1374
  simba/ui/pop_ups/clf_annotation_counts_pop_up.py,sha256=8HeTc4XJt_yHwm7UqoKAQmXSOAdvRd70h2AbR-JzcWM,1959
1372
1375
  simba/ui/pop_ups/clf_by_roi_pop_up.py,sha256=95oTHZXchehmuOrP9cxJkBzyLqDcN8ZJLqUSZ0Yh98k,8709
1373
1376
  simba/ui/pop_ups/clf_by_timebins_pop_up.py,sha256=1MHhaQWEytt0EEioa40nDiGfooUGo89GSO4DTNJ1rJc,7791
@@ -1394,7 +1397,7 @@ simba/ui/pop_ups/dlc_h5_inference_to_yolo_popup.py,sha256=WMe9qbpnLJ8LsWlNxAwkIF
1394
1397
  simba/ui/pop_ups/dlc_to_labelme_popup.py,sha256=Cx4zB7dUjGtGAJwythv3foYjr751EvpXz1yT5iG8S2A,3017
1395
1398
  simba/ui/pop_ups/dlc_to_yolo_keypoints_popup.py,sha256=DMl-fZKennbMyrHIyRnJ_FnbRFsTbBpDYGPiB9rZ1hc,5256
1396
1399
  simba/ui/pop_ups/duplicate_rois_by_source_target_popup.py,sha256=VRJ29FxkYQOCQ8GwQUQK9DRgaWNnw6WnImu_mIGgi9g,12429
1397
- simba/ui/pop_ups/egocentric_alignment_pop_up.py,sha256=z-XJG7GB4rBBxLFdJ4ZauFy7fwAhmPLCFx7IUu1ju2w,6971
1400
+ simba/ui/pop_ups/egocentric_alignment_pop_up.py,sha256=BJEQXOxo0yuyj4nEiH0YeYuSsq5-3KfaE_DXUEcmU-Y,7085
1398
1401
  simba/ui/pop_ups/extract_annotation_frames_pop_up.py,sha256=IxSed3wZoDftHs7YfykJzHgg8_SiCqU1t_1Us9XGgWg,5975
1399
1402
  simba/ui/pop_ups/fsttc_pop_up.py,sha256=GF1FLq-j-GfWNiUcRWLhRnRU5nxhOJI-2xDn3JA5y3U,3311
1400
1403
  simba/ui/pop_ups/gantt_pop_up.py,sha256=gkqg74sxjHsaB-FHLIXW-275wuZMwjC7cPKfrn0jVOA,9234
@@ -1414,7 +1417,7 @@ simba/ui/pop_ups/merge_coco_keypoint_files_pop_up.py,sha256=xBqrzHYB3-Sgc-OSQkqk
1414
1417
  simba/ui/pop_ups/min_max_draw_size_popup.py,sha256=N1EWuffpMdTuVMic6-sK_9mjuc_bRunhMPWRo6y3YC4,4753
1415
1418
  simba/ui/pop_ups/movement_analysis_pop_up.py,sha256=ftjp9Agdo9OaGbC_IGLqhivtLB6sN_P9jCUfsTLQUOg,6326
1416
1419
  simba/ui/pop_ups/movement_analysis_time_bins_pop_up.py,sha256=rIRXw1gbHyx37lqctf9pz5vUemzN1c4ywKLfRcywnT4,9310
1417
- simba/ui/pop_ups/multiple_videos_to_frames_popup.py,sha256=lXHvbfiemWKlkDkYRKebGkr-CKsMWdo0UoOgmVVMVkI,5504
1420
+ simba/ui/pop_ups/multiple_videos_to_frames_popup.py,sha256=bNOgIzgbcM3B7m_QZ_aaj-6jrvhyvc60osmz1RInnP0,5667
1418
1421
  simba/ui/pop_ups/mutual_exclusivity_pop_up.py,sha256=Rp_DchWtlVWUVL47q2HaeUc0mUpgonuiHRj4Och1sPQ,11862
1419
1422
  simba/ui/pop_ups/outlier_settings_pop_up.py,sha256=L7FPWc0dDOk66UM_-nuEFGIukdELp6ZCGj74615UP6k,7365
1420
1423
  simba/ui/pop_ups/path_plot_pop_up.py,sha256=YffCHDw20Yb3ng8rZAiLPVjt8ShIxt-8AG3fgE80e1I,24721
@@ -1438,7 +1441,7 @@ simba/ui/pop_ups/set_machine_model_parameters_pop_up.py,sha256=hr3ekYbKZ_7NxeFbQ
1438
1441
  simba/ui/pop_ups/severity_analysis_pop_up.py,sha256=WkD85uom2qrsYwc-Ykppy9gEuI1jhCgMhoux9ayejn4,9015
1439
1442
  simba/ui/pop_ups/simba_rois_to_yolo_pop_up.py,sha256=1JI6iBjMFuO9C2-TWSL6wKVKYWCD0zIHAHsVVuIUJPc,4423
1440
1443
  simba/ui/pop_ups/simba_to_yolo_keypoints_popup.py,sha256=9wgNCJm0C6ieUyY0vDy-w6j-_EZOEBCUfyRyUh2Nx7E,5703
1441
- simba/ui/pop_ups/single_video_to_frames_popup.py,sha256=Yhb3xVyE0cMFIhpa5V4-ydUp48m9z8ETjECiHN33NgY,5160
1444
+ simba/ui/pop_ups/single_video_to_frames_popup.py,sha256=--Ex2j7sYdWbHC5Ea-Lf_FInCEXZShlzS9Idzt1s7f4,5326
1442
1445
  simba/ui/pop_ups/sleap_annotations_to_yolo_popup.py,sha256=rcHZCZIh4jZX8zPzcY9NRlx2rTjSVWLNdQIDK52Zs6Q,4863
1443
1446
  simba/ui/pop_ups/sleap_csv_predictions_to_yolo_popup.py,sha256=_sY7scL_Eb7duGqkYT2qwOfs7mB8ndMaCQvIZDNUKXo,7048
1444
1447
  simba/ui/pop_ups/sleap_h5_inference_to_yolo_popup.py,sha256=B9ZROIFDL2TOQNkKXsyllOAeqzCDdHQ3E6bPu56xCiU,6609
@@ -1449,7 +1452,7 @@ simba/ui/pop_ups/subset_feature_extractor_pop_up.py,sha256=M24iJSqh-DpYdpw1pSaIm
1449
1452
  simba/ui/pop_ups/targeted_annotation_clips_pop_up.py,sha256=PFh5ua2f_OMQ1Pth9Ha8Fo5lTPZNQV3bMnRGEoAPhTQ,6997
1450
1453
  simba/ui/pop_ups/third_party_annotator_appender_pop_up.py,sha256=Xnha2UwM-08djObCkL_EXK2L4pernyipzbyNKQvX5aQ,7694
1451
1454
  simba/ui/pop_ups/validation_plot_pop_up.py,sha256=yIo_el2dR_84ZAh_-2fYFg-BJDG0Eip_P_o9vzTQRkk,12174
1452
- simba/ui/pop_ups/video_processing_pop_up.py,sha256=n-0bmrZnmuwZ6dzfdtUzo_vL14o7t0qce60uFnCJllY,236306
1455
+ simba/ui/pop_ups/video_processing_pop_up.py,sha256=KEvZ8HuquNFg0fNx3Apgp2GD7Y9GAeFxQ0IVwj8RDLE,237373
1453
1456
  simba/ui/pop_ups/visualize_pose_in_dir_pop_up.py,sha256=PpFs0zaqF4dnHJ_yH-PqYgsjAyxYPVP427Soj-kYtM0,8838
1454
1457
  simba/ui/pop_ups/yolo_inference_popup.py,sha256=Ymi3QZVkVwUc6gNtG8kZwETpiMjT_tY3HE4Y3293Z6k,14676
1455
1458
  simba/ui/pop_ups/yolo_plot_results.py,sha256=yi9D3WquDu4L8PWJLZsODulojgakfy7Dzh_CpYK6Vgk,10096
@@ -1493,12 +1496,12 @@ simba/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1493
1496
  simba/utils/checks.py,sha256=e_rcZymSqzhw6kiBjeMVH3zKAV2jUaCrbrwglYho3YY,117243
1494
1497
  simba/utils/config_creator.py,sha256=KxBdMOTf85bnAf9KprfIebzBbr5JlZl2EH0c-UMW45Y,14894
1495
1498
  simba/utils/custom_feature_extractor.py,sha256=Zj5pNDAISuPEtzQtIvnkynHfYh3nzdQtSSzN3_vJeEk,11871
1496
- simba/utils/data.py,sha256=h2h6XwB7b4aYYiHvi0R8etfk0aPzU-3yYtH0aVeqycs,96206
1497
- simba/utils/enums.py,sha256=BB2b5_HzOnYyEKwf_8Tso2T9KxYxuPjBd42nle-aZws,38649
1499
+ simba/utils/data.py,sha256=Zc3BrVGddEgZkm7yvVaBMot8HBz12d_nhHaXhrWB0UM,100827
1500
+ simba/utils/enums.py,sha256=ZR2175N06ZHZNiHk8n757T-WGyt1-55LLpcg3Sbb91k,38668
1498
1501
  simba/utils/errors.py,sha256=GeEF9K_9EWHQqZP-ptTM8ABmb9o0SCnec52t0Qw5Tno,18237
1499
1502
  simba/utils/lookups.py,sha256=MTzHIHJpiOtFSTVNQCGMyfY_ItEaurc69QrtCQIfRh8,48918
1500
- simba/utils/printing.py,sha256=b9tBVL93KgJX1nWVcKdxBB1uEBHXAs9Vo3QKXN-8v3k,4880
1501
- simba/utils/read_write.py,sha256=EIh0f7taaUuYZqx-fQDdDyjS5hynTvmpkIPAEKlQxPA,183459
1503
+ simba/utils/printing.py,sha256=L13f5prOnuswDqa4XttEBoQ3y3wNLm0W_ZvyxYQTbYw,5230
1504
+ simba/utils/read_write.py,sha256=lKLG-MEgXRtN7NWaLlOa356rUFgdNrWbgtUHrISPa_w,187302
1502
1505
  simba/utils/warnings.py,sha256=K7w1RiDL4Un7rGaabOVCGc9fHcaKxk66iZyNLS_AtOE,8121
1503
1506
  simba/utils/yolo.py,sha256=4RTC1JYnZ7WgaWmf70cZATbUtjRQfJ1HyhJhglpAEcs,18482
1504
1507
  simba/utils/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1511,19 +1514,19 @@ simba/video_processors/batch_process_menus.py,sha256=cLgJCx90wvgzZJX2ygoPIQc1f4c
1511
1514
  simba/video_processors/blob_tracking_executor.py,sha256=W24Men4nzN4nkKaOsq-ERuSavkVRR-BeFzW-0LVNEY4,18395
1512
1515
  simba/video_processors/brightness_contrast_ui.py,sha256=nWmzho1WeJuIp3CuDjJmqMIzge2sTZn6_H0lWyZYaz0,5202
1513
1516
  simba/video_processors/calculate_px_dist.py,sha256=se9M1Kv6VxjVTZqSBmdmx29fg10s-1tL1UqJ6353Iqc,10029
1514
- simba/video_processors/clahe_ui.py,sha256=6lJetEZca0eX8s4yhYThbC20i69iu9f-Y94cUTc0Bk4,5628
1515
- simba/video_processors/egocentric_video_rotator.py,sha256=nWfzO_0h0cuqek4qG9qHu3VTNKSt_ln8WYixZ8Cph_s,11920
1517
+ simba/video_processors/clahe_ui.py,sha256=2I6Z0bGapU1Fo6iO-mKLbQiUnE3G6qNu-Of8Z8VvC6s,7150
1518
+ simba/video_processors/egocentric_video_rotator.py,sha256=iDA6m5CsSrD_Mn6vnvU_skIacH5fyuH8ejNX15-Iua0,11970
1516
1519
  simba/video_processors/extract_frames.py,sha256=7FgZBg3YfUgDr13xSDFh-XcSjSqbDc3I_Af2zUgcDIQ,3088
1517
1520
  simba/video_processors/extract_seqframes.py,sha256=Yz_Head-9IVB4sJQfh1Oe1EStC0G-Y8Q9a5DDeCbigo,4926
1518
1521
  simba/video_processors/multi_cropper.py,sha256=n_DSGv9abhSgAsDpb-VULmNVFRPADZRpVyBnARvm5No,8697
1519
1522
  simba/video_processors/roi_selector.py,sha256=5N3s0Bi1Ub6c9gjE_-mV7AWr8Fqg7HQKdBKBF6whurg,8522
1520
1523
  simba/video_processors/roi_selector_circle.py,sha256=SD_lv6V3MGiIQd0VtUFSKe83ySW_qvE1t8xsgAlr2hI,6436
1521
1524
  simba/video_processors/roi_selector_polygon.py,sha256=DMtilt__gGwNu6VV73CWbnPqrPBXkan1_akUqGEzfGw,6742
1522
- simba/video_processors/video_processing.py,sha256=CiHLTF60nSLMvIU4CH-n61P8paQ6l5Am9P1kXsFGqVk,311596
1523
- simba/video_processors/videos_to_frames.py,sha256=96d1KeFgpldeVXVnwWE_Q0U2HfY9vjjgODz3S9QDJpU,7264
1524
- simba_uw_tf_dev-4.6.1.dist-info/LICENSE,sha256=Sjn362upcvYFypam-b-ziOXU1Wl5GGuTt5ICrGimzyA,1720
1525
- simba_uw_tf_dev-4.6.1.dist-info/METADATA,sha256=KajhcggZ1QaplfNIyJ7qBN5agmw8gexjPEixuerNXTU,11375
1526
- simba_uw_tf_dev-4.6.1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
1527
- simba_uw_tf_dev-4.6.1.dist-info/entry_points.txt,sha256=Nfh_EbfDGdKftLjCnGWtQrBHENiDYMdgupwLyLpU5dc,44
1528
- simba_uw_tf_dev-4.6.1.dist-info/top_level.txt,sha256=ogtimvlqDxDTOBAPfT2WaQ2pGAAbKRXG8z8eUTzf6TU,14
1529
- simba_uw_tf_dev-4.6.1.dist-info/RECORD,,
1525
+ simba/video_processors/video_processing.py,sha256=ho9bz1rjl1eEomA4yfndIc46xtnvdgFNv5JJSX28n7w,311986
1526
+ simba/video_processors/videos_to_frames.py,sha256=WqAjEa5enrrkKqwDkL8HhFlbgt1Sf67k2zeCQhVKryM,7323
1527
+ simba_uw_tf_dev-4.6.3.dist-info/LICENSE,sha256=Sjn362upcvYFypam-b-ziOXU1Wl5GGuTt5ICrGimzyA,1720
1528
+ simba_uw_tf_dev-4.6.3.dist-info/METADATA,sha256=PHM_iOtDP2yiUr1qmqFxpmnqxbV1oVWM3D3ukGU7LwE,11375
1529
+ simba_uw_tf_dev-4.6.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
1530
+ simba_uw_tf_dev-4.6.3.dist-info/entry_points.txt,sha256=Nfh_EbfDGdKftLjCnGWtQrBHENiDYMdgupwLyLpU5dc,44
1531
+ simba_uw_tf_dev-4.6.3.dist-info/top_level.txt,sha256=ogtimvlqDxDTOBAPfT2WaQ2pGAAbKRXG8z8eUTzf6TU,14
1532
+ simba_uw_tf_dev-4.6.3.dist-info/RECORD,,