simba-uw-tf-dev 2.7.2__tar.gz → 2.7.4__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-2.7.2 → simba_uw_tf_dev-2.7.4}/PKG-INFO +1 -1
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/Simba_UW_tf_dev.egg-info/PKG-INFO +1 -1
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/Simba_UW_tf_dev.egg-info/SOURCES.txt +1 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/setup.py +1 -1
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/SimBA.py +2 -1
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/blob_location_computer.py +19 -14
- simba_uw_tf_dev-2.7.4/simba/data_processors/find_animal_blob_location.py +173 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/geometry_mixin.py +0 -3
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/image_mixin.py +67 -42
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/network_mixin.py +0 -4
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/sleap_csv_importer.py +16 -5
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/roi_ui.py +29 -9
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/roi_ui_mixin.py +22 -9
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/roi_utils.py +14 -9
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/checks.py +36 -8
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/read_write.py +134 -13
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/batch_process_menus.py +2 -3
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/video_processing.py +36 -13
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/LICENSE +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/MANIFEST.in +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/README.md +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/Simba_UW_tf_dev.egg-info/dependency_links.txt +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/Simba_UW_tf_dev.egg-info/entry_points.txt +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/Simba_UW_tf_dev.egg-info/requires.txt +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/Simba_UW_tf_dev.egg-info/top_level.txt +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/setup.cfg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/SimBA_logo.ico +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/TheGoldenLab.PNG +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/UbuntuMono-Regular.ttf +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/dash_simba_base.css +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/fonts/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/fonts/Playwrite ES Deco.ttf +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/fonts/Poppins Bold.ttf +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/fonts/Poppins Regular.ttf +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/SimBA_logo.icns +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/SimBA_logo.ico +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/SimBA_logo.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/SimBA_logo_3.ico +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/SimBA_logo_3.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/about.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/add.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/add_on.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/analyze_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/analyze_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/api.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/archive.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/arrow_down_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/attributes_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/average.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/avi.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/bar_graph_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/bar_graph_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/blur.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/bmp.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/boris.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/brightness.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/browse.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/brush_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/bw.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/calipher.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/change.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/check_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/circle.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/circle_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/circle_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/circle_small.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/clahe.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/clean.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/clean_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/clf.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/clf_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/clip.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/close.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/cluster.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/concat.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/concat_icons/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/concat_icons/horizontal.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/concat_icons/mixed_mosaic.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/concat_icons/mosaic.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/concat_icons/vertical.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/concat_videos.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/convert.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/counter.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/create.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/crop.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/crossfade.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/csv_grey.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/curve_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/dash_simba.css +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/decision_tree_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/decision_tree_purple.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/delete_large_orange.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/delete_large_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/details.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/dice_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/dimensionality_reduction.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/direction.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/direction_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/distance_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/documentation.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/dumbbell.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/duplicate.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/duplicate_2_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/duplicate_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/edit.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/edit_roi_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/ethovision.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/exit.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/factory.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/fast_forward.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/fast_forward_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/fastforward_green_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/feather_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/features.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/ffmpeg.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/finish.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/first.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/first_frame_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/first_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/flip_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/flip_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/flip_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/fps.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/frames.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/gif.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/github.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/gitter.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/gpu.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/gpu_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/green_check.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/grey.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/greyscale.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/half_circle.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/half_circle_small.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/heatmap.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/hexagon.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/hexagon_small.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/hierarchy.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/home.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/id_card.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/image.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/import.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/info.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/info_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/interaction_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/interactive_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/join_purple.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/join_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/join_yellow.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/jpeg.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/label.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/label_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/label_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/label_yellow.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/last.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/last_frame_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/last_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/line_chart_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/link.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/load.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/load_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/load_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/mars.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/merge.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/metrics.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/metrics_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/metrics_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/minus.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/minus_blue_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/minus_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/mouse_small.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/mov.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/move.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/move_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/mp4.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/multiple_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/multiple_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/multiple_yellow.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/number_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/one.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/one_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/osf.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/outlier.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/paint.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/palette_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/parquet.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/path.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/permutation_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/plot.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/plus.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/plus_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/plus_green_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/png.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/polygon.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/polygon_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/polygon_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/pose.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/print.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/progressbar_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/readthedocs_logo.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rectangle.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rectangle_1_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rectangle_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rectangle_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rectangle_small.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/remove_bg.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/reorganize.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/restart.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/reverse.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/reverse_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rewind.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rewind_blue_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rewind_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rocket.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/roi.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/roi_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/rotate.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/sample.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/save.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/save_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/save_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/save_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/search.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/segment.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/seperate_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/settings.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/shap.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/shapes_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/shapes_small.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/simba_logo_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/single_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/single_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/single_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/size_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/skip.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/skip_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/split.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/square_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/stopwatch.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/subset_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/superimpose.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/system.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/t.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/table.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/text_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/tick.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/tick_large.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/tiff.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/tile_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/timer.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/trash.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/trash_red.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/triangle_black.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/triangle_small.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/video.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/video_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/visualize.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/visualize_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/visualize_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/wand_blue.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/watermark_green.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/webm.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/webp.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/zero.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/zoom_in.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/icons/zoom_out.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/img/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/img/about_me.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/img/bg.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/img/bg_2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/img/bg_2024.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/img/splash.mp4 +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/img/splash.pptx +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/img/splash_2024.mp4 +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/img/~$splash.pptx +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/lookups/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/lookups/critical_values_05.pickle +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/lookups/feature_extraction_headers.csv +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/lookups/features.csv +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/lookups/model_names.parquet +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/lookups/unsupervised_example_x.csv +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/lookups/yolo.yaml +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/UbuntuMono-Regular.ttf +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/animal_distances.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/baseline_scale.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/color_bar.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/down_arrow.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/feature_categories/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/feature_categories/shap_feature_categories.csv +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/intruder_movement.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/intruder_shape.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/resident_intruder_movement.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/resident_intruder_shape.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/resident_movement.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/resident_shape.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/side_scale.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/side_scale_5.jpg +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/shap/ubuntu.regular.ttf +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/stl/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/stl/grid_floor.stl +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/stl/operant_lever.stl +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/stl/operant_tray.stl +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/stl/operant_walls.stl +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/unsupervised/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/unsupervised/features.csv +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/assets/unsupervised/model_names.parquet +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/bounding_box_tools/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/bounding_box_tools/agg_boundary_stats.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/bounding_box_tools/boundary_menus.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/bounding_box_tools/boundary_statistics.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/bounding_box_tools/find_boundaries.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/bounding_box_tools/visualize_boundaries.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/bounding_box_tools/yolo/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/bounding_box_tools/yolo/model.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/bounding_box_tools/yolo/visualize.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/cue_light_tools/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/cue_light_tools/cue_light_analyzer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/cue_light_tools/cue_light_clf_statistics.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/cue_light_tools/cue_light_menues.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/cue_light_tools/cue_light_movement_statistics.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/cue_light_tools/cue_light_tools.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/cue_light_tools/cue_light_visualizer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/dash_app/SimBA_dash_app.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/dash_app/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/dash_app/dash_app.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/dash_app/run_dash_tkinter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/advanced_interpolator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/advanced_smoothing.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/agg_clf_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/boolean_conditional_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/circling_detector.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/cuda/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/cuda/circular_statistics.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/cuda/create_shap_log.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/cuda/data.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/cuda/geometry.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/cuda/image.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/cuda/statistics.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/cuda/timeseries.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/cuda/utils.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/directing_animal_to_bodypart.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/directing_other_animals_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/egocentric_aligner.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/freezing_detector.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/fsttc_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/gibbs_sampler.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/interpolate.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/interpolate_pose.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/interpolation_smoothing.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/kleinberg_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/movement_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/mutual_exclusivity_corrector.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/pup_retrieval_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/pybursts_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/severity_bout_based_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/severity_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/severity_frame_based_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/smoothing.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/spontaneous_alternation_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/timebins_clf_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/timebins_movement_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/amber_feature_extractor.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/feature_extractor_14bp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/feature_extractor_16bp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/feature_extractor_4bp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/feature_extractor_7bp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/feature_extractor_8bp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/feature_extractor_8bps_2_animals.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/feature_extractor_9bp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/feature_extractor_user_defined.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/feature_subsets.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/add_probability_cnt_features.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/convex_hull_3_scratch_3.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/convex_hull_scratch_1.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/convex_hull_scratch_2.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/count_values_in_range.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/doctests.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/egocentrical_aligner.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/fish_feature_extractor_2022.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_2.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_3.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_4.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/fish_feature_extractor_2023_version_5.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/graph_3d_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/graph_creator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/make_splash.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/mutual_exclusive.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/peaks.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/read_in_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/termite_rois.csv +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/time_stamp_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/video_color.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/video_rotator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/misc/video_rotator_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/feature_extractors/perimeter_jit.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/labelling/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/labelling/extract_labelled_frames.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/labelling/extract_labelling_meta.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/labelling/labelling_advanced_interface.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/labelling/labelling_interface.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/labelling/play_annotation_video.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/labelling/targeted_annotations_clips.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/abstract_classes.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/annotator_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/circular_statistics.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/config_reader.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/feature_extraction_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/feature_extraction_supplement_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/plotting_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/pop_up_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/pose_importer_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/statistics_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/timeseries_features_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/train_model_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/mixins/unsupervised_mixin.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/grid_search_multiclass_rf.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/grid_search_rf.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/inference_batch.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/inference_multiclass_batch.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/inference_validation.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/ordinal_clf.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/regression/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/regression/metrics.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/regression/model.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/train_multiclass_rf.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/train_multilabel_rf.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/model/train_rf.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/outlier_tools/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/outlier_tools/outlier_corrector_location.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/outlier_tools/outlier_corrector_location_advanced.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/outlier_tools/outlier_corrector_location_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/outlier_tools/outlier_corrector_movement.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/outlier_tools/outlier_corrector_movement_advanced.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/outlier_tools/outlier_corrector_movement_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/outlier_tools/skip_outlier_correction.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/ROI_feature_visualizer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/ROI_feature_visualizer_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/ROI_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/ROI_plotter_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/blob_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/circular_feature_overlay_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/circular_plotting.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/clf_validator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/clf_validator_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/data_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/directing_animals_to_bodypart_visualizer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/directing_animals_visualizer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/directing_animals_visualizer_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/distance_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/distance_plotter_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/ez_path_plot.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/frame_mergerer_ffmpeg.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/gantt_creator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/gantt_creator_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/gantt_plotly.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/geometry_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/heat_mapper_clf.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/heat_mapper_clf_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/heat_mapper_location.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/heat_mapper_location_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/interactive_probability_grapher.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/path_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/path_plotter_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/plot_clf_results.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/plot_clf_results_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/pose_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/pose_plotter_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/probability_plot_creator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/probability_plot_creator_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/shap_agg_stats_visualizer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/single_run_model_validation_video.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/single_run_model_validation_video_mp.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/spontaneous_alternation_plotter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/tools/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/plotting/tools/tkinter_tools.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/bp_names/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/bp_names/bp_names.csv +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/configuration_names/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/configuration_names/pose_config_names.csv +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/no_animals/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/no_animals/no_animals.csv +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/1.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/10.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/11.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/12.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/13.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/2.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/3.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/4.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/5.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/6.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/7.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/8.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_configurations/schematics/9.png +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/dlc_importer_csv.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/import_mars.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/madlc_importer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/misc/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/misc/apt_trk_importer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/read_DANNCE_mat.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/sleap_h5_importer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/sleap_slp_importer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_importers/trk_importer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_processors/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_processors/pose_reset.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_processors/remove_keypoints.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_processors/reorganize_keypoint.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/pose_processors/reverse_pose.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/requirements.txt +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/ROI_analyzer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/ROI_clf_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/ROI_directing_analyzer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/ROI_feature_analyzer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/ROI_size_standardizer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/ROI_time_bin_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/interactive_modifier_ui.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/interactive_roi_modifier_tkinter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/roi_selector_circle_tkinter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/roi_selector_polygon_tkinter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/roi_tools/roi_selector_rectangle_tkinter.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/BENTO_appender.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/BORIS_appender.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/boris_source_cleaner.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/converters.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/deepethogram_importer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/ethovision_import.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/observer_importer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/solomon_importer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/third_party_appender.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/third_party_label_appenders/tools.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/create_project_ui.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/import_pose_frame.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/import_videos_frame.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/machine_model_settings_ui.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/about_simba_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/animal_directing_other_animals_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/append_roi_features_animals_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/append_roi_features_bodypart_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/archive_files_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/batch_preprocess_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/boolean_conditional_slicer_pup_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/check_videos_seekable_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/clf_add_remove_print_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/clf_annotation_counts_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/clf_by_roi_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/clf_by_timebins_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/clf_descriptive_statistics_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/clf_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/clf_probability_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/clf_validation_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/create_user_defined_pose_configuration_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/csv_2_parquet_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/data_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/delete_all_rois_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/directing_animal_to_bodypart_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/directing_other_animals_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/direction_animal_to_bodypart_settings_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/distance_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/egocentric_alignment_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/fsttc_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/gantt_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/heatmap_clf_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/heatmap_location_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/interpolate_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/kleinberg_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/make_path_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/movement_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/movement_analysis_time_bins_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/mutual_exclusivity_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/outlier_settings_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/path_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/pose_bp_drop_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/pose_reorganizer_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/pup_retrieval_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/quick_path_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/remove_roi_features_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/roi_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/roi_analysis_time_bins_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/roi_features_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/roi_size_standardizer_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/roi_tracking_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/roi_video_table_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/set_machine_model_parameters_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/severity_analysis_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/smoothing_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/spontaneous_alternation_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/subset_feature_extractor_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/targeted_annotation_clips_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/third_party_annotator_appender_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/validation_plot_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/video_processing_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/pop_ups/visualize_pose_in_dir_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/px_to_mm_ui.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/tkinter_functions.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/user_defined_pose_creator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/ui/video_info_ui.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/bout_aggregator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/cluster_frequentist_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/cluster_validation_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/cluster_video_visualizer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/cluster_xai_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/clusterer_comparison_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/data_extractor.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/data_map.yaml +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/dataset_creator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/dbcv_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/embedding_correlation_calculator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/enums.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/grid_search_visualizers.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/hdbscan_clusterer.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/outlier_detector.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/cluster_frequentist_stats_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/cluster_validation_pop_up.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/cluster_videos_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/cluster_xai_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/clusterer_comparison_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/data_extractor_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/embedding_correlations_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/fit_cluster_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/fit_dim_reduction_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/grid_search_visualizer_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/print_embedding_info_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/transform_cluster_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/pop_ups/transform_dim_reduction_popup.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/tsne.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/umap_embedder.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/unsupervised/unsupervised_main.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/cli/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/cli/cli_tools.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/config_creator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/custom_feature_extractor.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/data.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/enums.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/errors.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/lookups.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/printing.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/utils/warnings.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/.DS_Store +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/__init__.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/batch_process_create_ffmpeg_commands.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/brightness_contrast_ui.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/calculate_px_dist.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/clahe_ui.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/egocentric_video_rotator.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/extract_frames.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/extract_seqframes.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/multi_cropper.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/roi_selector.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/roi_selector_circle.py +0 -0
- {simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/video_processors/roi_selector_polygon.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: simba_uw_tf_dev
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.4
|
|
4
4
|
Summary: Toolkit for computer classification and analysis of behaviors in experimental animals
|
|
5
5
|
Home-page: https://github.com/sgoldenlab/simba
|
|
6
6
|
Author: Simon Nilsson, Jia Jie Choong, Sophia Hwang
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: simba-uw-tf-dev
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.4
|
|
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
|
|
@@ -328,6 +328,7 @@ simba/data_processors/circling_detector.py
|
|
|
328
328
|
simba/data_processors/directing_animal_to_bodypart.py
|
|
329
329
|
simba/data_processors/directing_other_animals_calculator.py
|
|
330
330
|
simba/data_processors/egocentric_aligner.py
|
|
331
|
+
simba/data_processors/find_animal_blob_location.py
|
|
331
332
|
simba/data_processors/freezing_detector.py
|
|
332
333
|
simba/data_processors/fsttc_calculator.py
|
|
333
334
|
simba/data_processors/gibbs_sampler.py
|
|
@@ -29,7 +29,7 @@ with open(GPU_REQUIREMENTS_PATH, "r") as f:
|
|
|
29
29
|
# Setup configuration
|
|
30
30
|
setuptools.setup(
|
|
31
31
|
name="simba_uw_tf_dev",
|
|
32
|
-
version="2.7.
|
|
32
|
+
version="2.7.4",
|
|
33
33
|
author="Simon Nilsson, Jia Jie Choong, Sophia Hwang",
|
|
34
34
|
author_email="sronilsson@gmail.com",
|
|
35
35
|
description="Toolkit for computer classification and analysis of behaviors in experimental animals",
|
{simba_uw_tf_dev-2.7.2 → simba_uw_tf_dev-2.7.4}/simba/data_processors/blob_location_computer.py
RENAMED
|
@@ -2,31 +2,28 @@ __author__ = "Simon Nilsson"
|
|
|
2
2
|
__email__ = "sronilsson@gmail.com"
|
|
3
3
|
|
|
4
4
|
import os
|
|
5
|
-
|
|
6
|
-
from
|
|
7
|
-
|
|
5
|
+
import cv2
|
|
6
|
+
from copy import deepcopy, copy
|
|
7
|
+
from typing import Optional, Union, Dict
|
|
8
|
+
from shapely.geometry import Polygon, MultiPolygon
|
|
9
|
+
from shapely.affinity import scale
|
|
8
10
|
import numpy as np
|
|
9
11
|
|
|
10
12
|
try:
|
|
11
13
|
from typing import Literal
|
|
12
14
|
except:
|
|
13
15
|
from typing_extensions import Literal
|
|
14
|
-
|
|
15
16
|
import pandas as pd
|
|
16
17
|
|
|
17
18
|
from simba.mixins.image_mixin import ImageMixin
|
|
18
|
-
from simba.
|
|
19
|
-
|
|
20
|
-
check_valid_boolean)
|
|
19
|
+
from simba.mixins.geometry_mixin import GeometryMixin
|
|
20
|
+
from simba.utils.checks import (check_if_dir_exists, check_int, check_nvidea_gpu_available, check_str, check_valid_boolean, check_instance, is_img_bw, check_float)
|
|
21
21
|
from simba.utils.data import df_smoother, savgol_smoother
|
|
22
22
|
from simba.utils.enums import Formats, Methods, Options
|
|
23
23
|
from simba.utils.errors import FFMPEGCodecGPUError, InvalidInputError
|
|
24
24
|
from simba.utils.printing import SimbaTimer, stdout_success
|
|
25
|
-
from simba.utils.read_write import (find_all_videos_in_directory, get_fn_ext,
|
|
26
|
-
|
|
27
|
-
write_df)
|
|
28
|
-
from simba.video_processors.video_processing import (video_bg_subtraction,
|
|
29
|
-
video_bg_subtraction_mp)
|
|
25
|
+
from simba.utils.read_write import (find_all_videos_in_directory, get_fn_ext, get_video_meta_data, remove_files, write_df)
|
|
26
|
+
from simba.video_processors.video_processing import (video_bg_subtraction, video_bg_subtraction_mp)
|
|
30
27
|
|
|
31
28
|
|
|
32
29
|
class BlobLocationComputer(object):
|
|
@@ -54,10 +51,10 @@ class BlobLocationComputer(object):
|
|
|
54
51
|
data_path: Union[str, os.PathLike],
|
|
55
52
|
verbose: Optional[bool] = True,
|
|
56
53
|
gpu: Optional[bool] = True,
|
|
57
|
-
batch_size:
|
|
54
|
+
batch_size: int = 2500,
|
|
58
55
|
save_dir: Optional[Union[str, os.PathLike]] = None,
|
|
59
56
|
smoothing: Optional[str] = None,
|
|
60
|
-
multiprocessing:
|
|
57
|
+
multiprocessing: bool = False):
|
|
61
58
|
|
|
62
59
|
|
|
63
60
|
if os.path.isdir(data_path):
|
|
@@ -122,5 +119,13 @@ class BlobLocationComputer(object):
|
|
|
122
119
|
if self.verbose:
|
|
123
120
|
stdout_success(f'Video blob detection complete for {len(self.data_paths)} video', elapsed_time=timer.elapsed_time_str)
|
|
124
121
|
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
125
130
|
# x = BlobLocationComputer(data_path=r"C:\troubleshooting\RAT_NOR\project_folder\videos\2022-06-20_NOB_DOT_4_downsampled.mp4", multiprocessing=True, gpu=True, batch_size=2000, save_dir=r"C:\troubleshooting\RAT_NOR\project_folder\csv\blob_positions", smoothing='Savitzky Golay')
|
|
126
131
|
# x.run()
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
from shapely.geometry import Polygon, MultiPolygon
|
|
2
|
+
from shapely.affinity import scale
|
|
3
|
+
from typing import Dict, Optional, Union
|
|
4
|
+
from copy import copy
|
|
5
|
+
import numpy as np
|
|
6
|
+
import cv2
|
|
7
|
+
import os
|
|
8
|
+
import pandas as pd
|
|
9
|
+
from simba.utils.read_write import read_img_batch_from_video_gpu, get_video_meta_data, find_core_cnt, get_fn_ext, read_img_batch_from_video
|
|
10
|
+
from simba.utils.checks import (check_float, check_instance, check_valid_boolean, is_img_bw, check_int, check_nvidea_gpu_available)
|
|
11
|
+
from simba.utils.printing import SimbaTimer
|
|
12
|
+
from simba.utils.errors import NotDirectoryError, FFMPEGCodecGPUError
|
|
13
|
+
import functools
|
|
14
|
+
import multiprocessing
|
|
15
|
+
from simba.utils.enums import Defaults
|
|
16
|
+
|
|
17
|
+
def find_animal_blob_location(imgs: Dict[int, np.ndarray],
|
|
18
|
+
verbose: bool = False,
|
|
19
|
+
video_name: Optional[str] = None,
|
|
20
|
+
inclusion_zone: Optional[Union[Polygon, MultiPolygon,]] = None,
|
|
21
|
+
window_size: Optional[int] = None) -> Dict[int, Dict[str, Union[int, np.ndarray]]]:
|
|
22
|
+
"""
|
|
23
|
+
Helper to find the largest connected component in binary image. E.g., Use to find a "blob" (i.e., animal) within a background subtracted image.
|
|
24
|
+
|
|
25
|
+
.. seealso::
|
|
26
|
+
To create background subtracted videos, use e.g., :func:`simba.video_processors.video_processing.video_bg_subtraction_mp`, or :func:`~simba.video_processors.video_processing.video_bg_subtraction`.
|
|
27
|
+
To get ``img`` dict, use :func:`~simba.utils.read_write.read_img_batch_from_video_gpu` or :func:`~simba.mixins.image_mixin.ImageMixin.read_img_batch_from_video`.
|
|
28
|
+
For relevant notebook, see `BACKGROUND REMOVAL <https://simba-uw-tf-dev.readthedocs.io/en/latest/nb/bg_remove.html>`__.
|
|
29
|
+
|
|
30
|
+
.. important::
|
|
31
|
+
Pass black and white [0, 255] pixel values only, where the foreground is 255 and background is 0.
|
|
32
|
+
|
|
33
|
+
:param Dict[int, np.ndarray] imgs: Dictionary of images where the key is the frame id and the value is an image in np.ndarray format.
|
|
34
|
+
:param bool verbose: If True, prints progress. Default: False.
|
|
35
|
+
:param video_name video_name: The name of the video being processed for interpretable progress msg if ``verbose``.
|
|
36
|
+
:param Optional[Union[Polygon, MultiPolygon]] inclusion_zone: Optional shapely polygon, or multipolygon, restricting where to search for the largest blob. Default: None.
|
|
37
|
+
:param Optional[int] window_size: If not None, then integer representing the size multiplier of the animal geometry in previous frame. If not None, the animal geometry will only be searched for within this geometry.
|
|
38
|
+
:return: Dictionary where the key is the frame id and the value is a 2D array with x and y coordinates.
|
|
39
|
+
:rtype: Dict[int, np.ndarray]
|
|
40
|
+
|
|
41
|
+
:example:
|
|
42
|
+
>>> imgs = read_img_batch_from_video_gpu(video_path=r"C:\troubleshooting\mitra\test\temp\501_MA142_Gi_Saline_0515.mp4", start_frm=0, end_frm=0, black_and_white=True)
|
|
43
|
+
>>> data = find_animal_blob_location(imgs=imgs, window_size=3)
|
|
44
|
+
>>> data = pd.DataFrame.from_dict(data, orient='index')
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
from simba.mixins.geometry_mixin import GeometryMixin
|
|
48
|
+
check_valid_boolean(value=[verbose], source=f'{find_animal_blob_location.__name__} verbose', raise_error=True)
|
|
49
|
+
if inclusion_zone is not None:
|
|
50
|
+
check_instance(source=f'{find_animal_blob_location.__name__} inclusion_zone', instance=inclusion_zone, accepted_types=(MultiPolygon, Polygon,), raise_error=True)
|
|
51
|
+
if window_size is not None:
|
|
52
|
+
check_float(name='window_size', value=window_size, min_value=1.0, raise_error=True)
|
|
53
|
+
results, prior_window = {}, None
|
|
54
|
+
for frm_idx, img in imgs.items():
|
|
55
|
+
if verbose:
|
|
56
|
+
if video_name is None: print(f'Finding blob in image {frm_idx}...')
|
|
57
|
+
else: print(f'Finding blob in image {frm_idx} (Video {video_name})...')
|
|
58
|
+
is_img_bw(img=img, raise_error=True, source=f'{find_animal_blob_location.__name__} {frm_idx}')
|
|
59
|
+
contours = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[1]
|
|
60
|
+
contours = [cnt.reshape(1, -1, 2) for cnt in contours if len(cnt) >= 3]
|
|
61
|
+
geometries = GeometryMixin().contours_to_geometries(contours=contours, force_rectangles=False)
|
|
62
|
+
if inclusion_zone is not None:
|
|
63
|
+
geo_idx = [inclusion_zone.contains(x.centroid) for x in geometries]
|
|
64
|
+
selected_polygons = [geometries[i] for i in geo_idx]
|
|
65
|
+
geometries = copy(selected_polygons)
|
|
66
|
+
if prior_window is not None:
|
|
67
|
+
geo_idx = [prior_window.contains(x.centroid) for x in geometries]
|
|
68
|
+
selected_polygons = [geometries[i] for i in geo_idx]
|
|
69
|
+
geometries = copy(selected_polygons)
|
|
70
|
+
geometry_stats = GeometryMixin().get_shape_statistics(shapes=geometries)
|
|
71
|
+
geometry = geometries[np.argmax(np.array(geometry_stats['areas']))].convex_hull.simplify(tolerance=5)
|
|
72
|
+
if window_size is not None:
|
|
73
|
+
window_geometry = GeometryMixin.minimum_rotated_rectangle(shape=geometry)
|
|
74
|
+
prior_window = scale(window_geometry, xfact=window_size, yfact=window_size, origin=window_geometry.centroid)
|
|
75
|
+
center = np.array(geometry.centroid.coords)[0].astype(np.int32)
|
|
76
|
+
vertices = np.array(geometry.exterior.coords).astype(np.int32)
|
|
77
|
+
results[frm_idx] = {'x': center[0], 'y': center[1], 'vertices': vertices}
|
|
78
|
+
return results
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def get_blob_locations(video_path: Union[str, os.PathLike],
|
|
82
|
+
batch_size: int = 3000,
|
|
83
|
+
gpu: bool = False,
|
|
84
|
+
verbose: bool = True,
|
|
85
|
+
save_path: Optional[Union[str, os.PathLike]] = None,
|
|
86
|
+
inclusion_zone: Optional[Union[Polygon, MultiPolygon]] = None,
|
|
87
|
+
window_size: Optional[float] = None) -> Union[None, pd.DataFrame]:
|
|
88
|
+
"""
|
|
89
|
+
Detects the location of the largest blob in each frame of a video. Processes frames in batches and optionally uses GPU for acceleration. Results can be saved to a specified path or returned as a NumPy array.
|
|
90
|
+
.. seealso::
|
|
91
|
+
For visualization of results, see :func:`simba.plotting.blob_plotter.BlobPlotter` and :func:`simba.mixins.plotting_mixin.PlottingMixin._plot_blobs`
|
|
92
|
+
Background subtraction can be performed using :func:`~simba.video_processors.video_processing.video_bg_subtraction_mp` or :func:`~simba.video_processors.video_processing.video_bg_subtraction`.
|
|
93
|
+
.. note::
|
|
94
|
+
In ``inclusion_zones`` is not None, then the largest blob will be searches for **inside** the passed vertices.
|
|
95
|
+
:param Union[str, os.PathLike] video_path: Path to the video file from which to extract frames. Often, a background subtracted video, which can be created with e.g., :func:`simba.video_processors.video_processing.video_bg_subtraction_mp`.
|
|
96
|
+
:param Optional[int] batch_size: Number of frames to process in each batch. Default is 3k.
|
|
97
|
+
:param Optional[bool] gpu: Whether to use GPU acceleration for processing. Default is False.
|
|
98
|
+
:param Optional[bool] verbose: Whether to print progress and status messages. Default is True.
|
|
99
|
+
:param Optional[Union[str, os.PathLike]] save_path: Path to save the results as a CSV file. If None, results are not saved.
|
|
100
|
+
:param Optional[Union[Polygon, MultiPolygon]] inclusion_zones: Optional shapely polygon, or multipolygon, restricting where to search for the largest blob. Default: None.
|
|
101
|
+
:param Optional[int] window_size: If not None, then integer representing the size multiplier of the animal geometry in previous frame. If not None, the animal geometry will only be searched for within this geometry.
|
|
102
|
+
:return: A dataframe shape (N, 4) where N is the number of frames, containing the X and Y coordinates of the centroid of the largest blob in each frame and the vertices representing the hull. If `save_path` is provided, returns None.
|
|
103
|
+
:rtype: Union[None, pd.DataFrame]
|
|
104
|
+
:example:
|
|
105
|
+
>>> x = ImageMixin.get_blob_locations(video_path=r"/mnt/c/troubleshooting/RAT_NOR/project_folder/videos/2022-06-20_NOB_DOT_4_downsampled_bg_subtracted.mp4", gpu=True)
|
|
106
|
+
>>> y = ImageMixin.get_blob_locations(video_path=r"C:\troubleshooting\RAT_NOR\project_folder\videos\2022-06-20_NOB_IOT_1_bg_subtracted.mp4", gpu=True)
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
timer = SimbaTimer(start=True)
|
|
111
|
+
video_meta = get_video_meta_data(video_path=video_path)
|
|
112
|
+
_, video_name, _ = get_fn_ext(filepath=video_path)
|
|
113
|
+
check_int(name=f'{get_blob_locations.__name__} batch_size', value=batch_size, min_value=1)
|
|
114
|
+
if batch_size > video_meta['frame_count']: batch_size = video_meta['frame_count']
|
|
115
|
+
if save_path is not None:
|
|
116
|
+
if not os.path.isdir(os.path.dirname(save_path)):
|
|
117
|
+
raise NotDirectoryError(msg=f'Directory path {os.path.dirname(save_path)} is not a valid directory', source=get_blob_locations.__name__)
|
|
118
|
+
check_valid_boolean(value=gpu, source=f'{get_blob_locations.__name__} gpu')
|
|
119
|
+
check_valid_boolean(value=verbose, source=f'{get_blob_locations.__name__} verbose')
|
|
120
|
+
if gpu and not check_nvidea_gpu_available():
|
|
121
|
+
raise FFMPEGCodecGPUError(msg='No GPU detected, try to set GPU to False', source=get_blob_locations.__name__)
|
|
122
|
+
if inclusion_zone is not None:
|
|
123
|
+
check_instance(source=f'{get_blob_locations} inclusion_zone', instance=inclusion_zone, accepted_types=(MultiPolygon, Polygon,), raise_error=True)
|
|
124
|
+
if window_size is not None:
|
|
125
|
+
check_float(name='window_size', value=window_size, min_value=1.0, raise_error=True)
|
|
126
|
+
frame_ids = list(range(0, video_meta['frame_count']))
|
|
127
|
+
frame_ids = [frame_ids[i:i + batch_size] for i in range(0, len(frame_ids), batch_size)]
|
|
128
|
+
core_cnt = find_core_cnt()[0]
|
|
129
|
+
results = {}
|
|
130
|
+
if verbose:
|
|
131
|
+
print('Starting blob location detection...')
|
|
132
|
+
for frame_batch in range(len(frame_ids)):
|
|
133
|
+
start_frm, end_frm = frame_ids[frame_batch][0], frame_ids[frame_batch][-1]
|
|
134
|
+
if gpu:
|
|
135
|
+
imgs = read_img_batch_from_video_gpu(video_path=video_path, start_frm=start_frm, end_frm=end_frm, verbose=False, out_format='array', black_and_white=True)
|
|
136
|
+
else:
|
|
137
|
+
imgs = read_img_batch_from_video(video_path=video_path, start_frm=start_frm, end_frm=end_frm, verbose=False, black_and_white=True)
|
|
138
|
+
keys = np.arange(start_frm, end_frm+1)
|
|
139
|
+
img_dict = {}
|
|
140
|
+
for cnt, img_id in enumerate(range(start_frm, end_frm+1)):
|
|
141
|
+
img_dict[img_id] = imgs[cnt]
|
|
142
|
+
batch_results = {}
|
|
143
|
+
img_dict = [{k: img_dict[k] for k in subset} for subset in np.array_split(keys, core_cnt)]
|
|
144
|
+
del imgs
|
|
145
|
+
with multiprocessing.Pool(core_cnt, maxtasksperchild=Defaults.LARGE_MAX_TASK_PER_CHILD.value) as pool:
|
|
146
|
+
constants = functools.partial(find_animal_blob_location,
|
|
147
|
+
verbose=verbose,
|
|
148
|
+
video_name=video_name,
|
|
149
|
+
inclusion_zone=inclusion_zone)
|
|
150
|
+
for cnt, result in enumerate(pool.imap(constants, img_dict, chunksize=1)):
|
|
151
|
+
batch_results.update(result)
|
|
152
|
+
results.update(batch_results)
|
|
153
|
+
pool.join()
|
|
154
|
+
pool.terminate()
|
|
155
|
+
results = dict(sorted(results.items()))
|
|
156
|
+
results = pd.DataFrame.from_dict(data=results, orient='index', columns=['x', 'y', 'vertices'])
|
|
157
|
+
if save_path is not None:
|
|
158
|
+
results.to_csv(save_path)
|
|
159
|
+
else:
|
|
160
|
+
return results
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
if __name__ == "__main__":
|
|
166
|
+
get_blob_locations(video_path=r"C:\troubleshooting\mitra\test\temp\501_MA142_Gi_Saline_0515.mp4", gpu=False, save_path=r'C:\troubleshooting\mitra\test\blob_data\501_MA142_Gi_Saline_0515.csv')
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
#
|
|
171
|
+
# imgs = read_img_batch_from_video_gpu(video_path=r"C:\troubleshooting\mitra\test\temp\501_MA142_Gi_Saline_0515.mp4", start_frm=0, end_frm=0, black_and_white=True)
|
|
172
|
+
# data = find_animal_blob_location(imgs=imgs, window_size=3)
|
|
173
|
+
# data = pd.DataFrame.from_dict(data, orient='index')
|
|
@@ -3833,9 +3833,6 @@ class GeometryMixin(object):
|
|
|
3833
3833
|
lengths.append(length)
|
|
3834
3834
|
widths.append(width)
|
|
3835
3835
|
areas.append(area)
|
|
3836
|
-
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
3836
|
centers.append(list(np.array(shape.centroid.coords)[0].astype(np.int32)))
|
|
3840
3837
|
|
|
3841
3838
|
return {'lengths': lengths, 'widths': widths, 'areas': areas, 'centers': centers, 'max_length': max_length, 'min_length': min_length, 'min_width': min_width, 'max_width': max_width, 'min_area': min_area, 'max_area': max_area}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import platform
|
|
2
2
|
from typing import Dict, List, Optional, Tuple, Union
|
|
3
|
-
|
|
4
3
|
import numpy as np
|
|
5
|
-
|
|
6
4
|
try:
|
|
7
5
|
from typing import Literal
|
|
8
6
|
except:
|
|
@@ -16,7 +14,7 @@ from collections import ChainMap
|
|
|
16
14
|
import cv2
|
|
17
15
|
import pandas as pd
|
|
18
16
|
from numba import float64, int64, jit, njit, prange, uint8
|
|
19
|
-
from shapely.geometry import Polygon
|
|
17
|
+
from shapely.geometry import Polygon, MultiPolygon
|
|
20
18
|
from skimage.metrics import structural_similarity
|
|
21
19
|
|
|
22
20
|
from simba.utils.checks import (check_file_exist_and_readable, check_float,
|
|
@@ -31,12 +29,8 @@ from simba.utils.errors import (ArrayError, FFMPEGCodecGPUError,
|
|
|
31
29
|
FrameRangeError, InvalidInputError,
|
|
32
30
|
NotDirectoryError)
|
|
33
31
|
from simba.utils.printing import SimbaTimer, stdout_success
|
|
34
|
-
from simba.utils.read_write import (find_core_cnt,
|
|
35
|
-
|
|
36
|
-
find_largest_blob_location, get_fn_ext,
|
|
37
|
-
get_video_meta_data, read_frm_of_video,
|
|
38
|
-
read_img_batch_from_video_gpu, write_df)
|
|
39
|
-
|
|
32
|
+
from simba.utils.read_write import (find_core_cnt, find_files_of_filetypes_in_directory, get_fn_ext, get_video_meta_data, read_frm_of_video, read_img_batch_from_video_gpu, write_df)
|
|
33
|
+
from simba.data_processors.find_animal_blob_location import find_animal_blob_location
|
|
40
34
|
|
|
41
35
|
class ImageMixin(object):
|
|
42
36
|
"""
|
|
@@ -948,7 +942,7 @@ class ImageMixin(object):
|
|
|
948
942
|
return results.astype(int64)
|
|
949
943
|
|
|
950
944
|
@staticmethod
|
|
951
|
-
def _read_img_batch_from_video_helper(frm_idx: np.ndarray, video_path: Union[str, os.PathLike], greyscale: bool, verbose: bool):
|
|
945
|
+
def _read_img_batch_from_video_helper(frm_idx: np.ndarray, video_path: Union[str, os.PathLike], greyscale: bool, verbose: bool, black_and_white: bool):
|
|
952
946
|
|
|
953
947
|
"""Multiprocess helper used by read_img_batch_from_video to read in images from video file."""
|
|
954
948
|
start_idx, end_frm, current_frm = frm_idx[0], frm_idx[-1] + 1, frm_idx[0]
|
|
@@ -959,8 +953,10 @@ class ImageMixin(object):
|
|
|
959
953
|
if verbose:
|
|
960
954
|
print(f'Reading frame idx {current_frm}...')
|
|
961
955
|
img = cap.read()[1]
|
|
962
|
-
if greyscale:
|
|
956
|
+
if greyscale or black_and_white:
|
|
963
957
|
img = ImageMixin.img_to_greyscale(img=img)
|
|
958
|
+
if black_and_white:
|
|
959
|
+
img = np.where(img > 127, 255, 0).astype(np.uint8)
|
|
964
960
|
results[current_frm] = img
|
|
965
961
|
current_frm += 1
|
|
966
962
|
return results
|
|
@@ -969,20 +965,26 @@ class ImageMixin(object):
|
|
|
969
965
|
def read_img_batch_from_video(video_path: Union[str, os.PathLike],
|
|
970
966
|
start_frm: int,
|
|
971
967
|
end_frm: int,
|
|
972
|
-
greyscale:
|
|
973
|
-
|
|
974
|
-
|
|
968
|
+
greyscale: bool = False,
|
|
969
|
+
black_and_white: bool = False,
|
|
970
|
+
core_cnt: int = -1,
|
|
971
|
+
verbose: bool = False) -> Dict[int, np.ndarray]:
|
|
975
972
|
"""
|
|
976
973
|
Read a batch of frames from a video file. This method reads frames from a specified range of frames within a video file using multiprocessing.
|
|
977
974
|
|
|
978
975
|
.. seealso::
|
|
979
976
|
For GPU acceleration, see :func:`simba.utils.read_write.read_img_batch_from_video_gpu`
|
|
980
977
|
|
|
978
|
+
.. note::
|
|
979
|
+
When black-and-white videos are saved as MP4, there can be some small errors in pixel values during compression. A video with only (0, 255) pixel values therefore gets other pixel values, around 0 and 255, when read in again.
|
|
980
|
+
If you expect that the video you are reading in is black and white, set ``black_and_white`` to True to round any of these wonly value sto 0 and 255.
|
|
981
|
+
|
|
981
982
|
:param Union[str, os.PathLike] video_path: Path to the video file.
|
|
982
983
|
:param int start_frm: Starting frame index.
|
|
983
984
|
:param int end_frm: Ending frame index.
|
|
984
985
|
:param Optionalint] core_cnt: Number of CPU cores to use for parallel processing. Default is -1, indicating using all available cores.
|
|
985
986
|
:param Optional[bool] greyscale: If True, reads the images as greyscale. If False, then as original color scale. Default: False.
|
|
987
|
+
:param bool black_and_white: If True, returns the images in black and white. Default False.
|
|
986
988
|
:returns: A dictionary containing frame indices as keys and corresponding frame arrays as values.
|
|
987
989
|
:rtype: Dict[int, np.ndarray]
|
|
988
990
|
|
|
@@ -998,7 +1000,7 @@ class ImageMixin(object):
|
|
|
998
1000
|
check_int(name=ImageMixin().__class__.__name__,value=start_frm, min_value=0,max_value=video_meta_data["frame_count"])
|
|
999
1001
|
check_int(name=ImageMixin().__class__.__name__, value=end_frm, min_value=start_frm+1, max_value=video_meta_data["frame_count"])
|
|
1000
1002
|
check_int(name=ImageMixin().__class__.__name__, value=core_cnt, min_value=-1)
|
|
1001
|
-
check_valid_boolean(value=[greyscale], source=f'{ImageMixin().__class__.__name__} greyscale')
|
|
1003
|
+
check_valid_boolean(value=[greyscale, black_and_white], source=f'{ImageMixin().__class__.__name__} greyscale black_and_white')
|
|
1002
1004
|
if core_cnt < 0:
|
|
1003
1005
|
core_cnt = multiprocessing.cpu_count()
|
|
1004
1006
|
if end_frm <= start_frm:
|
|
@@ -1006,7 +1008,7 @@ class ImageMixin(object):
|
|
|
1006
1008
|
frm_lst = np.array_split(np.arange(start_frm, end_frm + 1), core_cnt)
|
|
1007
1009
|
results = {}
|
|
1008
1010
|
with multiprocessing.Pool(core_cnt, maxtasksperchild=Defaults.LARGE_MAX_TASK_PER_CHILD.value) as pool:
|
|
1009
|
-
constants = functools.partial(ImageMixin()._read_img_batch_from_video_helper, video_path=video_path, greyscale=greyscale, verbose=verbose)
|
|
1011
|
+
constants = functools.partial(ImageMixin()._read_img_batch_from_video_helper, video_path=video_path, greyscale=greyscale, black_and_white=black_and_white, verbose=verbose)
|
|
1010
1012
|
for cnt, result in enumerate(pool.imap(constants, frm_lst, chunksize=1)):
|
|
1011
1013
|
results.update(result)
|
|
1012
1014
|
|
|
@@ -1717,25 +1719,30 @@ class ImageMixin(object):
|
|
|
1717
1719
|
|
|
1718
1720
|
@staticmethod
|
|
1719
1721
|
def get_blob_locations(video_path: Union[str, os.PathLike],
|
|
1720
|
-
batch_size:
|
|
1721
|
-
gpu:
|
|
1722
|
-
verbose:
|
|
1723
|
-
save_path: Optional[Union[str, os.PathLike]] = None
|
|
1722
|
+
batch_size: int = 3000,
|
|
1723
|
+
gpu: bool = False,
|
|
1724
|
+
verbose: bool = True,
|
|
1725
|
+
save_path: Optional[Union[str, os.PathLike]] = None,
|
|
1726
|
+
inclusion_zone: Optional[Union[Polygon, MultiPolygon]] = None,
|
|
1727
|
+
window_size: Optional[float] = None) -> Union[None, np.ndarray]:
|
|
1724
1728
|
"""
|
|
1725
|
-
Detects the location of the largest blob in each frame of a video. Processes frames in batches and
|
|
1726
|
-
optionally uses GPU for acceleration. Results can be saved to a specified path or returned as a NumPy array.
|
|
1729
|
+
Detects the location of the largest blob in each frame of a video. Processes frames in batches and optionally uses GPU for acceleration. Results can be saved to a specified path or returned as a NumPy array.
|
|
1727
1730
|
|
|
1728
1731
|
.. seealso::
|
|
1729
1732
|
For visualization of results, see :func:`simba.plotting.blob_plotter.BlobPlotter` and :func:`simba.mixins.plotting_mixin.PlottingMixin._plot_blobs`
|
|
1733
|
+
Background subtraction can be performed using :func:`~simba.video_processors.video_processing.video_bg_subtraction_mp` or :func:`~simba.video_processors.video_processing.video_bg_subtraction`.
|
|
1734
|
+
|
|
1735
|
+
.. note::
|
|
1736
|
+
In ``inclusion_zones`` is not None, then the largest blob will be searches for **inside** the passed vertices.
|
|
1730
1737
|
|
|
1731
|
-
:param Union[str, os.PathLike] video_path: Path to the video file from which to extract frames.
|
|
1732
|
-
:param Optional[int] batch_size: Number of frames to process in each batch. Default is
|
|
1738
|
+
:param Union[str, os.PathLike] video_path: Path to the video file from which to extract frames. Often, a background subtracted video, which can be created with e.g., :func:`simba.video_processors.video_processing.video_bg_subtraction_mp`.
|
|
1739
|
+
:param Optional[int] batch_size: Number of frames to process in each batch. Default is 3k.
|
|
1733
1740
|
:param Optional[bool] gpu: Whether to use GPU acceleration for processing. Default is False.
|
|
1734
1741
|
:param Optional[bool] verbose: Whether to print progress and status messages. Default is True.
|
|
1735
1742
|
:param Optional[Union[str, os.PathLike]] save_path: Path to save the results as a CSV file. If None, results are not saved.
|
|
1736
|
-
|
|
1737
|
-
:
|
|
1738
|
-
|
|
1743
|
+
:param Optional[Union[Polygon, MultiPolygon]] inclusion_zones: Optional shapely polygon, or multipolygon, restricting where to search for the largest blob. Default: None.
|
|
1744
|
+
:param Optional[int] window_size: If not None, then integer representing the size multiplier of the animal geometry in previous frame. If not None, the animal geometry will only be searched for within this geometry.
|
|
1745
|
+
:return: A NumPy array of shape (N, 2) where N is the number of frames, containing the X and Y coordinates of the centroid of the largest blob in each frame. If `save_path` is provided, returns None.
|
|
1739
1746
|
:rtype: Union[None, np.ndarray]
|
|
1740
1747
|
|
|
1741
1748
|
:example:
|
|
@@ -1754,6 +1761,10 @@ class ImageMixin(object):
|
|
|
1754
1761
|
check_valid_boolean(value=gpu, source=f'{ImageMixin.get_blob_locations.__name__} verbose')
|
|
1755
1762
|
if gpu and not check_nvidea_gpu_available():
|
|
1756
1763
|
raise FFMPEGCodecGPUError(msg='No GPU detected, try to set GPU to False', source=ImageMixin.get_blob_locations.__name__)
|
|
1764
|
+
if inclusion_zone is not None:
|
|
1765
|
+
check_instance(source=f'{ImageMixin.get_blob_locations} inclusion_zone', instance=inclusion_zone, accepted_types=(MultiPolygon, Polygon,), raise_error=True)
|
|
1766
|
+
if window_size is not None:
|
|
1767
|
+
check_float(name='window_size', value=window_size, min_value=1.0, raise_error=True)
|
|
1757
1768
|
frame_ids = list(range(0, video_meta['frame_count']))
|
|
1758
1769
|
frame_ids = [frame_ids[i:i + batch_size] for i in range(0, len(frame_ids), batch_size)]
|
|
1759
1770
|
core_cnt = find_core_cnt()[0]
|
|
@@ -1763,10 +1774,10 @@ class ImageMixin(object):
|
|
|
1763
1774
|
for frame_batch in range(len(frame_ids)):
|
|
1764
1775
|
start_frm, end_frm = frame_ids[frame_batch][0], frame_ids[frame_batch][-1]
|
|
1765
1776
|
if gpu:
|
|
1766
|
-
imgs = read_img_batch_from_video_gpu(video_path=video_path, start_frm=start_frm, end_frm=end_frm, verbose=False, out_format='array',
|
|
1777
|
+
imgs = read_img_batch_from_video_gpu(video_path=video_path, start_frm=start_frm, end_frm=end_frm, verbose=False, out_format='array', black_and_white=True)
|
|
1767
1778
|
else:
|
|
1768
|
-
imgs = ImageMixin.read_img_batch_from_video(video_path=video_path, start_frm=start_frm, end_frm=end_frm, verbose=verbose)
|
|
1769
|
-
|
|
1779
|
+
imgs = ImageMixin.read_img_batch_from_video(video_path=video_path, start_frm=start_frm, end_frm=end_frm, verbose=verbose, black_and_white=True)
|
|
1780
|
+
imgs = np.stack(list(imgs.values()))
|
|
1770
1781
|
keys = np.arange(start_frm, end_frm+1)
|
|
1771
1782
|
img_dict = {}
|
|
1772
1783
|
for cnt, img_id in enumerate(range(start_frm, end_frm+1)):
|
|
@@ -1775,23 +1786,28 @@ class ImageMixin(object):
|
|
|
1775
1786
|
img_dict = [{k: img_dict[k] for k in subset} for subset in np.array_split(keys, core_cnt)]
|
|
1776
1787
|
del imgs
|
|
1777
1788
|
with multiprocessing.Pool(core_cnt, maxtasksperchild=Defaults.LARGE_MAX_TASK_PER_CHILD.value) as pool:
|
|
1778
|
-
constants = functools.partial(
|
|
1789
|
+
constants = functools.partial(find_animal_blob_location,
|
|
1790
|
+
verbose=verbose,
|
|
1791
|
+
video_name=video_name,
|
|
1792
|
+
inclusion_zone=inclusion_zone)
|
|
1779
1793
|
for cnt, result in enumerate(pool.imap(constants, img_dict, chunksize=1)):
|
|
1780
1794
|
batch_results.update(result)
|
|
1781
1795
|
results.update(batch_results)
|
|
1782
1796
|
pool.join()
|
|
1783
1797
|
pool.terminate()
|
|
1784
|
-
results =
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1798
|
+
results = dict(sorted(results.items()))
|
|
1799
|
+
print(results)
|
|
1800
|
+
# results = list(results.values())
|
|
1801
|
+
# results = np.stack(results, axis=0)
|
|
1802
|
+
# timer.stop_timer()
|
|
1803
|
+
# if save_path:
|
|
1804
|
+
# df = pd.DataFrame(results, columns=['X', 'Y'])
|
|
1805
|
+
# write_df(df=df, file_type=Formats.CSV.value, save_path=save_path)
|
|
1806
|
+
# if verbose:
|
|
1807
|
+
# stdout_success(f'Video {video_meta["video_name"]} blob detection complete, saved at {save_path}', elapsed_time=timer.elapsed_time_str)
|
|
1808
|
+
# else:
|
|
1809
|
+
# stdout_success(f'Video {video_meta["video_name"]} blob detection complete', elapsed_time=timer.elapsed_time_str)
|
|
1810
|
+
# return results.astype(np.int32)
|
|
1795
1811
|
|
|
1796
1812
|
@staticmethod
|
|
1797
1813
|
def is_video_color(video: Union[str, os.PathLike, cv2.VideoCapture]):
|
|
@@ -1859,6 +1875,11 @@ class ImageMixin(object):
|
|
|
1859
1875
|
return results
|
|
1860
1876
|
|
|
1861
1877
|
|
|
1878
|
+
|
|
1879
|
+
|
|
1880
|
+
|
|
1881
|
+
|
|
1882
|
+
|
|
1862
1883
|
#x = ImageMixin.get_blob_locations(video_path=r"C:\troubleshooting\RAT_NOR\project_folder\videos\2022-06-20_NOB_DOT_4_downsampled_bg_subtracted.mp4", gpu=True)
|
|
1863
1884
|
# imgs = ImageMixin().read_all_img_in_dir(dir='/Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/videos/examples')
|
|
1864
1885
|
# imgs = np.stack(imgs.values())
|
|
@@ -1959,3 +1980,7 @@ class ImageMixin(object):
|
|
|
1959
1980
|
#
|
|
1960
1981
|
# ImageMixin.img_matrix_mse(imgs=imgs_stack)
|
|
1961
1982
|
|
|
1983
|
+
|
|
1984
|
+
#if
|
|
1985
|
+
|
|
1986
|
+
#ImageMixin.get_blob_locations(video_path=r"C:\troubleshooting\mitra\test\temp\501_MA142_Gi_Saline_0515.mp4")
|
|
@@ -199,10 +199,6 @@ class NetworkMixin(object):
|
|
|
199
199
|
def graph_current_flow_closeness_centrality(graph: nx.Graph, weights: Optional[str] = "weight"):
|
|
200
200
|
|
|
201
201
|
"""
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
202
|
:example:
|
|
207
203
|
>>> graph = NetworkMixin.create_graph(data={('Animal_1', 'Animal_2'): 1.0, ('Animal_1', 'Animal_3'): 0.2, ('Animal_2', 'Animal_3'): 0.5})
|
|
208
204
|
>>> NetworkMixin().graph_current_flow_closeness_centrality(graph=graph)
|
|
@@ -97,13 +97,16 @@ class SLEAPImporterCSV(ConfigReader, PoseImporterMixin):
|
|
|
97
97
|
if INSTANCE_SCORE in data_df.columns:
|
|
98
98
|
data_df = data_df.drop([INSTANCE_SCORE], axis=1)
|
|
99
99
|
idx = data_df.iloc[:, :2]
|
|
100
|
-
data_unique_tracks = list(idx[TRACK].unique())
|
|
101
100
|
check_that_column_exist(df=idx, column_name=TRACK, file_name=video_name)
|
|
102
|
-
|
|
103
|
-
idx[TRACK] = idx[TRACK].str.replace(r"[^\d.]+", "").astype(int)
|
|
104
|
-
#idx[TRACK] = idx[TRACK].str.replace(r"[^\d.]+", "", regex=True).astype(int)
|
|
101
|
+
data_unique_tracks = list(idx[TRACK].unique())
|
|
105
102
|
if len(data_unique_tracks) != self.animal_cnt:
|
|
106
103
|
raise AnimalNumberError(msg=f'The SLEAP CSV file {video_data["DATA"]} contains data for {len(data_unique_tracks)} tracks (found tracks: {data_unique_tracks}). The SimBA project config says the SimBA project expects data for {self.animal_cnt} animals.')
|
|
104
|
+
if len(data_unique_tracks) == 1:
|
|
105
|
+
idx[TRACK] = 'track_0'; data_unique_tracks = ['track_0']
|
|
106
|
+
|
|
107
|
+
idx[TRACK] = idx[TRACK].fillna(data_unique_tracks[0])
|
|
108
|
+
idx[TRACK] = idx[TRACK].str.replace(r"[^\d.]+", "", regex=True).astype(int)
|
|
109
|
+
|
|
107
110
|
data_df = data_df.iloc[:, 2:].fillna(0)
|
|
108
111
|
if self.animal_cnt > 1:
|
|
109
112
|
self.data_df = pd.DataFrame(self.transpose_multi_animal_table(data=data_df.values, idx=idx.values, animal_cnt=self.animal_cnt))
|
|
@@ -137,6 +140,14 @@ class SLEAPImporterCSV(ConfigReader, PoseImporterMixin):
|
|
|
137
140
|
stdout_success(msg=f"{len(list(self.data_and_videos_lk.keys()))} file(s) imported to the SimBA project {self.input_csv_dir}", source=self.__class__.__name__)
|
|
138
141
|
|
|
139
142
|
|
|
143
|
+
# test = SLEAPImporterCSV(config_path=r"D:\troubleshooting\mitra\project_folder\project_config.ini",
|
|
144
|
+
# data_folder=r'D:\troubleshooting\mitra\raw_tracking_data',
|
|
145
|
+
# id_lst=['Track_0'],
|
|
146
|
+
# interpolation_settings={'type': 'body-parts', 'method': 'linear'},
|
|
147
|
+
# smoothing_settings = {'time_window': 500, 'method': 'gaussian'})
|
|
148
|
+
# test.run()
|
|
149
|
+
|
|
150
|
+
|
|
140
151
|
|
|
141
152
|
|
|
142
153
|
#
|
|
@@ -146,7 +157,7 @@ class SLEAPImporterCSV(ConfigReader, PoseImporterMixin):
|
|
|
146
157
|
# interpolation_settings={'type': 'animals', 'method': 'linear'},
|
|
147
158
|
# smoothing_settings = {'time_window': 500, 'method': 'gaussian'})
|
|
148
159
|
# test.run()
|
|
149
|
-
|
|
160
|
+
#
|
|
150
161
|
|
|
151
162
|
|
|
152
163
|
|