simba-uw-tf-dev 5.3.9__tar.gz → 5.4.1__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.9 → simba_uw_tf_dev-5.4.1}/PKG-INFO +1 -1
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/setup.py +1 -1
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/.recent_projects.txt +2 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/freezing_detector.py +5 -0
- simba_uw_tf_dev-5.4.1/simba/data_processors/freezing_detector_v2.py +237 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/mitra_feature_extractor.py +6 -5
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/labelling_interface.py +2 -2
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/standard_labeller.py +50 -18
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/circular_statistics.py +37 -24
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/feature_extraction_mixin.py +4 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/geometry_mixin.py +14 -2
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/timeseries_features_mixin.py +19 -10
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/plot_clf_results_mp.py +8 -8
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/litpose_crop_annotations_bbox_square.py +4 -4
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/data.py +2 -6
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/read_write.py +1 -5
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba_uw_tf_dev.egg-info/PKG-INFO +1 -1
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba_uw_tf_dev.egg-info/SOURCES.txt +1 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.github/workflows/bigquery_download_stats.yml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.github/workflows/cleaning.yml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.github/workflows/issue_msg.yml.disabled +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.github/workflows/issue_report.yml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.github/workflows/tests_py310.yml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.github/workflows/tests_py36.yml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.gitignore +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.pytest.ini +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/.readthedocs.yaml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/App.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/CITATION.cff +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/CODE_OF_CONDUCT.md +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/LICENSE +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/MANIFEST.in +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/README.md +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/requirements.txt +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/requirements_arm.txt +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/requirements_gpu.txt +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/requirements_wsl.txt +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/scripts/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/scripts/caltech_download.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/scripts/create_issues_report.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/scripts/dataverse_download.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/scripts/gitter_stats.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/scripts/make_qr_code.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/scripts/osf_download.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/scripts/upgrade_simba_keep_configs.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/setup.cfg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/SimBA.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/SimBA_logo.ico +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/.env +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/TheGoldenLab.PNG +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/dash_simba_base.css +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/fonts/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/fonts/Playwrite ES Deco.ttf +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/fonts/Poppins Bold.ttf +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/fonts/Poppins Regular.ttf +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/fonts/UbuntuMono-Regular.ttf +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/SimBA_logo.icns +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/SimBA_logo.ico +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/SimBA_logo.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/SimBA_logo_3.ico +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/SimBA_logo_3.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/SimBA_logo_3_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/SimBA_logo_4_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/abacus.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/abacus_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/abacus_3.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/about.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/add.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/add_on.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/analyze_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/analyze_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/api.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/application.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/archive.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/arrow_down_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/arrow_down_green_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/attributes_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/audio.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/average.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/average_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/avi.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/background.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bar_graph_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bar_graph_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bar_graph_light_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/batch.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/black_and_white.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/black_cross.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/blur.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bmp.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bold.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/boolean.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/boris.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/branches_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/brightness.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/browse.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/browse_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/brush_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bubble.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bubble_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bubble_pink.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bullet_grey.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bullseye.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/bw.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/calipher.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/camera.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/category.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/center.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/change.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/check_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/circle.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/circle_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/circle_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/circle_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/circle_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/clahe.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/clean.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/clean_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/clf.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/clf_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/clip.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/clock.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/close.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/cluster.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/cluster_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/coco_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/color_wheel.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/concat.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/concat_icons/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/concat_icons/horizontal.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/concat_icons/mixed_mosaic.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/concat_icons/mosaic.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/concat_icons/vertical.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/concat_videos.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/convert.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/counter.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/cpu_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/create.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/crop.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/crop_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/crop_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/crop_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/crossfade.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/csv_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/csv_grey.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/curve_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/danger.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/dash_simba.css +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/data_table.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/decision_tree_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/decision_tree_purple.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/decision_tree_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/delete_large_orange.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/delete_large_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/dependency.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/details.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/developer.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/dice_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/dimensionality_reduction.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/direction.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/direction_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/direction_3.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/display_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/distance.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/distance_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/dlc_1.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/dlc_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/documentation.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/documentation_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/download.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/draw.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/dumbbell.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/duplicate.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/duplicate_2_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/duplicate_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/duplicate_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/ear_right.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/ear_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/edit.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/edit_roi_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/egocentric.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/equation_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/ethovision.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/exit.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/eye.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/factory.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/fast_forward.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/fast_forward_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/fast_forward_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/fast_forward_large_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/fast_reverse.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/fastforward_green_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/feather_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/features.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/ffmpeg.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/file.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/file_type.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/fill.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/filter.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/finish.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/fire.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/first.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/first_frame_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/first_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/flip_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/flip_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/flip_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/folder.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/folder_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/folder_video.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/font.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/font_size.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/forest.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/forward.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/forward_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/four_squares.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/fps.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/frames.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/frames_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/gamma.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/gantt_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/gantt_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/gif.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/github.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/github_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/gitter.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/gitter_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/gpu.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/gpu_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/gpu_3.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/green_check.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/green_dice.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/grey.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/greyscale.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/half_circle.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/half_circle_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/heatmap.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/height.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/hexagon.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/hexagon_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/hierarchy.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/hierarchy_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/histogram.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/home.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/horizontal.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/id_card.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/id_card_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/image.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/import.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/info.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/info_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/ini.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/interaction_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/interactive_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/invert.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/join_purple.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/join_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/join_yellow.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/jpeg.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/json.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/jump.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/keyboard.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/label.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/label_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/label_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/label_yellow.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/labelme.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/labelme_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/labelme_3.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/last.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/last_frame_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/last_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/leaf.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/left_arrow_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/left_arrow_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/left_ear.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/light_bulb.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/line.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/line_chart_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/line_chart_light_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/line_chart_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/link.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/list.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/load.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/load_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/load_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/location.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/log.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/magnifying.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/mars.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/mean.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/median.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/merge.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/metrics.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/metrics_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/metrics_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/minus.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/minus_blue_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/minus_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/minus_red_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/mixing_panel.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/monitor.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/mouse_head.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/mouse_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/mov.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/move.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/move_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/mp4.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/multiple_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/multiple_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/multiple_yellow.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/navigation.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/nose.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/number_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/obb.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/one.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/one_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/one_to_many.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/opacity.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/options_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/original_size.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/osf.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/osf_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/outlier.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/outside.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/outside_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/overlap_iou.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/paint.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/palette_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/palette_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/parquet.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/path.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/path_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/pct.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/pct_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/pdf_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/permutation_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/photos.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/play.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/play_large_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/plot.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/plus.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/plus_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/plus_green_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/plus_green_3.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/png.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/point.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/point_right_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/pointing_left_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/polygon.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/polygon_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/polygon_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/pose.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/pose_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/print.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/probability.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/progressbar_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/python.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/question_mark.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/range_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/readthedocs_logo.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/recent_files.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rectangle.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rectangle_1_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rectangle_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rectangle_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rectangle_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/remove_bg.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/reorganize.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/resize.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/restart.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/reverse.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/reverse_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/reverse_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/reverse_large_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rewind.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rewind_blue_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rewind_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rewind_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/right_arrow_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/right_arrow_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rocket.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/roi.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/roi_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rotate.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/rounding.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/ruler.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/ruler_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/run.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/sample.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/save.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/save_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/save_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/save_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/save_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/scale_1.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/scale_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/scale_3.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/search.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/segment.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/seperate_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/settings.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/shade.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/shap.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/shap_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/shapes_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/shapes_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/shapes_small_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/sigma.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/simba_logo_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/single_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/single_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/single_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/size_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/skip.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/skip_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/skip_forward_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/skip_previous_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/sleap_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/smooth.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/speedometer.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/split.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/split_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/spread.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/square_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/stack.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/star.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/stop.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/stopwatch.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/stream.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/style.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/subset_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/superimpose.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/svg.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/system.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/t.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/table.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/table_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/text.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/text_bg.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/text_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/text_color.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/text_color_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/text_spacing.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/threshold.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/tick.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/tick_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/tiff.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/tile_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/time.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/timer.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/timer_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/trash.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/trash_red.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/triangle_black.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/triangle_small.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/tv_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/two.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/ultralytics_1.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/ultralytics_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/verbose.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/vertical.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/video.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/video_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/video_file_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/video_large.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/visualize.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/visualize_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/visualize_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/walk.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/wand_blue.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/warning.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/watermark_green.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/webm.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/webp.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/weight.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/weights.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/width.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/x.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/y.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/zero.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/zoom_in.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/icons/zoom_out.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/about_me.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/bg.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/bg_2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/bg_2024.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/landing.mp4 +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/simon_n.webp +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/splash.mp4 +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/splash.pptx +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/splash_2024.mp4 +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/img/~$splash.pptx +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/critical_values_05.pickle +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/feature_extraction_headers.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/features.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/model_names.parquet +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/tooptips.json +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/unsupervised_example_x.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/yolo.yaml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/yolo_schematics/tappelby.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/yolo_schematics/yolo_7bps.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/lookups/yolo_schematics/yolo_mitra.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/ppyoloe_plus_crn_s_80e_coco.yml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/UbuntuMono-Regular.ttf +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/animal_distances.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/baseline_scale.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/color_bar.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/down_arrow.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/feature_categories/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/feature_categories/shap_feature_categories.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/intruder_movement.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/intruder_shape.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/resident_intruder_movement.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/resident_intruder_shape.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/resident_movement.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/resident_shape.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/side_scale.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/side_scale_5.jpg +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/shap/ubuntu.regular.ttf +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/stl/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/stl/grid_floor.stl +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/stl/operant_lever.stl +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/stl/operant_tray.stl +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/stl/operant_walls.stl +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/tracker_yml/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/tracker_yml/botsort.yml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/tracker_yml/bytetrack.yml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/tracker_yml/tow_bytetrack.yaml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/unsupervised/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/unsupervised/features.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/assets/unsupervised/model_names.parquet +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/bounding_box_tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/bounding_box_tools/agg_boundary_stats.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/bounding_box_tools/boundary_menus.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/bounding_box_tools/boundary_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/bounding_box_tools/find_boundaries.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/bounding_box_tools/visualize_boundaries.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/bounding_box_tools/yolo/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/cue_light_tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/cue_light_tools/cue_light_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/cue_light_tools/cue_light_clf_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/cue_light_tools/cue_light_main_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/cue_light_tools/cue_light_movement_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/cue_light_tools/cue_light_tools.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/cue_light_tools/cue_light_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/dash_app/SimBA_dash_app.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/dash_app/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/dash_app/dash_app.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/dash_app/run_dash_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/advanced_interpolator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/advanced_smoothing.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/agg_clf_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/agg_clf_counter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/blob_location_computer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/boolean_conditional_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/circling_detector.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cuda/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cuda/circular_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cuda/create_shap_log.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cuda/data.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cuda/geometry.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cuda/image.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cuda/statistics.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cuda/timeseries.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cuda/utils.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cue_light_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cue_light_clf_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/cue_light_movement_statistics.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/directing_animal_to_bodypart.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/directing_other_animals_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/distance_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/distance_timbin_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/egocentric_aligner.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/find_animal_blob_location.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/fsttc_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/gibbs_sampler.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/interpolate.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/interpolate_pose.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/interpolation_smoothing.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/kleinberg_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/light_dark_box_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/movement_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/mutual_exclusivity_corrector.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/pup_retrieval_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/pybursts_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/pybursts_calculator_numba.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/severity_bout_based_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/severity_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/severity_frame_based_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/smoothing.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/spontaneous_alternation_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/timebins_clf_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/timebins_movement_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/timebins_movement_calculator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/data_processors/yolo_track_cleaner.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/aggression_feature_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/amber_feature_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/boundary_rearing_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/cave_fish_featurizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/feature_extractor_14bp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/feature_extractor_16bp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/feature_extractor_4bp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/feature_extractor_7bp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/feature_extractor_8bp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/feature_extractor_8bps_2_animals.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/feature_extractor_9bp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/feature_extractor_user_defined.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/feature_subsets.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/gerbil_featurizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/add_probability_cnt_features.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/convex_hull_3_scratch_3.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/convex_hull_scratch_1.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/convex_hull_scratch_2.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/count_values_in_range.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/doctests.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/egocentrical_aligner.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/fish_feature_extractor_2022.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_2.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_3.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_4.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_5.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/graph_3d_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/graph_creator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/make_splash.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/mutual_exclusive.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/peaks.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/read_in_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/termite_rois.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/time_stamp_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/video_color.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/video_rotator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/misc/video_rotator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/perimeter_jit.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/rat_social_featurizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/riptortus_featurizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/straub_tail_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/wingwave_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/extract_labelled_frames.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/extract_labelling_meta.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/labelling_advanced_interface.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/mitra_style_appender.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/play_annotation_video.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/single_clf_appender_excel.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/labelling/targeted_annotations_clips.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/abstract_classes.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/annotator_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/config_reader.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/feature_extraction_supplement_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/image_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/network_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/plotting_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/pop_up_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/pose_importer_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/statistics_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/train_model_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/mixins/unsupervised_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/grid_search_multiclass_rf.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/grid_search_rf.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/inference_batch.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/inference_multi_animal_batch.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/inference_multiclass_batch.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/inference_validation.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/ordinal_clf.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/regression/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/regression/metrics.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/regression/model.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/sam_inference.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/train_multiclass_rf.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/train_multilabel_rf.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/train_rf.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/yolo_fit.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/yolo_inference.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/yolo_nvdec_inference.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/yolo_pose_inference.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/yolo_pose_track_inference.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/model/yolo_seg_inference.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/outlier_tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/outlier_tools/outlier_corrector_location.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/outlier_tools/outlier_corrector_location_advanced.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/outlier_tools/outlier_corrector_location_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/outlier_tools/outlier_corrector_movement.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/outlier_tools/outlier_corrector_movement_advanced.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/outlier_tools/outlier_corrector_movement_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/outlier_tools/skip_outlier_correction.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/EzPathPlot.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/ROI_feature_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/ROI_feature_visualizer_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/annotation_videos.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/blob_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/blob_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/circular_feature_overlay_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/circular_plotting.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/clf_validator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/clf_validator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/compare_bbox_mdls.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/cue_light_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/data_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/directing_animals_to_bodypart_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/directing_animals_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/directing_animals_visualizer_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/distance_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/distance_plotter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/ez_path_plot.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/frame_mergerer_ffmpeg.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/gantt_creator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/gantt_creator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/gantt_plotly.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/geometry_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/heat_mapper_clf.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/heat_mapper_clf_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/heat_mapper_location.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/heat_mapper_location_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/interactive_probability_grapher.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/light_dark_box_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/path_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/path_plotter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/plot_clf_results.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/pose_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/pose_plotter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/probability_plot_creator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/probability_plot_creator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/roi_directing_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/roi_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/roi_plotter_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/sam_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/shap_agg_stats_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/single_run_model_validation_video.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/single_run_model_validation_video_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/skeleton_video_creator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/spontaneous_alternation_plotter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/tools/tkinter_tools.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/yolo_annotation_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/yolo_pose_track_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/yolo_pose_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/yolo_seg_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/plotting/yolo_visualize.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/bp_names/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/bp_names/bp_names.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/configuration_names/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/configuration_names/pose_config_names.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/no_animals/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/no_animals/no_animals.csv +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/1.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/10.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/11.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/12.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/13.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/14.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/15.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/16.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/2.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/3.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/4.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/5.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/6.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/7.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/8.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_configurations/schematics/9.png +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/dlc_importer_csv.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/facemap_h5_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/import_mars.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/madlc_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/misc/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/misc/apt_trk_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/read_DANNCE_mat.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/simba_blob_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/simba_yolo_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/sleap_csv_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/sleap_h5_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/sleap_slp_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/superanimal_import.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_importers/trk_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_processors/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_processors/pose_reset.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_processors/remove_keypoints.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_processors/reorganize_keypoint.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/pose_processors/reverse_pose.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/requirements.txt +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/ROI_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/ROI_directing_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/ROI_feature_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/ROI_size_standardizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/ROI_time_bin_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/import_roi_csvs.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/interactive_modifier_ui.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/interactive_roi_bufferer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/interactive_roi_modifier_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_aggregate_statistics_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_aggregate_stats_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_clf_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_clf_calculator_mp.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_ruler.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_selector_circle_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_selector_polygon_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_selector_rectangle_tkinter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_time_bins_analyzer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_ui.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_ui_mixin.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/roi_tools/roi_utils.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/BENTO_appender.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/BORIS_appender.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/boris_source_cleaner.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/converters.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/deepethogram_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/ethovision_import.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/observer_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/shah_appender.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/solomon_importer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/third_party_appender.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/tools.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/coco_keypoints_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/coco_keypoints_to_yolo_bbox.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/coco_keypoints_to_yolo_seg.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/dlc_ma_h5_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/dlc_multi_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/dlc_single_to_multi_format_converter.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/dlc_to_labelme.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/dlc_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/labelme_to_df.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/labelme_to_dlc.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/labelme_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/labelme_to_yolo_keypoints.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/labelme_to_yolo_seg.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/litpose_crop_annotations.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/litpose_merge_projects.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/litpose_to_yolo_bbox.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/litpose_to_yolo_keypoints.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/merge_yolo_projects.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/sam3_to_yolo_bbox.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/sam3_to_yolo_seg.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/simba_roi_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/simba_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/simba_to_yolo_seg.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/sleap_csv_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/sleap_h5_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/sleap_to_yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/utils.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/yolo_labels_to_yolo_project.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/third_party_label_appenders/transform/yolo_to_imgs.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/blob_quick_check_interface.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/blob_tracker_ui.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/create_project_ui.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/get_tree_view.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/import_pose_frame.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/import_videos_frame.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/machine_model_settings_ui.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/ml_settings_frm.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/about_simba_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/animal_directing_other_animals_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/animal_directing_roi_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/annotated_bouts_videos_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/append_roi_features_animals_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/append_roi_features_bodypart_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/archive_files_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/batch_preprocess_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/blob_visualizer_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/boolean_conditional_slicer_pup_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/change_speed_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/check_videos_seekable_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/clf_add_remove_print_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/clf_annotation_counts_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/clf_by_roi_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/clf_by_timebins_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/clf_descriptive_statistics_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/clf_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/clf_probability_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/clf_validation_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/coco_keypoints_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/create_user_defined_pose_configuration_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/csv_2_parquet_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/cue_light_clf_analyzer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/cue_light_data_analyzer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/cue_light_main_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/cue_light_movement_analyzer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/cue_light_visualizer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/data_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/delete_all_rois_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/directing_animal_to_bodypart_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/directing_other_animals_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/direction_animal_to_bodypart_settings_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/distance_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/distance_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/distance_timebins_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/dlc_annotations_to_labelme_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/dlc_h5_inference_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/dlc_to_labelme_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/dlc_to_yolo_keypoints_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/duplicate_rois_by_source_target_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/egocentric_alignment_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/extract_annotation_frames_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/ez_path_plot_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/fsttc_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/gantt_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/heatmap_clf_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/heatmap_location_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/helpers.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/import_roi_csv_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/initialize_blob_tracking_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/interpolate_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/kleinberg_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/labelme_bbox_to_yolo_bbox_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/labelme_dir_to_csv_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/labelme_to_df_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/labelme_to_imgs_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/make_path_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/merge_coco_keypoint_files_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/min_max_draw_size_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/movement_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/movement_analysis_time_bins_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/multiple_videos_to_frames_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/mutual_exclusivity_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/outlier_settings_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/path_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/pose_bp_drop_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/pose_reorganizer_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/print_video_meta_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/pup_retrieval_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/quick_path_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/remove_roi_features_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/roi_aggregate_stats_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/roi_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/roi_analysis_time_bins_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/roi_directing_visualizer_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/roi_features_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/roi_size_standardizer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/roi_tracking_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/roi_video_table_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/run_machine_models_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/select_video_for_labelling_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/select_video_for_pseudo_labelling_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/severity_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/simba_rois_to_yolo_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/simba_to_yolo_keypoints_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/single_video_to_frames_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/sleap_annotations_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/sleap_csv_predictions_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/sleap_h5_inference_to_yolo_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/smoothing_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/splash_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/spontaneous_alternation_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/subset_feature_extractor_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/targeted_annotation_clips_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/third_party_annotator_appender_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/validation_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/video_processing_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/visualize_pose_in_dir_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/yolo_inference_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/yolo_plot_results.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/pop_ups/yolo_pose_train_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/px_to_mm_ui.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/tkinter_functions.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/user_defined_pose_creator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/utils.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/video_info_ui.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/ui/video_timelaps.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/bout_aggregator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/cluster_frequentist_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/cluster_validation_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/cluster_video_visualizer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/cluster_xai_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/clusterer_comparison_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/data_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/data_map.yaml +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/dataset_creator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/dbcv_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/embedding_correlation_calculator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/enums.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/grid_search_visualizers.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/hdbscan_clusterer.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/outlier_detector.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/cluster_frequentist_stats_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/cluster_validation_pop_up.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/cluster_videos_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/cluster_xai_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/clusterer_comparison_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/data_extractor_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/embedding_correlations_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/fit_cluster_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/fit_dim_reduction_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/grid_search_visualizer_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/print_embedding_info_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/transform_cluster_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/pop_ups/transform_dim_reduction_popup.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/tsne.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/umap_embedder.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/unsupervised/unsupervised_main.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/checks.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/cli/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/cli/cli_tools.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/config_creator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/custom_feature_extractor.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/enums.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/errors.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/lookups.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/printing.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/warnings.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/utils/yolo.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/.DS_Store +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/__init__.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/async_frame_reader.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/async_frame_reader_gpu.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/batch_process_create_ffmpeg_commands.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/batch_process_menus.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/blob_tracking_executor.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/brightness_contrast_ui.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/calculate_px_dist.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/clahe_ui.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/egocentric_video_rotator.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/extract_frames.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/extract_seqframes.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/multi_cropper.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/roi_selector.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/roi_selector_circle.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/roi_selector_polygon.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/video_processing.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/video_processors/videos_to_frames.py +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba_uw_tf_dev.egg-info/dependency_links.txt +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba_uw_tf_dev.egg-info/entry_points.txt +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba_uw_tf_dev.egg-info/requires.txt +0 -0
- {simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/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
|
+
Version: 5.4.1
|
|
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
|
|
@@ -30,7 +30,7 @@ with open(GPU_REQUIREMENTS_PATH, "r") as f:
|
|
|
30
30
|
# Setup configuration
|
|
31
31
|
setuptools.setup(
|
|
32
32
|
name="simba_uw_tf_dev",
|
|
33
|
-
version="5.
|
|
33
|
+
version="5.4.1",
|
|
34
34
|
author="Simon Nilsson, Jia Jie Choong, Sophia Hwang",
|
|
35
35
|
author_email="sronilsson@gmail.com",
|
|
36
36
|
description="Toolkit for computer classification and analysis of behaviors in experimental animals",
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
G:/projects/sleap_bp_order/by_order/project_folder/project_config.ini
|
|
2
|
+
H:/projects/brainwide_trap/brainwide_trap/project_folder/project_config.ini
|
|
1
3
|
D:/troubleshooting/open_field_below/project_folder/project_config.ini
|
|
2
4
|
G:/projects/jason_zhang/jason_project/project_folder/project_config.ini
|
|
3
5
|
G:/projects/edmayelle/superanimal_multianimal_project/project_folder/project_config.ini
|
|
@@ -28,6 +28,11 @@ class FreezingDetector(ConfigReader):
|
|
|
28
28
|
of key body parts (nape, nose, and tail-base) and identifying periods where movement falls below
|
|
29
29
|
a specified threshold for a minimum duration.
|
|
30
30
|
|
|
31
|
+
.. seealso::
|
|
32
|
+
:class:`~simba.data_processors.freezing_detector_v2.FreezingDetector` - revised version, adding an explicit
|
|
33
|
+
FREEZING / IMMOBILITY split and millisecond-based duration parameters (``min_freezing_ms``, ``clean_ms``,
|
|
34
|
+
``min_immobility_ms``).
|
|
35
|
+
|
|
31
36
|
|
|
32
37
|
.. video:: _static/img/FreezingDetector.webm
|
|
33
38
|
:width: 1000
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from typing import Optional, Union
|
|
3
|
+
|
|
4
|
+
import numpy as np
|
|
5
|
+
import pandas as pd
|
|
6
|
+
from numba import typed
|
|
7
|
+
|
|
8
|
+
from simba.mixins.config_reader import ConfigReader
|
|
9
|
+
from simba.mixins.feature_extraction_mixin import FeatureExtractionMixin
|
|
10
|
+
from simba.mixins.timeseries_features_mixin import TimeseriesFeatureMixin
|
|
11
|
+
from simba.utils.checks import (
|
|
12
|
+
check_all_file_names_are_represented_in_video_log, check_if_dir_exists,
|
|
13
|
+
check_int, check_str, check_valid_dataframe)
|
|
14
|
+
from simba.utils.data import detect_bouts, plug_holes_shortest_bout
|
|
15
|
+
from simba.utils.enums import Formats
|
|
16
|
+
from simba.utils.errors import InvalidInputError
|
|
17
|
+
from simba.utils.printing import stdout_success
|
|
18
|
+
from simba.utils.read_write import (find_files_of_filetypes_in_directory,
|
|
19
|
+
get_current_time, get_fn_ext, read_df,
|
|
20
|
+
read_video_info)
|
|
21
|
+
|
|
22
|
+
NAPE_X, NAPE_Y = 'nape_x', 'nape_y'
|
|
23
|
+
FREEZING = 'FREEZING'
|
|
24
|
+
IMMOBILITY = 'IMMOBILITY'
|
|
25
|
+
|
|
26
|
+
class FreezingDetector(ConfigReader):
|
|
27
|
+
"""
|
|
28
|
+
Detect freezing behavior using heuristic rules based on movement velocity thresholds.
|
|
29
|
+
Analyzes pose-estimation data to detect freezing episodes by computing the mean velocity
|
|
30
|
+
of key body parts (nape, nose, and tail-base) and identifying periods where movement falls below
|
|
31
|
+
a specified threshold for a minimum duration.
|
|
32
|
+
|
|
33
|
+
.. seealso::
|
|
34
|
+
:class:`~simba.data_processors.freezing_detector.FreezingDetector` - the original version, with
|
|
35
|
+
``time_window`` / ``shortest_bout`` parameters and freezing-only output.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
.. video:: _static/img/FreezingDetector.webm
|
|
39
|
+
:width: 1000
|
|
40
|
+
:autoplay:
|
|
41
|
+
:loop:
|
|
42
|
+
:muted:
|
|
43
|
+
:align: center
|
|
44
|
+
|
|
45
|
+
.. video:: _static/img/FreezingDetector_2.webm
|
|
46
|
+
:width: 1000
|
|
47
|
+
:autoplay:
|
|
48
|
+
:loop:
|
|
49
|
+
:muted:
|
|
50
|
+
:align: center
|
|
51
|
+
|
|
52
|
+
.. image:: _static/img/FreezingDetector_pipeline.png
|
|
53
|
+
:width: 1000
|
|
54
|
+
:align: center
|
|
55
|
+
|
|
56
|
+
.. note::
|
|
57
|
+
The method uses the left and right ear body-parts to compute the `nape` location of the animal
|
|
58
|
+
as the midpoint between the ears. The nape, nose, and tail-base movements are averaged to compute
|
|
59
|
+
overall animal movement velocity.
|
|
60
|
+
|
|
61
|
+
:param Union[str, os.PathLike] data_dir: Path to directory containing pose-estimated body-part data in CSV format. Each CSV file should contain pose estimation data for one video.
|
|
62
|
+
:param Union[str, os.PathLike] config_path: Path to SimBA project config file (`.ini` format) containing project settings and video information.
|
|
63
|
+
:param Optional[str] nose_name: The name of the pose-estimated nose body-part column (without _x/_y suffix). Defaults to 'nose'.
|
|
64
|
+
:param Optional[str] left_ear_name: The name of the pose-estimated left ear body-part column (without _x/_y suffix). Defaults to 'Left_ear'.
|
|
65
|
+
:param Optional[str] right_ear_name: The name of the pose-estimated right ear body-part column (without _x/_y suffix). Defaults to 'right_ear'.
|
|
66
|
+
:param Optional[str] tail_base_name: The name of the pose-estimated tail base body-part column (without _x/_y suffix). Defaults to 'tail_base'.
|
|
67
|
+
:param Optional[int] min_freezing_ms: Minimum duration in milliseconds of sustained low movement to be scored as freezing. Shorter bouts are ignored. This is the lower edge of the freezing band. Defaults to 2000.
|
|
68
|
+
:param Optional[int] movement_threshold: Movement threshold in millimeters per second. Frames with mean velocity below this threshold are considered potential freezing. Higher and more freezing will be detected. Lower and less freezing will be detected. Defaults to 5.
|
|
69
|
+
:param Optional[int] clean_ms: De-noising window in milliseconds. Brief sub-threshold movement interruptions shorter than this are bridged (so jitter does not split one freeze into two), and stray bouts shorter than this are dropped, before the duration tests. Keep small relative to ``min_freezing_ms``. Defaults to 100.
|
|
70
|
+
:param Optional[int] min_immobility_ms: Minimum duration in milliseconds at which sustained freezing is instead scored as immobility. Bouts at least this long are flagged in an `IMMOBILITY` column (1 = immobility, 0 = not) and removed from `FREEZING` (the two are mutually exclusive), with extra aggregate statistics; bouts between ``min_freezing_ms`` and this remain freezing. Must be greater than or equal to ``min_freezing_ms`` (when equal, there is no freezing band and every sustained bout is immobility). If None, no immobility is computed and every bout at least ``min_freezing_ms`` long is freezing. Defaults to None.
|
|
71
|
+
:param Optional[Union[str, os.PathLike]] save_dir: Directory where to store the results. If None, then results are stored in a timestamped subdirectory within the ``logs`` directory of the SimBA project.
|
|
72
|
+
:returns: None. Results are saved to CSV files in the specified save directory:
|
|
73
|
+
- Individual video results: One CSV file per video with freezing annotations added as a 'FREEZING' column (1 = freezing, 0 = not freezing)
|
|
74
|
+
- Aggregate results: `aggregate_freezing_results.csv` containing summary statistics for all videos
|
|
75
|
+
|
|
76
|
+
:example:
|
|
77
|
+
>>> x = FreezingDetector(data_dir=r'D:\\troubleshooting\\mitra\\project_folder\\csv\\outlier_corrected_movement_location', config_path=r"D:\\troubleshooting\\mitra\\project_folder\\project_config.ini", min_freezing_ms=1500, movement_threshold=5, min_immobility_ms=2000)
|
|
78
|
+
>>> x.run()
|
|
79
|
+
|
|
80
|
+
references
|
|
81
|
+
----------
|
|
82
|
+
..
|
|
83
|
+
.. [1] Sabnis et al., Visual detection of seizures in mice using supervised machine learning, `biorxiv`, doi: https://doi.org/10.1101/2024.05.29.596520.
|
|
84
|
+
.. [2] Lopez et al., Region-specific Nucleus Accumbens Dopamine Signals Encode Distinct Aspects of Avoidance Learning, `biorxiv`, doi: https://doi.org/10.1101/2024.08.28.610149
|
|
85
|
+
.. [3] Lopez, Gabriela C., Louis D. Van Camp, Ryan F. Kovaleski, et al. "Region-Specific Nucleus Accumbens Dopamine Signals Encode Distinct Aspects of Avoidance Learning." `Cell Biology`, Volume 35, Issue 10p2433-2443.e5May 19, 2025. DOI: 10.1016/j.cub.2025.04.006
|
|
86
|
+
.. [4] Lazaro et al., Brainwide Genetic Capture for Conscious State Transitions, `biorxiv`, doi: https://doi.org/10.1101/2025.03.28.646066
|
|
87
|
+
.. [5] Sabnis et al., Visual detection of seizures in mice using supervised machine learning, 2025, Cell Reports Methods 5, 101242 December 15, 2025.
|
|
88
|
+
"""
|
|
89
|
+
|
|
90
|
+
def __init__(self,
|
|
91
|
+
config_path: Union[str, os.PathLike],
|
|
92
|
+
nose_name: str = 'nose',
|
|
93
|
+
left_ear_name: str = 'left_ear',
|
|
94
|
+
right_ear_name: str = 'right_ear',
|
|
95
|
+
tail_base_name: str = 'tail_base',
|
|
96
|
+
data_dir: Optional[Union[str, os.PathLike]] = None,
|
|
97
|
+
min_freezing_ms: int = 2000,
|
|
98
|
+
movement_threshold: int = 5,
|
|
99
|
+
clean_ms: int = 100,
|
|
100
|
+
min_immobility_ms: Optional[int] = None,
|
|
101
|
+
save_dir: Optional[Union[str, os.PathLike]] = None):
|
|
102
|
+
|
|
103
|
+
for bp_name in [nose_name, left_ear_name, right_ear_name, tail_base_name]: check_str(name='body part name', value=bp_name, allow_blank=False)
|
|
104
|
+
ConfigReader.__init__(self, config_path=config_path, read_video_info=True, create_logger=False)
|
|
105
|
+
if data_dir is not None:
|
|
106
|
+
check_if_dir_exists(in_dir=data_dir)
|
|
107
|
+
else:
|
|
108
|
+
data_dir = self.outlier_corrected_dir
|
|
109
|
+
self.data_paths = find_files_of_filetypes_in_directory(directory=data_dir, extensions=['.csv'])
|
|
110
|
+
self.nose_heads = [f'{nose_name}_x'.lower(), f'{nose_name}_y'.lower()]
|
|
111
|
+
self.left_ear_heads = [f'{left_ear_name}_x'.lower(), f'{left_ear_name}_y'.lower()]
|
|
112
|
+
self.right_ear_heads = [f'{right_ear_name}_x'.lower(), f'{right_ear_name}_y'.lower()]
|
|
113
|
+
self.tail_base_heads = [f'{tail_base_name}_x'.lower(), f'{tail_base_name}_y'.lower()]
|
|
114
|
+
self.required_field = self.nose_heads + self.left_ear_heads + self.right_ear_heads + self.tail_base_heads
|
|
115
|
+
check_int(name='min_freezing_ms', value=min_freezing_ms, min_value=1)
|
|
116
|
+
check_int(name='movement_threshold', value=movement_threshold, min_value=1)
|
|
117
|
+
check_int(name='clean_ms', value=clean_ms, min_value=1)
|
|
118
|
+
if min_immobility_ms is not None:
|
|
119
|
+
check_int(name='min_immobility_ms', value=min_immobility_ms, min_value=1)
|
|
120
|
+
if int(min_immobility_ms) < int(min_freezing_ms):
|
|
121
|
+
raise InvalidInputError(msg=f'min_immobility_ms ({min_immobility_ms} ms) must be greater than or equal to min_freezing_ms ({min_freezing_ms} ms). At equal values there is no freezing band and every sustained bout is immobility.', source=self.__class__.__name__)
|
|
122
|
+
self.min_immobility_ms = min_immobility_ms
|
|
123
|
+
self.save_dir = save_dir
|
|
124
|
+
if self.save_dir is None:
|
|
125
|
+
self.save_dir = os.path.join(self.logs_path, f'freezing_data_minfreeze_{min_freezing_ms}ms_{movement_threshold}mm_{self.datetime}')
|
|
126
|
+
os.makedirs(self.save_dir)
|
|
127
|
+
else:
|
|
128
|
+
check_if_dir_exists(in_dir=self.save_dir)
|
|
129
|
+
self.min_freezing_ms, self.movement_threshold, self.clean_ms = min_freezing_ms, movement_threshold, clean_ms
|
|
130
|
+
def run(self):
|
|
131
|
+
freezing_cols = ['VIDEO', 'FREEZING FRAMES', 'FREEZING TIME (S)', 'FREEZING BOUT COUNTS', 'FREEZING PCT OF SESSION']
|
|
132
|
+
immobility_cols = ['IMMOBILITY FRAMES', 'IMMOBILITY TIME (S)', 'IMMOBILITY BOUT COUNTS', 'IMMOBILITY PCT OF SESSION'] if self.min_immobility_ms is not None else []
|
|
133
|
+
video_cols = ['VIDEO TOTAL FRAMES', 'VIDEO TOTAL TIME (S)']
|
|
134
|
+
agg_results = pd.DataFrame(columns=freezing_cols + immobility_cols + video_cols)
|
|
135
|
+
agg_results_path = os.path.join(self.save_dir, f'aggregate_freezing_results_{self.datetime}.csv')
|
|
136
|
+
check_all_file_names_are_represented_in_video_log(video_info_df=self.video_info_df, data_paths=self.data_paths)
|
|
137
|
+
for file_cnt, file_path in enumerate(self.data_paths):
|
|
138
|
+
video_name = get_fn_ext(filepath=file_path)[1]
|
|
139
|
+
print(f'[{get_current_time()}] Analyzing freezing {video_name}...(video {file_cnt+1}/{len(self.data_paths)})')
|
|
140
|
+
save_file_path = os.path.join(self.save_dir, f'{video_name}.csv')
|
|
141
|
+
df = read_df(file_path=file_path, file_type='csv').reset_index(drop=True)
|
|
142
|
+
_, px_per_mm, fps = read_video_info(vid_info_df=self.video_info_df, video_name=video_name)
|
|
143
|
+
df.columns = [str(x).lower() for x in df.columns]
|
|
144
|
+
check_valid_dataframe(df=df, valid_dtypes=Formats.NUMERIC_DTYPES.value, required_fields=self.required_field)
|
|
145
|
+
nose_shifted = FeatureExtractionMixin.create_shifted_df(df[self.nose_heads])
|
|
146
|
+
nose_1, nose_2 = nose_shifted.iloc[:, 0:2].values, nose_shifted.iloc[:, 2:4].values
|
|
147
|
+
nose_movement = FeatureExtractionMixin.euclidean_distance(bp_1_x=nose_1[:, 0].flatten(), bp_2_x=nose_2[:, 0].flatten(), bp_1_y=nose_1[:, 1].flatten(), bp_2_y=nose_2[:, 1].flatten(), px_per_mm=px_per_mm)
|
|
148
|
+
tail_base_shifted = FeatureExtractionMixin.create_shifted_df(df[self.tail_base_heads])
|
|
149
|
+
tail_base_shifted_1, tail_base_shifted_2 = tail_base_shifted.iloc[:, 0:2].values, tail_base_shifted.iloc[:, 2:4].values
|
|
150
|
+
tail_base_movement = FeatureExtractionMixin.euclidean_distance(bp_1_x=tail_base_shifted_1[:, 0].flatten(), bp_2_x=tail_base_shifted_2[:, 0].flatten(), bp_1_y=tail_base_shifted_1[:, 1].flatten(), bp_2_y=tail_base_shifted_2[:, 1].flatten(), px_per_mm=px_per_mm)
|
|
151
|
+
left_ear_arr = df[self.left_ear_heads].values.astype(np.int64)
|
|
152
|
+
right_ear_arr = df[self.right_ear_heads].values.astype(np.int64)
|
|
153
|
+
nape_arr = pd.DataFrame(FeatureExtractionMixin.find_midpoints(bp_1=left_ear_arr, bp_2=right_ear_arr, percentile=np.float64(0.5)), columns=[NAPE_X, NAPE_Y])
|
|
154
|
+
nape_shifted = FeatureExtractionMixin.create_shifted_df(nape_arr[[NAPE_X, NAPE_Y]])
|
|
155
|
+
nape_shifted_1, nape_shifted_2 = nape_shifted.iloc[:, 0:2].values, nape_shifted.iloc[:, 2:4].values
|
|
156
|
+
nape_movement = FeatureExtractionMixin.euclidean_distance(bp_1_x=nape_shifted_1[:, 0].flatten(), bp_2_x=nape_shifted_2[:, 0].flatten(), bp_1_y=nape_shifted_1[:, 1].flatten(), bp_2_y=nape_shifted_2[:, 1].flatten(), px_per_mm=px_per_mm)
|
|
157
|
+
movement = np.hstack([nose_movement.reshape(-1, 1), nape_movement.reshape(-1, 1), tail_base_movement.reshape(-1, 1)])
|
|
158
|
+
mean_movement = np.mean(movement, axis=1)
|
|
159
|
+
mm_s = TimeseriesFeatureMixin.sliding_descriptive_statistics(data=mean_movement.astype(np.float32), window_sizes=np.array([1], dtype=np.float64), sample_rate=int(fps), statistics=typed.List(["sum"]))[0].flatten()
|
|
160
|
+
freezing_idx = np.argwhere((mm_s >= 0) & (mm_s <= self.movement_threshold)).astype(np.int32).flatten()
|
|
161
|
+
df[f'Probability_{FREEZING}'] = 0
|
|
162
|
+
df[FREEZING] = 0
|
|
163
|
+
df.loc[freezing_idx, FREEZING] = 1
|
|
164
|
+
df = plug_holes_shortest_bout(data_df=df, clf_name=FREEZING, fps=fps, shortest_bout=self.clean_ms)
|
|
165
|
+
bouts = detect_bouts(data_df=df, target_lst=[FREEZING], fps=fps)
|
|
166
|
+
bouts = bouts[bouts['Bout_time'] >= (self.min_freezing_ms / 1000)]
|
|
167
|
+
if self.min_immobility_ms is not None:
|
|
168
|
+
immobility_bouts = bouts[bouts['Bout_time'] >= (self.min_immobility_ms / 1000)]
|
|
169
|
+
bouts = bouts[bouts['Bout_time'] < (self.min_immobility_ms / 1000)]
|
|
170
|
+
if len(bouts) > 0:
|
|
171
|
+
df[FREEZING] = 0
|
|
172
|
+
freezing_idx = list(bouts.apply(lambda x: list(range(int(x["Start_frame"]), int(x["End_frame"]) + 1)), 1))
|
|
173
|
+
freezing_idx = [x for xs in freezing_idx for x in xs]
|
|
174
|
+
df.loc[freezing_idx, FREEZING] = 1
|
|
175
|
+
df.loc[freezing_idx, f'Probability_{FREEZING}'] = 1
|
|
176
|
+
else:
|
|
177
|
+
df[FREEZING] = 0
|
|
178
|
+
freezing_idx = []
|
|
179
|
+
if self.min_immobility_ms is not None:
|
|
180
|
+
df[f'Probability_{IMMOBILITY}'] = 0
|
|
181
|
+
df[IMMOBILITY] = 0
|
|
182
|
+
if len(immobility_bouts) > 0:
|
|
183
|
+
immobility_idx = list(immobility_bouts.apply(lambda x: list(range(int(x["Start_frame"]), int(x["End_frame"]) + 1)), 1))
|
|
184
|
+
immobility_idx = [x for xs in immobility_idx for x in xs]
|
|
185
|
+
df.loc[immobility_idx, IMMOBILITY] = 1
|
|
186
|
+
df.loc[immobility_idx, f'Probability_{IMMOBILITY}'] = 1
|
|
187
|
+
else:
|
|
188
|
+
immobility_idx = []
|
|
189
|
+
df.to_csv(save_file_path)
|
|
190
|
+
agg_row = [video_name, len(freezing_idx), round(len(freezing_idx) / fps, 4), len(bouts), round((len(freezing_idx) / len(df)) * 100, 4)]
|
|
191
|
+
if self.min_immobility_ms is not None:
|
|
192
|
+
agg_row += [len(immobility_idx), round(len(immobility_idx) / fps, 4), len(immobility_bouts), round((len(immobility_idx) / len(df)) * 100, 4)]
|
|
193
|
+
agg_row += [len(df), round(len(df)/fps, 2)]
|
|
194
|
+
agg_results.loc[len(agg_results)] = agg_row
|
|
195
|
+
agg_results.to_csv(agg_results_path)
|
|
196
|
+
self.timer.stop_timer(); stdout_success(msg=f'Results saved in {self.save_dir} directory.', elapsed_time=self.timer.elapsed_time_str)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
# FreezingDetector(
|
|
201
|
+
# data_dir=r'H:\projects\brainwide_trap\brainwide_trap\project_folder\csv\outlier_corrected_movement_location',
|
|
202
|
+
# config_path=r"H:\projects\brainwide_trap\brainwide_trap\project_folder\project_config.ini",
|
|
203
|
+
# movement_threshold=3,
|
|
204
|
+
# clean_ms=100, # bridge jitter / drop blips shorter than this
|
|
205
|
+
# min_freezing_ms=3000, # freezing = stillness >= 3.0 s ...
|
|
206
|
+
# min_immobility_ms=4500, # ... until >= 6.0 s, where it becomes immobility (None = no immobility)
|
|
207
|
+
# ).run()
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
#
|
|
211
|
+
# FreezingDetector(
|
|
212
|
+
# data_dir=r'G:\projects\jason_zhang\jason_project\project_folder\csv\outlier_corrected_movement_location',
|
|
213
|
+
# config_path=r"G:\projects\jason_zhang\jason_project\project_folder\project_config.ini",
|
|
214
|
+
# time_window=3,
|
|
215
|
+
# movement_threshold=3,
|
|
216
|
+
# shortest_bout=100
|
|
217
|
+
# ).run()
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
# FreezingDetector(
|
|
222
|
+
# data_dir=r'F:\troubleshooting\sam\sam\project_folder\csv\outlier_corrected_movement_location',
|
|
223
|
+
# config_path=r"F:\troubleshooting\sam\sam\project_folder\project_config.ini",
|
|
224
|
+
# save_dir=r'F:\troubleshooting\sam\sam\project_folder\logs\freezing_500',
|
|
225
|
+
# time_window=3,
|
|
226
|
+
# movement_threshold=5,
|
|
227
|
+
# shortest_bout=100
|
|
228
|
+
# ).run()
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
# FreezingDetector(
|
|
232
|
+
# data_dir=r'E:\troubleshooting\mitra_emergence_hour\project_folder\csv\outlier_corrected_movement_location',
|
|
233
|
+
# config_path=r"E:\troubleshooting\mitra_emergence_hour\project_folder\project_config.ini",
|
|
234
|
+
# time_window=3,
|
|
235
|
+
# movement_threshold=5,
|
|
236
|
+
# shortest_bout=100
|
|
237
|
+
# ).run()
|
{simba_uw_tf_dev-5.3.9 → simba_uw_tf_dev-5.4.1}/simba/feature_extractors/mitra_feature_extractor.py
RENAMED
|
@@ -22,14 +22,14 @@ from simba.utils.read_write import (SimbaTimer, get_fn_ext, read_df,
|
|
|
22
22
|
write_df)
|
|
23
23
|
|
|
24
24
|
NOSE = 'nose'
|
|
25
|
-
LEFT_SIDE = '
|
|
26
|
-
RIGHT_SIDE = '
|
|
25
|
+
LEFT_SIDE = 'left_side'
|
|
26
|
+
RIGHT_SIDE = 'right_side'
|
|
27
27
|
LEFT_EAR = 'left_ear'
|
|
28
28
|
RIGHT_EAR = 'right_ear'
|
|
29
29
|
CENTER = 'center'
|
|
30
30
|
TAIL_BASE = 'tail_base'
|
|
31
31
|
TAIL_CENTER = 'tail_center'
|
|
32
|
-
TAIL_TIP = '
|
|
32
|
+
TAIL_TIP = 'tail_tip'
|
|
33
33
|
|
|
34
34
|
TIME_WINDOWS = np.array([0.25, 0.5, 1.0, 2.0])
|
|
35
35
|
|
|
@@ -231,8 +231,8 @@ class MitraFeatureExtractor(ConfigReader,
|
|
|
231
231
|
# feature_extractor = MitraFeatureExtractor(config_path=args.config_path)
|
|
232
232
|
# feature_extractor.run()
|
|
233
233
|
#
|
|
234
|
-
|
|
235
|
-
|
|
234
|
+
feature_extractor = MitraFeatureExtractor(config_path=r"H:\projects\brainwide_trap\brainwide_trap\project_folder\project_config.ini")
|
|
235
|
+
feature_extractor.run()
|
|
236
236
|
|
|
237
237
|
|
|
238
238
|
# feature_extractor = MitraFeatureExtractor(config_path=r"E:\troubleshooting\mitra_pbn\mitra_pbn\project_folder\project_config.ini")
|
|
@@ -245,3 +245,4 @@ class MitraFeatureExtractor(ConfigReader,
|
|
|
245
245
|
|
|
246
246
|
|
|
247
247
|
|
|
248
|
+
|
|
@@ -26,8 +26,8 @@ from simba.mixins.config_reader import ConfigReader
|
|
|
26
26
|
from simba.ui.tkinter_functions import (CreateLabelFrameWithIcon, Entry_Box,
|
|
27
27
|
SimbaButton, SimbaCheckbox, SimBALabel)
|
|
28
28
|
from simba.utils.checks import (check_file_exist_and_readable, check_float,
|
|
29
|
-
check_int, check_str, check_valid_boolean,
|
|
30
|
-
check_valid_dict)
|
|
29
|
+
check_int, check_str, check_valid_boolean,
|
|
30
|
+
check_valid_dataframe, check_valid_dict)
|
|
31
31
|
from simba.utils.enums import ConfigKey, Dtypes, Formats, Options, TagNames
|
|
32
32
|
from simba.utils.errors import FrameRangeError, NoDataError, NoFilesFoundError
|
|
33
33
|
from simba.utils.lookups import (get_current_time, get_display_resolution,
|
|
@@ -21,13 +21,17 @@ except ImportError:
|
|
|
21
21
|
|
|
22
22
|
import simba
|
|
23
23
|
from simba.mixins.config_reader import ConfigReader
|
|
24
|
+
from simba.mixins.plotting_mixin import PlottingMixin
|
|
24
25
|
from simba.ui.tkinter_functions import (CreateLabelFrameWithIcon, Entry_Box,
|
|
25
|
-
SimbaButton, SimbaCheckbox,
|
|
26
|
+
SimbaButton, SimbaCheckbox,
|
|
27
|
+
SimBADropDown, SimBALabel,
|
|
28
|
+
SimBAScaleBar, get_menu_icons)
|
|
26
29
|
from simba.utils.checks import (check_file_exist_and_readable, check_int,
|
|
27
30
|
check_that_column_exist, check_valid_boolean,
|
|
28
31
|
check_valid_dataframe, check_valid_dict,
|
|
29
|
-
check_video_and_data_frm_count_align
|
|
30
|
-
|
|
32
|
+
check_video_and_data_frm_count_align,
|
|
33
|
+
is_img_greyscale)
|
|
34
|
+
from simba.utils.enums import Formats, TagNames, TextOptions
|
|
31
35
|
from simba.utils.errors import (FrameRangeError, NoDataError,
|
|
32
36
|
NoFilesFoundError, SimbaError)
|
|
33
37
|
from simba.utils.lookups import (get_current_time, get_display_resolution,
|
|
@@ -37,7 +41,8 @@ from simba.utils.lookups import (get_current_time, get_display_resolution,
|
|
|
37
41
|
from simba.utils.printing import log_event, stdout_success
|
|
38
42
|
from simba.utils.read_write import (find_closest_readable_frame,
|
|
39
43
|
get_video_meta_data, read_config_entry,
|
|
40
|
-
read_df, read_frm_of_video,
|
|
44
|
+
read_df, read_frm_of_video,
|
|
45
|
+
seconds_to_timestamp, str_2_bool, write_df)
|
|
41
46
|
from simba.utils.warnings import DataHeaderWarning, FrameRangeWarning
|
|
42
47
|
|
|
43
48
|
PLAY_VIDEO_SCRIPT_PATH = os.path.join(os.path.dirname(simba.__file__), "labelling/play_annotation_video.py")
|
|
@@ -45,6 +50,8 @@ PADDING = 5
|
|
|
45
50
|
|
|
46
51
|
DISPLAY_RESOLUTION = get_display_resolution()
|
|
47
52
|
MAX_FRAME_RATI0 = (0.6, 0.6) # W * H RATIO OF IMAGE FRAME ONLY
|
|
53
|
+
DEFAULT_IMG_GREYSCALE = 'FALSE'
|
|
54
|
+
DEFAULT_SAVE_VERBOSITY = 'TRUE'
|
|
48
55
|
|
|
49
56
|
|
|
50
57
|
class LabellingInterface(ConfigReader):
|
|
@@ -87,6 +94,8 @@ class LabellingInterface(ConfigReader):
|
|
|
87
94
|
self.targets_inserted_file_path = os.path.join(self.targets_folder, f"{self.video_name}.{self.file_type}")
|
|
88
95
|
self.machine_results_file_path = os.path.join(self.machine_results_dir, f"{self.video_name}.{self.file_type}")
|
|
89
96
|
self.cap = cv2.VideoCapture(self.video_path)
|
|
97
|
+
self.img_greyscale, self.save_verbosity = str_2_bool(input_str=DEFAULT_IMG_GREYSCALE), str_2_bool(input_str=DEFAULT_SAVE_VERBOSITY)
|
|
98
|
+
self.show_video_timer = False
|
|
90
99
|
self.img_kbd_bindings = get_labelling_img_kbd_bindings()
|
|
91
100
|
self.video_kbd_bindings = get_labelling_video_kbd_bindings()
|
|
92
101
|
self.max_frm_id = self.video_meta_data["frame_count"] - 1
|
|
@@ -157,7 +166,7 @@ class LabellingInterface(ConfigReader):
|
|
|
157
166
|
self.img_lbl = Label(self.img_frm, name='img_lbl')
|
|
158
167
|
self.img_frm.grid(row=0, column=0, sticky=NW, padx=10, pady=10, columnspan=3, rowspan=2)
|
|
159
168
|
self.img_lbl.grid(row=0, column=0, sticky=NW)
|
|
160
|
-
|
|
169
|
+
self.font_size, self.space_x, self.spacing_scale = PlottingMixin().get_optimal_font_scales(text='999999', accepted_px_width=int(self.img_display_size[0] / 8), accepted_px_height=int(self.img_display_size[1] / 8))
|
|
161
170
|
|
|
162
171
|
self.navigation_frm = CreateLabelFrameWithIcon(parent=self.main_window, header='FRAME NAVIGATION', icon_name='navigation', relief='solid')
|
|
163
172
|
self.current_frm_eb = Entry_Box(parent=self.navigation_frm, fileDescription='CURRENT FRAME: ', labelwidth=20, validation='numeric', entry_box_width=10, value=self.img_idx, justify='center', label_font=Formats.FONT_HEADER.value, entry_font=Formats.FONT_HEADER.value)
|
|
@@ -167,7 +176,7 @@ class LabellingInterface(ConfigReader):
|
|
|
167
176
|
self.forward_btn = SimbaButton(parent=self.navigation_frm, txt="", img='play_large_green', tooltip_txt="+1 FRAME", cmd=self.__advance_frame, cmd_kwargs={'frm_id': lambda: self.img_idx + 1})
|
|
168
177
|
self.last_frm_btn = SimbaButton(parent=self.navigation_frm, txt="", img='skip_forward_large', tooltip_txt="GO TO LAST FRAME", cmd=self.__advance_frame, cmd_kwargs={'frm_id': self.max_frm_id})
|
|
169
178
|
|
|
170
|
-
self.set_img(img_lbl=self.img_lbl, video_path=self.cap, img_idx=self.img_idx, display_size=self.img_display_size)
|
|
179
|
+
self.set_img(img_lbl=self.img_lbl, video_path=self.cap, img_idx=self.img_idx, display_size=self.img_display_size, show_timer=self.show_video_timer)
|
|
171
180
|
|
|
172
181
|
self.navigation_frm.grid(row=2, column=0, sticky=NSEW, pady=10, padx=10, columnspan=1)
|
|
173
182
|
self.current_frm_eb.grid(row=0, column=0, sticky=EW, columnspan=4)
|
|
@@ -285,9 +294,9 @@ class LabellingInterface(ConfigReader):
|
|
|
285
294
|
img_lbl: Label,
|
|
286
295
|
video_path: Union[str, os.PathLike],
|
|
287
296
|
img_idx: int,
|
|
288
|
-
display_size: Optional[Tuple[int, int]] = None
|
|
289
|
-
|
|
290
|
-
self.img = read_frm_of_video(video_path=video_path, frame_index=img_idx, size=display_size, raise_error=False)
|
|
297
|
+
display_size: Optional[Tuple[int, int]] = None,
|
|
298
|
+
show_timer: bool = False):
|
|
299
|
+
self.img = read_frm_of_video(video_path=video_path, frame_index=img_idx, size=display_size, raise_error=False, greyscale=self.img_greyscale)
|
|
291
300
|
if self.img is None:
|
|
292
301
|
FrameRangeWarning(msg=f'Frame {img_idx} could not be read in video {video_path}. Attempting to find closest readable frame...')
|
|
293
302
|
img, img_idx = find_closest_readable_frame(video_path=video_path, target_frame=img_idx, max_search_range=50)
|
|
@@ -298,7 +307,11 @@ class LabellingInterface(ConfigReader):
|
|
|
298
307
|
self.current_frm_eb.entry_set(val=str(img_idx))
|
|
299
308
|
else:
|
|
300
309
|
raise FrameRangeError(msg=f'Could not find a readable frame (± frames of {img_idx}) in video {video_path}. Cannot proceed with annotations in this video.', source=self.__class__.__name__)
|
|
301
|
-
|
|
310
|
+
if show_timer:
|
|
311
|
+
timestamp = seconds_to_timestamp(seconds=self.img_idx / self.video_meta_data['fps'], hh_mm_ss_sss=True)
|
|
312
|
+
self.img = PlottingMixin().put_text(img=self.img, text=timestamp, pos=(TextOptions.BORDER_BUFFER_X.value, int((self.img.shape[0] - self.spacing_scale * 2))), font_size=self.font_size, font_thickness=TextOptions.TEXT_THICKNESS.value + 1, text_bg_alpha=0.6, text_color=(255, 255, 255))
|
|
313
|
+
grey_img = is_img_greyscale(img=self.img, raise_error=False, source=f'{self.__class__.__name__} img_idx')
|
|
314
|
+
img_rgb = cv2.cvtColor(self.img, cv2.COLOR_BGR2RGB) if not grey_img else self.img
|
|
302
315
|
self.pil_image = Image.fromarray(img_rgb)
|
|
303
316
|
self.tk_image = ImageTk.PhotoImage(self.pil_image)
|
|
304
317
|
img_lbl.configure(image=self.tk_image)
|
|
@@ -343,7 +356,8 @@ class LabellingInterface(ConfigReader):
|
|
|
343
356
|
raise FrameRangeError(msg=f"TRYING TO SHOW FRAME {frm_id} WHICH CANNOT BE SHOWN. FRAME INDEX HAS TO BE 0 OR ABOVE")
|
|
344
357
|
else:
|
|
345
358
|
prior_frm_idx = int(self.current_frm_eb.entry_get)
|
|
346
|
-
self.
|
|
359
|
+
if self.save_verbosity:
|
|
360
|
+
self.__create_print_statements(frame=prior_frm_idx)
|
|
347
361
|
self.current_frm_eb.entry_set(val=frm_id)
|
|
348
362
|
for clf in self.clf_names:
|
|
349
363
|
self.save_behavior_in_frm(clf_name=clf, frame_idx=prior_frm_idx)
|
|
@@ -352,7 +366,7 @@ class LabellingInterface(ConfigReader):
|
|
|
352
366
|
else:
|
|
353
367
|
self.clf_cbs[clf].set(bool(self.data_df_targets[clf].loc[frm_id]))
|
|
354
368
|
self.img_idx = deepcopy(frm_id)
|
|
355
|
-
self.set_img(img_lbl=self.img_lbl, video_path=self.cap, img_idx=frm_id, display_size=self.img_display_size)
|
|
369
|
+
self.set_img(img_lbl=self.img_lbl, video_path=self.cap, img_idx=frm_id, display_size=self.img_display_size, show_timer=self.show_video_timer)
|
|
356
370
|
|
|
357
371
|
def __save_behavior_in_range(self,
|
|
358
372
|
start_frm: int,
|
|
@@ -367,8 +381,9 @@ class LabellingInterface(ConfigReader):
|
|
|
367
381
|
self.data_df_targets[target].loc[start_frm:end_frm] = int(self.clf_cbs[target].get())
|
|
368
382
|
self.current_frm_eb.entry_set(end_frm)
|
|
369
383
|
self.img_idx = deepcopy(end_frm)
|
|
370
|
-
self.
|
|
371
|
-
|
|
384
|
+
if self.save_verbosity:
|
|
385
|
+
self.__create_print_statements(frame=(start_frm, end_frm))
|
|
386
|
+
self.main_window.after(1, lambda: self.set_img(img_lbl=self.img_lbl, video_path=self.cap, img_idx=end_frm, display_size=self.img_display_size, show_timer=self.show_video_timer))
|
|
372
387
|
|
|
373
388
|
def save_behavior_in_frm(self,
|
|
374
389
|
frame_idx: int,
|
|
@@ -421,7 +436,6 @@ class LabellingInterface(ConfigReader):
|
|
|
421
436
|
self.preferences_frm.minsize(400, 300)
|
|
422
437
|
self.preferences_frm.wm_title("PREFERENCES")
|
|
423
438
|
self.preferences_frm.iconphoto(False, self.menu_icons['settings']["img"])
|
|
424
|
-
|
|
425
439
|
size_frm_panel = CreateLabelFrameWithIcon(parent=self.preferences_frm, header="IMAGE SIZE", icon_name='size', padx=5, pady=5)
|
|
426
440
|
size_frm_panel.grid(row=0, column=0, sticky="NW")
|
|
427
441
|
self.max_width_scaler = SimBAScaleBar(parent=size_frm_panel, label="MAX IMAGE WIDTH (%): ", orient=HORIZONTAL, length=200, value=MAX_FRAME_RATI0[0]*100, label_width=25, lbl_img='width', from_=10, to=100)
|
|
@@ -429,15 +443,33 @@ class LabellingInterface(ConfigReader):
|
|
|
429
443
|
self.max_width_scaler.grid(row=0, column=0, sticky="NW")
|
|
430
444
|
self.max_height_scaler.grid(row=1, column=0, sticky="NW")
|
|
431
445
|
|
|
446
|
+
img_clr_panel = CreateLabelFrameWithIcon(parent=self.preferences_frm, header="IMAGE COLOR", icon_name='size', padx=5, pady=5)
|
|
447
|
+
img_clr_panel.grid(row=1, column=0, sticky="NW")
|
|
448
|
+
self.img_grey_dropdown = SimBADropDown(parent=img_clr_panel, dropdown_options=['TRUE', 'FALSE'], label="IMAGE GREYSCALE: ", label_width=20, value='TRUE' if self.img_greyscale else 'FALSE', dropdown_width=10, img='grey')
|
|
449
|
+
self.img_grey_dropdown.grid(row=0, column=0, sticky="NW")
|
|
450
|
+
|
|
451
|
+
verbosity_panel = CreateLabelFrameWithIcon(parent=self.preferences_frm, header="VEBOSITY", icon_name='verbose', padx=5, pady=5)
|
|
452
|
+
verbosity_panel.grid(row=2, column=0, sticky="NW")
|
|
453
|
+
self.verbosity_dropdown = SimBADropDown(parent=verbosity_panel, dropdown_options=['TRUE', 'FALSE'], label="SAVE VERBOSITY: ", label_width=20, value='TRUE' if self.save_verbosity else 'FALSE', dropdown_width=10, img='verbose')
|
|
454
|
+
self.verbosity_dropdown.grid(row=0, column=0, sticky="NW")
|
|
455
|
+
|
|
456
|
+
video_timer_panel = CreateLabelFrameWithIcon(parent=self.preferences_frm, header="VIDEO TIMER", icon_name='frame', padx=5, pady=5)
|
|
457
|
+
video_timer_panel.grid(row=3, column=0, sticky="NW")
|
|
458
|
+
self.video_timer_dropdown = SimBADropDown(parent=video_timer_panel, dropdown_options=['TRUE', 'FALSE'], label="SHOW VIDEO TIMER: ", label_width=20, value='TRUE' if self.show_video_timer else 'FALSE', dropdown_width=10, img='timer')
|
|
459
|
+
self.video_timer_dropdown.grid(row=0, column=0, sticky="NW")
|
|
460
|
+
|
|
432
461
|
pref_save_btn = SimbaButton(parent=self.preferences_frm, txt="SAVE", img='save_large', font=Formats.FONT_REGULAR.value, cmd=self.set_settings)
|
|
433
|
-
pref_save_btn.grid(row=
|
|
462
|
+
pref_save_btn.grid(row=4, column=0, sticky="NW")
|
|
434
463
|
|
|
435
464
|
def set_settings(self):
|
|
436
465
|
max_width, max_height = int(self.max_width_scaler.get_value()) / 100, int(self.max_height_scaler.get_value()) / 100
|
|
437
466
|
scaled_w, scaled_h, _, _ = get_img_resize_info(img_size=(self.video_meta_data['width'], self.video_meta_data['height']), display_resolution=None, max_width_ratio=max_width, max_height_ratio=max_height)
|
|
438
467
|
self.img_display_size = (scaled_w, scaled_h)
|
|
439
|
-
self.
|
|
440
|
-
|
|
468
|
+
self.font_size, self.space_x, self.spacing_scale = PlottingMixin().get_optimal_font_scales(text='999999', accepted_px_width=int(self.img_display_size[0] / 8), accepted_px_height=int(self.img_display_size[1] / 8))
|
|
469
|
+
self.img_greyscale = str_2_bool(input_str=self.img_grey_dropdown.get_value())
|
|
470
|
+
self.save_verbosity = str_2_bool(input_str=self.verbosity_dropdown.get_value())
|
|
471
|
+
self.show_video_timer = str_2_bool(input_str=self.video_timer_dropdown.get_value())
|
|
472
|
+
self.set_img(img_lbl=self.img_lbl, video_path=self.cap, img_idx=self.img_idx, display_size=self.img_display_size, show_timer=self.show_video_timer)
|
|
441
473
|
pass
|
|
442
474
|
|
|
443
475
|
# test = LabellingInterface(config_path=r"C:\troubleshooting\mitra\project_folder\project_config.ini",
|
|
@@ -62,7 +62,7 @@ class CircularStatisticsMixin(object):
|
|
|
62
62
|
Jitted compute of the mean resultant vector length of a single sample. Captures the overall "pull" or "tendency" of the
|
|
63
63
|
data points towards a central direction on the circle with a range between 0 and 1.
|
|
64
64
|
|
|
65
|
-
.. image:: _static/img/mean_resultant_vector.
|
|
65
|
+
.. image:: _static/img/mean_resultant_vector.webp
|
|
66
66
|
:width: 400
|
|
67
67
|
:align: center
|
|
68
68
|
|
|
@@ -100,8 +100,7 @@ class CircularStatisticsMixin(object):
|
|
|
100
100
|
data points towards a central direction on the circle with a range between 0 and 1.
|
|
101
101
|
|
|
102
102
|
.. attention::
|
|
103
|
-
The returned values represents resultant vector length in the time-window ``[(current_frame-time_window)->current_frame]``.
|
|
104
|
-
`-1` is returned where ``current_frame-time_window`` is less than 0.
|
|
103
|
+
The returned values represents resultant vector length in the time-window ``[(current_frame-time_window)->current_frame]``. `-1` is returned where ``current_frame-time_window`` is less than 0.
|
|
105
104
|
|
|
106
105
|
.. image:: _static/img/sliding_mean_resultant_length.png
|
|
107
106
|
:width: 600
|
|
@@ -590,6 +589,9 @@ class CircularStatisticsMixin(object):
|
|
|
590
589
|
.. note::
|
|
591
590
|
Adapted from ``pingouin.circular.circ_rayleigh`` and ``pycircstat.tests.rayleigh``.
|
|
592
591
|
|
|
592
|
+
.. image:: _static/img/rayleigh.webp
|
|
593
|
+
:width: 600
|
|
594
|
+
:align: center
|
|
593
595
|
|
|
594
596
|
The Rayleigh Z score is calculated as follows:
|
|
595
597
|
|
|
@@ -598,10 +600,10 @@ class CircularStatisticsMixin(object):
|
|
|
598
600
|
|
|
599
601
|
where :math:`n` is the sample size and :math:`R` is the mean resultant length.
|
|
600
602
|
|
|
601
|
-
The associated p-value is calculated as follows:
|
|
603
|
+
The associated p-value is calculated as follows (note this uses the resultant length :math:`nR`, not the mean resultant length :math:`R`):
|
|
602
604
|
|
|
603
605
|
.. math::
|
|
604
|
-
p = \\exp\\left(\\sqrt{1 + 4n + 4(n^2 -
|
|
606
|
+
p = \\exp\\left(\\sqrt{1 + 4n + 4(n^2 - (nR)^2)} - (1 + 2n)\\right)
|
|
605
607
|
|
|
606
608
|
.. seealso::
|
|
607
609
|
:func:`simba.data_processors.cuda.circular_statistics.sliding_rayleigh_z`,
|
|
@@ -613,16 +615,15 @@ class CircularStatisticsMixin(object):
|
|
|
613
615
|
|
|
614
616
|
>>> data = np.array([350, 360, 365, 360, 100, 109, 232, 123, 42, 3,4, 145]).astype(np.float32)
|
|
615
617
|
>>> CircularStatisticsMixin().rayleigh(data=data)
|
|
616
|
-
>>> (2.3845645695246467, 0.
|
|
618
|
+
>>> (2.3845645695246467, 0.09027923051217743)
|
|
617
619
|
"""
|
|
618
620
|
|
|
619
621
|
data = np.deg2rad(data)
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
return len(data) * R**2, p
|
|
622
|
+
n = len(data)
|
|
623
|
+
R = np.sqrt(np.sum(np.cos(data)) ** 2 + np.sum(np.sin(data)) ** 2) / n
|
|
624
|
+
R_len = n * R # resultant length (0..n); the p-value approximation requires this, not the mean resultant length
|
|
625
|
+
p = np.exp(np.sqrt(1 + 4 * n + 4 * (n ** 2 - R_len ** 2)) - (1 + 2 * n))
|
|
626
|
+
return n * R**2, p
|
|
626
627
|
|
|
627
628
|
@staticmethod
|
|
628
629
|
@njit("(float32[:], float64[:], float64)", parallel=True)
|
|
@@ -654,9 +655,11 @@ class CircularStatisticsMixin(object):
|
|
|
654
655
|
win_size = int(time_windows[i] * fps)
|
|
655
656
|
for j in prange(win_size, len(data) + 1):
|
|
656
657
|
data_win = data[j - win_size : j]
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
658
|
+
n_win = len(data_win)
|
|
659
|
+
R = np.sqrt(np.sum(np.cos(data_win)) ** 2 + np.sum(np.sin(data_win)) ** 2) / n_win
|
|
660
|
+
R_len = n_win * R # resultant length (0..n); required by the p-value approximation
|
|
661
|
+
Z_results[j - 1][i] = n_win * R**2
|
|
662
|
+
P_results[j - 1][i] = np.exp(np.sqrt(1 + 4 * n_win + 4 * (n_win ** 2 - R_len ** 2)) - (1 + 2 * n_win))
|
|
660
663
|
return Z_results, P_results
|
|
661
664
|
|
|
662
665
|
@staticmethod
|
|
@@ -866,8 +869,12 @@ class CircularStatisticsMixin(object):
|
|
|
866
869
|
"""
|
|
867
870
|
Jitted compute of Rao's spacing for angular data.
|
|
868
871
|
|
|
869
|
-
Computes the uniformity of a circular dataset in degrees.
|
|
870
|
-
while
|
|
872
|
+
Computes the uniformity of a circular dataset in degrees. High output values represent concentrated (clustered)
|
|
873
|
+
angularity with uneven gaps between observations, while low values (near 0) represent evenly-spaced, uniform angularity.
|
|
874
|
+
|
|
875
|
+
.. image:: _static/img/rao_spacing.webp
|
|
876
|
+
:width: 600
|
|
877
|
+
:align: center
|
|
871
878
|
|
|
872
879
|
The Rao's Spacing (:math:`U`) is calculated as follows:
|
|
873
880
|
|
|
@@ -895,7 +902,7 @@ class CircularStatisticsMixin(object):
|
|
|
895
902
|
|
|
896
903
|
data = np.sort(data)
|
|
897
904
|
Ti, TiL = np.full((data.shape[0]), np.nan), np.full((data.shape[0]), np.nan)
|
|
898
|
-
l =
|
|
905
|
+
l = 360 / len(data)
|
|
899
906
|
Ti[-1] = np.rad2deg(np.pi - np.abs(np.pi - np.abs(np.deg2rad(data[0]) - np.deg2rad(data[-1])))
|
|
900
907
|
)
|
|
901
908
|
for j in range(data.shape[0] - 1, -1, -1):
|
|
@@ -952,7 +959,7 @@ class CircularStatisticsMixin(object):
|
|
|
952
959
|
for i in range(window_size, data.shape[0]):
|
|
953
960
|
w_data = np.sort(data[i - window_size : i])
|
|
954
961
|
Ti, TiL = np.full((w_data.shape[0]), np.nan), np.full((w_data.shape[0]), np.nan)
|
|
955
|
-
l =
|
|
962
|
+
l = 360 / len(w_data)
|
|
956
963
|
Ti[-1] = np.rad2deg(np.pi - np.abs(np.pi - np.abs(np.deg2rad(w_data[0]) - np.deg2rad(w_data[-1]))))
|
|
957
964
|
for j in range(w_data.shape[0] - 1, -1, -1):
|
|
958
965
|
Ti[j] = np.rad2deg(np.pi - np.abs(np.pi - np.abs(np.deg2rad(w_data[j]) - np.deg2rad(w_data[j - 1]))))
|
|
@@ -971,6 +978,10 @@ class CircularStatisticsMixin(object):
|
|
|
971
978
|
|
|
972
979
|
Kuiper's two-sample test is a non-parametric test used to determine if two samples are drawn from the same circular distribution. It is particularly useful for circular data, such as angles or directions.
|
|
973
980
|
|
|
981
|
+
.. image:: _static/img/kuipers_two_sample_test.webp
|
|
982
|
+
:width: 600
|
|
983
|
+
:align: center
|
|
984
|
+
|
|
974
985
|
The Kuiper test statistic is calculated as the sum of the maximum positive and negative deviations between the cumulative distribution functions of the two samples:
|
|
975
986
|
|
|
976
987
|
.. math::
|
|
@@ -1031,11 +1042,9 @@ class CircularStatisticsMixin(object):
|
|
|
1031
1042
|
for time_window_cnt in prange(time_windows.shape[0]):
|
|
1032
1043
|
win_size = int(time_windows[time_window_cnt] * fps)
|
|
1033
1044
|
for i in range(win_size, sample_1.shape[0]):
|
|
1034
|
-
sample_1_win
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
)
|
|
1038
|
-
cdfv1 = np.searchsorted(sample_2, sample_1_win) / float(
|
|
1045
|
+
sample_1_win = np.sort(sample_1[i - win_size : i])
|
|
1046
|
+
sample_2_win = np.sort(sample_2[i - win_size : i])
|
|
1047
|
+
cdfv1 = np.searchsorted(sample_2_win, sample_1_win) / float(
|
|
1039
1048
|
len(sample_2_win)
|
|
1040
1049
|
)
|
|
1041
1050
|
cdfv2 = np.searchsorted(sample_1_win, sample_2_win) / float(
|
|
@@ -1466,6 +1475,10 @@ class CircularStatisticsMixin(object):
|
|
|
1466
1475
|
"""
|
|
1467
1476
|
Determines the preferred turning direction from a 1D array of circular directional data.
|
|
1468
1477
|
|
|
1478
|
+
.. image:: _static/img/preferred_turning_direction.webp
|
|
1479
|
+
:width: 600
|
|
1480
|
+
:align: center
|
|
1481
|
+
|
|
1469
1482
|
.. note::
|
|
1470
1483
|
The input ``x`` can be created using any of the following methods:
|
|
1471
1484
|
- :func:`simba.mixins.circular_statistics.CircularStatisticsMixin.direction_two_bps`
|