ethograph 0.2.52__tar.gz → 0.2.53__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.
- {ethograph-0.2.52 → ethograph-0.2.53}/.gitignore +2 -2
- {ethograph-0.2.52 → ethograph-0.2.53}/PKG-INFO +1 -1
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/defaults/README.md +7 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/cover_page.py +2 -1
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pygfx_video.py +21 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/video_sync.py +11 -0
- ethograph-0.2.53/ethograph/projects/crowlab/calibration/3D_Analysis_FM.toml +19 -0
- {ethograph-0.2.52 → ethograph-0.2.53/ethograph}/projects/crowlab/mapping.txt +2 -2
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/download.py +2 -1
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/paths.py +62 -13
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph.egg-info/PKG-INFO +1 -1
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph.egg-info/SOURCES.txt +9 -24
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph.egg-info/scm_file_list.json +10 -27
- ethograph-0.2.53/ethograph.egg-info/scm_version.json +8 -0
- ethograph-0.2.53/projects/crowlab/ReadMe.md +1 -0
- ethograph-0.2.53/projects/crowlab/mapping.txt +34 -0
- ethograph-0.2.53/projects/crowlab/mapping_setup_audio.txt +8 -0
- ethograph-0.2.53/projects/crowlab/workflows/01 PES Curation.yaml +48 -0
- ethograph-0.2.53/projects/crowlab/workflows/Freddy_GBM.yaml +43 -0
- ethograph-0.2.53/projects/crowlab/workflows/Ivy_GBM.yaml +47 -0
- ethograph-0.2.53/projects/crowlab/workflows/Poppy_GBM.yaml +43 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/pyproject.toml +1 -1
- ethograph-0.2.52/ethograph.egg-info/scm_version.json +0 -8
- ethograph-0.2.52/projects/crowlab/old config/changepoint_settings_old.yaml +0 -13
- ethograph-0.2.52/projects/crowlab/old config/mapping_Ivy.txt +0 -21
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Crow1_inference_20260330_161224.json +0 -79
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Crow1_inference_20260330_161259.json +0 -80
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Freddy_inference_20260330_160621.json +0 -57
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Freddy_train_20251021_164220.json +0 -64
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Freddy_train_20251021_164220_epoch-100.model +0 -0
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Ivy_CV_20260130_173800.json +0 -111
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Ivy_inference_20260203_092442.json +0 -73
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Ivy_inference_20260204_141527.json +0 -70
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Ivy_inference_20260206_122331.json +0 -80
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Ivy_train_20260202_191138_epoch-100.model +0 -0
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Ivy_train_20260203_153754.json +0 -70
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Poppy_inference_20260312_100707.json +0 -76
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Poppy_inference_20260327_102414.json +0 -78
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Poppy_inference_20260330_140808.json +0 -78
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Poppy_inference_20260402_104151.json +0 -79
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Poppy_train_20260326_190925.json +0 -80
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/Poppy_train_20260331_175332.json +0 -80
- ethograph-0.2.52/projects/crowlab/old config/old segmentation config/ReadMe - model Freddy_train_20251021_164220_epoch-100.txt +0 -1
- ethograph-0.2.52/projects/crowlab/project.yaml +0 -2
- ethograph-0.2.52/projects/crowlab/wizard/CrowBench.ipynb +0 -709
- ethograph-0.2.52/projects/crowlab/wizard/SENTINEL.txt +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/.claude/settings.local.json +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/.gitattributes +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/.github/copilot-instructions.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/.github/workflows/docs_build_and_deploy.yml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/.github/workflows/test_and_deploy.yml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/.readthedocs.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/CLAUDE.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/LICENSE +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/MANIFEST.in +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/README.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/THIRD_PARTY_NOTICES.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/TODO.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/__main__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/samurai/LICENSE +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/samurai/NOTICE.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/samurai/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/samurai/kalman_filter.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/vocalseg/LICENSE +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/vocalseg/NOTICE.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/vocalseg/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/vocalseg/continuity_filtering.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/vocalseg/dynamic_thresholding.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/_vendor/vocalseg/utils.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/assets/icon.ico +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/assets/icon.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/assets/menu.json +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/assets/space/moll2025.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/cli.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/datasets.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/defaults/mapping.txt +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/defaults/octron/octron.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/defaults/segment/segment.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/defaults/spot/spot.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/audio_changepoints.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/bursts.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/changepoints.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/columns.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/energy.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/geometry.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/label_inputs.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/movement.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/neural.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/oscillatory.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/preprocessing.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/features/timeaxis.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/active_panel.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/app_constants.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/app_state.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/birdpark0.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/birdpark1.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/canary.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/cricket0.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/cricket1.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/cricket2.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/lockbox1.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/lockbox2.gif +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/moll1.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/templates/moll2.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/wizard/video_setup_free_running.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/assets/wizard/video_setup_triggered.png +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/audio_clock.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/audio_player.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/box_annotate.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/box_overlay.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_ambiguous_session.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_boris_import.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_box_labelling.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_bulk_labels.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_busy_progress.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_collected_data.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_curation_workflow.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_curator_feedback.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_feature_labels.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_fit.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_function_params.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_keypoint_filter.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_label_gridview.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_label_inconsistencies.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_label_table.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_measure.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_onset_model.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_pose_labelling.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_pose_video_matcher.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_review_histogram.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_screen_recorder.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_select_template.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_session_folder.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_settings.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_skeleton_editor.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_smoothing.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_space_geometry.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_spot_crop.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_tag_sheet.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/dialog_video_grid.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/file_dialogs.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/grid_section_container.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/heatmap_sort.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/individual_colors.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/label_drawing_mixin.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/left_sidebar.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/main_window.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/make_pretty.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/napari.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/notify.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_audiotrace.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_base.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_console.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_container.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_ephystrace.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_heatmap.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_labelribbon.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_lineplot.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_overlay.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_psth.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_radial.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_raster.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_skeleton.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_space.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/plots_spectrogram.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_annotate.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_convert.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_detect.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_detect_preview.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_edit_mixin.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_fill.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_overlay.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_project_mode.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_render.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_second_view.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_static_group.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_suggest.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_tagsheet.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_training_export.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/pose_two_view.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/project.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/proxy_manager.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/raster_render.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/right_context.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/session_folder.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/shortcuts.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/source_popup.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/space_shapes.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/table_filter.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/notebook/discover.py.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/notebook/open.md.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/notebook/parameters.py.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/notebook/timing_offset.py.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/notebook/timing_onsets.py.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/notebook/timing_pulses_free.py.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/notebook/timing_pulses_triggered.py.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/notebook/write_neuroconv.py.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/notebook/write_pair.py.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/templates/wizard_nwb_codegen.j2 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/theme.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/top_bar.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/triangulation.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/unit_events.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/video_manager.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widget_trials.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_bottom_bar.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_changepoints.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_curation.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_data.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_ephys.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_frame_extract.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_help.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_io.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_labels.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_meta.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_navigation.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_plot_settings.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_psth.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/widgets_transform.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_media_files.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_multi_builder.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_multi_codegen.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_multi_tabs.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_multi_timeline.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_multi_trials.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_notebook.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_nwb.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_overview.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_pages.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_single.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/gui/wizard_state.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/audio_extract.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/catalog.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/data_loader.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/dataset.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/derived.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/ephys_loader.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/external_features.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/image_sequence.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/metadata_edit.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/metadata_table.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/nc_drop.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/netcdf.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/nwb_alignment.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/nwb_import.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/overlay_source.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/pairing.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/plot_sources.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/pynapple.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/schema.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/session_layout.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/time_model.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/time_sources.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/trialtree.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/validation.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/video_decode.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/video_feature_files.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/video_probe.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/io/video_proxy.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/boris.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/check_labels.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/confidence.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/converters.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/crowsetta_format.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/curation.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/export.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/exporters/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/exporters/crowlab.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/feature_events.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/intervals.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/label_inputs.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/ml.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/octron_project.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/onset_curves.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/onset_model.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/plots.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/pose_project.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/predictions.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/rescore.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/review_metrics.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/tsv_store.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/labels/workflow.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53/ethograph}/projects/crowlab/ReadMe.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53/ethograph}/projects/crowlab/mapping_setup_audio.txt +0 -0
- {ethograph-0.2.52/projects/crowlab/config → ethograph-0.2.53/ethograph/projects/crowlab}/space/moll2025.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53/ethograph}/projects/crowlab/workflows/01 PES Curation.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53/ethograph}/projects/crowlab/workflows/Freddy_GBM.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53/ethograph}/projects/crowlab/workflows/Ivy_GBM.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53/ethograph}/projects/crowlab/workflows/Poppy_GBM.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/samfill/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/samfill/config.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/samfill/fill.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/samfill/pairing.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/samfill/plan.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/samfill/review.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/samfill/sam.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/samfill/samurai.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/augment.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/config.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/crossval.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dataset.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/LICENSE.APGPL +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/NOTICE.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/colors.txt +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/losses.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/model/asformer.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/model/c2f_tcn.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/model/c2f_transformer.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/model/edtcn.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/model/mlp.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/model/motionbert.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/model/ms_tcn3.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/model/transformer.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/config/training.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/loss/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/loss/asymmetric_loss.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/loss/ms_tcn.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/loss/mse.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/loss/tcc.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/asformer.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/base_model.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/c2f_tcn.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/c2f_tcn_par.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/c2f_transformer.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/c3d.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/edtcn.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/mlp.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/motionbert.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/motionbert_modules.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/ms_tcn.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/ms_tcn_modules.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/model/transformer.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/utils.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/dlc2action/version.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/feral.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/feral_defaults/NOTICE.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/feral_defaults/default_config.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/feral_defaults/presets.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/inference.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/joints.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/LICENSE +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/NOTICE.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/config/defaults.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/generalized_coordinates.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/loss_fn/ECloss.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/loss_fn/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/models/LaDy.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/models/SP.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/models/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/models/dynamics.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/models/graph/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/models/graph/tools.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/lady/models/tcn.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/losses.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/materialise.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/metrics.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/models/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/models/config/rnn.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/models/rnn.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/models/skeleton_graph.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/models/vendored.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/plotting.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/postprocess.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/prediction_sets.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/preprocess.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/project.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/roles.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/samples.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/search.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/sessions.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/LICENSE +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/NOTICE.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/config/defaults.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/models/SP.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/models/SpecScalpel.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/models/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/models/graph/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/models/graph/tools.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/specscalpel/models/tcn.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/train.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/video_features.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/segment/windows.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/shortcuts.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/CREDITS.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/config.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/graph.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/library.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/renderers/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/renderers/base.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/renderers/precomputed.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/shapes.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/state.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/skeleton/templates.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/confidence.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/config.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/crossval.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/dataset.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/LICENSE +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/NOTICE.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/dataset/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/dataset/frame.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/dataset/transform.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/model/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/model/common.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/model/impl/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/model/impl/asformer.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/model/impl/gsm.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/model/impl/tsm.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/model/modules.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/model/shift.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/test_e2e.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/train_e2e.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/util/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/util/dataset.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/util/eval.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/util/io.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/e2espot/util/score.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/features.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/inference.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/metrics.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/msagsm.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/pose_batch.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/prediction_sets.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/project.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/stream.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/spot/vendored.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/triangulate/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/triangulate/calibration.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/triangulate/frame.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/triangulate/geometry.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/triangulate/points.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/triangulate/session.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/arraytools.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/audio.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/configkit.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/device.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/ffmpeg.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/logging.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/nwb.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/qt.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/sequences.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/stream_durations.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/system_check.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/utils/xr_utils.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/video_features/__init__.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/video_features/base.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/video_features/checkpoint/S3D_kinetics400_torchified.pt +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/video_features/extract.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/video_features/frames.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/video_features/plan.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/video_features/s3d.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/video_features/select.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph/video_features/timm_extract.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph.egg-info/dependency_links.txt +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph.egg-info/entry_points.txt +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph.egg-info/requires.txt +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/ethograph.egg-info/top_level.txt +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/examples/README.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/examples/birdpark_dev/birdpark_pose.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/examples/convert_dataset_birdpark.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/examples/convert_dataset_pair24.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/examples/convert_datset_lockbox.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/examples/create_dataset_Moll25.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/examples/create_dataset_cricket.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/examples/segement_s3d_features.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/examples/segment_changepoint_features.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/Bench_neural-decoding.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/Bench_smoothalpha.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/Lit_active-periods.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/Lit_curator-feedback.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/Lit_dlc2action.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/Lit_feralbeast.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/Lit_precise-event-spotting.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/Lit_unsupervised-proposals.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0001-vendor-dlc2action-architectures.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0002-literature-dataset-layout.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0003-advisory-variable-schema.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0004-scripted-not-cli.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0005-search-then-cross-validate.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0006-postprocess-from-gui-settings.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0007-distil-inside-the-vendored-trainer.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0008-features-not-graphs.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0009-extractors-pip-installed-not-vendored.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0009-spikes-as-a-config-transform.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0010-multilabel-targets-are-tracks.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0011-labels-as-inputs-across-branches.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0012-feral-is-an-external-extractor.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0013-no-learned-boundary-model-over-pose.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0013-session-is-a-folder-media-are-absolute.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0014-pose-project-as-two-sessions.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0015-flat-project-folder-and-libraries.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0015-periods-from-thresholds-and-burst-detectors.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/adr/0016-aniposelib-does-the-geometry.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/drafts/pynapple_burst_detection.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/drafts/pynapple_burst_r_to_python.html +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/feedback/audio_clock_dac_timestamps.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/feedback/debug_launcher_clock_patch.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/feedback/ethograph_annotation_feasibility_report.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/feedback/ethograph_windows_author_overview_2026-08-18.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/feedback/processed/ehtograph_feedback_report.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/feedback/processed/handoff_playback_and_video_freeze.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/feedback/reverted_pynapple_trials_timing.diff +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/notes/prototypes/smoothing_ui.html +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/projects/crowlab/sessions.txt +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/projects/neural/decoding.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/projects/paper/labels.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/projects/paper/spot/spot.yaml +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/Developer.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/_sweep.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/bench.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/bench_search.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/bench_videofeat.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/bench_watch.ps1 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/compare.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/dandi/dandi_ibl-brainwide.ipynb.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/dandi/nwb_video_testing.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/describe_sessions.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/docs_changepoint_screenshots.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/docs_mapping_plot.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/docs_sidebar_screenshots.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/docs_smoothing_screenshots.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/ephys/ephys_drift_diagnosis.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/ephys/ephys_loader.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/export_frames.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/export_neural_rate.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/feral/export_feral.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/feral/reinfer_feral.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/feral/run_feral.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/feral/score_feral.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/neuroconv.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/README.md +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/changepoint_bars.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/crossval_bars.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/crossval_label_counts.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/embedding_grid.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/embedding_heatmaps.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/figure_combined.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/figure_neural.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/figure_review.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/figure_review_curves.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/figure_review_speed.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/s3d_ablation_bars.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/session.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/style/style ppt.mplstyle +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/paper1/style/style.mplstyle +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/release.ps1 +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/run.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/run_sleep.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/samfill_batch.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/screenshot_gui.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/spot.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/test.ipynb +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/scripts/train_spot.py +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/setup.cfg +0 -0
- {ethograph-0.2.52 → ethograph-0.2.53}/uv.lock +0 -0
|
@@ -49,3 +49,10 @@ references:
|
|
|
49
49
|
|
|
50
50
|
Add a file to this folder via PR to ship it as a default. The example configs
|
|
51
51
|
must keep loading: `tests/test_unit/test_home_layout.py` builds each one.
|
|
52
|
+
|
|
53
|
+
## Bundled projects (`ethograph/projects/`)
|
|
54
|
+
|
|
55
|
+
Each folder here is a whole project, seeded into `~/.ethograph/{name}/` the
|
|
56
|
+
same way (`seed_bundled_projects`). The repo's `projects/crowlab/` is the
|
|
57
|
+
working copy; `ethograph/projects/crowlab/` is what ships, and a test keeps
|
|
58
|
+
the two equal. `runs/`, `sessions/`, `sessions.txt` and `wizard/` never ship.
|
|
@@ -88,7 +88,7 @@ from ethograph.io.validation import (
|
|
|
88
88
|
VIDEO_EXTENSIONS,
|
|
89
89
|
movement_dataset_info,
|
|
90
90
|
)
|
|
91
|
-
from ethograph.utils.paths import SETTINGS_DIR, defaults_dir, seed_defaults
|
|
91
|
+
from ethograph.utils.paths import SETTINGS_DIR, defaults_dir, seed_bundled_projects, seed_defaults
|
|
92
92
|
|
|
93
93
|
# POSE_SOFTWARES is shared with the pose-overlay prompt in pose_render.
|
|
94
94
|
from .app_constants import POSE_SOFTWARES
|
|
@@ -595,6 +595,7 @@ class CoverPage(QDialog):
|
|
|
595
595
|
if chosen_project_dir(self.app_state) is not None:
|
|
596
596
|
return
|
|
597
597
|
seed_defaults()
|
|
598
|
+
seed_bundled_projects()
|
|
598
599
|
starter = defaults_dir()
|
|
599
600
|
starter.mkdir(parents=True, exist_ok=True)
|
|
600
601
|
self.app_state.project_path = str(starter)
|
|
@@ -17,8 +17,10 @@ Seeking model:
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
19
|
import logging
|
|
20
|
+
import multiprocessing
|
|
20
21
|
import os
|
|
21
22
|
import queue
|
|
23
|
+
import sys
|
|
22
24
|
import time
|
|
23
25
|
from types import MethodType
|
|
24
26
|
from typing import Optional
|
|
@@ -39,6 +41,25 @@ from .pose_overlay import PoseOverlay
|
|
|
39
41
|
logger = logging.getLogger(__name__)
|
|
40
42
|
|
|
41
43
|
|
|
44
|
+
def _spawn_decode_workers_on_macos() -> None:
|
|
45
|
+
"""Start pynaviz's decode worker with ``spawn`` on macOS, as on Windows.
|
|
46
|
+
|
|
47
|
+
pynaviz forces the ``fork`` start method on every non-Windows platform at
|
|
48
|
+
import. Forking a process that already runs Cocoa, Metal/wgpu and libav
|
|
49
|
+
threads is unsupported on macOS: pynaviz's own tests record the worker
|
|
50
|
+
dying with SIGSEGV at start-up because the libav demux thread's mutexes are
|
|
51
|
+
copied locked. A dead worker serves no async seek, so a single-frame step
|
|
52
|
+
moves the playhead but never the picture. ``spawn`` is the path Windows
|
|
53
|
+
already takes; its slow start-up is covered by the cold-decoder bridge in
|
|
54
|
+
:class:`~ethograph.gui.video_sync.VideoSync`.
|
|
55
|
+
"""
|
|
56
|
+
if sys.platform == "darwin":
|
|
57
|
+
multiprocessing.set_start_method("spawn", force=True)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
_spawn_decode_workers_on_macos()
|
|
61
|
+
|
|
62
|
+
|
|
42
63
|
# Heartbeat age past which the render chain is considered dead (see
|
|
43
64
|
# install_animate_guard / nudge_stalled_render). animate() normally re-arms
|
|
44
65
|
# itself every frame, so one full second without a beat is a stall.
|
|
@@ -148,7 +148,18 @@ class VideoSync(QObject):
|
|
|
148
148
|
# leftover marker override from a prior continuous-end segment finish.
|
|
149
149
|
self.marker_time_override = None
|
|
150
150
|
frame = max(0, min(int(frame), self.total_frames - 1)) if self.total_frames else 0
|
|
151
|
+
# Same cold-worker tolerance as playback: an async seek against a
|
|
152
|
+
# worker that has not yet served a frame is dropped, so decode this
|
|
153
|
+
# one in-process too — an arrow step must always show its frame.
|
|
151
154
|
self.view.seek_trial_frame(frame)
|
|
155
|
+
if not self.view.decoder_ready():
|
|
156
|
+
self.view.seek_trial_frame(frame, synchronous=True)
|
|
157
|
+
# The async path presents only through pynaviz's self-re-arming
|
|
158
|
+
# animate chain; the playback watchdog is the only other thing that
|
|
159
|
+
# restarts a dead one, and it does not run while stopped.
|
|
160
|
+
nudge = getattr(self.view, "nudge_render_if_stalled", None)
|
|
161
|
+
if nudge is not None and nudge():
|
|
162
|
+
logger.warning("Video render loop was stalled; re-armed the draw chain on seek.")
|
|
152
163
|
self._apply_frame(frame)
|
|
153
164
|
|
|
154
165
|
def _apply_frame(self, frame: int):
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[cam_0]
|
|
2
|
+
name = "cam-1"
|
|
3
|
+
size = [ 512, 562,]
|
|
4
|
+
matrix = [ [ 515.0444008533133, 0.0, 154.22201617442832,], [ 0.0, 516.1419476946951, 214.07447948182286,], [ 0.0, 0.0, 1.0,],]
|
|
5
|
+
distortions = [ -0.24221547972788354, 0.14346556993892795, -0.00515831655881969, 0.0013725514104746081, -0.05702948956575608,]
|
|
6
|
+
rotation = [ -0.017371108987220343, 0.16771373111094, -0.10326866065634688,]
|
|
7
|
+
translation = [ 0.0, 0.0, 0.0,]
|
|
8
|
+
|
|
9
|
+
[cam_1]
|
|
10
|
+
name = "cam-2"
|
|
11
|
+
size = [ 512, 562,]
|
|
12
|
+
matrix = [ [ 533.4865830454712, 0.0, 374.39479229820057,], [ 0.0, 536.7981372559631, 213.1519682543075,], [ 0.0, 0.0, 1.0,],]
|
|
13
|
+
distortions = [ -0.27059396933244, 0.16683263775789742, -0.004176269919434861, -0.0009247729826822582, -0.05652783562214587,]
|
|
14
|
+
rotation = [ 0.01735481150521321, 0.09175313109782211, -0.08864227449585904,]
|
|
15
|
+
translation = [ -5.728928454834148, 0.5059804012673216, 0.5329275489838221,]
|
|
16
|
+
|
|
17
|
+
[metadata]
|
|
18
|
+
source = "deeplabcut_3d"
|
|
19
|
+
source_folder = "C:\\Users\\aksel\\Documents\\DLC\\3D_Analysis_FM"
|
|
@@ -179,12 +179,13 @@ def ensure_default_configs() -> None:
|
|
|
179
179
|
"""
|
|
180
180
|
import sys
|
|
181
181
|
|
|
182
|
-
from ethograph.utils.paths import ethograph_home, migrate_home_layout, seed_defaults
|
|
182
|
+
from ethograph.utils.paths import ethograph_home, migrate_home_layout, seed_bundled_projects, seed_defaults
|
|
183
183
|
|
|
184
184
|
migrate_home_layout()
|
|
185
185
|
global_dir = ethograph_home()
|
|
186
186
|
global_dir.mkdir(parents=True, exist_ok=True)
|
|
187
187
|
seed_defaults()
|
|
188
|
+
seed_bundled_projects()
|
|
188
189
|
|
|
189
190
|
if sys.platform == "win32":
|
|
190
191
|
internal = global_dir / "_internal"
|
|
@@ -91,6 +91,9 @@ def ethograph_home() -> Path:
|
|
|
91
91
|
# defaults/ a project directory's layout, used while no project
|
|
92
92
|
# is open: mapping.txt, skeleton/, space/, runs/lightgbm/,
|
|
93
93
|
# workflows/, wizard/
|
|
94
|
+
# {name}/ a bundled project (ethograph/projects/{name}/), seeded
|
|
95
|
+
# like defaults/ so a lab's vocabulary, workflows,
|
|
96
|
+
# calibrations and geometries arrive with the install
|
|
94
97
|
#
|
|
95
98
|
# Everything about a *study* is meant to live in a project directory; these
|
|
96
99
|
# are the fallbacks for a session opened without one, in the same shape.
|
|
@@ -146,26 +149,37 @@ def logs_dir() -> Path:
|
|
|
146
149
|
BUNDLED_DEFAULTS_DIR = Path(__file__).resolve().parents[1] / "defaults"
|
|
147
150
|
|
|
148
151
|
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
#: Whole project folders shipped beside the defaults (``ethograph/projects/{name}/``),
|
|
153
|
+
#: each seeded into ``~/.ethograph/{name}/`` by :func:`seed_bundled_projects`.
|
|
154
|
+
BUNDLED_PROJECTS_DIR = Path(__file__).resolve().parents[1] / "projects"
|
|
151
155
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
156
|
+
#: What a bundled project leaves behind: trained runs, session records and the
|
|
157
|
+
#: wizard's folder history are the maintainer's machine, not the project.
|
|
158
|
+
BUNDLED_PROJECT_EXCLUDES = frozenset({"runs", "sessions", "sessions.txt", "wizard"})
|
|
155
159
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
+
|
|
161
|
+
def bundled_project_dir(name: str) -> Path:
|
|
162
|
+
"""``~/.ethograph/{name}`` — where the bundled project *name* is seeded."""
|
|
163
|
+
return ethograph_home() / name
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def _seed_tree(source: Path, dest: Path, skip: frozenset[str]) -> list[Path]:
|
|
167
|
+
"""Copy every file under *source* into *dest* that is not there yet.
|
|
168
|
+
|
|
169
|
+
File by file, so a file added in a later release reaches an existing
|
|
170
|
+
install; a file the user edited is never overwritten. A top-level entry
|
|
171
|
+
named in *skip* is left out entirely.
|
|
160
172
|
"""
|
|
161
173
|
import shutil
|
|
162
174
|
|
|
163
|
-
dest = defaults_dir() if dest is None else dest
|
|
164
175
|
written: list[Path] = []
|
|
165
|
-
for src in sorted(
|
|
166
|
-
if not src.is_file()
|
|
176
|
+
for src in sorted(source.rglob("*")):
|
|
177
|
+
if not src.is_file():
|
|
178
|
+
continue
|
|
179
|
+
rel = src.relative_to(source)
|
|
180
|
+
if rel.parts[0] in skip:
|
|
167
181
|
continue
|
|
168
|
-
target = dest /
|
|
182
|
+
target = dest / rel
|
|
169
183
|
if target.exists():
|
|
170
184
|
continue
|
|
171
185
|
target.parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -174,6 +188,41 @@ def seed_defaults(dest: Path | None = None) -> list[Path]:
|
|
|
174
188
|
return written
|
|
175
189
|
|
|
176
190
|
|
|
191
|
+
def seed_defaults(dest: Path | None = None) -> list[Path]:
|
|
192
|
+
"""Copy every bundled default into *dest* (``defaults_dir()``) that is not there yet.
|
|
193
|
+
|
|
194
|
+
``README.md`` is documentation for the repo, not a default, and is skipped.
|
|
195
|
+
|
|
196
|
+
Returns
|
|
197
|
+
-------
|
|
198
|
+
list of Path
|
|
199
|
+
The files written.
|
|
200
|
+
"""
|
|
201
|
+
dest = defaults_dir() if dest is None else dest
|
|
202
|
+
return _seed_tree(BUNDLED_DEFAULTS_DIR, dest, frozenset({"README.md"}))
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def seed_bundled_projects(home: Path | None = None) -> list[Path]:
|
|
206
|
+
"""Seed every folder of :data:`BUNDLED_PROJECTS_DIR` into ``{home}/{name}/``.
|
|
207
|
+
|
|
208
|
+
Same contract as :func:`seed_defaults`: new files arrive, edited files
|
|
209
|
+
stay. :data:`BUNDLED_PROJECT_EXCLUDES` never leave the package.
|
|
210
|
+
|
|
211
|
+
Returns
|
|
212
|
+
-------
|
|
213
|
+
list of Path
|
|
214
|
+
The files written.
|
|
215
|
+
"""
|
|
216
|
+
home = ethograph_home() if home is None else home
|
|
217
|
+
written: list[Path] = []
|
|
218
|
+
if not BUNDLED_PROJECTS_DIR.is_dir():
|
|
219
|
+
return written
|
|
220
|
+
for project in sorted(BUNDLED_PROJECTS_DIR.iterdir()):
|
|
221
|
+
if project.is_dir() and not project.name.startswith("_"):
|
|
222
|
+
written.extend(_seed_tree(project, home / project.name, BUNDLED_PROJECT_EXCLUDES))
|
|
223
|
+
return written
|
|
224
|
+
|
|
225
|
+
|
|
177
226
|
def migrate_home_layout(home: Path | None = None) -> list[tuple[Path, Path]]:
|
|
178
227
|
"""Move pre-layout folders under ``cache/`` and ``defaults/``.
|
|
179
228
|
|
|
@@ -255,6 +255,15 @@ ethograph/labels/tsv_store.py
|
|
|
255
255
|
ethograph/labels/workflow.py
|
|
256
256
|
ethograph/labels/exporters/__init__.py
|
|
257
257
|
ethograph/labels/exporters/crowlab.py
|
|
258
|
+
ethograph/projects/crowlab/ReadMe.md
|
|
259
|
+
ethograph/projects/crowlab/mapping.txt
|
|
260
|
+
ethograph/projects/crowlab/mapping_setup_audio.txt
|
|
261
|
+
ethograph/projects/crowlab/calibration/3D_Analysis_FM.toml
|
|
262
|
+
ethograph/projects/crowlab/space/moll2025.yaml
|
|
263
|
+
ethograph/projects/crowlab/workflows/01 PES Curation.yaml
|
|
264
|
+
ethograph/projects/crowlab/workflows/Freddy_GBM.yaml
|
|
265
|
+
ethograph/projects/crowlab/workflows/Ivy_GBM.yaml
|
|
266
|
+
ethograph/projects/crowlab/workflows/Poppy_GBM.yaml
|
|
258
267
|
ethograph/samfill/__init__.py
|
|
259
268
|
ethograph/samfill/config.py
|
|
260
269
|
ethograph/samfill/fill.py
|
|
@@ -478,31 +487,7 @@ notes/prototypes/smoothing_ui.html
|
|
|
478
487
|
projects/crowlab/ReadMe.md
|
|
479
488
|
projects/crowlab/mapping.txt
|
|
480
489
|
projects/crowlab/mapping_setup_audio.txt
|
|
481
|
-
projects/crowlab/project.yaml
|
|
482
490
|
projects/crowlab/sessions.txt
|
|
483
|
-
projects/crowlab/config/space/moll2025.yaml
|
|
484
|
-
projects/crowlab/old config/changepoint_settings_old.yaml
|
|
485
|
-
projects/crowlab/old config/mapping_Ivy.txt
|
|
486
|
-
projects/crowlab/old config/old segmentation config/Crow1_inference_20260330_161224.json
|
|
487
|
-
projects/crowlab/old config/old segmentation config/Crow1_inference_20260330_161259.json
|
|
488
|
-
projects/crowlab/old config/old segmentation config/Freddy_inference_20260330_160621.json
|
|
489
|
-
projects/crowlab/old config/old segmentation config/Freddy_train_20251021_164220.json
|
|
490
|
-
projects/crowlab/old config/old segmentation config/Freddy_train_20251021_164220_epoch-100.model
|
|
491
|
-
projects/crowlab/old config/old segmentation config/Ivy_CV_20260130_173800.json
|
|
492
|
-
projects/crowlab/old config/old segmentation config/Ivy_inference_20260203_092442.json
|
|
493
|
-
projects/crowlab/old config/old segmentation config/Ivy_inference_20260204_141527.json
|
|
494
|
-
projects/crowlab/old config/old segmentation config/Ivy_inference_20260206_122331.json
|
|
495
|
-
projects/crowlab/old config/old segmentation config/Ivy_train_20260202_191138_epoch-100.model
|
|
496
|
-
projects/crowlab/old config/old segmentation config/Ivy_train_20260203_153754.json
|
|
497
|
-
projects/crowlab/old config/old segmentation config/Poppy_inference_20260312_100707.json
|
|
498
|
-
projects/crowlab/old config/old segmentation config/Poppy_inference_20260327_102414.json
|
|
499
|
-
projects/crowlab/old config/old segmentation config/Poppy_inference_20260330_140808.json
|
|
500
|
-
projects/crowlab/old config/old segmentation config/Poppy_inference_20260402_104151.json
|
|
501
|
-
projects/crowlab/old config/old segmentation config/Poppy_train_20260326_190925.json
|
|
502
|
-
projects/crowlab/old config/old segmentation config/Poppy_train_20260331_175332.json
|
|
503
|
-
projects/crowlab/old config/old segmentation config/ReadMe - model Freddy_train_20251021_164220_epoch-100.txt
|
|
504
|
-
projects/crowlab/wizard/CrowBench.ipynb
|
|
505
|
-
projects/crowlab/wizard/SENTINEL.txt
|
|
506
491
|
projects/crowlab/workflows/01 PES Curation.yaml
|
|
507
492
|
projects/crowlab/workflows/Freddy_GBM.yaml
|
|
508
493
|
projects/crowlab/workflows/Ivy_GBM.yaml
|
|
@@ -88,7 +88,6 @@
|
|
|
88
88
|
"docs/source/advanced/gui_index.md",
|
|
89
89
|
"docs/source/advanced/index.md",
|
|
90
90
|
"docs/source/advanced/metadata.md",
|
|
91
|
-
"docs/source/advanced/migrating_from_boris.md",
|
|
92
91
|
"docs/source/advanced/playback.md",
|
|
93
92
|
"docs/source/advanced/refinement.md",
|
|
94
93
|
"docs/source/advanced/shortcuts.md",
|
|
@@ -234,6 +233,7 @@
|
|
|
234
233
|
"docs/source/getting_started/your_data/folder_layout.md",
|
|
235
234
|
"docs/source/getting_started/your_data/index.md",
|
|
236
235
|
"docs/source/getting_started/your_data/media_alignment.md",
|
|
236
|
+
"docs/source/getting_started/your_data/migrating_from_boris.md",
|
|
237
237
|
"docs/source/getting_started/your_data/trials.md",
|
|
238
238
|
"docs/source/index.rst",
|
|
239
239
|
"docs/source/models/curation.md",
|
|
@@ -493,6 +493,15 @@
|
|
|
493
493
|
"ethograph/labels/review_metrics.py",
|
|
494
494
|
"ethograph/labels/tsv_store.py",
|
|
495
495
|
"ethograph/labels/workflow.py",
|
|
496
|
+
"ethograph/projects/crowlab/ReadMe.md",
|
|
497
|
+
"ethograph/projects/crowlab/calibration/3D_Analysis_FM.toml",
|
|
498
|
+
"ethograph/projects/crowlab/mapping.txt",
|
|
499
|
+
"ethograph/projects/crowlab/mapping_setup_audio.txt",
|
|
500
|
+
"ethograph/projects/crowlab/space/moll2025.yaml",
|
|
501
|
+
"ethograph/projects/crowlab/workflows/01 PES Curation.yaml",
|
|
502
|
+
"ethograph/projects/crowlab/workflows/Freddy_GBM.yaml",
|
|
503
|
+
"ethograph/projects/crowlab/workflows/Ivy_GBM.yaml",
|
|
504
|
+
"ethograph/projects/crowlab/workflows/Poppy_GBM.yaml",
|
|
496
505
|
"ethograph/samfill/__init__.py",
|
|
497
506
|
"ethograph/samfill/config.py",
|
|
498
507
|
"ethograph/samfill/fill.py",
|
|
@@ -715,33 +724,9 @@
|
|
|
715
724
|
"notes/feedback/reverted_pynapple_trials_timing.diff",
|
|
716
725
|
"notes/prototypes/smoothing_ui.html",
|
|
717
726
|
"projects/crowlab/ReadMe.md",
|
|
718
|
-
"projects/crowlab/config/space/moll2025.yaml",
|
|
719
727
|
"projects/crowlab/mapping.txt",
|
|
720
728
|
"projects/crowlab/mapping_setup_audio.txt",
|
|
721
|
-
"projects/crowlab/old config/changepoint_settings_old.yaml",
|
|
722
|
-
"projects/crowlab/old config/mapping_Ivy.txt",
|
|
723
|
-
"projects/crowlab/old config/old segmentation config/Crow1_inference_20260330_161224.json",
|
|
724
|
-
"projects/crowlab/old config/old segmentation config/Crow1_inference_20260330_161259.json",
|
|
725
|
-
"projects/crowlab/old config/old segmentation config/Freddy_inference_20260330_160621.json",
|
|
726
|
-
"projects/crowlab/old config/old segmentation config/Freddy_train_20251021_164220.json",
|
|
727
|
-
"projects/crowlab/old config/old segmentation config/Freddy_train_20251021_164220_epoch-100.model",
|
|
728
|
-
"projects/crowlab/old config/old segmentation config/Ivy_CV_20260130_173800.json",
|
|
729
|
-
"projects/crowlab/old config/old segmentation config/Ivy_inference_20260203_092442.json",
|
|
730
|
-
"projects/crowlab/old config/old segmentation config/Ivy_inference_20260204_141527.json",
|
|
731
|
-
"projects/crowlab/old config/old segmentation config/Ivy_inference_20260206_122331.json",
|
|
732
|
-
"projects/crowlab/old config/old segmentation config/Ivy_train_20260202_191138_epoch-100.model",
|
|
733
|
-
"projects/crowlab/old config/old segmentation config/Ivy_train_20260203_153754.json",
|
|
734
|
-
"projects/crowlab/old config/old segmentation config/Poppy_inference_20260312_100707.json",
|
|
735
|
-
"projects/crowlab/old config/old segmentation config/Poppy_inference_20260327_102414.json",
|
|
736
|
-
"projects/crowlab/old config/old segmentation config/Poppy_inference_20260330_140808.json",
|
|
737
|
-
"projects/crowlab/old config/old segmentation config/Poppy_inference_20260402_104151.json",
|
|
738
|
-
"projects/crowlab/old config/old segmentation config/Poppy_train_20260326_190925.json",
|
|
739
|
-
"projects/crowlab/old config/old segmentation config/Poppy_train_20260331_175332.json",
|
|
740
|
-
"projects/crowlab/old config/old segmentation config/ReadMe - model Freddy_train_20251021_164220_epoch-100.txt",
|
|
741
|
-
"projects/crowlab/project.yaml",
|
|
742
729
|
"projects/crowlab/sessions.txt",
|
|
743
|
-
"projects/crowlab/wizard/CrowBench.ipynb",
|
|
744
|
-
"projects/crowlab/wizard/SENTINEL.txt",
|
|
745
730
|
"projects/crowlab/workflows/01 PES Curation.yaml",
|
|
746
731
|
"projects/crowlab/workflows/Freddy_GBM.yaml",
|
|
747
732
|
"projects/crowlab/workflows/Ivy_GBM.yaml",
|
|
@@ -797,9 +782,7 @@
|
|
|
797
782
|
"scripts/test.ipynb",
|
|
798
783
|
"scripts/train_spot.py",
|
|
799
784
|
"tests/__init__.py",
|
|
800
|
-
"tests/_test_boris_gui_smoke.py",
|
|
801
785
|
"tests/_test_burst_r_reference.py",
|
|
802
|
-
"tests/_test_gutter_probe.py",
|
|
803
786
|
"tests/conftest.py",
|
|
804
787
|
"tests/old_tests/README.md",
|
|
805
788
|
"tests/old_tests/test_box_labelling.py",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
These configs are internal to crowlab, not relevant for general ethograph users.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
0 background 0
|
|
2
|
+
1 pullOutStick 0
|
|
3
|
+
2 diagonalToBox 0
|
|
4
|
+
3 toss 0
|
|
5
|
+
4 swoop 0
|
|
6
|
+
5 reachLeftCorner 0
|
|
7
|
+
6 right 0
|
|
8
|
+
7 pullOutAlongWall 0
|
|
9
|
+
8 swoopOut 0
|
|
10
|
+
9 stickToDisp 0
|
|
11
|
+
10 stickInDisp 0
|
|
12
|
+
11 lookToPellet 0
|
|
13
|
+
12 snapPellet 0
|
|
14
|
+
13 eat 0
|
|
15
|
+
14 reachRightCorner 0
|
|
16
|
+
15 nodding 0
|
|
17
|
+
16 beakToDisp 0
|
|
18
|
+
17 stickInDispTwo 0
|
|
19
|
+
18 loseStick 0
|
|
20
|
+
19 pickUpStick 0
|
|
21
|
+
20 shake 0
|
|
22
|
+
21 shiftRight 0
|
|
23
|
+
22 shiftLeft 0
|
|
24
|
+
23 pullOutLeft 0
|
|
25
|
+
24 swoopOutLeft 0
|
|
26
|
+
25 lookgToFallingPellet 0
|
|
27
|
+
26 postNod 0
|
|
28
|
+
27 reachRightCornerInTwo 0
|
|
29
|
+
31 pelletStickFirstContact 1 point
|
|
30
|
+
32 pelletStickLastContact 1 point
|
|
31
|
+
33 pelletStickContact 1
|
|
32
|
+
34 pelletReady 1
|
|
33
|
+
35 pelletBeakContact 1
|
|
34
|
+
50 stimulation 0
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: 01 PES Curation
|
|
2
|
+
description: ''
|
|
3
|
+
steps:
|
|
4
|
+
- kind: filter_trials
|
|
5
|
+
params:
|
|
6
|
+
filters:
|
|
7
|
+
- column: num_pellets
|
|
8
|
+
values:
|
|
9
|
+
- '1'
|
|
10
|
+
- '2'
|
|
11
|
+
- column: poscat
|
|
12
|
+
values:
|
|
13
|
+
- '1'
|
|
14
|
+
- '3'
|
|
15
|
+
clear_first: true
|
|
16
|
+
- kind: delete_labels
|
|
17
|
+
params:
|
|
18
|
+
which: hidden
|
|
19
|
+
label_ids:
|
|
20
|
+
- 31
|
|
21
|
+
- 32
|
|
22
|
+
- kind: scope
|
|
23
|
+
params:
|
|
24
|
+
label_ids:
|
|
25
|
+
- 31
|
|
26
|
+
- 32
|
|
27
|
+
mode: frame
|
|
28
|
+
- kind: label_grid
|
|
29
|
+
params:
|
|
30
|
+
cameras:
|
|
31
|
+
- cam-1
|
|
32
|
+
methods: automated
|
|
33
|
+
columns: 3
|
|
34
|
+
window_s: 0.5
|
|
35
|
+
panels:
|
|
36
|
+
- feature: pellet_stickClosest_dist
|
|
37
|
+
selections:
|
|
38
|
+
individual: Freddy
|
|
39
|
+
keypoint: beakTip
|
|
40
|
+
s3d_dims: '0'
|
|
41
|
+
space: x
|
|
42
|
+
title: pellet_stickClosest_dist
|
|
43
|
+
axis_auto: true
|
|
44
|
+
skip_video: true
|
|
45
|
+
threshold: 0.6
|
|
46
|
+
grid_mode: uncurate
|
|
47
|
+
mark_flagged: false
|
|
48
|
+
generate: true
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Freddy_GBM
|
|
2
|
+
description: ''
|
|
3
|
+
steps:
|
|
4
|
+
- kind: filter_trials
|
|
5
|
+
params:
|
|
6
|
+
filters:
|
|
7
|
+
- column: num_pellets
|
|
8
|
+
values:
|
|
9
|
+
- '1'
|
|
10
|
+
- '2'
|
|
11
|
+
clear_first: true
|
|
12
|
+
- kind: predict
|
|
13
|
+
params:
|
|
14
|
+
model: pelletContact_Freddy
|
|
15
|
+
individual: Freddy
|
|
16
|
+
min_confidence: 0.005
|
|
17
|
+
- kind: scope
|
|
18
|
+
params:
|
|
19
|
+
label_ids:
|
|
20
|
+
- 31
|
|
21
|
+
- 32
|
|
22
|
+
mode: frame
|
|
23
|
+
- kind: label_grid
|
|
24
|
+
params:
|
|
25
|
+
cameras:
|
|
26
|
+
- cam-1
|
|
27
|
+
methods: automated
|
|
28
|
+
columns: 3
|
|
29
|
+
window_s: 0.3
|
|
30
|
+
panels:
|
|
31
|
+
- feature: pellet_stickClosest_dist
|
|
32
|
+
selections:
|
|
33
|
+
individual: Freddy
|
|
34
|
+
keypoint: beakTip
|
|
35
|
+
s3d_dims: '0'
|
|
36
|
+
space: x
|
|
37
|
+
title: pellet_stickClosest_dist
|
|
38
|
+
axis_auto: true
|
|
39
|
+
skip_video: true
|
|
40
|
+
threshold: 0.8
|
|
41
|
+
grid_mode: uncurate
|
|
42
|
+
mark_flagged: false
|
|
43
|
+
generate: true
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Ivy_GBM
|
|
2
|
+
description: ''
|
|
3
|
+
steps:
|
|
4
|
+
- kind: filter_trials
|
|
5
|
+
params:
|
|
6
|
+
filters:
|
|
7
|
+
- column: num_pellets
|
|
8
|
+
values:
|
|
9
|
+
- '1'
|
|
10
|
+
- '2'
|
|
11
|
+
- column: poscat
|
|
12
|
+
values:
|
|
13
|
+
- '1'
|
|
14
|
+
- '3'
|
|
15
|
+
clear_first: true
|
|
16
|
+
- kind: predict
|
|
17
|
+
params:
|
|
18
|
+
model: pelletContact_Ivy2
|
|
19
|
+
individual: Ivy
|
|
20
|
+
min_confidence: 0.0
|
|
21
|
+
- kind: scope
|
|
22
|
+
params:
|
|
23
|
+
label_ids:
|
|
24
|
+
- 31
|
|
25
|
+
- 32
|
|
26
|
+
mode: frame
|
|
27
|
+
- kind: label_grid
|
|
28
|
+
params:
|
|
29
|
+
cameras:
|
|
30
|
+
- cam-1
|
|
31
|
+
methods: automated
|
|
32
|
+
columns: 3
|
|
33
|
+
window_s: 0.3
|
|
34
|
+
panels:
|
|
35
|
+
- feature: pellet_stickClosest_dist
|
|
36
|
+
selections:
|
|
37
|
+
individual: Ivy
|
|
38
|
+
keypoint: beakTip
|
|
39
|
+
s3d_dims: '0'
|
|
40
|
+
space: x
|
|
41
|
+
title: pellet_stickClosest_dist
|
|
42
|
+
axis_auto: true
|
|
43
|
+
skip_video: true
|
|
44
|
+
threshold: 0.8
|
|
45
|
+
grid_mode: uncurate
|
|
46
|
+
mark_flagged: false
|
|
47
|
+
generate: true
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Poppy_GBM
|
|
2
|
+
description: ''
|
|
3
|
+
steps:
|
|
4
|
+
- kind: filter_trials
|
|
5
|
+
params:
|
|
6
|
+
filters:
|
|
7
|
+
- column: num_pellets
|
|
8
|
+
values:
|
|
9
|
+
- '1'
|
|
10
|
+
- '2'
|
|
11
|
+
clear_first: true
|
|
12
|
+
- kind: predict
|
|
13
|
+
params:
|
|
14
|
+
model: pelletContact_Poppy
|
|
15
|
+
individual: Poppy
|
|
16
|
+
min_confidence: 0.005
|
|
17
|
+
- kind: scope
|
|
18
|
+
params:
|
|
19
|
+
label_ids:
|
|
20
|
+
- 31
|
|
21
|
+
- 32
|
|
22
|
+
mode: frame
|
|
23
|
+
- kind: label_grid
|
|
24
|
+
params:
|
|
25
|
+
cameras:
|
|
26
|
+
- cam-1
|
|
27
|
+
methods: automated
|
|
28
|
+
columns: 1
|
|
29
|
+
window_s: 0.3
|
|
30
|
+
panels:
|
|
31
|
+
- feature: pellet_stickClosest_dist
|
|
32
|
+
selections:
|
|
33
|
+
individual: Poppy
|
|
34
|
+
keypoint: beakTip
|
|
35
|
+
s3d_dims: '0'
|
|
36
|
+
space: x
|
|
37
|
+
title: pellet_stickClosest_dist
|
|
38
|
+
axis_auto: true
|
|
39
|
+
skip_video: true
|
|
40
|
+
threshold: 0.8
|
|
41
|
+
grid_mode: uncurate
|
|
42
|
+
mark_flagged: false
|
|
43
|
+
generate: true
|
|
@@ -212,7 +212,7 @@ exclude = ["tests", "docs*"]
|
|
|
212
212
|
|
|
213
213
|
[tool.setuptools.package-data]
|
|
214
214
|
"ethograph.gui" = ["*.yaml", "assets/templates/*", "assets/wizard/*", "templates/*.j2", "templates/notebook/*"]
|
|
215
|
-
ethograph = ["assets/*", "assets/space/*", "defaults/*", "defaults/**/*"]
|
|
215
|
+
ethograph = ["assets/*", "assets/space/*", "defaults/*", "defaults/**/*", "projects/*", "projects/**/*"]
|
|
216
216
|
"ethograph._vendor.vocalseg" = ["LICENSE", "NOTICE.md"]
|
|
217
217
|
"ethograph._vendor.samurai" = ["LICENSE", "NOTICE.md"]
|
|
218
218
|
# The architectures read their defaults from these at build time — see NOTICE.md.
|