singlebehaviorlab 2.3.0__tar.gz → 2.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. {singlebehaviorlab-2.3.0/singlebehaviorlab.egg-info → singlebehaviorlab-2.3.1}/PKG-INFO +1 -1
  2. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/pyproject.toml +1 -1
  3. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/__init__.py +1 -1
  4. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/segmentation.py +35 -3
  5. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1/singlebehaviorlab.egg-info}/PKG-INFO +1 -1
  6. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/LICENSE +0 -0
  7. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/README.md +0 -0
  8. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/setup.cfg +0 -0
  9. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/__main__.py +0 -0
  10. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/_paths.py +0 -0
  11. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/__init__.py +0 -0
  12. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/augmentations.py +0 -0
  13. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/clustering.py +0 -0
  14. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/data_store.py +0 -0
  15. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/inference.py +0 -0
  16. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/model.py +0 -0
  17. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/registration.py +0 -0
  18. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/segments.py +0 -0
  19. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/train.py +0 -0
  20. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/training_runner.py +0 -0
  21. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/uncertainty.py +0 -0
  22. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/video_processor.py +0 -0
  23. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/backend/video_utils.py +0 -0
  24. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/cli.py +0 -0
  25. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/config.py +0 -0
  26. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/data/config/config.yaml +0 -0
  27. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/data/training_profiles.json +0 -0
  28. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/demo.py +0 -0
  29. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/__init__.py +0 -0
  30. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/analysis_widget.py +0 -0
  31. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/attention_export.py +0 -0
  32. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/clip_extraction_widget.py +0 -0
  33. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/clustering_widget.py +0 -0
  34. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/inference_popups.py +0 -0
  35. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/inference_widget.py +0 -0
  36. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/inference_worker.py +0 -0
  37. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/interactive_timeline.py +0 -0
  38. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/labeling_widget.py +0 -0
  39. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/main_window.py +0 -0
  40. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/metadata_management_widget.py +0 -0
  41. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/motion_tracking.py +0 -0
  42. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/overlay_export.py +0 -0
  43. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/plot_integration.py +0 -0
  44. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/qt_helpers.py +0 -0
  45. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/registration_widget.py +0 -0
  46. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/review_widget.py +0 -0
  47. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/segmentation_tracking_widget.py +0 -0
  48. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/tab_tutorial_dialog.py +0 -0
  49. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/timeline_themes.py +0 -0
  50. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/training_profiles.py +0 -0
  51. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/training_widget.py +0 -0
  52. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/gui/video_utils.py +0 -0
  53. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/licenses/SAM2-LICENSE +0 -0
  54. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab/licenses/VideoPrism-LICENSE +0 -0
  55. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab.egg-info/SOURCES.txt +0 -0
  56. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab.egg-info/dependency_links.txt +0 -0
  57. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab.egg-info/entry_points.txt +0 -0
  58. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab.egg-info/requires.txt +0 -0
  59. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/singlebehaviorlab.egg-info/top_level.txt +0 -0
  60. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/tests/test_clustering_smoke.py +0 -0
  61. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/tests/test_config.py +0 -0
  62. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/tests/test_motion_tracking.py +0 -0
  63. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/tests/test_paths.py +0 -0
  64. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/tests/test_sam2_smoke.py +0 -0
  65. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/tests/test_segments.py +0 -0
  66. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/__init__.py +0 -0
  67. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/automatic_mask_generator.py +0 -0
  68. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/benchmark.py +0 -0
  69. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/build_sam.py +0 -0
  70. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/configs/sam2/sam2_hiera_b+.yaml +0 -0
  71. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/configs/sam2/sam2_hiera_l.yaml +0 -0
  72. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/configs/sam2/sam2_hiera_s.yaml +0 -0
  73. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/configs/sam2/sam2_hiera_t.yaml +0 -0
  74. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/configs/sam2.1/sam2.1_hiera_b+.yaml +0 -0
  75. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/configs/sam2.1/sam2.1_hiera_l.yaml +0 -0
  76. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/configs/sam2.1/sam2.1_hiera_s.yaml +0 -0
  77. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/configs/sam2.1/sam2.1_hiera_t.yaml +0 -0
  78. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/configs/sam2.1_training/sam2.1_hiera_b+_MOSE_finetune.yaml +0 -0
  79. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/__init__.py +0 -0
  80. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/backbones/__init__.py +0 -0
  81. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/backbones/hieradet.py +0 -0
  82. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/backbones/image_encoder.py +0 -0
  83. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/backbones/utils.py +0 -0
  84. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/memory_attention.py +0 -0
  85. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/memory_encoder.py +0 -0
  86. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/position_encoding.py +0 -0
  87. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/sam/__init__.py +0 -0
  88. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/sam/mask_decoder.py +0 -0
  89. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/sam/prompt_encoder.py +0 -0
  90. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/sam/transformer.py +0 -0
  91. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/sam2_base.py +0 -0
  92. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/modeling/sam2_utils.py +0 -0
  93. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/sam2_hiera_b+.yaml +0 -0
  94. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/sam2_hiera_l.yaml +0 -0
  95. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/sam2_hiera_s.yaml +0 -0
  96. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/sam2_hiera_t.yaml +0 -0
  97. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/sam2_image_predictor.py +0 -0
  98. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/sam2_video_predictor.py +0 -0
  99. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/sam2_video_predictor_legacy.py +0 -0
  100. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/utils/__init__.py +0 -0
  101. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/utils/amg.py +0 -0
  102. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/utils/misc.py +0 -0
  103. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/sam2_backend/sam2/utils/transforms.py +0 -0
  104. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/videoprism_backend/videoprism/__init__.py +0 -0
  105. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/videoprism_backend/videoprism/encoders.py +0 -0
  106. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/videoprism_backend/videoprism/layers.py +0 -0
  107. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/videoprism_backend/videoprism/models.py +0 -0
  108. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/videoprism_backend/videoprism/tokenizers.py +0 -0
  109. {singlebehaviorlab-2.3.0 → singlebehaviorlab-2.3.1}/third_party/videoprism_backend/videoprism/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: singlebehaviorlab
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: Semi-automated behavioral video annotation, training, and analysis tool
5
5
  Author: Almir Aljovic
6
6
  Maintainer: Almir Aljovic
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "singlebehaviorlab"
7
- version = "2.3.0"
7
+ version = "2.3.1"
8
8
  description = "Semi-automated behavioral video annotation, training, and analysis tool"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -19,7 +19,7 @@ or videoprism. Each symbol triggers its underlying backend module only on
19
19
  first access.
20
20
  """
21
21
 
22
- __version__ = "2.3.0"
22
+ __version__ = "2.3.1"
23
23
  __author__ = "Almir Aljovic"
24
24
 
25
25
  # Mapping of public name → (backend module, attribute name).
@@ -49,6 +49,13 @@ _CHECKPOINT_TO_CONFIG = {
49
49
  "sam2.1_hiera_large.pt": "configs/sam2.1/sam2.1_hiera_l.yaml",
50
50
  }
51
51
 
52
+ _CHECKPOINT_URLS = {
53
+ "sam2.1_hiera_tiny.pt": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_tiny.pt",
54
+ "sam2.1_hiera_small.pt": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_small.pt",
55
+ "sam2.1_hiera_base_plus.pt": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_base_plus.pt",
56
+ "sam2.1_hiera_large.pt": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_large.pt",
57
+ }
58
+
52
59
  _CHUNK_SIZE = 200
53
60
 
54
61
 
@@ -109,10 +116,35 @@ def _resolve_checkpoint(model_name: str) -> tuple[str, str]:
109
116
  for candidate in candidates:
110
117
  if candidate.exists():
111
118
  return str(candidate), config_name
119
+
120
+ url = _CHECKPOINT_URLS.get(model_name)
121
+ if url:
122
+ dest = checkpoints_root / "checkpoints" / model_name
123
+ dest.parent.mkdir(parents=True, exist_ok=True)
124
+ import urllib.request
125
+ try:
126
+ from tqdm.auto import tqdm as _tqdm
127
+ except Exception:
128
+ _tqdm = None
129
+ print(f"Downloading {model_name} from {url}")
130
+ if _tqdm is None:
131
+ urllib.request.urlretrieve(url, str(dest))
132
+ else:
133
+ with urllib.request.urlopen(url) as resp:
134
+ total = int(resp.headers.get("Content-Length") or 0) or None
135
+ with _tqdm(total=total, unit="B", unit_scale=True, desc=model_name) as bar:
136
+ with open(dest, "wb") as f:
137
+ while True:
138
+ chunk = resp.read(1024 * 256)
139
+ if not chunk:
140
+ break
141
+ f.write(chunk)
142
+ bar.update(len(chunk))
143
+ if dest.exists() and dest.stat().st_size > 0:
144
+ return str(dest), config_name
145
+
112
146
  raise FileNotFoundError(
113
- f"SAM2 checkpoint '{model_name}' was not found in {checkpoints_root}. "
114
- "Launch the GUI once to trigger the automatic download, or place the "
115
- "checkpoint file manually in that directory."
147
+ f"SAM2 checkpoint '{model_name}' could not be downloaded or found in {checkpoints_root}."
116
148
  )
117
149
 
118
150
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: singlebehaviorlab
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: Semi-automated behavioral video annotation, training, and analysis tool
5
5
  Author: Almir Aljovic
6
6
  Maintainer: Almir Aljovic