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.
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/PKG-INFO +1 -1
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/Simba_UW_tf_dev.egg-info/PKG-INFO +1 -1
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/Simba_UW_tf_dev.egg-info/SOURCES.txt +9 -1
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/setup.py +1 -1
- simba_uw_tf_dev-3.2.2/simba/assets/botsort.yml +14 -0
- simba_uw_tf_dev-3.2.2/simba/assets/bytetrack.yml +9 -0
- simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/model.py +166 -0
- simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/utils.py +210 -0
- simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_inference.py +161 -0
- simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_pose_inference.py +188 -0
- simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_pose_track_inference.py +142 -0
- simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_pose_track_visualizer.py +178 -0
- simba_uw_tf_dev-3.2.2/simba/bounding_box_tools/yolo/yolo_pose_visualizer.py +192 -0
- 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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/boolean_conditional_calculator.py +5 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/image.py +53 -19
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/light_dark_box_analyzer.py +0 -1
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/image_mixin.py +87 -40
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/pose_importer_mixin.py +6 -9
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/light_dark_box_plotter.py +1 -2
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/sleap_csv_importer.py +10 -2
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/converters.py +133 -11
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/brightness_contrast_ui.py +117 -115
- simba_uw_tf_dev-3.2.1/simba/bounding_box_tools/yolo/model.py +0 -357
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/LICENSE +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/MANIFEST.in +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/README.md +0 -0
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/Simba_UW_tf_dev.egg-info/requires.txt +0 -0
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/scripts/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/scripts/create_issues_report.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/scripts/gitter_stats.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/setup.cfg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/SimBA.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/SimBA_logo.ico +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/.env +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/TheGoldenLab.PNG +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/UbuntuMono-Regular.ttf +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/dash_simba_base.css +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/fonts/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/fonts/Playwrite ES Deco.ttf +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/fonts/Poppins Bold.ttf +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/fonts/Poppins Regular.ttf +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo.icns +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo.ico +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo_3.ico +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo_3.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/SimBA_logo_3_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/abacus.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/about.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/add.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/add_on.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/analyze_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/analyze_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/api.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/application.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/archive.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/arrow_down_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/attributes_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/average.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/average_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/avi.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bar_graph_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bar_graph_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bar_graph_light_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/black_and_white.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/blur.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bmp.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/boolean.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/boris.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/brightness.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/browse.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/browse_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/brush_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bubble.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bubble_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bubble_pink.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/bw.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/calipher.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/center.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/change.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/check_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/circle.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/circle_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/circle_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/circle_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clahe.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clean.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clean_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clf.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clf_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clip.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/clock.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/close.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/cluster.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/horizontal.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/mixed_mosaic.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/mosaic.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_icons/vertical.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/concat_videos.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/convert.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/counter.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/create.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/crop.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/crossfade.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/csv_grey.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/curve_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/danger.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dash_simba.css +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/data_table.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/decision_tree_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/decision_tree_purple.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/decision_tree_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/delete_large_orange.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/delete_large_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dependency.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/details.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/developer.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dice_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dimensionality_reduction.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/direction.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/direction_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/display_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/distance.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/distance_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/documentation.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/draw.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/dumbbell.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/duplicate.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/duplicate_2_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/duplicate_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/ear_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/edit.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/edit_roi_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/egocentric.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/equation_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/ethovision.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/exit.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/eye.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/factory.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_forward.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_forward_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_forward_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_forward_large_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fast_reverse.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fastforward_green_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/feather_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/features.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/ffmpeg.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fill.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/finish.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fire.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/first.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/first_frame_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/first_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/flip_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/flip_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/flip_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/forest.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/forward.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/forward_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/four_squares.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/fps.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/frames.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gantt_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gantt_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gif.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/github.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gitter.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gpu.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/gpu_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/green_check.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/grey.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/greyscale.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/half_circle.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/half_circle_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/heatmap.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/hexagon.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/hexagon_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/hierarchy.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/home.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/id_card.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/image.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/import.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/info.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/info_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/interaction_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/interactive_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/join_purple.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/join_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/join_yellow.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/jpeg.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/jump.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/label.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/label_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/label_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/label_yellow.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/last.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/last_frame_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/last_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/light_bulb.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/line_chart_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/line_chart_light_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/line_chart_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/link.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/list.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/load.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/load_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/load_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/log.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/magnifying.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/mars.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/merge.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/metrics.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/metrics_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/metrics_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/minus.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/minus_blue_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/minus_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/mouse_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/mov.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/move.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/move_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/mp4.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/multiple_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/multiple_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/multiple_yellow.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/navigation.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/number_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/one.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/one_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/options_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/original_size.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/osf.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/outlier.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/paint.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/palette_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/parquet.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/path.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/path_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/permutation_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/photos.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/play_large_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/plot.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/plus.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/plus_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/plus_green_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/png.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/point_right_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/pointing_left_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/polygon.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/polygon_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/polygon_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/pose.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/print.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/probability.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/progressbar_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/range_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/readthedocs_logo.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle_1_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rectangle_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/remove_bg.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reorganize.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/restart.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reverse.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reverse_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reverse_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/reverse_large_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rewind.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rewind_blue_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rewind_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rewind_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rocket.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/roi.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/roi_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/rotate.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/ruler.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/run.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/sample.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/save_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/search.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/segment.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/seperate_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/settings.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/shap.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/shapes_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/shapes_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/shapes_small_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/simba_logo_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/single_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/single_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/single_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/size_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/skip.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/skip_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/skip_forward_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/skip_previous_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/smooth.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/split.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/square_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/stack.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/stopwatch.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/style.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/subset_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/superimpose.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/system.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/t.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/table.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/table_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/text_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/threshold.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tick.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tick_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tiff.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tile_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/timer.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/timer_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/trash.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/trash_red.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/triangle_black.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/triangle_small.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/tv_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/video.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/video_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/video_file_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/video_large.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/visualize.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/visualize_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/visualize_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/walk.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/wand_blue.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/warning.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/watermark_green.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/webm.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/webp.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/weights.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/zero.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/zoom_in.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/icons/zoom_out.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/about_me.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/bg.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/bg_2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/bg_2024.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/splash.mp4 +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/splash.pptx +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/splash_2024.mp4 +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/img/~$splash.pptx +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/critical_values_05.pickle +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/feature_extraction_headers.csv +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/features.csv +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/model_names.parquet +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/unsupervised_example_x.csv +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/lookups/yolo.yaml +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/UbuntuMono-Regular.ttf +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/animal_distances.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/baseline_scale.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/color_bar.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/down_arrow.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/feature_categories/__init__.py +0 -0
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/intruder_movement.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/intruder_shape.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/resident_intruder_movement.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/resident_intruder_shape.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/resident_movement.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/resident_shape.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/side_scale.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/side_scale_5.jpg +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/shap/ubuntu.regular.ttf +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/grid_floor.stl +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/operant_lever.stl +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/operant_tray.stl +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/stl/operant_walls.stl +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/unsupervised/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/unsupervised/features.csv +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/assets/unsupervised/model_names.parquet +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/agg_boundary_stats.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/boundary_menus.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/boundary_statistics.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/find_boundaries.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/visualize_boundaries.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/bounding_box_tools/yolo/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/cue_light_analyzer.py +0 -0
- {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
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/cue_light_tools.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/cue_light_tools/cue_light_visualizer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/dash_app/SimBA_dash_app.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/dash_app/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/dash_app/dash_app.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/dash_app/run_dash_tkinter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/advanced_interpolator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/advanced_smoothing.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/agg_clf_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/blob_location_computer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/circling_detector.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/circular_statistics.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/create_shap_log.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/data.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/geometry.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/statistics.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/timeseries.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cuda/utils.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cue_light_analyzer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cue_light_clf_statistics.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/cue_light_movement_statistics.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/directing_animal_to_bodypart.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/directing_other_animals_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/egocentric_aligner.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/find_animal_blob_location.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/freezing_detector.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/fsttc_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/gibbs_sampler.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/interpolate.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/interpolate_pose.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/interpolation_smoothing.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/kleinberg_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/movement_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/mutual_exclusivity_corrector.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/pup_retrieval_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/pybursts_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/severity_bout_based_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/severity_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/severity_frame_based_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/smoothing.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/spontaneous_alternation_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/timebins_clf_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/data_processors/timebins_movement_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/amber_feature_extractor.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_14bp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_16bp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_4bp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_7bp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_8bp.py +0 -0
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_9bp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_extractor_user_defined.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/feature_subsets.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/doctests.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/egocentrical_aligner.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/graph_3d_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/graph_creator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/make_splash.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/mutual_exclusive.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/peaks.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/read_in_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/termite_rois.csv +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/time_stamp_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/video_color.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/video_rotator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/misc/video_rotator_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/feature_extractors/perimeter_jit.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/extract_labelled_frames.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/extract_labelling_meta.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/labelling_advanced_interface.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/labelling_interface.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/play_annotation_video.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/standard_labeller.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/labelling/targeted_annotations_clips.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/abstract_classes.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/annotator_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/circular_statistics.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/config_reader.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/feature_extraction_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/feature_extraction_supplement_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/geometry_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/network_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/plotting_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/pop_up_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/statistics_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/timeseries_features_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/train_model_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/mixins/unsupervised_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/grid_search_multiclass_rf.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/grid_search_rf.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/inference_batch.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/inference_multiclass_batch.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/inference_validation.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/ordinal_clf.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/regression/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/regression/metrics.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/regression/model.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/train_multiclass_rf.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/train_multilabel_rf.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/model/train_rf.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_location.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_location_advanced.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_location_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_movement.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_movement_advanced.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/outlier_corrector_movement_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/outlier_tools/skip_outlier_correction.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ROI_feature_visualizer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ROI_feature_visualizer_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ROI_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ROI_plotter_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/blob_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/blob_visualizer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/circular_feature_overlay_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/circular_plotting.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/clf_validator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/clf_validator_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/cue_light_visualizer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/data_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/directing_animals_to_bodypart_visualizer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/directing_animals_visualizer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/directing_animals_visualizer_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/distance_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/distance_plotter_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/ez_path_plot.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/frame_mergerer_ffmpeg.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/gantt_creator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/gantt_creator_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/gantt_plotly.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/geometry_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/heat_mapper_clf.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/heat_mapper_clf_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/heat_mapper_location.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/heat_mapper_location_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/interactive_probability_grapher.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/path_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/path_plotter_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/plot_clf_results.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/plot_clf_results_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/pose_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/pose_plotter_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/probability_plot_creator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/probability_plot_creator_mp.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/shap_agg_stats_visualizer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/single_run_model_validation_video.py +0 -0
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/spontaneous_alternation_plotter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/tools/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/plotting/tools/tkinter_tools.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/bp_names/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/bp_names/bp_names.csv +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/configuration_names/__init__.py +0 -0
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/no_animals/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/no_animals/no_animals.csv +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/1.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/10.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/11.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/12.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/13.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/2.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/3.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/4.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/5.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/6.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/7.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/8.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_configurations/schematics/9.png +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/dlc_importer_csv.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/import_mars.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/madlc_importer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/misc/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/misc/apt_trk_importer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/read_DANNCE_mat.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/sleap_h5_importer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/sleap_slp_importer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_importers/trk_importer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/pose_reset.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/remove_keypoints.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/reorganize_keypoint.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/pose_processors/reverse_pose.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/requirements.txt +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_analyzer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_clf_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_directing_analyzer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_feature_analyzer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_size_standardizer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/ROI_time_bin_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/interactive_modifier_ui.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/interactive_roi_modifier_tkinter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_aggregate_statistics_analyzer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_selector_circle_tkinter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_selector_polygon_tkinter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_selector_rectangle_tkinter.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_time_bins_analyzer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_ui.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_ui_mixin.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/roi_tools/roi_utils.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/BENTO_appender.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/BORIS_appender.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/__init__.py +0 -0
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/deepethogram_importer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/ethovision_import.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/observer_importer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/solomon_importer.py +0 -0
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/third_party_label_appenders/tools.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/blob_quick_check_interface.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/blob_tracker_ui.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/create_project_ui.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/import_pose_frame.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/import_videos_frame.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/machine_model_settings_ui.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/fsttc_pop_up.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/gantt_pop_up.py +0 -0
- {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
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/interpolate_pop_up.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/kleinberg_pop_up.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/pop_ups/smoothing_popup.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/px_to_mm_ui.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/tkinter_functions.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/user_defined_pose_creator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/ui/video_info_ui.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/bout_aggregator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/cluster_frequentist_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/cluster_validation_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/cluster_video_visualizer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/cluster_xai_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/clusterer_comparison_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/data_extractor.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/data_map.yaml +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/dataset_creator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/dbcv_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/embedding_correlation_calculator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/enums.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/grid_search_visualizers.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/hdbscan_clusterer.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/outlier_detector.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/.DS_Store +0 -0
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/cluster_videos_popup.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/cluster_xai_popup.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/clusterer_comparison_popup.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/data_extractor_popup.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/embedding_correlations_popup.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/fit_cluster_popup.py +0 -0
- {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
- {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
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/pop_ups/transform_cluster_popup.py +0 -0
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/tsne.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/umap_embedder.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/unsupervised/unsupervised_main.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/checks.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/cli/__init__.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/cli/cli_tools.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/config_creator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/custom_feature_extractor.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/data.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/enums.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/errors.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/lookups.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/printing.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/read_write.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/utils/warnings.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/.DS_Store +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/__init__.py +0 -0
- {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
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/batch_process_menus.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/blob_tracking_executor.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/calculate_px_dist.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/clahe_ui.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/egocentric_video_rotator.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/extract_frames.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/extract_seqframes.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/multi_cropper.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/roi_selector.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/roi_selector_circle.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/roi_selector_polygon.py +0 -0
- {simba_uw_tf_dev-3.2.1 → simba_uw_tf_dev-3.2.2}/simba/video_processors/video_processing.py +0 -0
- {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.
|
|
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.
|
|
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/
|
|
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.
|
|
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()
|