simba-uw-tf-dev 3.2.1__tar.gz → 3.2.2__tar.gz

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 (796) hide show
  1. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/PKG-INFO +1 -1
  2. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/Simba_UW_tf_dev.egg-info/PKG-INFO +1 -1
  3. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/Simba_UW_tf_dev.egg-info/SOURCES.txt +9 -1
  4. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/setup.py +1 -1
  5. simba_uw_tf_dev-3.2.2/simba/assets/botsort.yml +14 -0
  6. simba_uw_tf_dev-3.2.2/simba/assets/bytetrack.yml +9 -0
  7. simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/model.py +166 -0
  8. simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/utils.py +210 -0
  9. simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_inference.py +161 -0
  10. simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_pose_inference.py +188 -0
  11. simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_pose_track_inference.py +142 -0
  12. simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_pose_track_visualizer.py +178 -0
  13. simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_pose_visualizer.py +192 -0
  14. simba_uw_tf_dev-3.2.1/simba/bounding_box_tools/yolo/visualize.py → simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_visualize.py +1 -1
  15. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/boolean_conditional_calculator.py +5 -0
  16. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/image.py +53 -19
  17. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/light_dark_box_analyzer.py +0 -1
  18. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/image_mixin.py +87 -40
  19. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/pose_importer_mixin.py +6 -9
  20. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/light_dark_box_plotter.py +1 -2
  21. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/sleap_csv_importer.py +10 -2
  22. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/converters.py +133 -11
  23. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/brightness_contrast_ui.py +117 -115
  24. simba_uw_tf_dev-3.2.1/simba/bounding_box_tools/yolo/model.py +0 -357
  25. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/LICENSE +0 -0
  26. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/MANIFEST.in +0 -0
  27. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/README.md +0 -0
  28. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/Simba_UW_tf_dev.egg-info/dependency_links.txt +0 -0
  29. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/Simba_UW_tf_dev.egg-info/entry_points.txt +0 -0
  30. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/Simba_UW_tf_dev.egg-info/requires.txt +0 -0
  31. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/Simba_UW_tf_dev.egg-info/top_level.txt +0 -0
  32. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/scripts/__init__.py +0 -0
  33. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/scripts/create_issues_report.py +0 -0
  34. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/scripts/gitter_stats.py +0 -0
  35. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/setup.cfg +0 -0
  36. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/.DS_Store +0 -0
  37. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/SimBA.py +0 -0
  38. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/SimBA_logo.ico +0 -0
  39. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/__init__.py +0 -0
  40. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/.DS_Store +0 -0
  41. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/.env +0 -0
  42. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/TheGoldenLab.PNG +0 -0
  43. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/UbuntuMono-Regular.ttf +0 -0
  44. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/__init__.py +0 -0
  45. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/dash_simba_base.css +0 -0
  46. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/fonts/.DS_Store +0 -0
  47. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/fonts/Playwrite ES Deco.ttf +0 -0
  48. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/fonts/Poppins Bold.ttf +0 -0
  49. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/fonts/Poppins Regular.ttf +0 -0
  50. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/.DS_Store +0 -0
  51. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo.icns +0 -0
  52. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo.ico +0 -0
  53. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo.png +0 -0
  54. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo_3.ico +0 -0
  55. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo_3.png +0 -0
  56. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo_3_small.png +0 -0
  57. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/__init__.py +0 -0
  58. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/abacus.png +0 -0
  59. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/about.png +0 -0
  60. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/add.png +0 -0
  61. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/add_on.png +0 -0
  62. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/analyze_blue.png +0 -0
  63. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/analyze_green.png +0 -0
  64. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/api.png +0 -0
  65. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/application.png +0 -0
  66. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/archive.png +0 -0
  67. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/arrow_down_green.png +0 -0
  68. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/attributes_large.png +0 -0
  69. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/average.png +0 -0
  70. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/average_2.png +0 -0
  71. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/avi.png +0 -0
  72. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bar_graph_blue.png +0 -0
  73. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bar_graph_green.png +0 -0
  74. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bar_graph_light_blue.png +0 -0
  75. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/black_and_white.png +0 -0
  76. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/blur.png +0 -0
  77. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bmp.png +0 -0
  78. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/boolean.png +0 -0
  79. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/boris.png +0 -0
  80. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/brightness.png +0 -0
  81. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/browse.png +0 -0
  82. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/browse_small.png +0 -0
  83. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/brush_large.png +0 -0
  84. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bubble.png +0 -0
  85. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bubble_green.png +0 -0
  86. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bubble_pink.png +0 -0
  87. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bw.png +0 -0
  88. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/calipher.png +0 -0
  89. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/center.png +0 -0
  90. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/change.png +0 -0
  91. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/check_blue.png +0 -0
  92. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/circle.png +0 -0
  93. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/circle_2.png +0 -0
  94. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/circle_large.png +0 -0
  95. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/circle_small.png +0 -0
  96. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clahe.png +0 -0
  97. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clean.png +0 -0
  98. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clean_red.png +0 -0
  99. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clf.png +0 -0
  100. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clf_2.png +0 -0
  101. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clip.png +0 -0
  102. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clock.png +0 -0
  103. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/close.png +0 -0
  104. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/cluster.png +0 -0
  105. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat.png +0 -0
  106. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/__init__.py +0 -0
  107. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/horizontal.png +0 -0
  108. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/mixed_mosaic.png +0 -0
  109. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/mosaic.png +0 -0
  110. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/vertical.png +0 -0
  111. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_videos.png +0 -0
  112. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/convert.png +0 -0
  113. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/counter.png +0 -0
  114. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/create.png +0 -0
  115. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/crop.png +0 -0
  116. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/crossfade.png +0 -0
  117. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/csv_grey.png +0 -0
  118. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/curve_black.png +0 -0
  119. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/danger.png +0 -0
  120. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dash_simba.css +0 -0
  121. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/data_table.png +0 -0
  122. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/decision_tree_blue.png +0 -0
  123. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/decision_tree_purple.png +0 -0
  124. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/decision_tree_small.png +0 -0
  125. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/delete_large_orange.png +0 -0
  126. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/delete_large_red.png +0 -0
  127. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dependency.png +0 -0
  128. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/details.png +0 -0
  129. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/developer.png +0 -0
  130. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dice_green.png +0 -0
  131. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dimensionality_reduction.png +0 -0
  132. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/direction.png +0 -0
  133. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/direction_2.png +0 -0
  134. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/display_large.png +0 -0
  135. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/distance.png +0 -0
  136. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/distance_red.png +0 -0
  137. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/documentation.png +0 -0
  138. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/draw.png +0 -0
  139. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dumbbell.png +0 -0
  140. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/duplicate.png +0 -0
  141. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/duplicate_2_large.png +0 -0
  142. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/duplicate_large.png +0 -0
  143. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/ear_small.png +0 -0
  144. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/edit.png +0 -0
  145. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/edit_roi_large.png +0 -0
  146. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/egocentric.png +0 -0
  147. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/equation_small.png +0 -0
  148. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/ethovision.png +0 -0
  149. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/exit.png +0 -0
  150. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/eye.png +0 -0
  151. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/factory.png +0 -0
  152. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_forward.png +0 -0
  153. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_forward_green.png +0 -0
  154. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_forward_large.png +0 -0
  155. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_forward_large_2.png +0 -0
  156. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_reverse.png +0 -0
  157. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fastforward_green_2.png +0 -0
  158. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/feather_green.png +0 -0
  159. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/features.png +0 -0
  160. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/ffmpeg.png +0 -0
  161. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fill.png +0 -0
  162. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/finish.png +0 -0
  163. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fire.png +0 -0
  164. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/first.png +0 -0
  165. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/first_frame_blue.png +0 -0
  166. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/first_green.png +0 -0
  167. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/flip_black.png +0 -0
  168. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/flip_green.png +0 -0
  169. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/flip_red.png +0 -0
  170. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/forest.png +0 -0
  171. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/forward.png +0 -0
  172. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/forward_large.png +0 -0
  173. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/four_squares.png +0 -0
  174. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fps.png +0 -0
  175. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/frames.png +0 -0
  176. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gantt_large.png +0 -0
  177. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gantt_small.png +0 -0
  178. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gif.png +0 -0
  179. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/github.png +0 -0
  180. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gitter.png +0 -0
  181. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gpu.png +0 -0
  182. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gpu_2.png +0 -0
  183. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/green_check.png +0 -0
  184. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/grey.png +0 -0
  185. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/greyscale.png +0 -0
  186. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/half_circle.png +0 -0
  187. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/half_circle_small.png +0 -0
  188. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/heatmap.png +0 -0
  189. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/hexagon.png +0 -0
  190. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/hexagon_small.png +0 -0
  191. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/hierarchy.png +0 -0
  192. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/home.png +0 -0
  193. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/id_card.png +0 -0
  194. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/image.png +0 -0
  195. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/import.png +0 -0
  196. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/info.png +0 -0
  197. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/info_large.png +0 -0
  198. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/interaction_large.png +0 -0
  199. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/interactive_blue.png +0 -0
  200. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/join_purple.png +0 -0
  201. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/join_red.png +0 -0
  202. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/join_yellow.png +0 -0
  203. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/jpeg.png +0 -0
  204. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/jump.png +0 -0
  205. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/label.png +0 -0
  206. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/label_blue.png +0 -0
  207. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/label_large.png +0 -0
  208. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/label_yellow.png +0 -0
  209. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/last.png +0 -0
  210. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/last_frame_blue.png +0 -0
  211. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/last_red.png +0 -0
  212. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/light_bulb.png +0 -0
  213. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/line_chart_blue.png +0 -0
  214. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/line_chart_light_blue.png +0 -0
  215. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/line_chart_red.png +0 -0
  216. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/link.png +0 -0
  217. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/list.png +0 -0
  218. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/load.png +0 -0
  219. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/load_black.png +0 -0
  220. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/load_blue.png +0 -0
  221. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/log.png +0 -0
  222. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/magnifying.png +0 -0
  223. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/mars.png +0 -0
  224. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/merge.png +0 -0
  225. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/metrics.png +0 -0
  226. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/metrics_blue.png +0 -0
  227. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/metrics_green.png +0 -0
  228. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/minus.png +0 -0
  229. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/minus_blue_2.png +0 -0
  230. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/minus_red.png +0 -0
  231. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/mouse_small.png +0 -0
  232. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/mov.png +0 -0
  233. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/move.png +0 -0
  234. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/move_large.png +0 -0
  235. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/mp4.png +0 -0
  236. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/multiple_blue.png +0 -0
  237. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/multiple_green.png +0 -0
  238. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/multiple_yellow.png +0 -0
  239. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/navigation.png +0 -0
  240. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/number_black.png +0 -0
  241. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/one.png +0 -0
  242. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/one_blue.png +0 -0
  243. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/options_small.png +0 -0
  244. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/original_size.png +0 -0
  245. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/osf.png +0 -0
  246. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/outlier.png +0 -0
  247. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/paint.png +0 -0
  248. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/palette_large.png +0 -0
  249. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/parquet.png +0 -0
  250. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/path.png +0 -0
  251. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/path_2.png +0 -0
  252. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/permutation_blue.png +0 -0
  253. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/photos.png +0 -0
  254. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/play_large_green.png +0 -0
  255. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/plot.png +0 -0
  256. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/plus.png +0 -0
  257. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/plus_green.png +0 -0
  258. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/plus_green_2.png +0 -0
  259. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/png.png +0 -0
  260. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/point_right_large.png +0 -0
  261. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/pointing_left_large.png +0 -0
  262. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/polygon.png +0 -0
  263. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/polygon_2.png +0 -0
  264. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/polygon_large.png +0 -0
  265. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/pose.png +0 -0
  266. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/print.png +0 -0
  267. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/probability.png +0 -0
  268. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/progressbar_black.png +0 -0
  269. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/range_large.png +0 -0
  270. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/readthedocs_logo.png +0 -0
  271. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle.png +0 -0
  272. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle_1_large.png +0 -0
  273. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle_2.png +0 -0
  274. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle_red.png +0 -0
  275. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle_small.png +0 -0
  276. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/remove_bg.png +0 -0
  277. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reorganize.png +0 -0
  278. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/restart.png +0 -0
  279. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reverse.png +0 -0
  280. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reverse_blue.png +0 -0
  281. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reverse_large.png +0 -0
  282. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reverse_large_red.png +0 -0
  283. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rewind.png +0 -0
  284. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rewind_blue_2.png +0 -0
  285. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rewind_large.png +0 -0
  286. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rewind_red.png +0 -0
  287. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rocket.png +0 -0
  288. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/roi.png +0 -0
  289. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/roi_green.png +0 -0
  290. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rotate.png +0 -0
  291. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/ruler.png +0 -0
  292. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/run.png +0 -0
  293. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/sample.png +0 -0
  294. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save.png +0 -0
  295. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save_blue.png +0 -0
  296. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save_green.png +0 -0
  297. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save_large.png +0 -0
  298. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save_small.png +0 -0
  299. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/search.png +0 -0
  300. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/segment.png +0 -0
  301. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/seperate_green.png +0 -0
  302. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/settings.png +0 -0
  303. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/shap.png +0 -0
  304. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/shapes_large.png +0 -0
  305. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/shapes_small.png +0 -0
  306. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/shapes_small_2.png +0 -0
  307. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/simba_logo_2.png +0 -0
  308. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/single_black.png +0 -0
  309. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/single_blue.png +0 -0
  310. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/single_green.png +0 -0
  311. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/size_black.png +0 -0
  312. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/skip.png +0 -0
  313. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/skip_2.png +0 -0
  314. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/skip_forward_large.png +0 -0
  315. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/skip_previous_large.png +0 -0
  316. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/smooth.png +0 -0
  317. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/split.png +0 -0
  318. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/square_black.png +0 -0
  319. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/stack.png +0 -0
  320. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/stopwatch.png +0 -0
  321. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/style.png +0 -0
  322. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/subset_blue.png +0 -0
  323. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/superimpose.png +0 -0
  324. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/system.png +0 -0
  325. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/t.png +0 -0
  326. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/table.png +0 -0
  327. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/table_2.png +0 -0
  328. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/text_black.png +0 -0
  329. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/threshold.png +0 -0
  330. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tick.png +0 -0
  331. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tick_large.png +0 -0
  332. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tiff.png +0 -0
  333. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tile_green.png +0 -0
  334. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/timer.png +0 -0
  335. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/timer_2.png +0 -0
  336. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/trash.png +0 -0
  337. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/trash_red.png +0 -0
  338. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/triangle_black.png +0 -0
  339. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/triangle_small.png +0 -0
  340. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tv_large.png +0 -0
  341. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/video.png +0 -0
  342. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/video_2.png +0 -0
  343. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/video_file_large.png +0 -0
  344. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/video_large.png +0 -0
  345. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/visualize.png +0 -0
  346. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/visualize_blue.png +0 -0
  347. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/visualize_green.png +0 -0
  348. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/walk.png +0 -0
  349. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/wand_blue.png +0 -0
  350. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/warning.png +0 -0
  351. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/watermark_green.png +0 -0
  352. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/webm.png +0 -0
  353. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/webp.png +0 -0
  354. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/weights.png +0 -0
  355. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/zero.png +0 -0
  356. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/zoom_in.png +0 -0
  357. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/zoom_out.png +0 -0
  358. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/__init__.py +0 -0
  359. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/about_me.png +0 -0
  360. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/bg.png +0 -0
  361. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/bg_2.png +0 -0
  362. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/bg_2024.png +0 -0
  363. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/splash.mp4 +0 -0
  364. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/splash.pptx +0 -0
  365. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/splash_2024.mp4 +0 -0
  366. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/~$splash.pptx +0 -0
  367. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/__init__.py +0 -0
  368. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/critical_values_05.pickle +0 -0
  369. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/feature_extraction_headers.csv +0 -0
  370. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/features.csv +0 -0
  371. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/model_names.parquet +0 -0
  372. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/unsupervised_example_x.csv +0 -0
  373. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/yolo.yaml +0 -0
  374. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/UbuntuMono-Regular.ttf +0 -0
  375. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/__init__.py +0 -0
  376. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/animal_distances.jpg +0 -0
  377. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/baseline_scale.jpg +0 -0
  378. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/color_bar.jpg +0 -0
  379. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/down_arrow.jpg +0 -0
  380. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/feature_categories/__init__.py +0 -0
  381. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/feature_categories/shap_feature_categories.csv +0 -0
  382. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/intruder_movement.jpg +0 -0
  383. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/intruder_shape.jpg +0 -0
  384. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/resident_intruder_movement.jpg +0 -0
  385. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/resident_intruder_shape.jpg +0 -0
  386. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/resident_movement.jpg +0 -0
  387. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/resident_shape.jpg +0 -0
  388. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/side_scale.jpg +0 -0
  389. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/side_scale_5.jpg +0 -0
  390. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/ubuntu.regular.ttf +0 -0
  391. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/__init__.py +0 -0
  392. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/grid_floor.stl +0 -0
  393. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/operant_lever.stl +0 -0
  394. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/operant_tray.stl +0 -0
  395. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/operant_walls.stl +0 -0
  396. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/unsupervised/__init__.py +0 -0
  397. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/unsupervised/features.csv +0 -0
  398. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/unsupervised/model_names.parquet +0 -0
  399. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/__init__.py +0 -0
  400. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/agg_boundary_stats.py +0 -0
  401. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/boundary_menus.py +0 -0
  402. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/boundary_statistics.py +0 -0
  403. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/find_boundaries.py +0 -0
  404. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/visualize_boundaries.py +0 -0
  405. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/yolo/__init__.py +0 -0
  406. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/__init__.py +0 -0
  407. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/cue_light_analyzer.py +0 -0
  408. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/cue_light_clf_statistics.py +0 -0
  409. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/cue_light_main_popup.py +0 -0
  410. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/cue_light_movement_statistics.py +0 -0
  411. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/cue_light_tools.py +0 -0
  412. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/cue_light_visualizer.py +0 -0
  413. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/dash_app/SimBA_dash_app.py +0 -0
  414. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/dash_app/__init__.py +0 -0
  415. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/dash_app/dash_app.py +0 -0
  416. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/dash_app/run_dash_tkinter.py +0 -0
  417. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/.DS_Store +0 -0
  418. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/__init__.py +0 -0
  419. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/advanced_interpolator.py +0 -0
  420. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/advanced_smoothing.py +0 -0
  421. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/agg_clf_calculator.py +0 -0
  422. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/blob_location_computer.py +0 -0
  423. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/circling_detector.py +0 -0
  424. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/__init__.py +0 -0
  425. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/circular_statistics.py +0 -0
  426. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/create_shap_log.py +0 -0
  427. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/data.py +0 -0
  428. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/geometry.py +0 -0
  429. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/statistics.py +0 -0
  430. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/timeseries.py +0 -0
  431. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/utils.py +0 -0
  432. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cue_light_analyzer.py +0 -0
  433. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cue_light_clf_statistics.py +0 -0
  434. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cue_light_movement_statistics.py +0 -0
  435. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/directing_animal_to_bodypart.py +0 -0
  436. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/directing_other_animals_calculator.py +0 -0
  437. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/egocentric_aligner.py +0 -0
  438. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/find_animal_blob_location.py +0 -0
  439. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/freezing_detector.py +0 -0
  440. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/fsttc_calculator.py +0 -0
  441. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/gibbs_sampler.py +0 -0
  442. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/interpolate.py +0 -0
  443. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/interpolate_pose.py +0 -0
  444. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/interpolation_smoothing.py +0 -0
  445. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/kleinberg_calculator.py +0 -0
  446. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/movement_calculator.py +0 -0
  447. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/mutual_exclusivity_corrector.py +0 -0
  448. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/pup_retrieval_calculator.py +0 -0
  449. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/pybursts_calculator.py +0 -0
  450. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/severity_bout_based_calculator.py +0 -0
  451. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/severity_calculator.py +0 -0
  452. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/severity_frame_based_calculator.py +0 -0
  453. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/smoothing.py +0 -0
  454. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/spontaneous_alternation_calculator.py +0 -0
  455. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/timebins_clf_calculator.py +0 -0
  456. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/timebins_movement_calculator.py +0 -0
  457. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/.DS_Store +0 -0
  458. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/__init__.py +0 -0
  459. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/amber_feature_extractor.py +0 -0
  460. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_14bp.py +0 -0
  461. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_16bp.py +0 -0
  462. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_4bp.py +0 -0
  463. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_7bp.py +0 -0
  464. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_8bp.py +0 -0
  465. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_8bps_2_animals.py +0 -0
  466. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_9bp.py +0 -0
  467. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_user_defined.py +0 -0
  468. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_subsets.py +0 -0
  469. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/add_probability_cnt_features.py +0 -0
  470. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/convex_hull_3_scratch_3.py +0 -0
  471. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/convex_hull_scratch_1.py +0 -0
  472. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/convex_hull_scratch_2.py +0 -0
  473. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/count_values_in_range.py +0 -0
  474. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/doctests.py +0 -0
  475. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/egocentrical_aligner.py +0 -0
  476. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/fish_feature_extractor_2022.py +0 -0
  477. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_2.py +0 -0
  478. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_3.py +0 -0
  479. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_4.py +0 -0
  480. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_5.py +0 -0
  481. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/graph_3d_plotter.py +0 -0
  482. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/graph_creator.py +0 -0
  483. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/make_splash.py +0 -0
  484. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/mutual_exclusive.py +0 -0
  485. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/peaks.py +0 -0
  486. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/read_in_mp.py +0 -0
  487. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/termite_rois.csv +0 -0
  488. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/time_stamp_calculator.py +0 -0
  489. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/video_color.py +0 -0
  490. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/video_rotator.py +0 -0
  491. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/video_rotator_mp.py +0 -0
  492. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/perimeter_jit.py +0 -0
  493. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/__init__.py +0 -0
  494. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/extract_labelled_frames.py +0 -0
  495. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/extract_labelling_meta.py +0 -0
  496. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/labelling_advanced_interface.py +0 -0
  497. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/labelling_interface.py +0 -0
  498. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/play_annotation_video.py +0 -0
  499. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/standard_labeller.py +0 -0
  500. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/targeted_annotations_clips.py +0 -0
  501. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/.DS_Store +0 -0
  502. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/__init__.py +0 -0
  503. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/abstract_classes.py +0 -0
  504. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/annotator_mixin.py +0 -0
  505. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/circular_statistics.py +0 -0
  506. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/config_reader.py +0 -0
  507. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/feature_extraction_mixin.py +0 -0
  508. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/feature_extraction_supplement_mixin.py +0 -0
  509. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/geometry_mixin.py +0 -0
  510. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/network_mixin.py +0 -0
  511. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/plotting_mixin.py +0 -0
  512. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/pop_up_mixin.py +0 -0
  513. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/statistics_mixin.py +0 -0
  514. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/timeseries_features_mixin.py +0 -0
  515. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/train_model_mixin.py +0 -0
  516. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/unsupervised_mixin.py +0 -0
  517. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/__init__.py +0 -0
  518. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/grid_search_multiclass_rf.py +0 -0
  519. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/grid_search_rf.py +0 -0
  520. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/inference_batch.py +0 -0
  521. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/inference_multiclass_batch.py +0 -0
  522. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/inference_validation.py +0 -0
  523. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/ordinal_clf.py +0 -0
  524. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/regression/__init__.py +0 -0
  525. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/regression/metrics.py +0 -0
  526. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/regression/model.py +0 -0
  527. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/train_multiclass_rf.py +0 -0
  528. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/train_multilabel_rf.py +0 -0
  529. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/train_rf.py +0 -0
  530. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/__init__.py +0 -0
  531. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_location.py +0 -0
  532. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_location_advanced.py +0 -0
  533. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_location_mp.py +0 -0
  534. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_movement.py +0 -0
  535. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_movement_advanced.py +0 -0
  536. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_movement_mp.py +0 -0
  537. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/skip_outlier_correction.py +0 -0
  538. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/.DS_Store +0 -0
  539. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ROI_feature_visualizer.py +0 -0
  540. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ROI_feature_visualizer_mp.py +0 -0
  541. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ROI_plotter.py +0 -0
  542. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ROI_plotter_mp.py +0 -0
  543. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/__init__.py +0 -0
  544. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/blob_plotter.py +0 -0
  545. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/blob_visualizer.py +0 -0
  546. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/circular_feature_overlay_plotter.py +0 -0
  547. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/circular_plotting.py +0 -0
  548. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/clf_validator.py +0 -0
  549. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/clf_validator_mp.py +0 -0
  550. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/cue_light_visualizer.py +0 -0
  551. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/data_plotter.py +0 -0
  552. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/directing_animals_to_bodypart_visualizer.py +0 -0
  553. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/directing_animals_visualizer.py +0 -0
  554. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/directing_animals_visualizer_mp.py +0 -0
  555. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/distance_plotter.py +0 -0
  556. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/distance_plotter_mp.py +0 -0
  557. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ez_path_plot.py +0 -0
  558. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/frame_mergerer_ffmpeg.py +0 -0
  559. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/gantt_creator.py +0 -0
  560. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/gantt_creator_mp.py +0 -0
  561. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/gantt_plotly.py +0 -0
  562. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/geometry_plotter.py +0 -0
  563. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/heat_mapper_clf.py +0 -0
  564. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/heat_mapper_clf_mp.py +0 -0
  565. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/heat_mapper_location.py +0 -0
  566. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/heat_mapper_location_mp.py +0 -0
  567. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/interactive_probability_grapher.py +0 -0
  568. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/path_plotter.py +0 -0
  569. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/path_plotter_mp.py +0 -0
  570. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/plot_clf_results.py +0 -0
  571. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/plot_clf_results_mp.py +0 -0
  572. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/pose_plotter.py +0 -0
  573. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/pose_plotter_mp.py +0 -0
  574. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/probability_plot_creator.py +0 -0
  575. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/probability_plot_creator_mp.py +0 -0
  576. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/shap_agg_stats_visualizer.py +0 -0
  577. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/single_run_model_validation_video.py +0 -0
  578. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/single_run_model_validation_video_mp.py +0 -0
  579. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/spontaneous_alternation_plotter.py +0 -0
  580. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/tools/__init__.py +0 -0
  581. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/tools/tkinter_tools.py +0 -0
  582. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/.DS_Store +0 -0
  583. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/__init__.py +0 -0
  584. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/bp_names/__init__.py +0 -0
  585. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/bp_names/bp_names.csv +0 -0
  586. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/configuration_names/__init__.py +0 -0
  587. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/configuration_names/pose_config_names.csv +0 -0
  588. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/no_animals/__init__.py +0 -0
  589. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/no_animals/no_animals.csv +0 -0
  590. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/1.png +0 -0
  591. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/10.png +0 -0
  592. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/11.png +0 -0
  593. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/12.png +0 -0
  594. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/13.png +0 -0
  595. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/2.png +0 -0
  596. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/3.png +0 -0
  597. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/4.png +0 -0
  598. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/5.png +0 -0
  599. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/6.png +0 -0
  600. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/7.png +0 -0
  601. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/8.png +0 -0
  602. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/9.png +0 -0
  603. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/.DS_Store +0 -0
  604. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/__init__.py +0 -0
  605. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/dlc_importer_csv.py +0 -0
  606. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/import_mars.py +0 -0
  607. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/madlc_importer.py +0 -0
  608. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/misc/__init__.py +0 -0
  609. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/misc/apt_trk_importer.py +0 -0
  610. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/read_DANNCE_mat.py +0 -0
  611. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/sleap_h5_importer.py +0 -0
  612. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/sleap_slp_importer.py +0 -0
  613. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/trk_importer.py +0 -0
  614. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/__init__.py +0 -0
  615. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/pose_reset.py +0 -0
  616. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/remove_keypoints.py +0 -0
  617. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/reorganize_keypoint.py +0 -0
  618. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/reverse_pose.py +0 -0
  619. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/requirements.txt +0 -0
  620. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/.DS_Store +0 -0
  621. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_analyzer.py +0 -0
  622. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_clf_calculator.py +0 -0
  623. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_directing_analyzer.py +0 -0
  624. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_feature_analyzer.py +0 -0
  625. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_size_standardizer.py +0 -0
  626. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_time_bin_calculator.py +0 -0
  627. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/__init__.py +0 -0
  628. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/interactive_modifier_ui.py +0 -0
  629. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/interactive_roi_modifier_tkinter.py +0 -0
  630. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_aggregate_statistics_analyzer.py +0 -0
  631. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_selector_circle_tkinter.py +0 -0
  632. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_selector_polygon_tkinter.py +0 -0
  633. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_selector_rectangle_tkinter.py +0 -0
  634. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_time_bins_analyzer.py +0 -0
  635. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_ui.py +0 -0
  636. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_ui_mixin.py +0 -0
  637. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_utils.py +0 -0
  638. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/.DS_Store +0 -0
  639. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/BENTO_appender.py +0 -0
  640. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/BORIS_appender.py +0 -0
  641. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/__init__.py +0 -0
  642. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/boris_source_cleaner.py +0 -0
  643. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/deepethogram_importer.py +0 -0
  644. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/ethovision_import.py +0 -0
  645. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/observer_importer.py +0 -0
  646. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/solomon_importer.py +0 -0
  647. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/third_party_appender.py +0 -0
  648. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/tools.py +0 -0
  649. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/.DS_Store +0 -0
  650. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/__init__.py +0 -0
  651. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/blob_quick_check_interface.py +0 -0
  652. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/blob_tracker_ui.py +0 -0
  653. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/create_project_ui.py +0 -0
  654. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/import_pose_frame.py +0 -0
  655. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/import_videos_frame.py +0 -0
  656. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/machine_model_settings_ui.py +0 -0
  657. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/.DS_Store +0 -0
  658. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/__init__.py +0 -0
  659. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/about_simba_pop_up.py +0 -0
  660. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/animal_directing_other_animals_pop_up.py +0 -0
  661. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/append_roi_features_animals_pop_up.py +0 -0
  662. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/append_roi_features_bodypart_pop_up.py +0 -0
  663. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/archive_files_pop_up.py +0 -0
  664. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/batch_preprocess_pop_up.py +0 -0
  665. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/blob_visualizer_pop_up.py +0 -0
  666. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/boolean_conditional_slicer_pup_up.py +0 -0
  667. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/check_videos_seekable_pop_up.py +0 -0
  668. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/clf_add_remove_print_pop_up.py +0 -0
  669. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/clf_annotation_counts_pop_up.py +0 -0
  670. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/clf_by_roi_pop_up.py +0 -0
  671. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/clf_by_timebins_pop_up.py +0 -0
  672. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/clf_descriptive_statistics_pop_up.py +0 -0
  673. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/clf_plot_pop_up.py +0 -0
  674. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/clf_probability_plot_pop_up.py +0 -0
  675. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/clf_validation_plot_pop_up.py +0 -0
  676. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/create_user_defined_pose_configuration_pop_up.py +0 -0
  677. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/csv_2_parquet_pop_up.py +0 -0
  678. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/cue_light_clf_analyzer_popup.py +0 -0
  679. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/cue_light_data_analyzer_popup.py +0 -0
  680. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/cue_light_main_popup.py +0 -0
  681. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/cue_light_movement_analyzer_popup.py +0 -0
  682. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/cue_light_visualizer_popup.py +0 -0
  683. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/data_plot_pop_up.py +0 -0
  684. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/delete_all_rois_pop_up.py +0 -0
  685. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/directing_animal_to_bodypart_plot_pop_up.py +0 -0
  686. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/directing_other_animals_plot_pop_up.py +0 -0
  687. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/direction_animal_to_bodypart_settings_pop_up.py +0 -0
  688. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/distance_plot_pop_up.py +0 -0
  689. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/egocentric_alignment_pop_up.py +0 -0
  690. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/fsttc_pop_up.py +0 -0
  691. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/gantt_pop_up.py +0 -0
  692. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/heatmap_clf_pop_up.py +0 -0
  693. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/heatmap_location_pop_up.py +0 -0
  694. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/initialize_blob_tracking_pop_up.py +0 -0
  695. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/interpolate_pop_up.py +0 -0
  696. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/kleinberg_pop_up.py +0 -0
  697. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/make_path_plot_pop_up.py +0 -0
  698. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/movement_analysis_pop_up.py +0 -0
  699. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/movement_analysis_time_bins_pop_up.py +0 -0
  700. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/multiple_videos_to_frames_popup.py +0 -0
  701. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/mutual_exclusivity_pop_up.py +0 -0
  702. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/outlier_settings_pop_up.py +0 -0
  703. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/path_plot_pop_up.py +0 -0
  704. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/pose_bp_drop_pop_up.py +0 -0
  705. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/pose_reorganizer_pop_up.py +0 -0
  706. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/pup_retrieval_pop_up.py +0 -0
  707. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/quick_path_plot_pop_up.py +0 -0
  708. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/remove_roi_features_pop_up.py +0 -0
  709. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/roi_aggregate_stats_popup.py +0 -0
  710. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/roi_analysis_pop_up.py +0 -0
  711. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/roi_analysis_time_bins_pop_up.py +0 -0
  712. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/roi_features_plot_pop_up.py +0 -0
  713. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/roi_size_standardizer_popup.py +0 -0
  714. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/roi_tracking_plot_pop_up.py +0 -0
  715. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/roi_video_table_pop_up.py +0 -0
  716. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/select_video_for_labelling_popup.py +0 -0
  717. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/select_video_for_pseudo_labelling_popup.py +0 -0
  718. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/set_machine_model_parameters_pop_up.py +0 -0
  719. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/severity_analysis_pop_up.py +0 -0
  720. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/single_video_to_frames_popup.py +0 -0
  721. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/smoothing_popup.py +0 -0
  722. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/spontaneous_alternation_pop_up.py +0 -0
  723. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/subset_feature_extractor_pop_up.py +0 -0
  724. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/targeted_annotation_clips_pop_up.py +0 -0
  725. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/third_party_annotator_appender_pop_up.py +0 -0
  726. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/validation_plot_pop_up.py +0 -0
  727. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/video_processing_pop_up.py +0 -0
  728. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/visualize_pose_in_dir_pop_up.py +0 -0
  729. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/px_to_mm_ui.py +0 -0
  730. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/tkinter_functions.py +0 -0
  731. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/user_defined_pose_creator.py +0 -0
  732. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/video_info_ui.py +0 -0
  733. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/.DS_Store +0 -0
  734. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/__init__.py +0 -0
  735. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/bout_aggregator.py +0 -0
  736. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/cluster_frequentist_calculator.py +0 -0
  737. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/cluster_validation_calculator.py +0 -0
  738. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/cluster_video_visualizer.py +0 -0
  739. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/cluster_xai_calculator.py +0 -0
  740. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/clusterer_comparison_calculator.py +0 -0
  741. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/data_extractor.py +0 -0
  742. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/data_map.yaml +0 -0
  743. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/dataset_creator.py +0 -0
  744. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/dbcv_calculator.py +0 -0
  745. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/embedding_correlation_calculator.py +0 -0
  746. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/enums.py +0 -0
  747. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/grid_search_visualizers.py +0 -0
  748. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/hdbscan_clusterer.py +0 -0
  749. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/outlier_detector.py +0 -0
  750. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/.DS_Store +0 -0
  751. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/cluster_frequentist_stats_popup.py +0 -0
  752. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/cluster_validation_pop_up.py +0 -0
  753. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/cluster_videos_popup.py +0 -0
  754. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/cluster_xai_popup.py +0 -0
  755. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/clusterer_comparison_popup.py +0 -0
  756. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/data_extractor_popup.py +0 -0
  757. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/embedding_correlations_popup.py +0 -0
  758. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/fit_cluster_popup.py +0 -0
  759. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/fit_dim_reduction_popup.py +0 -0
  760. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/grid_search_visualizer_popup.py +0 -0
  761. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/print_embedding_info_popup.py +0 -0
  762. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/transform_cluster_popup.py +0 -0
  763. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/transform_dim_reduction_popup.py +0 -0
  764. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/tsne.py +0 -0
  765. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/umap_embedder.py +0 -0
  766. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/unsupervised_main.py +0 -0
  767. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/.DS_Store +0 -0
  768. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/__init__.py +0 -0
  769. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/checks.py +0 -0
  770. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/cli/__init__.py +0 -0
  771. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/cli/cli_tools.py +0 -0
  772. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/config_creator.py +0 -0
  773. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/custom_feature_extractor.py +0 -0
  774. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/data.py +0 -0
  775. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/enums.py +0 -0
  776. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/errors.py +0 -0
  777. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/lookups.py +0 -0
  778. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/printing.py +0 -0
  779. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/read_write.py +0 -0
  780. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/warnings.py +0 -0
  781. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/.DS_Store +0 -0
  782. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/__init__.py +0 -0
  783. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/batch_process_create_ffmpeg_commands.py +0 -0
  784. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/batch_process_menus.py +0 -0
  785. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/blob_tracking_executor.py +0 -0
  786. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/calculate_px_dist.py +0 -0
  787. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/clahe_ui.py +0 -0
  788. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/egocentric_video_rotator.py +0 -0
  789. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/extract_frames.py +0 -0
  790. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/extract_seqframes.py +0 -0
  791. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/multi_cropper.py +0 -0
  792. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/roi_selector.py +0 -0
  793. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/roi_selector_circle.py +0 -0
  794. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/roi_selector_polygon.py +0 -0
  795. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/video_processing.py +0 -0
  796. {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/videos_to_frames.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: simba_uw_tf_dev
3
- Version: 3.2.1
3
+ Version: 3.2.2
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: simba-uw-tf-dev
3
- Version: 3.2.1
3
+ Version: 3.2.2
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
@@ -21,6 +21,8 @@ simba/assets/.env
21
21
  simba/assets/TheGoldenLab.PNG
22
22
  simba/assets/UbuntuMono-Regular.ttf
23
23
  simba/assets/__init__.py
24
+ simba/assets/botsort.yml
25
+ simba/assets/bytetrack.yml
24
26
  simba/assets/dash_simba_base.css
25
27
  simba/assets/fonts/.DS_Store
26
28
  simba/assets/fonts/Playwrite ES Deco.ttf
@@ -383,7 +385,13 @@ simba/bounding_box_tools/find_boundaries.py
383
385
  simba/bounding_box_tools/visualize_boundaries.py
384
386
  simba/bounding_box_tools/yolo/__init__.py
385
387
  simba/bounding_box_tools/yolo/model.py
386
- simba/bounding_box_tools/yolo/visualize.py
388
+ simba/bounding_box_tools/yolo/utils.py
389
+ simba/bounding_box_tools/yolo/yolo_inference.py
390
+ simba/bounding_box_tools/yolo/yolo_pose_inference.py
391
+ simba/bounding_box_tools/yolo/yolo_pose_track_inference.py
392
+ simba/bounding_box_tools/yolo/yolo_pose_track_visualizer.py
393
+ simba/bounding_box_tools/yolo/yolo_pose_visualizer.py
394
+ simba/bounding_box_tools/yolo/yolo_visualize.py
387
395
  simba/cue_light_tools/__init__.py
388
396
  simba/cue_light_tools/cue_light_analyzer.py
389
397
  simba/cue_light_tools/cue_light_clf_statistics.py
@@ -29,7 +29,7 @@ with open(GPU_REQUIREMENTS_PATH, "r") as f:
29
29
  # Setup configuration
30
30
  setuptools.setup(
31
31
  name="simba_uw_tf_dev",
32
- version="3.2.1",
32
+ version="3.2.2",
33
33
  author="Simon Nilsson, Jia Jie Choong, Sophia Hwang",
34
34
  author_email="sronilsson@gmail.com",
35
35
  description="Toolkit for computer classification and analysis of behaviors in experimental animals",
@@ -0,0 +1,14 @@
1
+ tracker_type: botsort
2
+ track_high_thresh: 0.1 #Higher values make the tracker stricter (less false matches, but more ID loss).
3
+ track_low_thresh: 0.1 #Used for low-confidence matching or future buffer merging.
4
+ new_track_thresh: 0.80 #Too high → might miss new objects. Too low → might create too many false positives.
5
+ track_buffer: 60 #Number of frames to keep a track alive without a match.
6
+ match_thresh: 0.125 #Lower = stricter matching = fewer false positives, but more ID switches.
7
+ with_reid: True
8
+ model: auto # Alternatively, specify the path to your ReID model
9
+ appearance_thresh: 0.4
10
+ gmc: False
11
+ alpha: 0.9
12
+ gmc_method: None
13
+ proximity_thresh: 30
14
+ fuse_score: 1
@@ -0,0 +1,9 @@
1
+ tracker_type: bytetrack
2
+ track_thresh: 0.4 # Lowered to catch more detections
3
+ match_thresh: 0.8
4
+ track_high_thresh: 0.3 # Slightly more permissive
5
+ track_low_thresh: 0.1
6
+ track_buffer: 30
7
+ mot20: False # Disable stricter matching
8
+ fuse_score: True
9
+ new_track_thresh: 0.2 # Slightly lower to improve new ID creation
@@ -0,0 +1,166 @@
1
+ import os
2
+
3
+ os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
4
+ from typing import Dict, List, Optional, Tuple, Union
5
+
6
+ try:
7
+ from typing import Literal
8
+ except:
9
+ from typing_extensions import Literal
10
+
11
+ import numpy as np
12
+ import pandas as pd
13
+ import torch
14
+ from ultralytics import YOLO
15
+
16
+ from simba.data_processors.cuda.utils import _is_cuda_available
17
+ from simba.third_party_label_appenders.converters import \
18
+ yolo_obb_data_to_bounding_box
19
+ from simba.utils.checks import (check_file_exist_and_readable, check_float,
20
+ check_if_dir_exists, check_int, check_str,
21
+ check_valid_array, check_valid_boolean,
22
+ check_valid_lst, check_valid_tuple, get_fn_ext)
23
+ from simba.utils.data import df_smoother, savgol_smoother
24
+ from simba.utils.enums import Formats
25
+ from simba.utils.errors import InvalidInputError, SimBAGPUError
26
+ from simba.utils.printing import SimbaTimer, stdout_success
27
+ from simba.utils.read_write import find_core_cnt, get_video_meta_data
28
+
29
+
30
+ def inference_yolo_pose_tracks(weights_path: Union[str, os.PathLike],
31
+ video_path: Union[Union[str, os.PathLike], List[Union[str, os.PathLike]]],
32
+ keypoint_names: Tuple[str, ...],
33
+ botsort_config_path: Union[str, os.PathLike],
34
+ verbose: Optional[bool] = False,
35
+ save_dir: Optional[Union[str, os.PathLike]] = None,
36
+ device: Union[Literal['cpu'], int] = 0,
37
+ format: Optional[str] = None,
38
+ batch_size: Optional[int] = 4,
39
+ torch_threads: int = 8,
40
+ half_precision: bool = True,
41
+ stream: bool = False,
42
+ threshold: float = 0.7,
43
+ max_tracks: Optional[int] = 2):
44
+
45
+ OUT_COLS = ['FRAME', 'CLASS_ID', 'CLASS_NAME', 'CONFIDENCE', 'X1', 'Y1', 'X2', 'Y2', 'X3', 'Y3', 'X4', 'Y4']
46
+ if isinstance(video_path, list):
47
+ check_valid_lst(data=video_path, source=f'{inference_yolo.__name__} video_path', valid_dtypes=(str, np.str_,), min_len=1)
48
+ elif isinstance(video_path, str):
49
+ check_file_exist_and_readable(file_path=video_path)
50
+ video_path = [video_path]
51
+ for i in video_path:
52
+ _ = get_video_meta_data(video_path=i)
53
+ check_file_exist_and_readable(file_path=weights_path)
54
+ check_file_exist_and_readable(file_path=botsort_config_path)
55
+ check_valid_boolean(value=verbose, source=inference_yolo.__name__)
56
+ check_int(name=f'{inference_yolo.__name__} batch_size', value=batch_size, min_value=1)
57
+ check_float(name=f'{inference_yolo.__name__} threshold', value=threshold, min_value=10e-6, max_value=1.0)
58
+ check_valid_tuple(x=keypoint_names, source=f'{inference_yolo.__name__} keypoint_names', min_integer=1, valid_dtypes=(str,))
59
+ if max_tracks is not None:
60
+ check_int(name=f'{inference_yolo.__name__} max_tracks', value=max_tracks, min_value=1)
61
+ if save_dir is not None:
62
+ check_if_dir_exists(in_dir=save_dir, source=f'{inference_yolo.__name__} save_dir')
63
+ keypoint_col_names = [f'{i}_{s}'.upper() for i in keypoint_names for s in ['x', 'y', 'p']]
64
+ OUT_COLS.extend(keypoint_col_names)
65
+ torch.set_num_threads(torch_threads)
66
+ model = load_yolo_model(weights_path=weights_path, device=device, format=format)
67
+ results = {}
68
+ class_dict = model.names
69
+ timer = SimbaTimer(start=True)
70
+ for path in video_path:
71
+ _, video_name, _ = get_fn_ext(filepath=path)
72
+ _ = get_video_meta_data(video_path=path)
73
+ video_out = []
74
+ predictions = model.track(source=path, stream=False, tracker=botsort_config_path)
75
+ print(predictions)
76
+ #video_predictions = model.predict(source=path, half=half_precision, batch=batch_size, stream=stream)
77
+
78
+
79
+
80
+ # VIDEO_PATH = "/mnt/d/netholabs/yolo_videos/2025-05-28_19-46-56.mp4"
81
+ # BOTSORT_PATH = "/mnt/c/projects/simba/simba/simba/assets/botsort.yml"
82
+ # inference_yolo_pose_tracks(weights_path=r"/mnt/d/netholabs/yolo_mdls_1/train/weights/best.pt",
83
+ # video_path=VIDEO_PATH,
84
+ # save_dir=r"/mnt/d/netholabs/yolo_test/results",
85
+ # verbose=True,
86
+ # device=0,
87
+ # format='onnx',
88
+ # keypoint_names=('nose', 'ear_left', 'ear_right', 'lateral_left', 'center', 'lateral_right', 'tail_base'),
89
+ # batch_size=32,
90
+ # botsort_config_path=BOTSORT_PATH)
91
+
92
+
93
+ #
94
+ #
95
+ #
96
+ # #fit_yolo(initial_weights=r"/mnt/d/yolo_weights/yolo11n-pose.pt", model_yaml=r"/mnt/d/netholabs/yolo_data_1/map.yaml", save_path=r"/mnt/d/netholabs/yolo_mdls_1", batch=32, epochs=100)
97
+ #
98
+ # #video_path = "/mnt/d/netholabs/videos/2025-04-17_17-09-28.h264"
99
+ # video_path = "/mnt/d/netholabs/videos_/2025-05-27_20-59-48.mp4"
100
+ # video_path = "/mnt/d/netholabs/yolo_videos/input/mp4_20250606083508/2025-05-28_19-50-23.mp4"
101
+ # #video_path = "/mnt/c/Users/sroni/Downloads/2025-05-27_00-32-26.mp4"
102
+ #
103
+ #
104
+ # #
105
+ # inference_yolo_pose(weights_path=r"/mnt/d/netholabs/yolo_mdls_1/train/weights/best.pt",
106
+ # video_path=video_path,
107
+ # save_dir=r"/mnt/d/netholabs/yolo_test/results",
108
+ # verbose=True,
109
+ # device=0,
110
+ # format='onnx',
111
+ # keypoint_names=('nose', 'ear_left', 'ear_right', 'lateral_left', 'center', 'lateral_right', 'tail_base'),
112
+ # batch_size=32)
113
+ #
114
+ #
115
+ # #
116
+
117
+
118
+
119
+ # fit_yolo(initial_weights=r"/mnt/d/yolo_weights/yolov8n.pt",
120
+ # model_yaml=r"/mnt/d/netholabs/imgs/yolo_train_test_val/map.yaml", save_path=r"/mnt/d/netholabs/imgs/yolo_mdl", batch=32, epochs=100)
121
+
122
+ # fit_yolo(initial_weights=r"/mnt/c/troubleshooting/coco_data/weights/yolov8n-obb.pt",
123
+ # model_yaml=r"/mnt/c/troubleshooting/coco_data/model.yaml",
124
+ # project_path=r"/mnt/c/troubleshooting/coco_data/mdl",
125
+ # batch=16, epochs=100)
126
+
127
+
128
+
129
+ # fit_yolo(initial_weights=r"/mnt/c/troubleshooting/coco_data/weights/yolov8n.pt",
130
+ # model_yaml=r"/mnt/d/netholabs/yolo_test/yolo_train/map.yaml",
131
+ # save_path=r"/mnt/d/netholabs/yolo_test/yolo_mdl", epochs=150, batch=24)
132
+
133
+
134
+
135
+ # inference_yolo(weights_path=r"/mnt/d/netholabs/yolo_test/yolo_mdl/train10/weights/best.pt",
136
+ # video_path=r"/mnt/d/netholabs/out/2025-04-17_17-05-07.mp4",
137
+ # save_dir=r"/mnt/d/netholabs/yolo_test/results",
138
+ # verbose=True,
139
+ # gpu=False)
140
+
141
+ # inference_yolo(weights=r"/mnt/c/troubleshooting/coco_data/mdl/train8/weights/best.pt",
142
+ # video_path=r"/mnt/c/troubleshooting/mitra/project_folder/videos/FRR_gq_Saline_0624.mp4",
143
+ # save_dir=r"/mnt/c/troubleshooting/coco_data/mdl/results",
144
+ # verbose=True,
145
+ # gpu=True)
146
+ #
147
+ #
148
+
149
+
150
+ # r = inference_yolo(weights=r"C:\troubleshooting\coco_data\mdl\train\weights\best.pt",
151
+ # video_path=r"C:\troubleshooting\mitra\project_folder\videos\clipped\501_MA142_Gi_CNO_0514_clipped.mp4",
152
+ # batch=100)
153
+
154
+
155
+ #fit_yolo(initial_weights=r"C:\troubleshooting\coco_data\weights\yolov8n-obb.pt", data=r"C:\troubleshooting\coco_data\model.yaml", project_path=r"C:\troubleshooting\coco_data\mdl", batch=16)
156
+
157
+
158
+ # """
159
+ # initial_weights=r"C:\Users\sroni\Downloads\yolov8n.pt", data=r"C:\troubleshooting\coco_data\model.yaml", epochs=30, project_path=r"C:\troubleshooting\coco_data\mdl", batch=16)
160
+ # """
161
+ #
162
+ #
163
+ #
164
+
165
+
166
+
@@ -0,0 +1,210 @@
1
+ import os
2
+
3
+ os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
4
+ from typing import Optional, Union
5
+ import torch
6
+ try:
7
+ from typing import Literal
8
+ except:
9
+ from typing_extensions import Literal
10
+
11
+ import numpy as np
12
+ from ultralytics import YOLO
13
+
14
+ from simba.utils.checks import (check_file_exist_and_readable, check_float, check_int, check_str, check_valid_boolean, check_valid_array, check_if_dir_exists, check_instance, check_if_valid_img)
15
+ from simba.utils.errors import SimBAGPUError, InvalidInputError
16
+ from simba.data_processors.cuda.utils import _is_cuda_available
17
+ from simba.utils.enums import Formats
18
+ from simba.utils.read_write import find_core_cnt, get_video_meta_data
19
+
20
+ def check_valid_device(device: Union[Literal['cpu'], int]):
21
+ if isinstance(device, str):
22
+ check_str(name=f'{load_yolo_model.__name__} format', value=device.lower(), options=['cpu'], raise_error=True)
23
+ else:
24
+ check_int(name=f'{load_yolo_model.__name__} device', value=device, min_value=0, raise_error=True)
25
+ gpu_available, gpus = _is_cuda_available()
26
+ if not gpu_available:
27
+ raise SimBAGPUError(msg=f'No GPU detected but device {device} passed', source=load_yolo_model.__name__)
28
+ if device not in list(gpus.keys()):
29
+ raise SimBAGPUError(msg=f'Unaccepted GPU device {device} passed. Accepted: {list(gpus.keys())}', source=load_yolo_model.__name__)
30
+
31
+
32
+
33
+ def fit_yolo(weights_path: Union[str, os.PathLike],
34
+ model_yaml: Union[str, os.PathLike],
35
+ save_path: Union[str, os.PathLike],
36
+ epochs: int = 25,
37
+ batch: Union[int, float] = 16,
38
+ plots: bool = True,
39
+ imgsz: int = 640,
40
+ format: Optional[str] = None,
41
+ device: Union[Literal['cpu'], int] = 0,
42
+ verbose: bool = True,
43
+ workers: int = 8):
44
+ """
45
+ Trains a YOLO model using specified initial weights and a configuration YAML file.
46
+
47
+ .. note::
48
+ `Download initial weights <https://huggingface.co/Ultralytics>`__.
49
+ `Example model_yaml <https://github.com/sgoldenlab/simba/blob/master/misc/ex_yolo_model.yaml>`__.
50
+
51
+ :param initial_weights: Path to the pre-trained YOLO model weights (usually a `.pt` file). Example weights can be found [here](https://huggingface.co/Ultralytics).
52
+ :param model_yaml: YAML file containing paths to the training, validation, and testing datasets and the object class mappings. Example YAML file can be found [here](https://github.com/sgoldenlab/simba/blob/master/misc/ex_yolo_model.yaml).
53
+ :param save_path: Directory path where the trained model, logs, and results will be saved.
54
+ :param epochs: Number of epochs to train the model. Default is 5.
55
+ :param batch: Batch size for training. Default is 16.
56
+ :return: None. The trained model and associated training logs are saved in the specified `project_path`.
57
+
58
+ :example:
59
+ >>> fit_yolo(initial_weights=r"C:\troubleshooting\coco_data\weights\yolov8n-obb.pt", data=r"C:\troubleshooting\coco_data\model.yaml", save_path=r"C:\troubleshooting\coco_data\mdl", batch=16)
60
+
61
+ """
62
+ VALID_FORMATS = ["onnx", "engine", "torchscript", "onnxsimplify", "coreml", "openvino", "pb", "tf", "tflite"]
63
+
64
+ if not _is_cuda_available()[0]:
65
+ raise SimBAGPUError(msg='No GPU detected.', source=fit_yolo.__name__)
66
+ check_file_exist_and_readable(file_path=weights_path)
67
+ check_file_exist_and_readable(file_path=model_yaml)
68
+ check_valid_boolean(value=verbose, source=f'{fit_yolo.__name__} verbose', raise_error=True)
69
+ check_valid_boolean(value=plots, source=f'{fit_yolo.__name__} plots', raise_error=True)
70
+ check_if_dir_exists(in_dir=save_path)
71
+ if format is not None: check_str(name=f'{fit_yolo.__name__} format', value=format.lower(), options=VALID_FORMATS, raise_error=True)
72
+ check_int(name=f'{fit_yolo.__name__} epochs', value=epochs, min_value=1)
73
+ check_int(name=f'{fit_yolo.__name__} imgsz', value=imgsz, min_value=1)
74
+ check_int(name=f'{fit_yolo.__name__} workers', value=workers, min_value=-1, unaccepted_vals=[0], max_value=find_core_cnt()[0])
75
+ if workers == -1: workers = find_core_cnt()[0]
76
+ check_valid_device(device=device)
77
+ model = load_yolo_model(weights_path=weights_path, verbose=verbose, format=format, device=device)
78
+ model.train(data=model_yaml, epochs=epochs, project=save_path, batch=batch, plots=plots, imgsz=imgsz, workers=workers)
79
+
80
+
81
+ def load_yolo_model(weights_path: Union[str, os.PathLike],
82
+ verbose: bool = True,
83
+ format: Optional[str] = None,
84
+ device: Union[Literal['cpu'], int] = 0):
85
+
86
+ """
87
+ Load a YOLO model.
88
+
89
+ :param Union[str, os.PathLike] weights_path: Path to model weights (.pt, .engine, etc).
90
+ :param bool verbose: Whether to print loading info.
91
+ :param Optional[str] format: Export format, one of VALID_FORMATS or None to skip export.
92
+ :param Union[Literal['cpu'], int] device: Device to load model on. 'cpu', int GPU index.
93
+
94
+ :example:
95
+ >>> load_yolo_model(weights_path=r"/mnt/c/troubleshooting/coco_data/mdl/train8/weights/best.pt", format="onnx", device=0)
96
+ """
97
+
98
+ VALID_FORMATS = ["onnx", "engine", "torchscript", "onnxsimplify", "coreml", "openvino", "pb", "tf", "tflite"]
99
+ check_file_exist_and_readable(file_path=weights_path)
100
+ check_valid_boolean(value=verbose, source=f'{load_yolo_model.__name__} verbose', raise_error=True)
101
+ if format is not None: check_str(name=f'{load_yolo_model.__name__} format', value=format.lower(), options=VALID_FORMATS, raise_error=True)
102
+ check_valid_device(device=device)
103
+ model = YOLO(weights_path, verbose=verbose)
104
+ model.to(device=device)
105
+ if format is not None:
106
+ model.export(format=format)
107
+
108
+ return model
109
+
110
+ def _get_undetected_obs(frm_id: int, class_id: int, class_name: str, value_cnt: int) -> np.ndarray:
111
+ """Helper to get a missing observation of specified class and frame """
112
+ check_int(name=f'{_get_undetected_obs.__name__} frm_id', value=frm_id, min_value=0)
113
+ check_int(name=f'{_get_undetected_obs.__name__} class_id', value=class_id, min_value=0)
114
+ check_str(name=f'{_get_undetected_obs.__name__} class_name', value=class_name, raise_error=True)
115
+ check_int(name=f'{_get_undetected_obs.__name__} value_cnt', value=value_cnt, min_value=0)
116
+ return np.array([frm_id, class_id, class_name] + [-1] * value_cnt)
117
+
118
+
119
+ def filter_yolo_keypoint_data(bbox_data: np.ndarray,
120
+ keypoint_data: np.ndarray,
121
+ class_id: Optional[int] = None,
122
+ confidence: Optional[float] = None,
123
+ class_idx: Optional[int] = None,
124
+ confidence_idx: Optional[int] = None):
125
+ """
126
+ Helper to filters YOLO bounding box and keypoint data based on class ID and/or confidence threshold.
127
+
128
+ :param np.ndarray bbox_data: A 2D array of shape (N, M) representing YOLO bounding box data, where each row corresponds to one detection and contains class and confidence values.
129
+ :param np.ndarray bbox_data: A 3D array of shape (N, 2, 3) representing keypoints for each detection, where K is the number of keypoints per detection.
130
+ :param Optional[int] class_id: Target class ID to filter detections. Defaults to None.
131
+ :param Optional[float] confidence: Minimum confidence threshold to keep detections. Must be in [0, 1]. Defaults to None.
132
+ :param int confidence_idx: Index in `bbox_data` where confidence value is stored. Defaults to 5.
133
+ :param int class_idx: Index in `bbox_data` where class ID is stored. Defaults to 6.
134
+ """
135
+
136
+ if class_id is None and confidence is None:
137
+ raise InvalidInputError(msg='Provide at least one filter condition')
138
+
139
+ check_valid_array(data=bbox_data, source=filter_yolo_keypoint_data.__name__, accepted_ndims=(2,), accepted_dtypes=Formats.NUMERIC_DTYPES.value, min_axis_0=1)
140
+ check_valid_array(data=keypoint_data, source=filter_yolo_keypoint_data.__name__, accepted_ndims=(3,), accepted_dtypes=Formats.NUMERIC_DTYPES.value, accepted_axis_0_shape=[bbox_data.shape[0],])
141
+ class_id is not None and check_int(name=filter_yolo_keypoint_data.__name__, value=class_id, min_value=0, raise_error=True)
142
+ confidence is not None and check_float(name=filter_yolo_keypoint_data.__name__, value=confidence, min_value=0, max_value=1.0, raise_error=True)
143
+ class_id is not None and check_int(name=f'{filter_yolo_keypoint_data.__name__} class_idx', value=class_idx, min_value=-bbox_data.shape[1], max_value=bbox_data.shape[1])
144
+ confidence is not None and check_int(name=f'{filter_yolo_keypoint_data.__name__} confidence_idx', value=confidence_idx, min_value=-bbox_data.shape[1], max_value=bbox_data.shape[1])
145
+
146
+ if class_id is not None:
147
+ cls_idx = np.argwhere(bbox_data[:, class_idx] == class_id).flatten()
148
+ bbox_data, keypoint_data = bbox_data[cls_idx], keypoint_data[cls_idx]
149
+ if confidence is not None:
150
+ cls_idx = np.argwhere(bbox_data[:, confidence_idx] >= confidence).flatten()
151
+ bbox_data, keypoint_data = bbox_data[cls_idx], keypoint_data[cls_idx]
152
+
153
+ return bbox_data, keypoint_data
154
+
155
+
156
+ def yolo_predict(model: YOLO,
157
+ source: Union[str, os.PathLike, np.ndarray],
158
+ half: bool = False,
159
+ batch_size: Optional[int] = 4,
160
+ stream: bool = False,
161
+ imgsz: int = 640,
162
+ device: Union[Literal['cpu'], int] = 0,
163
+ threshold: float = 0.25,
164
+ max_detections: int = 300,
165
+ verbose: bool = True):
166
+
167
+ """
168
+ Produce YOLO predictions.
169
+
170
+ :param Union[str, os.PathLike] model: Loaded ultralytics.YOLO model. Returned by :func:`~simba.bounding_box_tools.yolo.model.load_yolo_model`.
171
+ :param Union[str, os.PathLike, np.ndarray] source: Path to video, video stream, directory, image, or image as loaded array.
172
+ :param bool half: Whether to use half precision (FP16) for inference to speed up processing.
173
+ :param bool stream: If True, return a generator that yields results one by one. Useful for stream or large videos.
174
+ :param int imgsz: Size to resize input images to (square dimension). Must be positive integer.
175
+ :param Optional[int] batch_size: If stream is False, then the number of images to process in each batch.
176
+ :param Union[Literal['cpu'], int] device: Device identifier for inference. 'cpu' to force CPU inference. E.g., integer index of the GPU device (e.g., 0 for 'cuda:0').
177
+ :param float threshold: Confidence threshold for filtering predictions. Only detections with confidence >= threshold are returned. Must be between 0.0 and 1.0.
178
+ :param int max_detections: Maximum number of detections per image/frame to return.
179
+ :param bool verbose: If True, print inference progress and summary information.
180
+ :returns: YOLO results or generator of YOLO results.
181
+ """
182
+
183
+ check_valid_boolean(value=half, source=f'{yolo_predict.__name__} half', raise_error=True)
184
+ check_valid_boolean(value=stream, source=f'{yolo_predict.__name__} stream', raise_error=True)
185
+ check_valid_boolean(value=verbose, source=f'{yolo_predict.__name__} verbose', raise_error=True)
186
+ check_int(name=f'{yolo_predict.__name__} imgsz', value=imgsz, min_value=1, raise_error=False)
187
+ check_int(name=f'{yolo_predict.__name__} max_detections', value=max_detections, min_value=1, raise_error=False)
188
+ check_float(name=f'{yolo_predict.__name__} threshold', value=threshold, min_value=0.0, max_value=1.0, raise_error=False)
189
+ if not stream:
190
+ v, _ = check_int(name=f'{yolo_predict.__name__} batch_size', value=batch_size, min_value=1, raise_error=False)
191
+ if not v: raise InvalidInputError(msg=f'If not stream, pass valid batch_size integer. Got {batch_size}', source=yolo_predict.__name__)
192
+ check_instance(source=f'{yolo_predict.__name__} source', instance=source, accepted_types=(str, os.PathLike, np.ndarray), raise_error=True)
193
+ if isinstance(source, (str, os.PathLike,)):
194
+ _ = get_video_meta_data(video_path=source)
195
+ else:
196
+ check_if_valid_img(data=source, source=f'{yolo_predict.__name__} source', raise_error=True)
197
+ check_instance(source=f'{yolo_predict.__name__} model', instance=model, accepted_types=(YOLO,), raise_error=True)
198
+ check_valid_device(device=device)
199
+ return model.predict(source=source,
200
+ half=half,
201
+ batch=batch_size,
202
+ stream=stream,
203
+ device=device,
204
+ conf=threshold,
205
+ max_det=max_detections,
206
+ verbose=verbose)
207
+
208
+
209
+ #fit_yolo(weights_path="/mnt/d/yolo_weights/yolo11n-pose.pt", model_yaml="/mnt/d/ares/data/termite_2/yolo/map.yaml", save_path="/mnt/d/ares/data/termite_2/yolo/mdl", batch=32, epochs=1)
210
+ #fit_yolo(weights_path="/mnt/d/yolo_weights/yolo11n-pose.pt", model_yaml="/mnt/d/ares/data/ant/yolo/map.yaml", save_path="/mnt/d/ares/data/ant/yolo/mdl", batch=18, epochs=100, workers=12)
@@ -0,0 +1,161 @@
1
+
2
+ import os
3
+
4
+ os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
5
+ from typing import Dict, List, Optional, Tuple, Union
6
+
7
+ try:
8
+ from typing import Literal
9
+ except:
10
+ from typing_extensions import Literal
11
+
12
+ import numpy as np
13
+ import pandas as pd
14
+ import torch
15
+
16
+ from simba.third_party_label_appenders.converters import yolo_obb_data_to_bounding_box
17
+ from simba.utils.checks import (check_file_exist_and_readable, check_float, check_if_dir_exists, check_int, check_str, check_valid_boolean, check_valid_lst, get_fn_ext, check_valid_tuple, check_valid_array)
18
+ from simba.utils.data import df_smoother, savgol_smoother
19
+ from simba.utils.printing import SimbaTimer, stdout_success
20
+ from simba.utils.read_write import find_core_cnt, get_video_meta_data
21
+ from simba.bounding_box_tools.yolo.utils import load_yolo_model, yolo_predict, check_valid_device, _get_undetected_obs
22
+
23
+ COORD_COLS = ['X1', 'Y1', 'X2', 'Y2', 'X3', 'Y3', 'X4', 'Y4']
24
+ OUT_COLS = ['FRAME', 'CLASS_ID', 'CLASS_NAME', 'CONFIDENCE', 'X1', 'Y1', 'X2', 'Y2', 'X3', 'Y3', 'X4', 'Y4']
25
+ SMOOTHING_METHODS = ('savitzky-golay', 'bartlett', 'blackman', 'boxcar', 'cosine', 'gaussian', 'hamming', 'exponential')
26
+ NEAREST = 'nearest'
27
+
28
+ class YoloInference():
29
+ """
30
+ Performs object detection inference on a video using a YOLO model.
31
+
32
+ This class performs YOLO-based object detection on one or more video files. It supports GPU acceleration,
33
+ batch processing, streaming, and optional result saving. The model returns bounding box coordinates and
34
+ class confidence scores for each frame. Results can be smoothed or interpolated to handle detection gaps.
35
+
36
+ .. seealso::
37
+ To perform bounding box and keypoint (pose) detection, see :func:`~simba.bounding_box_tools.yolo.yolo_pose_inference.YOLOPoseInference`
38
+
39
+ :param Union[str, os.PathLike] weights_path: Path to the YOLO model weights file.
40
+ :param Union[str, os.PathLike] or List[Union[str, os.PathLike]] video_path: Path(s) to the input video file(s) for performing inference.
41
+ :param Optional[bool] verbose: If True, outputs progress information and timing. Defaults to False.
42
+ :param Optional[Union[str, os.PathLike]] save_dir: Directory to save the inference results (e.g., as CSV). If None, results are returned. Defaults to None.
43
+ :param Optional[bool] half_precision: If True, uses half precision (fp16) for inference. Reduces memory usage and speeds up inference on supported devices. Defaults to True.
44
+ :param Union[Literal['cpu'], int] device: Device to use for inference. Use 'cpu' for CPU or GPU index (e.g., 0 for CUDA:0). Defaults to 0.
45
+ :param Optional[int] batch_size: Number of frames to process in parallel. Defaults to 4.
46
+ :param int core_cnt: Number of CPU cores to use for preprocessing or parallel work. Defaults to 8.
47
+ :param float threshold: Confidence threshold for object detections. Detections below this value are discarded. Defaults to 0.25.
48
+ :param int max_detections: Maximum number of detections per frame. Defaults to 300.
49
+ :param Optional[Literal['savitzky-golay', 'bartlett', 'blackman', 'boxcar', 'cosine', 'gaussian', 'hamming', 'exponential']] smoothing_method: Optional smoothing method to apply to bounding box sequences over time to reduce jitter.
50
+ :param Optional[int] smoothing_time_window: Number of frames to consider for temporal smoothing. Effective only if smoothing_method is specified.
51
+ :param bool interpolate: If True, interpolates missing bounding boxes using the 'nearest' method. Useful for filling detection gaps.
52
+ :param int imgsz: Input image size for inference. Must be a square value. Defaults to 640.
53
+ :param Optional[bool] stream: If True, performs inference using a generator that yields predictions iteratively, reducing memory usage. Defaults to True.
54
+ :return: If `save_dir` is None, returns a dictionary of results keyed by video file names. Otherwise, results are saved to `save_dir`.
55
+ :rtype: Union[None, Dict[str, pd.DataFrame]]
56
+
57
+ :example:
58
+ >>> video_path = "/mnt/d/netholabs/yolo_videos/input/mp4_20250606083508/2025-05-28_19-50-23.mp4"
59
+ >>> i = YoloInference(weights_path=r"/mnt/c/troubleshooting/coco_data/mdl/train8/weights/best.pt", video_path=video_path, save_dir=r"/mnt/c/troubleshooting/coco_data/mdl/results", verbose=True, gpu=True)
60
+ >>> i.run()
61
+ """
62
+ def __init__(self,
63
+ weights_path: Union[str, os.PathLike],
64
+ video_path: Union[Union[str, os.PathLike], List[Union[str, os.PathLike]]],
65
+ verbose: Optional[bool] = False,
66
+ save_dir: Optional[Union[str, os.PathLike]] = None,
67
+ half_precision: Optional[bool] = True,
68
+ device: Union[Literal['cpu'], int] = 0,
69
+ batch_size: Optional[int] = 4,
70
+ core_cnt: int = 8,
71
+ threshold: float = 0.25,
72
+ max_detections: int = 300,
73
+ smoothing_method: Optional[Literal['savitzky-golay', 'bartlett', 'blackman', 'boxcar', 'cosine', 'gaussian', 'hamming', 'exponential']] = None,
74
+ smoothing_time_window: Optional[int] = None,
75
+ interpolate: bool = False,
76
+ imgsz: int = 640,
77
+ stream: Optional[bool] = True) -> Union[None, Dict[str, pd.DataFrame]]:
78
+
79
+ if isinstance(video_path, list):
80
+ check_valid_lst(data=video_path, source=f'{self.__class__.__name__} video_path', valid_dtypes=(str, np.str_,), min_len=1)
81
+ elif isinstance(video_path, str):
82
+ check_file_exist_and_readable(file_path=video_path)
83
+ video_path = [video_path]
84
+ for i in video_path:
85
+ _ = get_video_meta_data(video_path=i)
86
+ check_file_exist_and_readable(file_path=weights_path)
87
+ check_valid_boolean(value=[half_precision, verbose, stream, interpolate], source=self.__class__.__name__)
88
+ check_int(name=f'{self.__class__.__name__} batch_size', value=batch_size, min_value=1)
89
+ check_int(name=f'{self.__class__.__name__} imgsz', value=imgsz, min_value=1)
90
+ check_float(name=f'{self.__class__.__name__} threshold', value=threshold, min_value=0.0, max_value=1.0)
91
+ check_int(name=f'{self.__class__.__name__} max_detections', value=max_detections, min_value=1)
92
+ check_valid_device(device=device)
93
+ if save_dir is not None:
94
+ check_if_dir_exists(in_dir=save_dir, source=f'{self.__class__.__name__} save_dir')
95
+ if smoothing_method is not None:
96
+ check_str(name=f'{self.__class__.__name__} smoothing', value=smoothing_method, options=SMOOTHING_METHODS)
97
+ check_float(name=f'{self.__class__.__name__} smoothing_time_window', value=smoothing_time_window, min_value=10e-6)
98
+ torch.set_num_threads(core_cnt)
99
+ self.model = load_yolo_model(weights_path=weights_path, verbose=verbose, device=device)
100
+ self.video_path, self.half_precision, self.stream, self.batch_size = video_path, half_precision, stream, batch_size
101
+ self.interpolate, self.smoothing_method, self.smoothing_time_window = interpolate, smoothing_method, smoothing_time_window
102
+ self.save_dir, self.verbose, self.imgsz, self.core_cnt, self.device = save_dir, verbose, imgsz, core_cnt,device
103
+ self.threshold, self.max_detections = threshold, max_detections
104
+
105
+ def run(self):
106
+ class_dict = self.model.names
107
+ results = {}
108
+ timer = SimbaTimer(start=True)
109
+ for path in self.video_path:
110
+ _, video_name, _ = get_fn_ext(filepath=path)
111
+ video_meta_data = get_video_meta_data(video_path=path)
112
+ video_out = []
113
+ video_predictions = yolo_predict(model=self.model, source=path, half=self.half_precision, batch_size=self.batch_size, stream=self.stream, imgsz=self.imgsz, device=self.device, threshold=self.threshold, max_detections=self.max_detections, verbose=self.verbose)
114
+ for frm_cnt, video_prediction in enumerate(video_predictions):
115
+ boxes = video_prediction.obb.data if video_prediction.obb is not None else video_prediction.boxes.data
116
+ boxes = boxes.cpu().numpy().astype(np.float32)
117
+ detected_classes = np.unique(boxes[:, -1]).astype(int) if boxes.size > 0 else []
118
+ for class_id, class_name in class_dict.items():
119
+ if class_id not in detected_classes:
120
+ video_out.append(_get_undetected_obs(frm_id=frm_cnt, class_id=class_id, class_name=class_name, value_cnt=9))
121
+ continue
122
+ cls_data = boxes[np.argwhere(boxes[:, -1] == class_id)]
123
+ cls_data = cls_data.reshape(-1, boxes.shape[1])[np.argmax(boxes[:, -2].flatten())]
124
+ if video_prediction.obb is not None:
125
+ box = yolo_obb_data_to_bounding_box(center_x=cls_data[0], center_y=cls_data[1], width=cls_data[2], height=cls_data[3], angle=cls_data[4]).flatten()
126
+ else:
127
+ box = np.array([cls_data[0], cls_data[1], cls_data[2], cls_data[1], cls_data[2], cls_data[3], cls_data[0], cls_data[3]]).astype(np.int32)
128
+ video_out.append([frm_cnt, cls_data[-1], class_dict[cls_data[-1]], cls_data[-2]] + list(box))
129
+ results[video_name] = pd.DataFrame(video_out, columns=OUT_COLS)
130
+ if self.interpolate:
131
+ for cord_col in COORD_COLS:
132
+ results[video_name][cord_col] = results[video_name][cord_col].astype(np.float32).astype(np.int32).replace(to_replace=-1, value=np.nan)
133
+ results[video_name][cord_col] = results[video_name][cord_col].interpolate(method=NEAREST, axis=0).ffill().bfill()
134
+ if self.smoothing_method is not None:
135
+ if self.smoothing_method != 'savitzky-golay':
136
+ smoothened = df_smoother(data=results[video_name][COORD_COLS], fps=video_meta_data['fps'], time_window=self.smoothing_time_window, source=self.__class__.__name__, method=self.smoothing_method)
137
+ else:
138
+ smoothened = savgol_smoother(data=results[video_name][COORD_COLS], fps=video_meta_data['fps'], time_window=self.smoothing_time_window, source=self.__class__.__name__)
139
+ results[video_name].update(smoothened)
140
+ timer.stop_timer()
141
+ if not self.save_dir:
142
+ if self.verbose:
143
+ stdout_success(f'YOLO results created', elapsed_time=timer.elapsed_time_str)
144
+ return results
145
+ else:
146
+ for k, v in results.items():
147
+ save_path = os.path.join(self.save_dir, f'{k}.csv')
148
+ v.to_csv(save_path)
149
+ if self.verbose:
150
+ stdout_success(f'YOLO results saved in {self.save_dir} directory', elapsed_time=timer.elapsed_time_str)
151
+
152
+ #video_path = r"/mnt/c/troubleshooting/mitra/project_folder/videos/501_MA142_Gi_CNO_0521.mp4"
153
+ #video_path = "/mnt/d/netholabs/yolo_videos/input/mp4_20250606083508/2025-05-28_19-50-23.mp4"
154
+ # video_path = "/mnt/d/netholabs/yolo_videos/2025-05-28_19-50-23.mp4"
155
+ # weights_path = "/mnt/d/netholabs/yolo_mdls_1/train/weights/best.pt"
156
+ # save_dir = '/mnt/d/netholabs/yolo_videos_out'
157
+ # i = YoloInference(weights_path=weights_path,
158
+ # video_path=video_path,
159
+ # save_dir=save_dir,
160
+ # verbose=True)
161
+ # i.run()