simba-uw-tf-dev 4.7.5__py3-none-any.whl → 4.7.7__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 (29) hide show
  1. simba/assets/.recent_projects.txt +2 -0
  2. simba/assets/icons/folder_2.png +0 -0
  3. simba/assets/icons/folder_video.png +0 -0
  4. simba/assets/lookups/tooptips.json +24 -2
  5. simba/mixins/feature_extraction_mixin.py +0 -2
  6. simba/model/yolo_fit.py +42 -9
  7. simba/sandbox/av1.py +5 -0
  8. simba/sandbox/clean_sleap.py +4 -0
  9. simba/sandbox/denoise_hqdn3d.py +266 -0
  10. simba/sandbox/extract_random_frames.py +126 -0
  11. simba/third_party_label_appenders/transform/coco_keypoints_to_yolo.py +1 -2
  12. simba/third_party_label_appenders/transform/sleap_csv_to_yolo.py +18 -12
  13. simba/ui/create_project_ui.py +1 -1
  14. simba/ui/pop_ups/batch_preprocess_pop_up.py +1 -1
  15. simba/ui/pop_ups/simba_to_yolo_keypoints_popup.py +96 -96
  16. simba/ui/pop_ups/sleap_annotations_to_yolo_popup.py +32 -18
  17. simba/ui/pop_ups/sleap_csv_predictions_to_yolo_popup.py +15 -14
  18. simba/ui/pop_ups/video_processing_pop_up.py +1 -1
  19. simba/ui/pop_ups/yolo_plot_results.py +146 -153
  20. simba/ui/pop_ups/yolo_pose_train_popup.py +69 -23
  21. simba/utils/checks.py +2414 -2401
  22. simba/utils/read_write.py +22 -20
  23. simba/video_processors/video_processing.py +21 -13
  24. {simba_uw_tf_dev-4.7.5.dist-info → simba_uw_tf_dev-4.7.7.dist-info}/METADATA +1 -1
  25. {simba_uw_tf_dev-4.7.5.dist-info → simba_uw_tf_dev-4.7.7.dist-info}/RECORD +29 -23
  26. {simba_uw_tf_dev-4.7.5.dist-info → simba_uw_tf_dev-4.7.7.dist-info}/LICENSE +0 -0
  27. {simba_uw_tf_dev-4.7.5.dist-info → simba_uw_tf_dev-4.7.7.dist-info}/WHEEL +0 -0
  28. {simba_uw_tf_dev-4.7.5.dist-info → simba_uw_tf_dev-4.7.7.dist-info}/entry_points.txt +0 -0
  29. {simba_uw_tf_dev-4.7.5.dist-info → simba_uw_tf_dev-4.7.7.dist-info}/top_level.txt +0 -0
simba/utils/read_write.py CHANGED
@@ -71,7 +71,7 @@ from simba.utils.errors import (CorruptedFileError, DataHeaderError,
71
71
  NoFilesFoundError, NotDirectoryError,
72
72
  ParametersFileError, PermissionError,
73
73
  SimBAPAckageVersionError)
74
- from simba.utils.printing import SimbaTimer, stdout_success
74
+ from simba.utils.printing import SimbaTimer, stdout_success, stdout_information
75
75
  from simba.utils.warnings import (
76
76
  FileExistWarning, FrameRangeWarning, GPUToolsWarning, InvalidValueWarning,
77
77
  NoFileFoundWarning, ThirdPartyAnnotationsInvalidFileFormatWarning)
@@ -572,7 +572,9 @@ def get_video_info_ffmpeg(video_path: Union[str, os.PathLike]) -> Dict[str, Any]
572
572
  print(e.args)
573
573
  raise InvalidVideoFileError(msg=f'Cannot use FFMPEG to extract video meta data for video {video_name}, try OpenCV?', source=get_video_info_ffmpeg.__name__)
574
574
 
575
- def remove_a_folder(folder_dir: Union[str, os.PathLike], ignore_errors: Optional[bool] = True) -> None:
575
+ def remove_a_folder(folder_dir: Union[str, os.PathLike],
576
+ ignore_errors: Optional[bool] = True,
577
+ verbose: bool = False) -> None:
576
578
  """Helper to remove a directory"""
577
579
  valid_dir = check_if_dir_exists(in_dir=folder_dir, source=remove_a_folder.__name__, raise_error=False)
578
580
  if not valid_dir and not ignore_errors:
@@ -580,6 +582,7 @@ def remove_a_folder(folder_dir: Union[str, os.PathLike], ignore_errors: Optional
580
582
  if not valid_dir and ignore_errors:
581
583
  return
582
584
  try:
585
+ if verbose: stdout_information(msg=f'Removing directory {folder_dir}...')
583
586
  shutil.rmtree(folder_dir, ignore_errors=ignore_errors)
584
587
  except Exception as e:
585
588
  raise PermissionError(msg=f'Could not delete directory: {folder_dir}. is the directory or its content beeing used by anothe process?', source=remove_a_folder.__name__)
@@ -1759,7 +1762,9 @@ def read_roi_data(roi_path: Union[str, os.PathLike]) -> Tuple[pd.DataFrame, pd.D
1759
1762
 
1760
1763
 
1761
1764
 
1762
- def create_directory(paths: Union[str, os.PathLike, bytes, List[str], Tuple[str]], overwrite: bool = False) -> None:
1765
+ def create_directory(paths: Union[str, os.PathLike, bytes, List[str], Tuple[str]],
1766
+ overwrite: bool = False,
1767
+ verbose: bool = False) -> None:
1763
1768
 
1764
1769
  """
1765
1770
  Create one or multiple directories.
@@ -1779,15 +1784,17 @@ def create_directory(paths: Union[str, os.PathLike, bytes, List[str], Tuple[str]
1779
1784
  path = os.path.abspath(path)
1780
1785
  if not os.path.exists(path):
1781
1786
  try:
1787
+ if verbose: stdout_information(msg=f'Creating directory {path}...')
1782
1788
  os.makedirs(path)
1783
1789
  except Exception as e:
1784
- raise PermissionError(f'SimBA is not allowed to create the directory {path} ({e})')
1790
+ raise PermissionError(f'SimBA is not allowed to create the directory {path} ({e}). Is a file in this directory open in another process?')
1785
1791
  elif overwrite:
1786
1792
  try:
1787
1793
  remove_a_folder(folder_dir=path)
1794
+ if verbose: stdout_information(msg=f'Creating directory {path}...')
1788
1795
  os.makedirs(path)
1789
1796
  except Exception as e:
1790
- raise PermissionError(f'SimBA is not allowed to overwrite the directory {path} ({e})')
1797
+ raise PermissionError(f'SimBA is not allowed to overwrite the directory {path} ({e}). Is a file in this directory open in another process?')
1791
1798
 
1792
1799
 
1793
1800
  def find_max_vertices_coordinates(shapes: List[Union[Polygon, LineString, MultiPolygon, Point]], buffer: Optional[int] = None) -> Tuple[int, int]:
@@ -1935,7 +1942,8 @@ def read_dlc_superanimal_h5(path: Union[str, os.PathLike], col_names: List[str])
1935
1942
  return data
1936
1943
 
1937
1944
 
1938
- def clean_sleap_filenames_in_directory(dir: Union[str, os.PathLike]) -> None:
1945
+ def clean_sleap_filenames_in_directory(dir: Union[str, os.PathLike],
1946
+ verbose: bool = False) -> None:
1939
1947
  """
1940
1948
  Clean up SLEAP input filenames in the specified directory by removing a prefix
1941
1949
  and a suffix, and renaming the files to match the names of the original video files.
@@ -1949,24 +1957,18 @@ def clean_sleap_filenames_in_directory(dir: Union[str, os.PathLike]) -> None:
1949
1957
  >>> clean_sleap_filenames_in_directory(dir='/Users/simon/Desktop/envs/troubleshooting/Hornet_SLEAP/import/')
1950
1958
  """
1951
1959
 
1952
- SLEAP_CSV_SUBSTR = ".analysis"
1953
1960
  check_if_dir_exists(in_dir=dir)
1954
- for file_path in glob.glob(
1955
- dir + f"/*.{Formats.CSV.value}" + f"/*.{Formats.H5.value}"
1956
- ):
1957
- file_name = os.path.basename(p=file_path)
1958
- if (SLEAP_CSV_SUBSTR in file_name) and ("_" in file_name):
1959
- new_name = os.path.join(
1960
- dir,
1961
- file_name.replace(file_name.split("_")[0] + "_", "").replace(
1962
- SLEAP_CSV_SUBSTR, ""
1963
- ),
1964
- )
1965
- os.rename(file_path, new_name)
1961
+ data_paths = find_files_of_filetypes_in_directory(directory=dir, extensions=[f'.{Formats.H5.value}', f'.{Formats.CSV.value}'], raise_error=True, sort_alphabetically=True, as_dict=False)
1962
+ for file_path in data_paths:
1963
+ directory, file_name, ext = get_fn_ext(filepath=file_path)
1964
+ if verbose: print(f'Renaming {file_name} ...')
1965
+ new_name = clean_sleap_file_name(filename=file_name)
1966
+ new_path = os.path.join(directory, f'{new_name}{ext}')
1967
+ if new_path != file_path:
1968
+ os.rename(file_path, new_path)
1966
1969
  else:
1967
1970
  pass
1968
1971
 
1969
-
1970
1972
  def copy_files_in_directory(in_dir: Union[str, os.PathLike],
1971
1973
  out_dir: Union[str, os.PathLike],
1972
1974
  raise_error: bool = True,
@@ -53,7 +53,8 @@ from simba.utils.errors import (CountError, DirectoryExistError,
53
53
  NotDirectoryError, ResolutionError,
54
54
  SimBAGPUError)
55
55
  from simba.utils.lookups import (get_current_time, get_ffmpeg_codec,
56
- get_ffmpeg_crossfade_methods, get_fonts,
56
+ get_ffmpeg_crossfade_methods,
57
+ get_ffmpeg_encoders, get_fonts,
57
58
  get_named_colors, percent_to_crf_lookup,
58
59
  percent_to_qv_lk, quality_pct_to_crf,
59
60
  video_quality_to_preset_lookup)
@@ -440,10 +441,11 @@ def clahe_enhance_video(file_path: Union[str, os.PathLike],
440
441
  dir, file_name, file_ext = get_fn_ext(filepath=file_path)
441
442
  if out_path is None:
442
443
  save_path = os.path.join(dir, f"CLAHE_{file_name}.avi")
444
+ fourcc = cv2.VideoWriter_fourcc(*Formats.AVI_CODEC.value)
443
445
  else:
444
446
  check_if_dir_exists(in_dir=os.path.dirname(out_path), source=f'{clahe_enhance_video.__name__} out_path')
447
+ fourcc = cv2.VideoWriter_fourcc(*Formats.MP4_CODEC.value)
445
448
  save_path = out_path
446
- fourcc = cv2.VideoWriter_fourcc(*Formats.AVI_CODEC.value)
447
449
  if verbose: print(f"Applying CLAHE on video {file_name}, this might take awhile...")
448
450
  cap = cv2.VideoCapture(file_path)
449
451
  writer = cv2.VideoWriter( save_path, fourcc, video_meta_data["fps"], (video_meta_data["width"], video_meta_data["height"]), 0)
@@ -3265,6 +3267,9 @@ def convert_to_avi(path: Union[str, os.PathLike],
3265
3267
  timer = SimbaTimer(start=True)
3266
3268
  check_ffmpeg_available(raise_error=True)
3267
3269
  check_str(name=f'{convert_to_avi.__name__} codec', value=codec, options=('xvid', 'divx', 'mjpeg'))
3270
+ CODEC_LK = {'mpeg4': 'mpeg4', 'divx': 'libxvid', 'mjpeg': 'mjpeg'}
3271
+ codec = CODEC_LK[codec]
3272
+ check_valid_codec(codec=codec, raise_error=True, source=f'{convert_to_avi.__name__} codec')
3268
3273
  check_instance(source=f'{convert_to_avi.__name__} path', instance=path, accepted_types=(str,))
3269
3274
  check_int(name=f'{convert_to_avi.__name__} quality', value=quality)
3270
3275
  datetime_ = datetime.now().strftime("%Y%m%d%H%M%S")
@@ -3292,18 +3297,18 @@ def convert_to_avi(path: Union[str, os.PathLike],
3292
3297
  _ = get_video_meta_data(video_path=file_path)
3293
3298
  out_path = os.path.join(save_dir, f'{video_name}.avi')
3294
3299
  if codec == 'divx':
3295
- cmd = f'ffmpeg -i "{file_path}" -c:v mpeg4 -crf {crf} -vtag DIVX "{out_path}" -loglevel error -stats -hide_banner -y'
3300
+ cmd = f'ffmpeg -i "{file_path}" -c:v {codec} -crf {crf} -vtag DIVX "{out_path}" -loglevel error -stats -hide_banner -y'
3296
3301
  elif codec == 'xvid':
3297
- cmd = f'ffmpeg -i "{file_path}" -c:v libxvid -q:v {qv} "{out_path}" -loglevel error -stats -hide_banner -y'
3302
+ cmd = f'ffmpeg -i "{file_path}" -c:v {codec} -q:v {qv} "{out_path}" -loglevel error -stats -hide_banner -y'
3298
3303
  else:
3299
- cmd = f'ffmpeg -i "{file_path}" -c:v mjpeg -q:v {qv} "{out_path}" -loglevel error -stats -hide_banner -y'
3304
+ cmd = f'ffmpeg -i "{file_path}" -c:v {codec} -q:v {qv} "{out_path}" -loglevel error -stats -hide_banner -y'
3300
3305
  subprocess.call(cmd, shell=True, stdout=subprocess.PIPE)
3301
3306
  timer.stop_timer()
3302
3307
  stdout_success(msg=f"{len(file_paths)} video(s) converted to AVI and saved in {save_dir} directory.", elapsed_time=timer.elapsed_time_str, source=convert_to_avi.__name__,)
3303
3308
 
3304
3309
 
3305
3310
  def convert_to_webm(path: Union[str, os.PathLike],
3306
- codec: Literal['vp8', 'vp9'] = 'vp9',
3311
+ codec: Literal['vp8', 'vp9', 'av1'] = 'vp9',
3307
3312
  save_dir: Optional[Union[str, os.PathLike]] = None,
3308
3313
  quality: Optional[int] = 60) -> None:
3309
3314
 
@@ -3326,7 +3331,10 @@ def convert_to_webm(path: Union[str, os.PathLike],
3326
3331
 
3327
3332
  timer = SimbaTimer(start=True)
3328
3333
  check_ffmpeg_available(raise_error=True)
3329
- check_str(name=f'{convert_to_webm.__name__} codec', value=codec, options=('vp8', 'vp9'))
3334
+ check_str(name=f'{convert_to_webm.__name__} codec', value=codec, options=('vp8', 'vp9', 'av1'))
3335
+ CODEC_LK = {'vp8': 'libvpx', 'vp9': 'libvpx-vp9', 'av1': 'libaom-av1'}
3336
+ codec = CODEC_LK[codec]
3337
+ check_valid_codec(codec=codec, raise_error=True, source=f'{convert_to_webm.__name__} codec')
3330
3338
  check_instance(source=f'{convert_to_webm.__name__} path', instance=path, accepted_types=(str,))
3331
3339
  check_int(name=f'{convert_to_webm.__name__} quality', value=quality)
3332
3340
  datetime_ = datetime.now().strftime("%Y%m%d%H%M%S")
@@ -3346,17 +3354,13 @@ def convert_to_webm(path: Union[str, os.PathLike],
3346
3354
  os.makedirs(save_dir)
3347
3355
  else:
3348
3356
  raise InvalidInputError(msg=f'Paths is not a valid file or directory path.', source=convert_to_webm.__name__)
3357
+
3349
3358
  for file_cnt, file_path in enumerate(file_paths):
3350
3359
  _, video_name, _ = get_fn_ext(filepath=file_path)
3351
3360
  print(f'Converting video {video_name} to WEBM (Video {file_cnt+1}/{len(file_paths)})...')
3352
3361
  _ = get_video_meta_data(video_path=file_path)
3353
3362
  out_path = os.path.join(save_dir, f'{video_name}.webm')
3354
- if codec == 'vp8':
3355
- cmd = f'ffmpeg -i "{file_path}" -c:v libvpx -crf {crf} "{out_path}" -loglevel error -stats -hide_banner -y'
3356
- elif codec == 'vp9':
3357
- cmd = f'ffmpeg -i "{file_path}" -c:v libvpx-vp9 -crf {crf} "{out_path}" -loglevel error -stats -hide_banner -y'
3358
- else:
3359
- cmd = f'ffmpeg -i "{file_path}" -c:v libaom-av1 -crf {crf} "{out_path}" -loglevel error -stats -hide_banner -y'
3363
+ cmd = f'ffmpeg -i "{file_path}" -c:v {codec} -crf {crf} "{out_path}" -loglevel error -stats -hide_banner -y'
3360
3364
  subprocess.call(cmd, shell=True, stdout=subprocess.PIPE)
3361
3365
  timer.stop_timer()
3362
3366
  stdout_success(msg=f"{len(file_paths)} video(s) converted to WEBM and saved in {save_dir} directory.", elapsed_time=timer.elapsed_time_str, source=convert_to_webm.__name__,)
@@ -3381,6 +3385,10 @@ def convert_to_mov(path: Union[str, os.PathLike],
3381
3385
  timer = SimbaTimer(start=True)
3382
3386
  check_ffmpeg_available(raise_error=True)
3383
3387
  check_str(name=f'{convert_to_mov.__name__} codec', value=codec, options=('prores', 'animation', 'cineform', 'dnxhd'))
3388
+
3389
+
3390
+
3391
+
3384
3392
  check_instance(source=f'{convert_to_mov.__name__} path', instance=path, accepted_types=(str,))
3385
3393
  check_int(name=f'{convert_to_mov.__name__} quality', value=quality)
3386
3394
  datetime_ = datetime.now().strftime("%Y%m%d%H%M%S")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: simba-uw-tf-dev
3
- Version: 4.7.5
3
+ Version: 4.7.7
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
@@ -13,7 +13,7 @@ simba/__init__.py,sha256=Zbw277SaA4dLpF3IDQnIjzOb-GWKgF-V6caod95b4YA,539
13
13
  simba/requirements.txt,sha256=Ou1KKYqIsOaqQ10UeqxTPorpHWBH5rTMGzpFif1VRWc,2072
14
14
  simba/assets/.DS_Store,sha256=ElS4pjNueynnfN3F6ibhpIe9tS-jrVEx88jASA9_DYo,14340
15
15
  simba/assets/.env,sha256=bI_XK4TDnRDnV1M5SyZrEfeayi9ZK7rX2lrYQcJnH0s,538
16
- simba/assets/.recent_projects.txt,sha256=iUE8T6XQxOEGrK-r53XVeuz3xdjHgxeQPBogS4yZIyk,193
16
+ simba/assets/.recent_projects.txt,sha256=N08PrJVCrYbcdE6ZRhKBmRLcTQLD_jikoSrTWC41Gps,339
17
17
  simba/assets/TheGoldenLab.PNG,sha256=Dwg7zXASz_XDhJ_gDgKyBmAINxLL-Zkg-3xzy94YEsc,31812
18
18
  simba/assets/UbuntuMono-Regular.ttf,sha256=N0xTF4v7xLE_m2rVu8gaQ5OqZSZf_H0zqnvYnxKjDfg,189004
19
19
  simba/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -173,6 +173,8 @@ simba/assets/icons/flip_black.png,sha256=ZQ1SK3SNjwBeBBqxKLWVM4JXq_mTtIONmwLABR9
173
173
  simba/assets/icons/flip_green.png,sha256=G3ZISmJP44T-tYZZZrDu284Pxu7PMzwwE9gbi8XVXKI,1072
174
174
  simba/assets/icons/flip_red.png,sha256=Ow8sbCPAAwd3YuM5cP342zOBKntNLUePvZMgJLmHuj0,1132
175
175
  simba/assets/icons/folder.png,sha256=-kwt7XAbokXAM-AMw8nfoO8doamxNLUDA-cp4wFBpVs,464
176
+ simba/assets/icons/folder_2.png,sha256=-QJo11xbdkyGfngahvdQwO9NmMNVK6nYhVh2PKsTL3c,292
177
+ simba/assets/icons/folder_video.png,sha256=BmNs-5Q8M5uu9z5B8XAmhfuVN9oAPJl_0YvXcnBkYSM,428
176
178
  simba/assets/icons/font.png,sha256=ERoNS-BSd-E9kyU4Q96RCKdxTPguqICvPkh5jZu47vM,547
177
179
  simba/assets/icons/font_size.png,sha256=JK18ekjZkGi4hkauWxon4ecOlXPf7DSS7FQBYxN_QIY,390
178
180
  simba/assets/icons/forest.png,sha256=saOvtPz6P_-uF9ObNpVcpVAURzXW1-A_BSevzQS84Pc,588
@@ -462,7 +464,7 @@ simba/assets/lookups/critical_values_05.pickle,sha256=bYlqp9T6ehVIjIJr3Uwfulj-kS
462
464
  simba/assets/lookups/feature_extraction_headers.csv,sha256=I5TLfAihpHgzUZ7OUyGge-Yu-XGbQmHbDFAD4vVAc4w,2987
463
465
  simba/assets/lookups/features.csv,sha256=bc6aN2ZRa2J2dxur-Zjcpc4I3q6vd-gN2erwnhdzLIk,14175
464
466
  simba/assets/lookups/model_names.parquet,sha256=hOuvYONO8wZGcAwRNSf_hS_lUaynC8Gt24MLOg3w5ZA,270783
465
- simba/assets/lookups/tooptips.json,sha256=uPFy_Ew53vTtejvup5DsmvEyfZkUeaUyGeDxXrM0crU,6156
467
+ simba/assets/lookups/tooptips.json,sha256=DfEEEYdtLWfTg2P35N1rTPoxeOCDMJvKQIqCwFyh3zw,9794
466
468
  simba/assets/lookups/unsupervised_example_x.csv,sha256=bc6aN2ZRa2J2dxur-Zjcpc4I3q6vd-gN2erwnhdzLIk,14175
467
469
  simba/assets/lookups/yolo.yaml,sha256=3Omt-t-w555E4oAJsRRblBjzyiTW9e5x-0VuyQ-t9C0,278
468
470
  simba/assets/lookups/yolo_schematics/yolo_1.csv,sha256=TzUzWAtia4P-5FRwLPnjU0zDSkAA-nItNFCcq6nG_iQ,72
@@ -621,7 +623,7 @@ simba/mixins/abstract_classes.py,sha256=umpVIU7EG_jZ1DU8x5zkTb8A-KH46jlCISowfrT4
621
623
  simba/mixins/annotator_mixin.py,sha256=TQWqBZ5UVR5blI5CUyr3nuxsB3HyrxYimPg3rXcOHfU,40917
622
624
  simba/mixins/circular_statistics.py,sha256=yzYRKsuY3xK_LgDC7rpu4OQnbSQpjXO0EiLv4kH6cp8,77336
623
625
  simba/mixins/config_reader.py,sha256=9su8ZGnGWghk5bAl12iaTQdqIOVfcW2ZQcxeEXmXtcI,52362
624
- simba/mixins/feature_extraction_mixin.py,sha256=rUwHEG3wKpyreme8nXAeBEhktHG_Q75v3OJI2aFOOOA,59587
626
+ simba/mixins/feature_extraction_mixin.py,sha256=kOlU4FsqKxvDQ_UA9RrcvidTKv2sCitx_noZtHc6eyY,59585
625
627
  simba/mixins/feature_extraction_supplement_mixin.py,sha256=6dPi1WFi26y-rmccsMgDe5sULm4fTQaBcSiH91DEkN0,44770
626
628
  simba/mixins/geometry_mixin.py,sha256=QL16YFqSR0Wtio0v2PE2l41KTP_DKmW_tiGY6ns-Ojg,248630
627
629
  simba/mixins/image_mixin.py,sha256=C3FcZGp_kLMYMvbFxOedYPebIYm6KJIRPAB7rcu6J80,125807
@@ -644,7 +646,7 @@ simba/model/sam_inference.py,sha256=4Jwy-OU773iJI2Zyl-tVHLDaUU1BkjJpr_riRkPPTY8,
644
646
  simba/model/train_multiclass_rf.py,sha256=B445OFCLexqYYCeiaLe3-JI8PXm3JK3YcN8irAZFhNQ,15219
645
647
  simba/model/train_multilabel_rf.py,sha256=oZUrnd7bfhaXVMhedSL7q47taiCgh4mn8ONdvkVAeo4,7321
646
648
  simba/model/train_rf.py,sha256=OlF-Bq2TItMh7ao0xXKl43mFJkr2OHqIdwytPg41hCw,22700
647
- simba/model/yolo_fit.py,sha256=9LZHvytKFbfelqwm4y0We1neZOPEn-UCDXJhMdvOU_o,11382
649
+ simba/model/yolo_fit.py,sha256=uF-HYd6fxKupJ8TuZcx6V0JJvFbMloKr0ItuLF0bRbw,12680
648
650
  simba/model/yolo_inference.py,sha256=ZD-43PZB1Ja5f7W_kPWyRr4j8YvQkTkNsq7ois9JuHw,13565
649
651
  simba/model/yolo_pose_inference.py,sha256=kpHYnsS-eK2QmdXwiZfml8AGLCdQ4XZB-xBMXm7AZno,28202
650
652
  simba/model/yolo_pose_track_inference.py,sha256=gOopeNEUggqJfH73dDkjetHlpwsU-VrjCH4B4gKOktw,22917
@@ -806,6 +808,7 @@ simba/sandbox/append_targets'.py,sha256=f8lB0FFdJy97uZuEyfWsJYOf2Uw05skSGjH3uiLF
806
808
  simba/sandbox/apply_offsets.py,sha256=XKqGD3ihq0clkZUFF3JBuZP-KlcRFAPphHV-7VCGnQU,3601
807
809
  simba/sandbox/async_frame_writer.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
808
810
  simba/sandbox/async_frm_reader.py,sha256=aPs3RTHfnDuNHeGnKH6yeQmQAO4QestVQbeyMGhrzwU,4694
811
+ simba/sandbox/av1.py,sha256=t5_RS-kJ0wNSkiVIZO9acSeJ5JLApqkqx1feYmFX9Ww,174
809
812
  simba/sandbox/average_frm_popup.py,sha256=E1nn5D_P8A8imnES6uskaXw5EMMieYEUL6-RjEl3atQ,9216
810
813
  simba/sandbox/baker_huber_gamma_index.py,sha256=Mki6-POmlN09NKAhHdKDIenNRwsbFhRLYXz8aZVn23A,2129
811
814
  simba/sandbox/bar_chart.py,sha256=kZCVZPq3Wrmt195NWkpNwdi1beaOxJ945xl1O4gS9Zg,2614
@@ -844,6 +847,7 @@ simba/sandbox/clahe_fix.py,sha256=mX5kpUk4v9XRCq8ZMDN9N_-f9jaQ8c00EEdAqMZjP4A,65
844
847
  simba/sandbox/clahe_gpu.py,sha256=4un9bbVkNlhF2wmH7XSPy7BwhGiQt937qwLhCbm4JDY,3306
845
848
  simba/sandbox/clahe_mp.py,sha256=yM0aGRR0Kh5u7ENBhALmPVhAgQ1qw7-3X8RevIgeHE4,6631
846
849
  simba/sandbox/clean_features.py,sha256=yGjrcwKCdaaxDAF0qLT6-HZFsP8ETfRokx9yJQD_AsY,920
850
+ simba/sandbox/clean_sleap.py,sha256=_EqW7c06ytRdZF8i76GKSpOGMJcIKmVwkdIDwGnC3nw,205
847
851
  simba/sandbox/clean_sleap_filename.py,sha256=XyND8MT65SGi3c3QlLgLFzLLQ-BS7eNZr_vlBbf9ulI,959
848
852
  simba/sandbox/clip_multiple_videos_by_frame_numbers.py,sha256=nEk0uU0Jppm9ScHRRxZBX49RrwotIZVP0_4jLkDPbgc,11451
849
853
  simba/sandbox/clip_videos_by_frm.py,sha256=erJzAg1A_7aUwnrL-SOlO_Lm0M35Tm6x3HMAlY6kTa8,4550
@@ -906,6 +910,7 @@ simba/sandbox/debug_csv_columns.py,sha256=uJwHZ1UQE6vFzTyFMbwf8qrWcL3KM7EafDmvIY
906
910
  simba/sandbox/debug_network.py,sha256=niyPStKhIpyom6AVREjYC_7aixnVdErlnz7yMaQxTOk,7125
907
911
  simba/sandbox/define_rois.py,sha256=UHxsbfe2b1GjbuNU6jfqXnFy3X_-B0I0CgZVqIw5TlA,1671
908
912
  simba/sandbox/denoise_gpu.py,sha256=vDiRuXMv-dyFMgomZMEiKJNPDmT9sinpXILcBOfAn9k,1832
913
+ simba/sandbox/denoise_hqdn3d.py,sha256=dbpFKQSSS84PEkmpoBtX-8Yw6Ogl3iyK4T_Qq_Wx1Zo,14498
909
914
  simba/sandbox/denoiser.py,sha256=BXB_YAnUXCDe3csnT3cT5YLes9oRS0immjA5P4YP2hs,10324
910
915
  simba/sandbox/detect_scene_changes.py,sha256=P7tmHoFH55ryTXwgY2cVxXQiVNCRaf_4hVi1Nd-ZOCA,561
911
916
  simba/sandbox/dir_to_mosaic.py,sha256=rNnxJlEyJMG8jXmWx-NgEcS9hHQ3sqOlLQ-hYTEg7P4,1576
@@ -950,6 +955,7 @@ simba/sandbox/extract_and_convert_videos.py,sha256=nE3ncyoRb8Ac_vdbxSK1D2-Lqr71M
950
955
  simba/sandbox/extract_annotation_frames_pop_up.py,sha256=EYHEL5SlpvLpeFPnGmeib5LL97mkkdlb3fhaDcYehAk,5783
951
956
  simba/sandbox/extract_aucio_track.py,sha256=tTp0PlTXt76-fDf-E695NZ1cxlS36Wb783dE0ZoF7k0,3092
952
957
  simba/sandbox/extract_frames.py,sha256=J4POX21DXP92lYhvZUiYcZAGmT-kp6Y3ICkMb-pjkxA,838
958
+ simba/sandbox/extract_random_frames.py,sha256=pBtJ1WEDNdI9er8LrclxHSCqM7xoZ7ocww48VfnTQm0,5225
953
959
  simba/sandbox/ez_path_plot.py,sha256=euSazuxyIRWaHrlhiOMjDugqMba8SvsRWUuOl78M6MI,6409
954
960
  simba/sandbox/feature_subset_new.py,sha256=OF-wTPvktqJbyBPctIqMWS1qgyMlMsStX_Ddrn31CCw,23088
955
961
  simba/sandbox/fecal_boli.py,sha256=pdInnlZ94sNgVQAmsQRbT0Sw1qz9JPWaowEkscTErkc,1636
@@ -1341,7 +1347,7 @@ simba/third_party_label_appenders/solomon_importer.py,sha256=YkHUgtQhLEzMVPvxTcK
1341
1347
  simba/third_party_label_appenders/third_party_appender.py,sha256=_jvK38h-qpVyNU6GKJlj0-uCBGyu9gwhkowtiWArbUg,21580
1342
1348
  simba/third_party_label_appenders/tools.py,sha256=-DzeTk7ULQML6r0zHPMjBw_x5oJD0WeN_4UpK6_dSYk,21212
1343
1349
  simba/third_party_label_appenders/transform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1344
- simba/third_party_label_appenders/transform/coco_keypoints_to_yolo.py,sha256=9e8co8P-YbmpmNNQ0BOupB5MFTiX25LQpk_QdZMHdFI,15616
1350
+ simba/third_party_label_appenders/transform/coco_keypoints_to_yolo.py,sha256=1YCFPdpD50sCG22mw13j47AJ8GhiRSRTdl9M-deABpk,15608
1345
1351
  simba/third_party_label_appenders/transform/coco_keypoints_to_yolo_bbox.py,sha256=dP3cIM4uDPLrpADa_SJf8wvFOr8PqhQTVZ88gTEuvyA,15601
1346
1352
  simba/third_party_label_appenders/transform/coco_keypoints_to_yolo_seg.py,sha256=ko160LwH0px8iXhf_GG_nUi2bq4m9Ys0q5XyzFd2T5o,9536
1347
1353
  simba/third_party_label_appenders/transform/dlc_ma_h5_to_yolo.py,sha256=SkMPLpCoJRtFcuguoJd8RcdHj3-3gViqQkHisffkWFM,11151
@@ -1357,7 +1363,7 @@ simba/third_party_label_appenders/transform/labelme_to_yolo_seg.py,sha256=wJOGVZ
1357
1363
  simba/third_party_label_appenders/transform/simba_roi_to_yolo.py,sha256=i0bO_ZwjHSMzCfHlKecuqYXBvJgzhg2ohoVXdjzkemU,12969
1358
1364
  simba/third_party_label_appenders/transform/simba_to_yolo.py,sha256=9_gH94YxdeDwVfZF9Vlv-w5SiOu41X1Lpk98UWztXZ4,13570
1359
1365
  simba/third_party_label_appenders/transform/simba_to_yolo_seg.py,sha256=NzmzQj618_SqTn16b9PPohaFYjzmtFFMUKoDezN_wLA,12732
1360
- simba/third_party_label_appenders/transform/sleap_csv_to_yolo.py,sha256=JFfwYyxtWGchQITr25r6NVwastxu16abMVaHTNq1nLU,11611
1366
+ simba/third_party_label_appenders/transform/sleap_csv_to_yolo.py,sha256=rep41f1_Mh1Cw4vV875vZuieXYNgBAgJJbft-w-dLgw,12758
1361
1367
  simba/third_party_label_appenders/transform/sleap_h5_to_yolo.py,sha256=bb-5JgTp8rtOdJgkbsghQNyxM4BwQSRkY37-v2XVMHM,11036
1362
1368
  simba/third_party_label_appenders/transform/sleap_to_yolo.py,sha256=yorjyNlUnPzgVJDHahxBlIE2F-1JTvJaIXynnRZrAFw,10342
1363
1369
  simba/third_party_label_appenders/transform/utils.py,sha256=2W1G0pyUm7oHqu0xhyJowxPp9xxSmMpqXfNzGJIFjvo,31652
@@ -1366,7 +1372,7 @@ simba/ui/.DS_Store,sha256=iQb7oqWWyurQk2ZeMphWuiG7QX5btEEdLeeeHBL1zRU,10244
1366
1372
  simba/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1367
1373
  simba/ui/blob_quick_check_interface.py,sha256=DqedeHPFdbiYEX15V_wi5T5zJbgyn4mSbFdjFdmy7xM,12377
1368
1374
  simba/ui/blob_tracker_ui.py,sha256=42ojgDgXRyMqk_-v0S_0P4glFi-QVvSx0VNAlAjSIZc,36232
1369
- simba/ui/create_project_ui.py,sha256=HWhhcCOhsQcLJawMWizvMHb22014Jfj80TIaPA9uAq0,12526
1375
+ simba/ui/create_project_ui.py,sha256=lTl9qW8pnthKQafxWVvKzJ0eRW9NGb1Mh25FTR-ZPNk,12544
1370
1376
  simba/ui/get_tree_view.py,sha256=KpEs89bZ_XMoJVdH2G-J8tajBUAn8XToLzfnT1XnfcY,6432
1371
1377
  simba/ui/import_pose_frame.py,sha256=YTnbIXGiImkB3Nuxjyc6k2iE_bqD9tt7cLyhjCjae6Y,38518
1372
1378
  simba/ui/import_videos_frame.py,sha256=i0LnQzPLFne9dA_nvpVWAHYGmi0aTRXpiHzEog_-Raw,6614
@@ -1384,7 +1390,7 @@ simba/ui/pop_ups/animal_directing_other_animals_pop_up.py,sha256=eaRVoEJ0WPnR15B
1384
1390
  simba/ui/pop_ups/append_roi_features_animals_pop_up.py,sha256=__UwX3PuzPIeg5mSOY2yk4rJPHwwyCsWpLuqcBhLgH0,3308
1385
1391
  simba/ui/pop_ups/append_roi_features_bodypart_pop_up.py,sha256=b21GIlgBCgAAM-MR_1LUmAdV9oiyHzO4fv_4HvqjVQM,1955
1386
1392
  simba/ui/pop_ups/archive_files_pop_up.py,sha256=4dByXZS0bCZxy06-7WoElmcFSMoKfBbX3ZgamkZgIfs,1734
1387
- simba/ui/pop_ups/batch_preprocess_pop_up.py,sha256=8-iWRgnWriZ4nBr9ci-ooZNdxrGbLWpN5_xfmzOIS8w,2818
1393
+ simba/ui/pop_ups/batch_preprocess_pop_up.py,sha256=dwyaLJkXyIKUn6zyXXLktBJMbup6hwi8gIKryOQP4G4,2820
1388
1394
  simba/ui/pop_ups/blob_visualizer_pop_up.py,sha256=6OzJMROHowZWIcI5FL9a8uIo70K_dZKaVNs9-rUWWbE,6924
1389
1395
  simba/ui/pop_ups/boolean_conditional_slicer_pup_up.py,sha256=q3IGjO4rwCCM8ODS2O7CueNRPFvSkJLHAgcV31sE0y4,5506
1390
1396
  simba/ui/pop_ups/change_speed_popup.py,sha256=59Ck0kzLTQpE5AXURVRcNdK-a0kFOnwvTE0RZjs0lfI,5940
@@ -1459,10 +1465,10 @@ simba/ui/pop_ups/select_video_for_pseudo_labelling_popup.py,sha256=KLih5Z-Pj_b0S
1459
1465
  simba/ui/pop_ups/set_machine_model_parameters_pop_up.py,sha256=hr3ekYbKZ_7NxeFbQwNpaeR7cRERHi4yrMSGriTdBj4,5881
1460
1466
  simba/ui/pop_ups/severity_analysis_pop_up.py,sha256=WkD85uom2qrsYwc-Ykppy9gEuI1jhCgMhoux9ayejn4,9015
1461
1467
  simba/ui/pop_ups/simba_rois_to_yolo_pop_up.py,sha256=1JI6iBjMFuO9C2-TWSL6wKVKYWCD0zIHAHsVVuIUJPc,4423
1462
- simba/ui/pop_ups/simba_to_yolo_keypoints_popup.py,sha256=XEuwZ7ijAB_jrnFJHUqUWfneEnZoXN5GiiJX9m5jKWE,5715
1468
+ simba/ui/pop_ups/simba_to_yolo_keypoints_popup.py,sha256=dnchG6IguHxD2gkFjyqIaER9Uj-7TEq8nGPGcoL2Hog,5931
1463
1469
  simba/ui/pop_ups/single_video_to_frames_popup.py,sha256=--Ex2j7sYdWbHC5Ea-Lf_FInCEXZShlzS9Idzt1s7f4,5326
1464
- simba/ui/pop_ups/sleap_annotations_to_yolo_popup.py,sha256=rcHZCZIh4jZX8zPzcY9NRlx2rTjSVWLNdQIDK52Zs6Q,4863
1465
- simba/ui/pop_ups/sleap_csv_predictions_to_yolo_popup.py,sha256=_sY7scL_Eb7duGqkYT2qwOfs7mB8ndMaCQvIZDNUKXo,7048
1470
+ simba/ui/pop_ups/sleap_annotations_to_yolo_popup.py,sha256=uJWvPuSgske-5p89entlomJF7qzDXXf_M4xtBvVliP8,5918
1471
+ simba/ui/pop_ups/sleap_csv_predictions_to_yolo_popup.py,sha256=AiG3pXXbBkinFyzgQrI8ADgIm2LZLOXDuB1EX7tQYu4,7446
1466
1472
  simba/ui/pop_ups/sleap_h5_inference_to_yolo_popup.py,sha256=B9ZROIFDL2TOQNkKXsyllOAeqzCDdHQ3E6bPu56xCiU,6609
1467
1473
  simba/ui/pop_ups/smoothing_popup.py,sha256=pR-xykkZwRkjyXt0Y1m6-4p4-83DEhBbUrULcBCCAcA,6092
1468
1474
  simba/ui/pop_ups/splash_popup.py,sha256=AB2RozaTYdaP5h56jR9dm2vLg5gBCx66Bp_j4Iv1lvw,4053
@@ -1471,11 +1477,11 @@ simba/ui/pop_ups/subset_feature_extractor_pop_up.py,sha256=M24iJSqh-DpYdpw1pSaIm
1471
1477
  simba/ui/pop_ups/targeted_annotation_clips_pop_up.py,sha256=PFh5ua2f_OMQ1Pth9Ha8Fo5lTPZNQV3bMnRGEoAPhTQ,6997
1472
1478
  simba/ui/pop_ups/third_party_annotator_appender_pop_up.py,sha256=Xnha2UwM-08djObCkL_EXK2L4pernyipzbyNKQvX5aQ,7694
1473
1479
  simba/ui/pop_ups/validation_plot_pop_up.py,sha256=yIo_el2dR_84ZAh_-2fYFg-BJDG0Eip_P_o9vzTQRkk,12174
1474
- simba/ui/pop_ups/video_processing_pop_up.py,sha256=u9AZMY6HcrcputziJ_b16L29HyT3m0arTW02eR1doFg,252005
1480
+ simba/ui/pop_ups/video_processing_pop_up.py,sha256=_7nVjWkXoLuvxIjEEAJjzWe7Lf1H_HAWbNp31ZB6AvA,252019
1475
1481
  simba/ui/pop_ups/visualize_pose_in_dir_pop_up.py,sha256=PpFs0zaqF4dnHJ_yH-PqYgsjAyxYPVP427Soj-kYtM0,8838
1476
1482
  simba/ui/pop_ups/yolo_inference_popup.py,sha256=C4_WDvEHLp9JMUTjLZuRpKHxMCGpa_pxXELuj-zerCs,14679
1477
- simba/ui/pop_ups/yolo_plot_results.py,sha256=yi9D3WquDu4L8PWJLZsODulojgakfy7Dzh_CpYK6Vgk,10096
1478
- simba/ui/pop_ups/yolo_pose_train_popup.py,sha256=yxu7UpePw94pHmEGFZ_4F8juZ8gZrPvTAsOvJtyhwzE,6369
1483
+ simba/ui/pop_ups/yolo_plot_results.py,sha256=WvDS3kCYZU_27EpADNev0tAKBPI-CUkYv9Dxz0eP83c,9803
1484
+ simba/ui/pop_ups/yolo_pose_train_popup.py,sha256=x3ftkUlVZUXlBvee2w9IkQdGlSMEFPKXWExGIZgdHCU,8904
1479
1485
  simba/unsupervised/.DS_Store,sha256=3YMgk5I3uoYy8KIh_EO-KH7CFu-0y7ileb-YFwM4ks4,6148
1480
1486
  simba/unsupervised/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1481
1487
  simba/unsupervised/bout_aggregator.py,sha256=FJiAdl3RWpCOPdi0Qzq3vPYzG62zQZqeo8mYUrTqRto,4674
@@ -1512,7 +1518,7 @@ simba/unsupervised/pop_ups/transform_cluster_popup.py,sha256=uWL-QySsInUsXx8CZ2C
1512
1518
  simba/unsupervised/pop_ups/transform_dim_reduction_popup.py,sha256=0eaq6iI6QRJ143OcN6VUwJGKYqtOSmmpRTR4DF3DAts,4092
1513
1519
  simba/utils/.DS_Store,sha256=dv7VXL3RuC-Ia6BytEmj0Ef07zH6aMabiQLXkJVn2N4,6148
1514
1520
  simba/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1515
- simba/utils/checks.py,sha256=e_rcZymSqzhw6kiBjeMVH3zKAV2jUaCrbrwglYho3YY,117243
1521
+ simba/utils/checks.py,sha256=AsRfz5GOiEJ1h_mNqHCMdgLvIuthRDiVyzi65ZCVvVM,115425
1516
1522
  simba/utils/config_creator.py,sha256=KxBdMOTf85bnAf9KprfIebzBbr5JlZl2EH0c-UMW45Y,14894
1517
1523
  simba/utils/custom_feature_extractor.py,sha256=lFOxtHQyKAB8PysXOzPXkUydmHUkkz0Tix-8KRI5-QE,11870
1518
1524
  simba/utils/data.py,sha256=IGYfzWKrlhwZL1LcDpQg84i-8A4RRLEU1lD8tqXUyQA,100777
@@ -1520,7 +1526,7 @@ simba/utils/enums.py,sha256=ZR2175N06ZHZNiHk8n757T-WGyt1-55LLpcg3Sbb91k,38668
1520
1526
  simba/utils/errors.py,sha256=aC-1qiGlh1vvHxUaPxBMQ9-LW-KKWXCGlH9acCPH0Cc,18788
1521
1527
  simba/utils/lookups.py,sha256=hVUIis9FxgoKvTa2S2Rhrqg_LKrzW13tEBr3Tt8ZP44,50458
1522
1528
  simba/utils/printing.py,sha256=2s-uESy1knuPiniqQ-q277uQ2teYM4OHo9Y4L20JQWM,5353
1523
- simba/utils/read_write.py,sha256=Rn4BavywRGn2MxioYlMMABAdcVGHcNLDDkqulR91_QM,189463
1529
+ simba/utils/read_write.py,sha256=b9BRJxqfJoGj4tNxgJ4WotNpCqOMQa0orGS6_TGoCug,190067
1524
1530
  simba/utils/warnings.py,sha256=K7w1RiDL4Un7rGaabOVCGc9fHcaKxk66iZyNLS_AtOE,8121
1525
1531
  simba/utils/yolo.py,sha256=UZzpnDqZj81SOMnwsWPQIhFAsHHSSaDawi1UUh0-uAA,19264
1526
1532
  simba/utils/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1541,11 +1547,11 @@ simba/video_processors/multi_cropper.py,sha256=1BI0Ami4kB9rdMUHR0EistmIKqc-E5FK5
1541
1547
  simba/video_processors/roi_selector.py,sha256=5N3s0Bi1Ub6c9gjE_-mV7AWr8Fqg7HQKdBKBF6whurg,8522
1542
1548
  simba/video_processors/roi_selector_circle.py,sha256=SD_lv6V3MGiIQd0VtUFSKe83ySW_qvE1t8xsgAlr2hI,6436
1543
1549
  simba/video_processors/roi_selector_polygon.py,sha256=DMtilt__gGwNu6VV73CWbnPqrPBXkan1_akUqGEzfGw,6742
1544
- simba/video_processors/video_processing.py,sha256=ynHC-9-Pt020GMZa5xPDhfpouHS5i6D26mT-5F9NAY0,327790
1550
+ simba/video_processors/video_processing.py,sha256=hYyAqBQfSwPFruqLvjGr1nBG7Tfp9VAWySh4HN_SPpA,328019
1545
1551
  simba/video_processors/videos_to_frames.py,sha256=8hltNZpwUfb3GFi-63D0PsySmD5l59pbzQGJx8SscgU,7818
1546
- simba_uw_tf_dev-4.7.5.dist-info/LICENSE,sha256=Sjn362upcvYFypam-b-ziOXU1Wl5GGuTt5ICrGimzyA,1720
1547
- simba_uw_tf_dev-4.7.5.dist-info/METADATA,sha256=JduCaUVbf9SLKDXxS9bVrRblmH2-IMuVU1PQ_LwGhOk,11432
1548
- simba_uw_tf_dev-4.7.5.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
1549
- simba_uw_tf_dev-4.7.5.dist-info/entry_points.txt,sha256=Nfh_EbfDGdKftLjCnGWtQrBHENiDYMdgupwLyLpU5dc,44
1550
- simba_uw_tf_dev-4.7.5.dist-info/top_level.txt,sha256=ogtimvlqDxDTOBAPfT2WaQ2pGAAbKRXG8z8eUTzf6TU,14
1551
- simba_uw_tf_dev-4.7.5.dist-info/RECORD,,
1552
+ simba_uw_tf_dev-4.7.7.dist-info/LICENSE,sha256=Sjn362upcvYFypam-b-ziOXU1Wl5GGuTt5ICrGimzyA,1720
1553
+ simba_uw_tf_dev-4.7.7.dist-info/METADATA,sha256=kqBjJEYd3nc9kFbD9wxAWMhdaKTpOktprgZzt5TdIIE,11432
1554
+ simba_uw_tf_dev-4.7.7.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
1555
+ simba_uw_tf_dev-4.7.7.dist-info/entry_points.txt,sha256=Nfh_EbfDGdKftLjCnGWtQrBHENiDYMdgupwLyLpU5dc,44
1556
+ simba_uw_tf_dev-4.7.7.dist-info/top_level.txt,sha256=ogtimvlqDxDTOBAPfT2WaQ2pGAAbKRXG8z8eUTzf6TU,14
1557
+ simba_uw_tf_dev-4.7.7.dist-info/RECORD,,