simba-uw-tf-dev 5.3.7__tar.gz → 5.3.8__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-5.3.7 → simba_uw_tf_dev-5.3.8}/PKG-INFO +2 -2
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/README.md +1 -1
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/setup.py +3 -2
- simba_uw_tf_dev-5.3.8/simba/plotting/compare_bbox_mdls.py +289 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/yolo_visualize.py +12 -7
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/litpose_crop_annotations_bbox_square.py +6 -17
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/read_write.py +5 -1
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/yolo.py +46 -1
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/video_processing.py +6 -1
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba_uw_tf_dev.egg-info/PKG-INFO +2 -2
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba_uw_tf_dev.egg-info/SOURCES.txt +1 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/LICENSE +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/MANIFEST.in +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/scripts/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/scripts/caltech_download.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/scripts/create_issues_report.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/scripts/dataverse_download.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/scripts/gitter_stats.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/scripts/make_qr_code.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/scripts/osf_download.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/scripts/upgrade_simba_keep_configs.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/setup.cfg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/SimBA.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/SimBA_logo.ico +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/.env +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/.recent_projects.txt +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/TheGoldenLab.PNG +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/dash_simba_base.css +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/fonts/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/fonts/Playwrite ES Deco.ttf +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/fonts/Poppins Bold.ttf +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/fonts/Poppins Regular.ttf +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/fonts/UbuntuMono-Regular.ttf +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/SimBA_logo.icns +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/SimBA_logo.ico +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/SimBA_logo.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/SimBA_logo_3.ico +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/SimBA_logo_3.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/SimBA_logo_3_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/SimBA_logo_4_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/abacus.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/abacus_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/abacus_3.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/about.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/add.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/add_on.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/analyze_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/analyze_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/api.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/application.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/archive.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/arrow_down_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/arrow_down_green_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/attributes_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/audio.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/average.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/average_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/avi.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/background.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bar_graph_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bar_graph_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bar_graph_light_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/batch.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/black_and_white.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/black_cross.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/blur.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bmp.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bold.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/boolean.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/boris.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/branches_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/brightness.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/browse.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/browse_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/brush_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bubble.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bubble_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bubble_pink.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bullet_grey.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bullseye.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/bw.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/calipher.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/camera.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/category.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/center.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/change.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/check_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/circle.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/circle_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/circle_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/circle_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/circle_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/clahe.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/clean.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/clean_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/clf.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/clf_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/clip.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/clock.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/close.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/cluster.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/cluster_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/coco_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/color_wheel.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/concat.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/concat_icons/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/concat_icons/horizontal.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/concat_icons/mixed_mosaic.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/concat_icons/mosaic.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/concat_icons/vertical.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/concat_videos.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/convert.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/counter.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/cpu_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/create.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/crop.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/crop_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/crop_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/crop_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/crossfade.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/csv_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/csv_grey.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/curve_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/danger.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/dash_simba.css +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/data_table.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/decision_tree_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/decision_tree_purple.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/decision_tree_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/delete_large_orange.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/delete_large_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/dependency.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/details.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/developer.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/dice_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/dimensionality_reduction.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/direction.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/direction_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/direction_3.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/display_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/distance.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/distance_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/dlc_1.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/dlc_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/documentation.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/documentation_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/download.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/draw.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/dumbbell.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/duplicate.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/duplicate_2_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/duplicate_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/duplicate_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/ear_right.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/ear_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/edit.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/edit_roi_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/egocentric.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/equation_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/ethovision.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/exit.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/eye.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/factory.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/fast_forward.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/fast_forward_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/fast_forward_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/fast_forward_large_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/fast_reverse.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/fastforward_green_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/feather_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/features.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/ffmpeg.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/file.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/file_type.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/fill.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/filter.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/finish.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/fire.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/first.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/first_frame_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/first_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/flip_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/flip_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/flip_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/folder.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/folder_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/folder_video.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/font.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/font_size.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/forest.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/forward.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/forward_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/four_squares.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/fps.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/frames.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/frames_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/gamma.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/gantt_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/gantt_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/gif.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/github.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/github_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/gitter.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/gitter_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/gpu.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/gpu_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/gpu_3.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/green_check.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/green_dice.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/grey.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/greyscale.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/half_circle.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/half_circle_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/heatmap.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/height.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/hexagon.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/hexagon_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/hierarchy.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/hierarchy_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/histogram.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/home.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/horizontal.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/id_card.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/id_card_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/image.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/import.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/info.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/info_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/ini.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/interaction_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/interactive_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/invert.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/join_purple.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/join_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/join_yellow.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/jpeg.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/json.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/jump.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/keyboard.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/label.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/label_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/label_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/label_yellow.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/labelme.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/labelme_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/labelme_3.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/last.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/last_frame_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/last_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/leaf.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/left_arrow_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/left_arrow_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/left_ear.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/light_bulb.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/line.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/line_chart_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/line_chart_light_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/line_chart_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/link.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/list.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/load.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/load_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/load_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/location.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/log.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/magnifying.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/mars.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/mean.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/median.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/merge.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/metrics.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/metrics_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/metrics_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/minus.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/minus_blue_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/minus_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/minus_red_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/mixing_panel.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/monitor.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/mouse_head.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/mouse_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/mov.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/move.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/move_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/mp4.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/multiple_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/multiple_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/multiple_yellow.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/navigation.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/nose.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/number_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/obb.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/one.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/one_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/one_to_many.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/opacity.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/options_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/original_size.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/osf.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/osf_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/outlier.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/outside.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/outside_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/overlap_iou.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/paint.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/palette_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/palette_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/parquet.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/path.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/path_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/pct.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/pct_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/pdf_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/permutation_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/photos.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/play.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/play_large_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/plot.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/plus.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/plus_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/plus_green_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/plus_green_3.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/png.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/point.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/point_right_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/pointing_left_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/polygon.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/polygon_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/polygon_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/pose.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/pose_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/print.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/probability.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/progressbar_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/python.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/question_mark.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/range_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/readthedocs_logo.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/recent_files.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rectangle.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rectangle_1_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rectangle_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rectangle_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rectangle_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/remove_bg.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/reorganize.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/resize.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/restart.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/reverse.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/reverse_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/reverse_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/reverse_large_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rewind.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rewind_blue_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rewind_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rewind_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/right_arrow_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/right_arrow_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rocket.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/roi.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/roi_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rotate.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/rounding.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/ruler.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/ruler_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/run.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/sample.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/save.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/save_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/save_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/save_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/save_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/scale_1.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/scale_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/scale_3.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/search.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/segment.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/seperate_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/settings.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/shade.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/shap.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/shap_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/shapes_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/shapes_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/shapes_small_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/sigma.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/simba_logo_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/single_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/single_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/single_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/size_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/skip.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/skip_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/skip_forward_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/skip_previous_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/sleap_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/smooth.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/speedometer.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/split.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/split_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/spread.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/square_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/stack.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/star.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/stop.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/stopwatch.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/stream.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/style.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/subset_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/superimpose.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/svg.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/system.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/t.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/table.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/table_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/text.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/text_bg.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/text_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/text_color.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/text_color_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/text_spacing.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/threshold.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/tick.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/tick_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/tiff.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/tile_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/time.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/timer.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/timer_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/trash.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/trash_red.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/triangle_black.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/triangle_small.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/tv_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/two.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/ultralytics_1.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/ultralytics_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/verbose.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/vertical.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/video.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/video_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/video_file_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/video_large.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/visualize.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/visualize_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/visualize_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/walk.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/wand_blue.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/warning.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/watermark_green.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/webm.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/webp.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/weight.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/weights.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/width.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/x.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/y.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/zero.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/zoom_in.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/icons/zoom_out.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/about_me.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/bg.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/bg_2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/bg_2024.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/landing.mp4 +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/simon_n.webp +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/splash.mp4 +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/splash.pptx +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/splash_2024.mp4 +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/img/~$splash.pptx +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/critical_values_05.pickle +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/feature_extraction_headers.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/features.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/model_names.parquet +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/tooptips.json +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/unsupervised_example_x.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/yolo.yaml +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/yolo_schematics/tappelby.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/yolo_schematics/yolo_7bps.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/lookups/yolo_schematics/yolo_mitra.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/ppyoloe_plus_crn_s_80e_coco.yml +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/UbuntuMono-Regular.ttf +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/animal_distances.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/baseline_scale.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/color_bar.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/down_arrow.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/feature_categories/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/feature_categories/shap_feature_categories.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/intruder_movement.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/intruder_shape.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/resident_intruder_movement.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/resident_intruder_shape.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/resident_movement.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/resident_shape.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/side_scale.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/side_scale_5.jpg +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/shap/ubuntu.regular.ttf +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/stl/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/stl/grid_floor.stl +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/stl/operant_lever.stl +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/stl/operant_tray.stl +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/stl/operant_walls.stl +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/tracker_yml/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/tracker_yml/botsort.yml +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/tracker_yml/bytetrack.yml +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/tracker_yml/tow_bytetrack.yaml +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/unsupervised/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/unsupervised/features.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/assets/unsupervised/model_names.parquet +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/bounding_box_tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/bounding_box_tools/agg_boundary_stats.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/bounding_box_tools/boundary_menus.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/bounding_box_tools/boundary_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/bounding_box_tools/find_boundaries.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/bounding_box_tools/visualize_boundaries.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/bounding_box_tools/yolo/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/cue_light_tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/cue_light_tools/cue_light_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/cue_light_tools/cue_light_clf_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/cue_light_tools/cue_light_main_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/cue_light_tools/cue_light_movement_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/cue_light_tools/cue_light_tools.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/cue_light_tools/cue_light_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/dash_app/SimBA_dash_app.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/dash_app/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/dash_app/dash_app.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/dash_app/run_dash_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/advanced_interpolator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/advanced_smoothing.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/agg_clf_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/agg_clf_counter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/blob_location_computer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/boolean_conditional_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/circling_detector.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cuda/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cuda/circular_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cuda/create_shap_log.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cuda/data.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cuda/geometry.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cuda/image.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cuda/statistics.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cuda/timeseries.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cuda/utils.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cue_light_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cue_light_clf_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/cue_light_movement_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/directing_animal_to_bodypart.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/directing_other_animals_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/distance_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/distance_timbin_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/egocentric_aligner.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/find_animal_blob_location.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/freezing_detector.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/fsttc_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/gibbs_sampler.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/interpolate.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/interpolate_pose.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/interpolation_smoothing.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/kleinberg_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/light_dark_box_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/movement_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/mutual_exclusivity_corrector.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/pup_retrieval_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/pybursts_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/pybursts_calculator_numba.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/severity_bout_based_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/severity_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/severity_frame_based_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/smoothing.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/spontaneous_alternation_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/timebins_clf_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/timebins_movement_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/timebins_movement_calculator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/data_processors/yolo_track_cleaner.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/aggression_feature_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/amber_feature_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/boundary_rearing_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/cave_fish_featurizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/feature_extractor_14bp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/feature_extractor_16bp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/feature_extractor_4bp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/feature_extractor_7bp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/feature_extractor_8bp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/feature_extractor_8bps_2_animals.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/feature_extractor_9bp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/feature_extractor_user_defined.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/feature_subsets.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/gerbil_featurizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/add_probability_cnt_features.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/convex_hull_3_scratch_3.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/convex_hull_scratch_1.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/convex_hull_scratch_2.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/count_values_in_range.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/doctests.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/egocentrical_aligner.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/fish_feature_extractor_2022.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_2.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_3.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_4.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_5.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/graph_3d_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/graph_creator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/make_splash.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/mutual_exclusive.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/peaks.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/read_in_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/termite_rois.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/time_stamp_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/video_color.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/video_rotator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/misc/video_rotator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/mitra_feature_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/perimeter_jit.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/rat_social_featurizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/riptortus_featurizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/straub_tail_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/feature_extractors/wingwave_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/extract_labelled_frames.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/extract_labelling_meta.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/labelling_advanced_interface.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/labelling_interface.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/mitra_style_appender.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/play_annotation_video.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/single_clf_appender_excel.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/standard_labeller.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/labelling/targeted_annotations_clips.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/abstract_classes.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/annotator_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/circular_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/config_reader.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/feature_extraction_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/feature_extraction_supplement_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/geometry_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/image_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/network_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/plotting_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/pop_up_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/pose_importer_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/statistics_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/timeseries_features_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/train_model_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/mixins/unsupervised_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/grid_search_multiclass_rf.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/grid_search_rf.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/inference_batch.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/inference_multi_animal_batch.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/inference_multiclass_batch.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/inference_validation.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/ordinal_clf.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/regression/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/regression/metrics.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/regression/model.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/sam_inference.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/train_multiclass_rf.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/train_multilabel_rf.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/train_rf.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/yolo_fit.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/yolo_inference.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/yolo_nvdec_inference.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/yolo_pose_inference.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/yolo_pose_track_inference.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/model/yolo_seg_inference.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/outlier_tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/outlier_tools/outlier_corrector_location.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/outlier_tools/outlier_corrector_location_advanced.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/outlier_tools/outlier_corrector_location_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/outlier_tools/outlier_corrector_movement.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/outlier_tools/outlier_corrector_movement_advanced.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/outlier_tools/outlier_corrector_movement_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/outlier_tools/skip_outlier_correction.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/EzPathPlot.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/ROI_feature_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/ROI_feature_visualizer_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/annotation_videos.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/blob_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/blob_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/circular_feature_overlay_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/circular_plotting.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/clf_validator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/clf_validator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/cue_light_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/data_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/directing_animals_to_bodypart_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/directing_animals_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/directing_animals_visualizer_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/distance_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/distance_plotter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/ez_path_plot.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/frame_mergerer_ffmpeg.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/gantt_creator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/gantt_creator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/gantt_plotly.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/geometry_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/heat_mapper_clf.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/heat_mapper_clf_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/heat_mapper_location.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/heat_mapper_location_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/interactive_probability_grapher.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/light_dark_box_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/path_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/path_plotter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/plot_clf_results.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/plot_clf_results_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/pose_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/pose_plotter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/probability_plot_creator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/probability_plot_creator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/roi_directing_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/roi_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/roi_plotter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/sam_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/shap_agg_stats_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/single_run_model_validation_video.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/single_run_model_validation_video_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/skeleton_video_creator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/spontaneous_alternation_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/tools/tkinter_tools.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/yolo_annotation_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/yolo_pose_track_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/yolo_pose_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/plotting/yolo_seg_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/bp_names/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/bp_names/bp_names.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/configuration_names/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/configuration_names/pose_config_names.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/no_animals/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/no_animals/no_animals.csv +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/1.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/10.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/11.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/12.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/13.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/14.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/15.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/16.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/2.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/3.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/4.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/5.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/6.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/7.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/8.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_configurations/schematics/9.png +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/dlc_importer_csv.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/facemap_h5_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/import_mars.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/madlc_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/misc/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/misc/apt_trk_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/read_DANNCE_mat.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/simba_blob_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/simba_yolo_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/sleap_csv_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/sleap_h5_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/sleap_slp_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/superanimal_import.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_importers/trk_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_processors/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_processors/pose_reset.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_processors/remove_keypoints.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_processors/reorganize_keypoint.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/pose_processors/reverse_pose.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/requirements.txt +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/ROI_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/ROI_directing_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/ROI_feature_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/ROI_size_standardizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/ROI_time_bin_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/import_roi_csvs.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/interactive_modifier_ui.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/interactive_roi_bufferer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/interactive_roi_modifier_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_aggregate_statistics_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_aggregate_stats_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_clf_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_clf_calculator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_ruler.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_selector_circle_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_selector_polygon_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_selector_rectangle_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_time_bins_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_ui.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_ui_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/roi_tools/roi_utils.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/BENTO_appender.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/BORIS_appender.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/boris_source_cleaner.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/converters.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/deepethogram_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/ethovision_import.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/observer_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/shah_appender.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/solomon_importer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/third_party_appender.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/tools.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/coco_keypoints_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/coco_keypoints_to_yolo_bbox.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/coco_keypoints_to_yolo_seg.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/dlc_ma_h5_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/dlc_multi_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/dlc_single_to_multi_format_converter.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/dlc_to_labelme.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/dlc_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/labelme_to_df.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/labelme_to_dlc.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/labelme_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/labelme_to_yolo_keypoints.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/labelme_to_yolo_seg.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/litpose_crop_annotations.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/litpose_merge_projects.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/litpose_to_yolo_bbox.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/litpose_to_yolo_keypoints.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/merge_yolo_projects.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/sam3_to_yolo_bbox.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/sam3_to_yolo_seg.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/simba_roi_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/simba_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/simba_to_yolo_seg.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/sleap_csv_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/sleap_h5_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/sleap_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/utils.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/yolo_labels_to_yolo_project.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/third_party_label_appenders/transform/yolo_to_imgs.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/blob_quick_check_interface.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/blob_tracker_ui.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/create_project_ui.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/get_tree_view.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/import_pose_frame.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/import_videos_frame.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/machine_model_settings_ui.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/ml_settings_frm.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/about_simba_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/animal_directing_other_animals_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/animal_directing_roi_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/annotated_bouts_videos_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/append_roi_features_animals_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/append_roi_features_bodypart_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/archive_files_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/batch_preprocess_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/blob_visualizer_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/boolean_conditional_slicer_pup_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/change_speed_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/check_videos_seekable_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/clf_add_remove_print_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/clf_annotation_counts_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/clf_by_roi_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/clf_by_timebins_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/clf_descriptive_statistics_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/clf_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/clf_probability_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/clf_validation_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/coco_keypoints_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/create_user_defined_pose_configuration_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/csv_2_parquet_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/cue_light_clf_analyzer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/cue_light_data_analyzer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/cue_light_main_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/cue_light_movement_analyzer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/cue_light_visualizer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/data_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/delete_all_rois_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/directing_animal_to_bodypart_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/directing_other_animals_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/direction_animal_to_bodypart_settings_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/distance_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/distance_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/distance_timebins_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/dlc_annotations_to_labelme_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/dlc_h5_inference_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/dlc_to_labelme_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/dlc_to_yolo_keypoints_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/duplicate_rois_by_source_target_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/egocentric_alignment_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/extract_annotation_frames_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/ez_path_plot_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/fsttc_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/gantt_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/heatmap_clf_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/heatmap_location_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/helpers.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/import_roi_csv_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/initialize_blob_tracking_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/interpolate_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/kleinberg_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/labelme_bbox_to_yolo_bbox_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/labelme_dir_to_csv_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/labelme_to_df_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/labelme_to_imgs_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/make_path_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/merge_coco_keypoint_files_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/min_max_draw_size_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/movement_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/movement_analysis_time_bins_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/multiple_videos_to_frames_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/mutual_exclusivity_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/outlier_settings_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/path_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/pose_bp_drop_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/pose_reorganizer_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/print_video_meta_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/pup_retrieval_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/quick_path_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/remove_roi_features_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/roi_aggregate_stats_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/roi_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/roi_analysis_time_bins_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/roi_directing_visualizer_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/roi_features_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/roi_size_standardizer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/roi_tracking_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/roi_video_table_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/run_machine_models_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/select_video_for_labelling_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/select_video_for_pseudo_labelling_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/severity_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/simba_rois_to_yolo_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/simba_to_yolo_keypoints_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/single_video_to_frames_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/sleap_annotations_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/sleap_csv_predictions_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/sleap_h5_inference_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/smoothing_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/splash_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/spontaneous_alternation_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/subset_feature_extractor_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/targeted_annotation_clips_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/third_party_annotator_appender_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/validation_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/video_processing_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/visualize_pose_in_dir_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/yolo_inference_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/yolo_plot_results.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/pop_ups/yolo_pose_train_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/px_to_mm_ui.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/tkinter_functions.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/user_defined_pose_creator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/utils.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/video_info_ui.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/ui/video_timelaps.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/bout_aggregator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/cluster_frequentist_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/cluster_validation_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/cluster_video_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/cluster_xai_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/clusterer_comparison_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/data_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/data_map.yaml +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/dataset_creator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/dbcv_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/embedding_correlation_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/enums.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/grid_search_visualizers.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/hdbscan_clusterer.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/outlier_detector.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/cluster_frequentist_stats_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/cluster_validation_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/cluster_videos_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/cluster_xai_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/clusterer_comparison_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/data_extractor_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/embedding_correlations_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/fit_cluster_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/fit_dim_reduction_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/grid_search_visualizer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/print_embedding_info_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/transform_cluster_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/pop_ups/transform_dim_reduction_popup.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/tsne.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/umap_embedder.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/unsupervised/unsupervised_main.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/checks.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/cli/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/cli/cli_tools.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/config_creator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/custom_feature_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/data.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/enums.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/errors.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/lookups.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/printing.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/utils/warnings.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/async_frame_reader.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/async_frame_reader_gpu.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/batch_process_create_ffmpeg_commands.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/batch_process_menus.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/blob_tracking_executor.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/brightness_contrast_ui.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/calculate_px_dist.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/clahe_ui.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/egocentric_video_rotator.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/extract_frames.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/extract_seqframes.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/multi_cropper.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/roi_selector.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/roi_selector_circle.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/roi_selector_polygon.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba/video_processors/videos_to_frames.py +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba_uw_tf_dev.egg-info/dependency_links.txt +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba_uw_tf_dev.egg-info/entry_points.txt +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba_uw_tf_dev.egg-info/requires.txt +0 -0
- {simba_uw_tf_dev-5.3.7 → simba_uw_tf_dev-5.3.8}/simba_uw_tf_dev.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: simba_uw_tf_dev
|
|
3
|
-
Version: 5.3.
|
|
3
|
+
Version: 5.3.8
|
|
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
|
|
@@ -57,7 +57,7 @@ If you use the code, please cite:
|
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
### Licence
|
|
60
|
-
SimBA is licensed under
|
|
60
|
+
SimBA is licensed under a modified BSD 3-Clause License, permitting use for academic and research purposes only. For commercial licensing inquiries, contact sronilsson@gmail.com.
|
|
61
61
|
|
|
62
62
|
### Contributors
|
|
63
63
|
Contributers on Github https://github.com/sgoldenlab/simba#contributors
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://github.com/sgoldenlab/simba/actions/workflows/tests_py310.yml)
|
|
5
5
|
[](https://github.com/sgoldenlab/simba/actions/workflows/tests_py36.yml)
|
|
6
6
|

|
|
7
|
-
[-blue.svg)](LICENSE)
|
|
8
8
|
[](https://gitter.im/SimBA-Resource/community)
|
|
9
9
|
[](https://osf.io/5t4y9/)
|
|
10
10
|
[](https://docs.google.com/forms/d/e/1FAIpQLSfjbjae0XqNcl7GYOxmqvRsCveG-cmf4p4hBNNJ8gu5vPLHng/viewform)
|
|
@@ -3,7 +3,8 @@ SimBA (Simple Behavioral Analysis)
|
|
|
3
3
|
https://github.com/sgoldenlab/simba
|
|
4
4
|
Contributors.
|
|
5
5
|
https://github.com/sgoldenlab/simba#contributors-
|
|
6
|
-
Licensed under
|
|
6
|
+
Licensed under a modified BSD 3-Clause License (academic and research use only).
|
|
7
|
+
For commercial licensing inquiries, contact sronilsson@gmail.com.
|
|
7
8
|
"""
|
|
8
9
|
|
|
9
10
|
import setuptools
|
|
@@ -29,7 +30,7 @@ with open(GPU_REQUIREMENTS_PATH, "r") as f:
|
|
|
29
30
|
# Setup configuration
|
|
30
31
|
setuptools.setup(
|
|
31
32
|
name="simba_uw_tf_dev",
|
|
32
|
-
version="5.3.
|
|
33
|
+
version="5.3.8",
|
|
33
34
|
author="Simon Nilsson, Jia Jie Choong, Sophia Hwang",
|
|
34
35
|
author_email="sronilsson@gmail.com",
|
|
35
36
|
description="Toolkit for computer classification and analysis of behaviors in experimental animals",
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
__author__ = "Simon Nilsson; sronilsson@gmail.com"
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
|
|
6
|
+
|
|
7
|
+
from typing import Dict, List, Optional, Tuple, Union
|
|
8
|
+
|
|
9
|
+
try:
|
|
10
|
+
from typing import Literal
|
|
11
|
+
except ImportError:
|
|
12
|
+
from typing_extensions import Literal
|
|
13
|
+
|
|
14
|
+
try:
|
|
15
|
+
from ultralytics import YOLO
|
|
16
|
+
except ModuleNotFoundError:
|
|
17
|
+
YOLO = None
|
|
18
|
+
|
|
19
|
+
from simba.data_processors.cuda.utils import _is_cuda_available
|
|
20
|
+
from simba.model.yolo_inference import YoloInference
|
|
21
|
+
from simba.plotting.yolo_visualize import YOLOVisualizer
|
|
22
|
+
from simba.utils.checks import (check_file_exist_and_readable, check_float,
|
|
23
|
+
check_if_dir_exists,
|
|
24
|
+
check_if_string_value_is_valid_video_timestamp,
|
|
25
|
+
check_int,
|
|
26
|
+
check_that_hhmmss_start_is_before_end,
|
|
27
|
+
check_valid_boolean, check_valid_lst)
|
|
28
|
+
from simba.utils.data import get_cpu_pool, terminate_cpu_pool
|
|
29
|
+
from simba.utils.enums import Options
|
|
30
|
+
from simba.utils.errors import (InvalidInputError, InvalidVideoFileError,
|
|
31
|
+
SimBAGPUError, SimBAPAckageVersionError)
|
|
32
|
+
from simba.utils.printing import SimbaTimer, stdout_information, stdout_success
|
|
33
|
+
from simba.utils.read_write import (find_core_cnt,
|
|
34
|
+
find_files_of_filetypes_in_directory,
|
|
35
|
+
get_fn_ext, get_video_meta_data)
|
|
36
|
+
from simba.utils.yolo import get_yolo_imgsz_and_batch_size
|
|
37
|
+
from simba.video_processors.video_processing import (
|
|
38
|
+
clip_video_in_range, horizontal_video_concatenator, superimpose_freetext)
|
|
39
|
+
|
|
40
|
+
ENGINE = '.engine'
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class YoloModelComparator():
|
|
44
|
+
"""
|
|
45
|
+
Compare two or more YOLO models side-by-side on a set of test videos.
|
|
46
|
+
|
|
47
|
+
Per-model CSV detections and visualization videos are written to``out_dir/<label>/`` and the final comparison videos to ``out_dir/compare/``.
|
|
48
|
+
|
|
49
|
+
.. seealso::
|
|
50
|
+
:class:`~simba.model.yolo_inference.YoloInference` (per-model inference)
|
|
51
|
+
:class:`~simba.plotting.yolo_visualize.YOLOVisualizer` (per-model rendering)
|
|
52
|
+
:func:`~simba.video_processors.video_processing.horizontal_video_concatenator` (side-by-side concat)
|
|
53
|
+
|
|
54
|
+
:param List[Union[str, os.PathLike]] weights: List of YOLO model weight paths (length >= 2).
|
|
55
|
+
:param Union[str, os.PathLike, List[Union[str, os.PathLike]]] video_path: One of: a single video file path; a directory of videos (searched non-recursively); or a list/tuple of video file paths.
|
|
56
|
+
:param Union[str, os.PathLike] out_dir: Output directory. Per-model CSV/viz subdirectories and a ``compare/`` subdirectory are created underneath.
|
|
57
|
+
:param Optional[List[str]] labels: Display labels (one per model). If None, the weight file name (without extension) of each model is used. Must be unique and match ``len(weights)``.
|
|
58
|
+
:param float threshold: YOLO detection confidence threshold in ``[0.0, 1.0]``.
|
|
59
|
+
:param Union[Literal['cpu'], int] device: Inference device ('cpu' or CUDA index).
|
|
60
|
+
:param Optional[int] batch_size: Frames per YOLO inference batch. If None, it is read per-model from the model metadata (required for ``.engine`` files); falls back to 400 when unavailable (e.g. ``.pt`` weights).
|
|
61
|
+
:param Optional[int] imgsz: Model inference image size. If None, it is read per-model from the model metadata; falls back to 320 when unavailable. For ``.engine`` files the engine's baked-in image size always wins (a mismatching explicit value is overridden with a warning).
|
|
62
|
+
:param int max_detections: Maximum detections per frame.
|
|
63
|
+
:param Optional[str] palette: Matplotlib palette passed to ``YOLOVisualizer``.
|
|
64
|
+
:param float opacity: Polygon fill opacity in ``[0.0, 1.0]`` for the visualization.
|
|
65
|
+
:param Optional[int] thickness: Polygon line thickness.
|
|
66
|
+
:param int padding: Polygon offset in pixels for the visualization. Defaults to 0 (draw the exact detection box). Positive values expand polygons outward, ``-1`` shrinks them inward.
|
|
67
|
+
:param Optional[Tuple[int, int, int]] outline_color: BGR outline color for polygons.
|
|
68
|
+
:param Optional[int] core_cnt: CPU core count for the visualizer. If None, defaults to a quarter of the available cores to leave headroom; ``-1`` = all cores.
|
|
69
|
+
:param bool gpu: Use the NVENC codec when concatenating side-by-side.
|
|
70
|
+
:param bool overwrite: If True (default), always re-render comparison videos. If False, skip videos whose comparison output already exists.
|
|
71
|
+
:param bool overlay_labels: If True, burns each model's ``label`` into the top-left corner of its panel before side-by-side concatenation, so the panels are self-describing.
|
|
72
|
+
:param Optional[Dict[str, str]] time_window: Analysis window as a dict with ``'start'`` and ``'end'`` keys, both in ``HH:MM:SS`` format (e.g. ``{'start': '00:00:05', 'end': '00:00:30'}``). If provided, each video is clipped to the window (saved under ``out_dir/clips/``) and the comparison runs on the clip. If None, the full video is analysed.
|
|
73
|
+
:param bool verbose: Print progress information.
|
|
74
|
+
|
|
75
|
+
:example:
|
|
76
|
+
>>> c = YoloModelComparator(
|
|
77
|
+
... weights=[r"/mdl/train8/weights/best.pt", r"/mdl/train13/weights/best.pt"],
|
|
78
|
+
... video_path=r"/test_videos",
|
|
79
|
+
... out_dir=r"/yolo_comparison",
|
|
80
|
+
... labels=["train8", "train13"],
|
|
81
|
+
... threshold=0.05,
|
|
82
|
+
... max_detections=1,
|
|
83
|
+
... device=0,
|
|
84
|
+
... )
|
|
85
|
+
>>> c.run()
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
def __init__(self,
|
|
89
|
+
weights: List[Union[str, os.PathLike]],
|
|
90
|
+
video_path: Union[str, os.PathLike, List[Union[str, os.PathLike]]],
|
|
91
|
+
out_dir: Union[str, os.PathLike],
|
|
92
|
+
labels: Optional[List[str]] = None,
|
|
93
|
+
threshold: float = 0.05,
|
|
94
|
+
device: Union[Literal['cpu'], int] = 0,
|
|
95
|
+
batch_size: Optional[int] = None,
|
|
96
|
+
imgsz: Optional[int] = None,
|
|
97
|
+
max_detections: int = 300,
|
|
98
|
+
palette: Optional[str] = 'Set1',
|
|
99
|
+
opacity: float = 0.6,
|
|
100
|
+
thickness: Optional[int] = 2,
|
|
101
|
+
padding: int = 0,
|
|
102
|
+
outline_color: Optional[Tuple[int, int, int]] = None,
|
|
103
|
+
core_cnt: Optional[int] = None,
|
|
104
|
+
gpu: bool = False,
|
|
105
|
+
overwrite: bool = True,
|
|
106
|
+
overlay_labels: bool = True,
|
|
107
|
+
time_window: Optional[Dict[str, str]] = None,
|
|
108
|
+
verbose: bool = True):
|
|
109
|
+
|
|
110
|
+
if not _is_cuda_available()[0]:
|
|
111
|
+
raise SimBAGPUError(msg='No GPU detected.', source=self.__class__.__name__)
|
|
112
|
+
if YOLO is None:
|
|
113
|
+
raise SimBAPAckageVersionError(msg='ultralytics.YOLO package not detected.', source=self.__class__.__name__)
|
|
114
|
+
check_valid_lst(data=weights, source=f'{self.__class__.__name__} weights', valid_dtypes=(str, os.PathLike), min_len=2)
|
|
115
|
+
for w in weights:
|
|
116
|
+
check_file_exist_and_readable(file_path=w)
|
|
117
|
+
if labels is None:
|
|
118
|
+
labels = [get_fn_ext(filepath=w)[1] for w in weights]
|
|
119
|
+
check_valid_lst(data=labels, source=f'{self.__class__.__name__} labels', valid_dtypes=(str,), exact_len=len(weights))
|
|
120
|
+
if len(set(labels)) != len(labels):
|
|
121
|
+
raise InvalidInputError(msg=f'labels must be unique, got: {labels}', source=self.__class__.__name__)
|
|
122
|
+
if isinstance(video_path, (list, tuple)):
|
|
123
|
+
check_valid_lst(data=video_path, source=f'{self.__class__.__name__} video_path', valid_dtypes=(str, os.PathLike), min_len=1)
|
|
124
|
+
for v in video_path:
|
|
125
|
+
check_file_exist_and_readable(file_path=v)
|
|
126
|
+
get_video_meta_data(video_path=v)
|
|
127
|
+
self.video_paths = list(video_path)
|
|
128
|
+
elif os.path.isfile(video_path):
|
|
129
|
+
check_file_exist_and_readable(file_path=video_path)
|
|
130
|
+
get_video_meta_data(video_path=video_path)
|
|
131
|
+
self.video_paths = [video_path]
|
|
132
|
+
elif os.path.isdir(video_path):
|
|
133
|
+
self.video_paths = find_files_of_filetypes_in_directory(directory=video_path, extensions=Options.ALL_VIDEO_FORMAT_OPTIONS.value, raise_error=True, as_dict=False)
|
|
134
|
+
else:
|
|
135
|
+
raise InvalidVideoFileError(msg=f'{video_path} is not a valid video file, directory, or list of video files.', source=self.__class__.__name__)
|
|
136
|
+
check_if_dir_exists(in_dir=out_dir, source=f'{self.__class__.__name__} out_dir', create_if_not_exist=True)
|
|
137
|
+
check_float(name=f'{self.__class__.__name__} threshold', value=threshold, min_value=0.0, max_value=1.0)
|
|
138
|
+
if batch_size is not None:
|
|
139
|
+
check_int(name=f'{self.__class__.__name__} batch_size', value=batch_size, min_value=1)
|
|
140
|
+
if imgsz is not None:
|
|
141
|
+
check_int(name=f'{self.__class__.__name__} imgsz', value=imgsz, min_value=32)
|
|
142
|
+
check_int(name=f'{self.__class__.__name__} max_detections', value=max_detections, min_value=1)
|
|
143
|
+
if core_cnt is None:
|
|
144
|
+
core_cnt = find_core_cnt()[1]
|
|
145
|
+
check_int(name=f'{self.__class__.__name__} core_cnt', value=core_cnt, min_value=-1, unaccepted_vals=[0])
|
|
146
|
+
check_float(name=f'{self.__class__.__name__} opacity', value=opacity, min_value=0.0, max_value=1.0)
|
|
147
|
+
check_valid_boolean(value=[gpu, overwrite, overlay_labels, verbose], source=self.__class__.__name__)
|
|
148
|
+
self.start_time, self.end_time = None, None
|
|
149
|
+
if time_window is not None:
|
|
150
|
+
if not isinstance(time_window, dict) or set(time_window.keys()) != {'start', 'end'}:
|
|
151
|
+
raise InvalidInputError(msg=f"time_window must be a dict with exactly 'start' and 'end' keys in HH:MM:SS format, got: {time_window}", source=self.__class__.__name__)
|
|
152
|
+
check_if_string_value_is_valid_video_timestamp(value=time_window['start'], name=f'{self.__class__.__name__} time_window start')
|
|
153
|
+
check_if_string_value_is_valid_video_timestamp(value=time_window['end'], name=f'{self.__class__.__name__} time_window end')
|
|
154
|
+
check_that_hhmmss_start_is_before_end(start_time=time_window['start'], end_time=time_window['end'], name=f'{self.__class__.__name__} time_window')
|
|
155
|
+
self.start_time, self.end_time = time_window['start'], time_window['end']
|
|
156
|
+
|
|
157
|
+
self.weights, self.labels = list(weights), list(labels)
|
|
158
|
+
self.video_path, self.out_dir = video_path, out_dir
|
|
159
|
+
self.threshold, self.device, self.batch_size, self.imgsz = threshold, device, batch_size, imgsz
|
|
160
|
+
self.max_detections, self.palette, self.opacity = max_detections, palette, opacity
|
|
161
|
+
self.thickness, self.padding, self.outline_color = thickness, padding, outline_color
|
|
162
|
+
self.core_cnt, self.gpu, self.overwrite, self.verbose = core_cnt, gpu, overwrite, verbose
|
|
163
|
+
self.overlay_labels = overlay_labels
|
|
164
|
+
self.clip_videos = self.start_time is not None
|
|
165
|
+
self.compare_dir = os.path.join(out_dir, 'compare')
|
|
166
|
+
os.makedirs(self.compare_dir, exist_ok=True)
|
|
167
|
+
if self.clip_videos:
|
|
168
|
+
self.clips_dir = os.path.join(out_dir, 'clips')
|
|
169
|
+
os.makedirs(self.clips_dir, exist_ok=True)
|
|
170
|
+
self.csv_dirs, self.viz_dirs = {}, {}
|
|
171
|
+
for label in self.labels:
|
|
172
|
+
csv_dir = os.path.join(out_dir, label, 'csv')
|
|
173
|
+
viz_dir = os.path.join(out_dir, label, 'viz')
|
|
174
|
+
os.makedirs(csv_dir, exist_ok=True)
|
|
175
|
+
os.makedirs(viz_dir, exist_ok=True)
|
|
176
|
+
self.csv_dirs[label] = csv_dir
|
|
177
|
+
self.viz_dirs[label] = viz_dir
|
|
178
|
+
|
|
179
|
+
def _resolve_imgsz_batch(self, weight: Union[str, os.PathLike], label: str) -> Tuple[int, int]:
|
|
180
|
+
"""Resolve the effective imgsz/batch_size for a single model. Engine bindings are authoritative; otherwise the user value, then the model metadata, then a default is used."""
|
|
181
|
+
is_engine = get_fn_ext(filepath=weight)[2].lower() == ENGINE
|
|
182
|
+
mdl_imgsz, mdl_batch = get_yolo_imgsz_and_batch_size(model=weight, raise_error=False)
|
|
183
|
+
if is_engine and mdl_imgsz is not None:
|
|
184
|
+
if self.imgsz is not None and self.imgsz != mdl_imgsz and self.verbose:
|
|
185
|
+
stdout_information(msg=f'{label}: passed imgsz={self.imgsz} overridden by engine imgsz={mdl_imgsz}.', source=self.__class__.__name__)
|
|
186
|
+
imgsz = mdl_imgsz
|
|
187
|
+
else:
|
|
188
|
+
imgsz = self.imgsz if self.imgsz is not None else (mdl_imgsz if mdl_imgsz is not None else 320)
|
|
189
|
+
if is_engine and mdl_batch is not None:
|
|
190
|
+
if self.batch_size is not None and self.batch_size != mdl_batch and self.verbose:
|
|
191
|
+
stdout_information(msg=f'{label}: passed batch_size={self.batch_size} overridden by engine batch_size={mdl_batch}.', source=self.__class__.__name__)
|
|
192
|
+
batch_size = mdl_batch
|
|
193
|
+
else:
|
|
194
|
+
batch_size = self.batch_size if self.batch_size is not None else (mdl_batch if mdl_batch is not None else 400)
|
|
195
|
+
return imgsz, batch_size
|
|
196
|
+
|
|
197
|
+
def _clip_videos(self) -> List[Union[str, os.PathLike]]:
|
|
198
|
+
"""Clip every source video to ``[start_time, end_time]`` into ``out_dir/clips/`` and return the clipped paths. Existing clips are reused when ``overwrite`` is False."""
|
|
199
|
+
clipped_paths = []
|
|
200
|
+
for video_path in self.video_paths:
|
|
201
|
+
_, video_name, _ = get_fn_ext(filepath=video_path)
|
|
202
|
+
save_path = os.path.join(self.clips_dir, f'{video_name}_clipped.mp4')
|
|
203
|
+
if os.path.isfile(save_path) and not self.overwrite:
|
|
204
|
+
if self.verbose:
|
|
205
|
+
stdout_information(msg=f'{video_name}: clip exists, reusing {save_path}.', source=self.__class__.__name__)
|
|
206
|
+
else:
|
|
207
|
+
clip_video_in_range(file_path=video_path, start_time=self.start_time, end_time=self.end_time, save_path=save_path, overwrite=True, gpu=self.gpu, verbose=self.verbose)
|
|
208
|
+
clipped_paths.append(save_path)
|
|
209
|
+
return clipped_paths
|
|
210
|
+
|
|
211
|
+
def run(self):
|
|
212
|
+
timer = SimbaTimer(start=True)
|
|
213
|
+
video_paths = self._clip_videos() if self.clip_videos else self.video_paths
|
|
214
|
+
for label, weight in zip(self.labels, self.weights):
|
|
215
|
+
imgsz, batch_size = self._resolve_imgsz_batch(weight=weight, label=label)
|
|
216
|
+
if self.verbose:
|
|
217
|
+
stdout_information(msg=f'Running YOLO inference for {label} on {len(video_paths)} video(s) (imgsz={imgsz}, batch_size={batch_size})...', source=self.__class__.__name__)
|
|
218
|
+
YoloInference(weights=weight,
|
|
219
|
+
video_path=video_paths,
|
|
220
|
+
save_dir=self.csv_dirs[label],
|
|
221
|
+
device=self.device,
|
|
222
|
+
batch_size=batch_size,
|
|
223
|
+
imgsz=imgsz,
|
|
224
|
+
threshold=self.threshold,
|
|
225
|
+
max_detections=self.max_detections,
|
|
226
|
+
verbose=self.verbose).run()
|
|
227
|
+
|
|
228
|
+
pool = get_cpu_pool(core_cnt=self.core_cnt, verbose=True, source=self.__class__.__name__)
|
|
229
|
+
for video_idx, video_path in enumerate(video_paths):
|
|
230
|
+
_, video_name, _ = get_fn_ext(filepath=video_path)
|
|
231
|
+
out_path = os.path.join(self.compare_dir, f'{video_name}_compare.mp4')
|
|
232
|
+
if os.path.isfile(out_path) and not self.overwrite:
|
|
233
|
+
if self.verbose:
|
|
234
|
+
stdout_information(msg=f'[{video_idx + 1}/{len(video_paths)}] {video_name}: comparison exists, skipping.', source=self.__class__.__name__)
|
|
235
|
+
continue
|
|
236
|
+
if self.verbose:
|
|
237
|
+
stdout_information(msg=f'[{video_idx + 1}/{len(video_paths)}] Rendering {video_name}...', source=self.__class__.__name__)
|
|
238
|
+
label_font_size = max(int(get_video_meta_data(video_path=video_path)['height'] / 15), 12) if self.overlay_labels else None
|
|
239
|
+
viz_paths = []
|
|
240
|
+
for label in self.labels:
|
|
241
|
+
csv_path = os.path.join(self.csv_dirs[label], f'{video_name}.csv')
|
|
242
|
+
check_file_exist_and_readable(file_path=csv_path)
|
|
243
|
+
visualizer = YOLOVisualizer(data_path=csv_path,
|
|
244
|
+
video_path=video_path,
|
|
245
|
+
pool=pool,
|
|
246
|
+
save_dir=self.viz_dirs[label],
|
|
247
|
+
palette=self.palette,
|
|
248
|
+
core_cnt=self.core_cnt,
|
|
249
|
+
threshold=self.threshold,
|
|
250
|
+
padding=self.padding,
|
|
251
|
+
thickness=self.thickness,
|
|
252
|
+
opacity=self.opacity,
|
|
253
|
+
outline_color=self.outline_color,
|
|
254
|
+
verbose=self.verbose)
|
|
255
|
+
visualizer.run()
|
|
256
|
+
viz_path = os.path.join(self.viz_dirs[label], f'{video_name}.mp4')
|
|
257
|
+
if self.overlay_labels:
|
|
258
|
+
superimpose_freetext(video_path=viz_path, text=label, font_size=label_font_size, position='top_left', save_dir=self.viz_dirs[label], gpu=self.gpu)
|
|
259
|
+
viz_path = os.path.join(self.viz_dirs[label], f'{video_name}_text_superimposed.mp4')
|
|
260
|
+
viz_paths.append(viz_path)
|
|
261
|
+
horizontal_video_concatenator(video_paths=viz_paths,
|
|
262
|
+
save_path=out_path,
|
|
263
|
+
height_idx=0,
|
|
264
|
+
gpu=self.gpu,
|
|
265
|
+
verbose=self.verbose)
|
|
266
|
+
|
|
267
|
+
terminate_cpu_pool(pool=pool, force=False, source=self.__class__.__name__)
|
|
268
|
+
timer.stop_timer()
|
|
269
|
+
if self.verbose:
|
|
270
|
+
stdout_success(msg=f'Saved {len(video_paths)} comparison video(s) for {len(self.weights)} model(s) in {self.compare_dir}.', source=self.__class__.__name__, elapsed_time=timer.elapsed_time_str)
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
#if __name__ == '__main__':
|
|
278
|
+
# comparator = YoloModelComparator(weights=[r"G:\netholabs\yolo_comparator_test\mdls\yolo_0518_best.pt",
|
|
279
|
+
# r"G:\netholabs\yolo_comparator_test\mdls\yolo_0519_best.pt"],
|
|
280
|
+
# video_path=r"D:\troubleshooting\sleap_two_animals\project_folder\videos\simba_test_v11.avi",
|
|
281
|
+
# out_dir=r"D:\troubleshooting\sleap_two_animals\project_folder\videos\output",
|
|
282
|
+
# labels=["yolo_0518_best", "train13"],
|
|
283
|
+
# threshold=0.01,
|
|
284
|
+
# max_detections=2,
|
|
285
|
+
# overwrite=True,
|
|
286
|
+
# time_window={'start': '00:00:00', 'end': '00:00:10'},
|
|
287
|
+
# overlay_labels=True,
|
|
288
|
+
# device=0)
|
|
289
|
+
# comparator.run()
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import multiprocessing
|
|
1
2
|
import os
|
|
2
3
|
from typing import Optional, Tuple, Union
|
|
3
4
|
|
|
@@ -8,7 +9,8 @@ from simba.mixins.geometry_mixin import GeometryMixin
|
|
|
8
9
|
from simba.plotting.geometry_plotter import GeometryPlotter
|
|
9
10
|
from simba.utils.checks import (check_file_exist_and_readable, check_float,
|
|
10
11
|
check_if_dir_exists, check_int,
|
|
11
|
-
check_valid_boolean,
|
|
12
|
+
check_valid_boolean, check_valid_cpu_pool,
|
|
13
|
+
check_valid_dataframe)
|
|
12
14
|
from simba.utils.data import get_cpu_pool, terminate_cpu_pool
|
|
13
15
|
from simba.utils.errors import FrameRangeError
|
|
14
16
|
from simba.utils.read_write import (find_core_cnt, get_fn_ext,
|
|
@@ -63,7 +65,7 @@ class YOLOVisualizer():
|
|
|
63
65
|
:param Optional[str] palette: Matplotlib color palette name for per-class geometry colors (e.g., ``'Set1'``, ``'tab10'``). Default: ``'Set1'``.
|
|
64
66
|
:param Optional[int] core_cnt: CPU core count for parallel processing. Use ``-1`` for all available cores.
|
|
65
67
|
:param float threshold: Confidence threshold in ``[0.0, 1.0]``. Detections below threshold are masked before polygon conversion.
|
|
66
|
-
:param
|
|
68
|
+
:param int padding: Polygon offset in pixels used during multiframe bbox-to-polygon conversion for rendering. Defaults to 0 (draw the exact detection box). Positive values expand polygons outward, ``-1`` shrinks them inward. This affects visualization geometry only, not the underlying YOLO detections in the input CSV.
|
|
67
69
|
:param Optional[int] thickness: Polygon line thickness. If ``None``, default geometry plotter thickness is used.
|
|
68
70
|
:param float opacity: Polygon fill opacity in ``[0.0, 1.0]``. Default: 0.6.
|
|
69
71
|
:param Optional[Tuple[int, int, int]] outline_color: BGR color for polygon outlines. If ``None``, no outlines are drawn. Default: None.
|
|
@@ -88,7 +90,8 @@ class YOLOVisualizer():
|
|
|
88
90
|
palette: Optional[str] = 'Set1',
|
|
89
91
|
core_cnt: Optional[int] = -1,
|
|
90
92
|
threshold: float = 0.0,
|
|
91
|
-
padding:
|
|
93
|
+
padding: int = 0,
|
|
94
|
+
pool: Optional[multiprocessing.Pool] = None,
|
|
92
95
|
thickness: Optional[int] = None,
|
|
93
96
|
opacity: float = 0.6,
|
|
94
97
|
outline_color: Optional[Tuple[int, int, int]] = None,
|
|
@@ -99,8 +102,9 @@ class YOLOVisualizer():
|
|
|
99
102
|
self.data_path, self.video_path = data_path, video_path
|
|
100
103
|
self.video_name = get_fn_ext(filepath=data_path)[1]
|
|
101
104
|
check_int(name=f'{self.__class__.__name__} core_cnt', value=core_cnt, min_value=-1, unaccepted_vals=[0])
|
|
102
|
-
|
|
105
|
+
check_int(name=f'{self.__class__.__name__} padding', value=padding, min_value=-1)
|
|
103
106
|
check_float(name=f'{self.__class__.__name__} threshold', value=threshold, min_value=0.0, max_value=1.0)
|
|
107
|
+
if pool is not None: check_valid_cpu_pool(value=pool, source=self.__class__.__name__, max_cores=find_core_cnt()[0], raise_error=True)
|
|
104
108
|
self.core_cnt = core_cnt
|
|
105
109
|
if core_cnt == -1 or core_cnt > find_core_cnt()[0]: self.core_cnt = find_core_cnt()[0]
|
|
106
110
|
if thickness is not None:
|
|
@@ -109,13 +113,14 @@ class YOLOVisualizer():
|
|
|
109
113
|
check_valid_boolean(value=[verbose], source=self.__class__.__name__, raise_error=True)
|
|
110
114
|
check_float(name=f'{self.__class__.__name__} opacity', value=opacity, min_value=0.0, max_value=1.0)
|
|
111
115
|
self.save_dir, self.verbose, self.palette, self.thickness = save_dir, verbose, palette, thickness
|
|
112
|
-
self.threshold, self.padding, self.opacity, self.outline_color = threshold, padding, opacity, outline_color
|
|
116
|
+
self.threshold, self.padding, self.opacity, self.outline_color, self.pool = threshold, padding, opacity, outline_color, pool
|
|
117
|
+
self.pool_terminate_flag = False if pool is not None else True
|
|
113
118
|
|
|
114
119
|
def run(self):
|
|
115
120
|
data_df = pd.read_csv(self.data_path, index_col=0)
|
|
116
121
|
check_valid_dataframe(df=data_df, source=self.__class__.__name__, required_fields=EXPECTED_COLS)
|
|
117
122
|
df_frm_cnt = np.unique(data_df[FRAME].values).shape[0]
|
|
118
|
-
pool = get_cpu_pool(core_cnt=self.core_cnt, source=self.__class__.__name__)
|
|
123
|
+
pool = self.pool if self.pool is not None else get_cpu_pool(core_cnt=self.core_cnt, verbose=True, source=self.__class__.__name__)
|
|
119
124
|
if self.video_meta_data['frame_count'] != df_frm_cnt:
|
|
120
125
|
raise FrameRangeError(
|
|
121
126
|
msg=f'The bounding boxes contain data for {df_frm_cnt} frames, while the video is {self.video_meta_data["frame_count"]} frames',
|
|
@@ -145,7 +150,7 @@ class YOLOVisualizer():
|
|
|
145
150
|
outline_clr=self.outline_color,
|
|
146
151
|
pool=pool)
|
|
147
152
|
plotter.run()
|
|
148
|
-
terminate_cpu_pool(pool=pool, source=self.__class__.__name__)
|
|
153
|
+
if self.pool_terminate_flag: terminate_cpu_pool(pool=pool, force=False, source=self.__class__.__name__)
|
|
149
154
|
#
|
|
150
155
|
#
|
|
151
156
|
# if __name__ == '__main__':
|
|
@@ -69,7 +69,6 @@ class CropLPAnnotationsBboxSquare:
|
|
|
69
69
|
y2 = int(np.ceil(np.max(y_valid)))
|
|
70
70
|
return (x1, y1, x2, y2)
|
|
71
71
|
|
|
72
|
-
# No detection, no keypoints: center crop
|
|
73
72
|
cx, cy = img_w // 2, img_h // 2
|
|
74
73
|
half = min(img_w, img_h) // 2
|
|
75
74
|
return (cx - half, cy - half, cx + half, cy + half)
|
|
@@ -84,7 +83,6 @@ class CropLPAnnotationsBboxSquare:
|
|
|
84
83
|
x2p = x2 + px
|
|
85
84
|
y2p = y2 + py
|
|
86
85
|
|
|
87
|
-
# Make square by extending the shorter side
|
|
88
86
|
pw, ph = x2p - x1p, y2p - y1p
|
|
89
87
|
side = max(pw, ph)
|
|
90
88
|
cx = (x1p + x2p) / 2.0
|
|
@@ -96,7 +94,6 @@ class CropLPAnnotationsBboxSquare:
|
|
|
96
94
|
crop_x2 = crop_x1 + side
|
|
97
95
|
crop_y2 = crop_y1 + side
|
|
98
96
|
|
|
99
|
-
# Clamp to image bounds
|
|
100
97
|
if crop_x1 < 0:
|
|
101
98
|
crop_x1, crop_x2 = 0, side
|
|
102
99
|
if crop_y1 < 0:
|
|
@@ -106,7 +103,6 @@ class CropLPAnnotationsBboxSquare:
|
|
|
106
103
|
if crop_y2 > img_h:
|
|
107
104
|
crop_y2, crop_y1 = img_h, img_h - side
|
|
108
105
|
|
|
109
|
-
# If image is smaller than the square, clamp
|
|
110
106
|
crop_x1 = max(0, int(crop_x1))
|
|
111
107
|
crop_y1 = max(0, int(crop_y1))
|
|
112
108
|
crop_x2 = min(img_w, int(crop_x2))
|
|
@@ -179,27 +175,22 @@ class CropLPAnnotationsBboxSquare:
|
|
|
179
175
|
continue
|
|
180
176
|
h, w = img.shape[:2]
|
|
181
177
|
|
|
182
|
-
# Get bbox and make square crop
|
|
183
178
|
bbox = self._get_bbox_for_image(img_rel=img_rel, img_h=h, img_w=w, xs=xs, ys=ys, valid=valid)
|
|
184
179
|
crop_x1, crop_y1, crop_x2, crop_y2 = self._bbox_to_square_crop(
|
|
185
180
|
bbox[0], bbox[1], bbox[2], bbox[3], h, w
|
|
186
181
|
)
|
|
187
182
|
|
|
188
|
-
# Crop the square region
|
|
189
183
|
cropped = img[crop_y1:crop_y2, crop_x1:crop_x2]
|
|
190
184
|
crop_h, crop_w = cropped.shape[:2]
|
|
191
185
|
|
|
192
|
-
# Resize to target crop_size
|
|
193
186
|
scale_x = crop_size[0] / crop_w
|
|
194
187
|
scale_y = crop_size[1] / crop_h
|
|
195
188
|
resized = cv2.resize(cropped, crop_size, interpolation=cv2.INTER_LINEAR)
|
|
196
189
|
|
|
197
|
-
# Save cropped image
|
|
198
190
|
out_img_path = os.path.join(save_dir, img_rel.replace("/", os.sep))
|
|
199
191
|
os.makedirs(os.path.dirname(out_img_path), exist_ok=True)
|
|
200
192
|
cv2.imwrite(out_img_path, resized)
|
|
201
193
|
|
|
202
|
-
# Transform coordinates: shift by crop offset, then scale
|
|
203
194
|
new_coords = coords.copy()
|
|
204
195
|
new_xs = np.where(np.isnan(xs), np.nan, (xs - crop_x1) * scale_x)
|
|
205
196
|
new_ys = np.where(np.isnan(ys), np.nan, (ys - crop_y1) * scale_y)
|
|
@@ -223,8 +214,6 @@ class CropLPAnnotationsBboxSquare:
|
|
|
223
214
|
out_df.to_csv(out_csv_path)
|
|
224
215
|
stdout_success(msg=f"Saved {out_csv_path} ({len(out_df)} rows).")
|
|
225
216
|
|
|
226
|
-
# --- Copied from original (unchanged) ---
|
|
227
|
-
|
|
228
217
|
@staticmethod
|
|
229
218
|
def _copy_project_files(lp_project_dir: str, save_dir: str):
|
|
230
219
|
COPY_DIRS = ("configs", "calibrations", "models")
|
|
@@ -305,9 +294,9 @@ class CropLPAnnotationsBboxSquare:
|
|
|
305
294
|
return common
|
|
306
295
|
|
|
307
296
|
|
|
308
|
-
#if __name__ == "__main__":
|
|
309
|
-
#
|
|
310
|
-
#
|
|
311
|
-
#
|
|
312
|
-
#
|
|
313
|
-
#
|
|
297
|
+
# if __name__ == "__main__":
|
|
298
|
+
# cropper = CropLPAnnotationsBboxSquare(lp_project_dir=r"Z:\home\simon\LPProjects\project_0601",
|
|
299
|
+
# save_dir=r"Z:\home\simon\LPProjects\project_0601_cropped",
|
|
300
|
+
# bbox_pad_frac=0.25,
|
|
301
|
+
# visualize=50)
|
|
302
|
+
# cropper.run()
|
|
@@ -81,6 +81,7 @@ SIMBA_DIR = os.path.dirname(simba.__file__)
|
|
|
81
81
|
|
|
82
82
|
PARSE_OPTIONS = csv.ParseOptions(delimiter=",")
|
|
83
83
|
READ_OPTIONS = csv.ReadOptions(encoding="utf8")
|
|
84
|
+
PA_DEFAULT_BLOCK_SIZE = csv.ReadOptions().block_size
|
|
84
85
|
ImageFile.LOAD_TRUNCATED_IMAGES = False
|
|
85
86
|
|
|
86
87
|
def read_df(file_path: Union[str, os.PathLike],
|
|
@@ -122,8 +123,11 @@ def read_df(file_path: Union[str, os.PathLike],
|
|
|
122
123
|
timer = SimbaTimer(start=True)
|
|
123
124
|
if file_type == Formats.CSV.value:
|
|
124
125
|
try:
|
|
126
|
+
with open(file_path, "rb") as f:
|
|
127
|
+
first_line_len = len(f.readline())
|
|
128
|
+
read_options = csv.ReadOptions(encoding="utf8", block_size=max(PA_DEFAULT_BLOCK_SIZE, first_line_len * 2))
|
|
125
129
|
df = csv.read_csv(
|
|
126
|
-
file_path, parse_options=PARSE_OPTIONS, read_options=
|
|
130
|
+
file_path, parse_options=PARSE_OPTIONS, read_options=read_options
|
|
127
131
|
)
|
|
128
132
|
duplicate_headers = list(
|
|
129
133
|
set([x for x in df.column_names if df.column_names.count(x) > 1])
|
|
@@ -591,7 +591,7 @@ def read_yolo_metadata(model: Union[str, os.PathLike, YOLO]) -> dict:
|
|
|
591
591
|
|
|
592
592
|
META_KEYS = ('batch', 'imgsz', 'stride', 'task', 'names', 'fp16', 'dynamic')
|
|
593
593
|
|
|
594
|
-
if isinstance(model, YOLO):
|
|
594
|
+
if YOLO is not None and isinstance(model, YOLO):
|
|
595
595
|
meta = {}
|
|
596
596
|
if hasattr(model, 'predictor') and model.predictor is not None and hasattr(model.predictor, 'model'):
|
|
597
597
|
backend = model.predictor.model
|
|
@@ -625,6 +625,8 @@ def read_yolo_metadata(model: Union[str, os.PathLike, YOLO]) -> dict:
|
|
|
625
625
|
return json.loads(f.read(meta_len).decode('utf-8'))
|
|
626
626
|
return {}
|
|
627
627
|
|
|
628
|
+
if YOLO is None:
|
|
629
|
+
raise SimBAPAckageVersionError(msg=f'Reading metadata from a {ext} model requires the ultralytics package, which is not installed.', source=read_yolo_metadata.__name__)
|
|
628
630
|
loaded = YOLO(path)
|
|
629
631
|
meta = {}
|
|
630
632
|
if hasattr(loaded, 'overrides'):
|
|
@@ -642,6 +644,49 @@ def read_yolo_metadata(model: Union[str, os.PathLike, YOLO]) -> dict:
|
|
|
642
644
|
meta[key] = getattr(loaded.model, key)
|
|
643
645
|
return meta
|
|
644
646
|
|
|
647
|
+
|
|
648
|
+
def get_yolo_imgsz_and_batch_size(model: Union[str, os.PathLike, YOLO],
|
|
649
|
+
raise_error: bool = True) -> Tuple[Optional[int], Optional[int]]:
|
|
650
|
+
"""
|
|
651
|
+
Attempt to read the image size and batch size baked into a YOLO model.
|
|
652
|
+
|
|
653
|
+
.. note::
|
|
654
|
+
For ``.engine`` (TensorRT) files both values are read straight from the embedded header
|
|
655
|
+
and represent the fixed input bindings. For ``.pt`` and other formats the values are
|
|
656
|
+
scraped from the training arguments, so ``imgsz`` reflects the *training* size (a sensible
|
|
657
|
+
default, not a hard constraint) and ``batch`` is frequently unavailable.
|
|
658
|
+
|
|
659
|
+
.. seealso::
|
|
660
|
+
:func:`~simba.utils.yolo.read_yolo_metadata` (full metadata dictionary)
|
|
661
|
+
|
|
662
|
+
:param Union[str, os.PathLike, YOLO] model: Path to a YOLO model file, or an already-loaded :class:`ultralytics.YOLO` instance.
|
|
663
|
+
:param bool raise_error: If True (default), raise :class:`~simba.utils.errors.InvalidInputError` when ``imgsz`` or ``batch`` cannot be found in the model metadata. If False, missing values are returned as ``None``.
|
|
664
|
+
:return: Tuple of ``(imgsz, batch_size)``, each an ``int`` (or ``None`` if not found and ``raise_error`` is False).
|
|
665
|
+
:rtype: Tuple[Optional[int], Optional[int]]
|
|
666
|
+
:raises InvalidInputError: If ``raise_error`` is True and ``imgsz`` and/or ``batch`` is not present in the model metadata.
|
|
667
|
+
|
|
668
|
+
:example:
|
|
669
|
+
>>> get_yolo_imgsz_and_batch_size(r'/models/best.engine')
|
|
670
|
+
(256, 192)
|
|
671
|
+
>>> get_yolo_imgsz_and_batch_size(r'/models/best.pt', raise_error=False)
|
|
672
|
+
(640, None)
|
|
673
|
+
"""
|
|
674
|
+
|
|
675
|
+
check_valid_boolean(value=raise_error, source=f'{get_yolo_imgsz_and_batch_size.__name__} raise_error', raise_error=True)
|
|
676
|
+
meta = read_yolo_metadata(model=model)
|
|
677
|
+
imgsz, batch_size = meta.get('imgsz', None), meta.get('batch', None)
|
|
678
|
+
if isinstance(imgsz, (list, tuple)) and len(imgsz) > 0:
|
|
679
|
+
imgsz = imgsz[0]
|
|
680
|
+
if imgsz is not None:
|
|
681
|
+
imgsz = int(imgsz)
|
|
682
|
+
if batch_size is not None:
|
|
683
|
+
batch_size = int(batch_size)
|
|
684
|
+
if raise_error:
|
|
685
|
+
missing = [k for k, v in (('imgsz', imgsz), ('batch', batch_size)) if v is None]
|
|
686
|
+
if missing:
|
|
687
|
+
raise InvalidInputError(msg=f'Could not read {" and ".join(missing)} from the metadata of model {model}. Pass the value(s) explicitly, or set raise_error=False.', source=get_yolo_imgsz_and_batch_size.__name__)
|
|
688
|
+
return imgsz, batch_size
|
|
689
|
+
|
|
645
690
|
# export_yolo_model(model_path=r"E:\open_video\open_field_2\yolo_seg_project\mdl\train\weights\best.pt",
|
|
646
691
|
# export_format='engine',
|
|
647
692
|
# imgsz=1240,
|
|
@@ -4680,7 +4680,7 @@ def superimpose_freetext(video_path: Union[str, os.PathLike],
|
|
|
4680
4680
|
:align: center
|
|
4681
4681
|
|
|
4682
4682
|
:param Union[str, os.PathLike] video_path: Path to the input video file or directory containing video files.
|
|
4683
|
-
:param str text: The text to overlay on the video
|
|
4683
|
+
:param str text: The text to overlay on the video. Characters that break the ffmpeg ``drawtext`` filter (``: ' " \\ % , ; =``) are stripped or replaced before rendering. Raises if no legal characters remain.
|
|
4684
4684
|
:param Optional[int] font_size: Font size for the text. Default 30.
|
|
4685
4685
|
:param Optional[str] font_color: Font color for text. Default white
|
|
4686
4686
|
:param Optional[str] font_border_color: Font border color for the text. Default black.
|
|
@@ -4701,6 +4701,11 @@ def superimpose_freetext(video_path: Union[str, os.PathLike],
|
|
|
4701
4701
|
check_int(name=f'{superimpose_freetext.__name__} font_size', value=font_size, min_value=1)
|
|
4702
4702
|
check_int(name=f'{superimpose_freetext.__name__} font_border_width', value=font_border_width, min_value=1)
|
|
4703
4703
|
check_str(name=f'{superimpose_freetext.__name__} text', value=text)
|
|
4704
|
+
illegal_chars = {':': '-', "'": '', '"': '', '\\': '', '%': '', ',': ' ', ';': ' ', '=': '-'}
|
|
4705
|
+
cleaned_text = ''.join(illegal_chars.get(c, c) for c in text).strip()
|
|
4706
|
+
if len(cleaned_text) == 0:
|
|
4707
|
+
raise InvalidInputError(msg=f'The text "{text}" only contains characters that are illegal in ffmpeg drawtext and cannot be superimposed.', source=superimpose_freetext.__name__)
|
|
4708
|
+
text = cleaned_text
|
|
4704
4709
|
font_dict = get_fonts()
|
|
4705
4710
|
check_str(name='font', value=font, options=tuple(font_dict.keys()))
|
|
4706
4711
|
font_path = font_dict[font]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: simba-uw-tf-dev
|
|
3
|
-
Version: 5.3.
|
|
3
|
+
Version: 5.3.8
|
|
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
|
|
@@ -57,7 +57,7 @@ If you use the code, please cite:
|
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
### Licence
|
|
60
|
-
SimBA is licensed under
|
|
60
|
+
SimBA is licensed under a modified BSD 3-Clause License, permitting use for academic and research purposes only. For commercial licensing inquiries, contact sronilsson@gmail.com.
|
|
61
61
|
|
|
62
62
|
### Contributors
|
|
63
63
|
Contributers on Github https://github.com/sgoldenlab/simba#contributors
|
|
@@ -688,6 +688,7 @@ simba/plotting/circular_feature_overlay_plotter.py
|
|
|
688
688
|
simba/plotting/circular_plotting.py
|
|
689
689
|
simba/plotting/clf_validator.py
|
|
690
690
|
simba/plotting/clf_validator_mp.py
|
|
691
|
+
simba/plotting/compare_bbox_mdls.py
|
|
691
692
|
simba/plotting/cue_light_visualizer.py
|
|
692
693
|
simba/plotting/data_plotter.py
|
|
693
694
|
simba/plotting/directing_animals_to_bodypart_visualizer.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|