coralnet-toolbox 0.0.68__tar.gz → 0.0.70__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 (247) hide show
  1. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.gitignore +7 -0
  2. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/PKG-INFO +8 -4
  3. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/README.md +6 -3
  4. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtAnnotation.py +1 -1
  5. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtDataItem.py +55 -16
  6. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtExplorer.py +1211 -341
  7. coralnet_toolbox-0.0.70/coralnet_toolbox/Explorer/QtFeatureStore.py +176 -0
  8. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtSettingsWidgets.py +207 -24
  9. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtAnnotationWindow.py +28 -1
  10. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtEventFilter.py +18 -17
  11. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtMainWindow.py +65 -8
  12. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/__init__.py +1 -1
  13. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/PKG-INFO +8 -4
  14. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/SOURCES.txt +1 -0
  15. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/requires.txt +1 -0
  16. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/pyproject.toml +2 -2
  17. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/requirements.txt +1 -0
  18. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.editorconfig +0 -0
  19. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.gitallowed +0 -0
  20. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  21. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  22. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  23. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/general_question.md +0 -0
  24. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/docs-build.yml +0 -0
  25. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/docs.yml +0 -0
  26. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/installation.yml +0 -0
  27. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/macos.yml +0 -0
  28. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/pypi.yml +0 -0
  29. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/ubuntu.yml +0 -0
  30. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/windows.yml +0 -0
  31. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/LICENSE.txt +0 -0
  32. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/MANIFEST.in +0 -0
  33. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtMultiPolygonAnnotation.py +0 -0
  34. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtPatchAnnotation.py +0 -0
  35. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtPolygonAnnotation.py +0 -0
  36. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtRectangleAnnotation.py +0 -0
  37. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/__init__.py +0 -0
  38. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/GroundingDINO.py +0 -0
  39. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/OWLViT.py +0 -0
  40. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/OmDetTurbo.py +0 -0
  41. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/QtBase.py +0 -0
  42. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/__init__.py +0 -0
  43. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/QtBatchInference.py +0 -0
  44. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/QtDeployModel.py +0 -0
  45. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/__init__.py +0 -0
  46. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/BreakTime/QtBreakout.py +0 -0
  47. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/BreakTime/QtSnake.py +0 -0
  48. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/BreakTime/__init__.py +0 -0
  49. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtGraphicsUtility.py +0 -0
  50. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtMarginInput.py +0 -0
  51. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtOverlapInput.py +0 -0
  52. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtTileSizeInput.py +0 -0
  53. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtUpdateImagePaths.py +0 -0
  54. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/CoralNet/QtAuthenticate.py +0 -0
  55. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/CoralNet/QtDownload.py +0 -0
  56. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/CoralNet/__init__.py +0 -0
  57. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/__init__.py +0 -0
  58. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportAnnotations.py +0 -0
  59. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportCoralNetAnnotations.py +0 -0
  60. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportGeoJSONAnnotations.py +0 -0
  61. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportLabels.py +0 -0
  62. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportMaskAnnotations.py +0 -0
  63. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportTagLabAnnotations.py +0 -0
  64. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportTagLabLabels.py +0 -0
  65. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportViscoreAnnotations.py +0 -0
  66. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportAnnotations.py +0 -0
  67. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportCoralNetAnnotations.py +0 -0
  68. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportCoralNetLabels.py +0 -0
  69. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportFrames.py +0 -0
  70. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportImages.py +0 -0
  71. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportLabels.py +0 -0
  72. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportTagLabAnnotations.py +0 -0
  73. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportTagLabLabels.py +0 -0
  74. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportViscoreAnnotations.py +0 -0
  75. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtOpenProject.py +0 -0
  76. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtSaveProject.py +0 -0
  77. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/__init__.py +0 -0
  78. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/1.png +0 -0
  79. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/2.png +0 -0
  80. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/3.png +0 -0
  81. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/4.png +0 -0
  82. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/5.png +0 -0
  83. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/__init__.py +0 -0
  84. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/add.png +0 -0
  85. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/all.png +0 -0
  86. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/apple.png +0 -0
  87. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/breakout.png +0 -0
  88. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/coral.png +0 -0
  89. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/edit.png +0 -0
  90. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/eye.png +0 -0
  91. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/hide.png +0 -0
  92. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/home.png +0 -0
  93. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/lock.png +0 -0
  94. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/machine.png +0 -0
  95. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/magic.png +0 -0
  96. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/opaque.png +0 -0
  97. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/parameters.png +0 -0
  98. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/patch.png +0 -0
  99. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/polygon.png +0 -0
  100. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/rabbit.png +0 -0
  101. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/rectangle.png +0 -0
  102. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/remove.png +0 -0
  103. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/rocket.png +0 -0
  104. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/select.png +0 -0
  105. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/settings.png +0 -0
  106. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/snake.png +0 -0
  107. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/tile.png +0 -0
  108. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/transparent.png +0 -0
  109. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/turtle.png +0 -0
  110. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/unlock.png +0 -0
  111. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/user.png +0 -0
  112. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/wizard.png +0 -0
  113. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/workarea.png +0 -0
  114. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/www.png +0 -0
  115. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtBase.py +0 -0
  116. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtClassify.py +0 -0
  117. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtDetect.py +0 -0
  118. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtSegment.py +0 -0
  119. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/__init__.py +0 -0
  120. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/__init__.py +0 -0
  121. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/convnext_tiny.yaml +0 -0
  122. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/efficientnet_b0.yaml +0 -0
  123. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/mobilenet_v3_large.yaml +0 -0
  124. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/swin_t.yaml +0 -0
  125. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/convnext_tiny.yaml +0 -0
  126. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_large-fpn.yaml +0 -0
  127. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_small-fpn.yaml +0 -0
  128. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/resnet101.yaml +0 -0
  129. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t-fpn.yaml +0 -0
  130. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t.yaml +0 -0
  131. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p2.yaml +0 -0
  132. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p6.yaml +0 -0
  133. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/convnext_tiny.yaml +0 -0
  134. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t-fpn.yaml +0 -0
  135. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t.yaml +0 -0
  136. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p2.yaml +0 -0
  137. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p6.yaml +0 -0
  138. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ConfusionMatrix.py +0 -0
  139. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtBase.py +0 -0
  140. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtClassify.py +0 -0
  141. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtDetect.py +0 -0
  142. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtSegment.py +0 -0
  143. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/__init__.py +0 -0
  144. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtBase.py +0 -0
  145. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtClassify.py +0 -0
  146. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtDetect.py +0 -0
  147. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtSegment.py +0 -0
  148. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/__init__.py +0 -0
  149. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtBase.py +0 -0
  150. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtClassify.py +0 -0
  151. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtDetect.py +0 -0
  152. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtSegment.py +0 -0
  153. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/__init__.py +0 -0
  154. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/QtBase.py +0 -0
  155. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/QtDetect.py +0 -0
  156. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/QtSegment.py +0 -0
  157. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/__init__.py +0 -0
  158. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/MergeDatasets/QtBase.py +0 -0
  159. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/MergeDatasets/QtClassify.py +0 -0
  160. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/MergeDatasets/__init__.py +0 -0
  161. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/OptimizeModel/QtBase.py +0 -0
  162. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/OptimizeModel/__init__.py +0 -0
  163. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtBase.py +0 -0
  164. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtClassify.py +0 -0
  165. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtDetect.py +0 -0
  166. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtSegment.py +0 -0
  167. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/__init__.py +0 -0
  168. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtBase.py +0 -0
  169. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtClassify.py +0 -0
  170. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtDetect.py +0 -0
  171. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtSegment.py +0 -0
  172. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/__init__.py +0 -0
  173. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/tuner.py +0 -0
  174. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtBase.py +0 -0
  175. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtClassify.py +0 -0
  176. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtDetect.py +0 -0
  177. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtInference.py +0 -0
  178. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtSegment.py +0 -0
  179. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtVideoWidget.py +0 -0
  180. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/__init__.py +0 -0
  181. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/bbox3d_utils.py +0 -0
  182. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/depth_model.py +0 -0
  183. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/detection_model.py +0 -0
  184. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/load_camera_params.py +0 -0
  185. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/run.py +0 -0
  186. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/__init__.py +0 -0
  187. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/analytics.py +0 -0
  188. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/WeightedDataset.py +0 -0
  189. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/__init__.py +0 -0
  190. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtConfidenceWindow.py +0 -0
  191. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtImageWindow.py +0 -0
  192. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtLabelWindow.py +0 -0
  193. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtPatchSampling.py +0 -0
  194. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtProgressBar.py +0 -0
  195. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtWorkArea.py +0 -0
  196. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/ImageFilter.py +0 -0
  197. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/QtRaster.py +0 -0
  198. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/RasterManager.py +0 -0
  199. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/RasterTableModel.py +0 -0
  200. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/__init__.py +0 -0
  201. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/CombineResults.py +0 -0
  202. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/ConvertResults.py +0 -0
  203. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/MapResults.py +0 -0
  204. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/Masks.py +0 -0
  205. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/ResultsProcessor.py +0 -0
  206. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/__init__.py +0 -0
  207. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/QtBatchInference.py +0 -0
  208. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/QtDeployGenerator.py +0 -0
  209. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/QtDeployPredictor.py +0 -0
  210. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/__init__.py +0 -0
  211. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/QtBatchInference.py +0 -0
  212. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/QtDeployPredictor.py +0 -0
  213. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/QtTrainModel.py +0 -0
  214. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/__init__.py +0 -0
  215. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/QtTileBatchInference.py +0 -0
  216. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/QtTileCreation.py +0 -0
  217. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtBase.py +0 -0
  218. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtClassify.py +0 -0
  219. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtDetect.py +0 -0
  220. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtSegment.py +0 -0
  221. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/__init__.py +0 -0
  222. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/__init__.py +0 -0
  223. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtCutSubTool.py +0 -0
  224. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtMoveSubTool.py +0 -0
  225. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtPanTool.py +0 -0
  226. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtPatchTool.py +0 -0
  227. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtPolygonTool.py +0 -0
  228. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtRectangleTool.py +0 -0
  229. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtResizeSubTool.py +0 -0
  230. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSAMTool.py +0 -0
  231. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSeeAnythingTool.py +0 -0
  232. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSelectSubTool.py +0 -0
  233. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSelectTool.py +0 -0
  234. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSubTool.py +0 -0
  235. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtTool.py +0 -0
  236. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtWorkAreaTool.py +0 -0
  237. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtZoomTool.py +0 -0
  238. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/__init__.py +0 -0
  239. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/main.py +0 -0
  240. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/utilities.py +0 -0
  241. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/dependency_links.txt +0 -0
  242. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/entry_points.txt +0 -0
  243. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/top_level.txt +0 -0
  244. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/mkdocs.yml +0 -0
  245. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/requirements_dev.txt +0 -0
  246. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/setup.cfg +0 -0
  247. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/uv.lock +0 -0
@@ -130,3 +130,10 @@ launch.json
130
130
 
131
131
  # Local
132
132
  data/
133
+
134
+ # Faiss index files
135
+ *.faiss
136
+ *.db
137
+
138
+ # Copilot
139
+ .github/copilot-instructions.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coralnet-toolbox
3
- Version: 0.0.68
3
+ Version: 0.0.70
4
4
  Summary: Tools for annotating and developing ML models for benthic imagery
5
5
  Author-email: Jordan Pierce <jordan.pierce@noaa.gov>
6
6
  License: MIT License
@@ -22,6 +22,7 @@ Requires-Dist: open-clip-torch>=2.20.0
22
22
  Requires-Dist: supervision>=0.24.0
23
23
  Requires-Dist: scikit-learn
24
24
  Requires-Dist: umap-learn
25
+ Requires-Dist: faiss-cpu
25
26
  Requires-Dist: pycocotools
26
27
  Requires-Dist: ujson
27
28
  Requires-Dist: timm==0.9.2
@@ -93,10 +94,12 @@ coralnet-toolbox
93
94
 
94
95
  ## 📚 Guides
95
96
 
96
- For further instructions please see the following guides:
97
+ For further information and instructions, please see the following guides:
98
+ - [Overview](https://jordan-pierce.github.io/CoralNet-Toolbox/overview)
97
99
  - [Installation](https://jordan-pierce.github.io/CoralNet-Toolbox/installation)
98
100
  - [Usage](https://jordan-pierce.github.io/CoralNet-Toolbox/usage)
99
- - [Patch-based Image Classifier](https://jordan-pierce.github.io/CoralNet-Toolbox/classify)
101
+ - Community Provided:
102
+ - [Patch-based Image Classifier](https://jordan-pierce.github.io/CoralNet-Toolbox/classify)
100
103
 
101
104
  <details open>
102
105
  <summary><h2><b>🎥 Watch the Video Demos</b></h2></summary>
@@ -171,11 +174,12 @@ Enhance your CoralNet experience with these tools:
171
174
  - Uses `Grounding DINO`, `OWLViT`, `OmDetTurbo`
172
175
  - 📻 Tune: Tune hyperparameters to identify ideal training conditions
173
176
  - 🧠 Train: Build local patch-based classifiers, object detection, and instance segmentation models
174
- - 🔮 Deploy: Use trained models for predictions
177
+ - 🧙‍♂️ Deploy: Use trained models for predictions
175
178
  - 📊 Evaluation: Evaluate model performance
176
179
  - 🚀 Optimize: Productionize models for faster inferencing
177
180
  - ⚙️ Batch Inference: Perform predictions on multiple images, automatically
178
181
  - 🎞️ Video Inference: Perform predictions on a video in real-time, record the output and analytics
182
+ - 🔮 Explorer: Cluster, view, and re-label annotations using embeddings, mapped from feature-space
179
183
  - ↔️ I/O: Import and Export annotations from / to CoralNet, Viscore, and TagLab
180
184
  - Export annotations as [GeoJSONs](https://datatracker.ietf.org/doc/html/rfc7946), segmentation masks
181
185
  - 📸 YOLO: Import and Export YOLO datasets for machine learning
@@ -50,10 +50,12 @@ coralnet-toolbox
50
50
 
51
51
  ## 📚 Guides
52
52
 
53
- For further instructions please see the following guides:
53
+ For further information and instructions, please see the following guides:
54
+ - [Overview](https://jordan-pierce.github.io/CoralNet-Toolbox/overview)
54
55
  - [Installation](https://jordan-pierce.github.io/CoralNet-Toolbox/installation)
55
56
  - [Usage](https://jordan-pierce.github.io/CoralNet-Toolbox/usage)
56
- - [Patch-based Image Classifier](https://jordan-pierce.github.io/CoralNet-Toolbox/classify)
57
+ - Community Provided:
58
+ - [Patch-based Image Classifier](https://jordan-pierce.github.io/CoralNet-Toolbox/classify)
57
59
 
58
60
  <details open>
59
61
  <summary><h2><b>🎥 Watch the Video Demos</b></h2></summary>
@@ -128,11 +130,12 @@ Enhance your CoralNet experience with these tools:
128
130
  - Uses `Grounding DINO`, `OWLViT`, `OmDetTurbo`
129
131
  - 📻 Tune: Tune hyperparameters to identify ideal training conditions
130
132
  - 🧠 Train: Build local patch-based classifiers, object detection, and instance segmentation models
131
- - 🔮 Deploy: Use trained models for predictions
133
+ - 🧙‍♂️ Deploy: Use trained models for predictions
132
134
  - 📊 Evaluation: Evaluate model performance
133
135
  - 🚀 Optimize: Productionize models for faster inferencing
134
136
  - ⚙️ Batch Inference: Perform predictions on multiple images, automatically
135
137
  - 🎞️ Video Inference: Perform predictions on a video in real-time, record the output and analytics
138
+ - 🔮 Explorer: Cluster, view, and re-label annotations using embeddings, mapped from feature-space
136
139
  - ↔️ I/O: Import and Export annotations from / to CoralNet, Viscore, and TagLab
137
140
  - Export annotations as [GeoJSONs](https://datatracker.ietf.org/doc/html/rfc7946), segmentation masks
138
141
  - 📸 YOLO: Import and Export YOLO datasets for machine learning
@@ -262,7 +262,7 @@ class Annotation(QObject):
262
262
  # [1, 2] - Very small dots with small gaps
263
263
  # [2, 4] - Small dots with larger gaps
264
264
  # [1, 3] - Tiny dots with medium gaps
265
- pen = QPen(pen_color, 3) # Width for dotted line
265
+ pen = QPen(pen_color, 4) # Width for dotted line
266
266
  pen.setStyle(Qt.CustomDashLine)
267
267
  pen.setDashPattern([1, 2]) # Dotted pattern: 2 pixels on, 3 pixels off
268
268
  pen.setDashOffset(self._animated_line)
@@ -2,6 +2,8 @@ import warnings
2
2
 
3
3
  import os
4
4
 
5
+ import numpy as np
6
+
5
7
  from PyQt5.QtCore import Qt, QTimer
6
8
  from PyQt5.QtGui import QPen, QColor, QPainter
7
9
  from PyQt5.QtWidgets import QGraphicsEllipseItem, QStyle, QVBoxLayout, QLabel, QWidget, QGraphicsItem
@@ -54,6 +56,12 @@ class EmbeddingPointItem(QGraphicsEllipseItem):
54
56
 
55
57
  # Set the position of the point based on the data item's embedding coordinates
56
58
  self.setPos(self.data_item.embedding_x, self.data_item.embedding_y)
59
+ # Set the tooltip with detailed information
60
+ self.setToolTip(self.data_item.get_tooltip_text())
61
+
62
+ def update_tooltip(self):
63
+ """Updates the tooltip by fetching the latest text from the data item."""
64
+ self.setToolTip(self.data_item.get_tooltip_text())
57
65
 
58
66
  def paint(self, painter, option, widget):
59
67
  """
@@ -104,6 +112,10 @@ class AnnotationImageWidget(QWidget):
104
112
  self.image_label.setScaledContents(True)
105
113
  self.image_label.setStyleSheet("border: none;")
106
114
  layout.addWidget(self.image_label)
115
+
116
+ def update_tooltip(self):
117
+ """Updates the tooltip by fetching the latest text from the data item."""
118
+ self.setToolTip(self.data_item.get_tooltip_text())
107
119
 
108
120
  def load_and_set_image(self):
109
121
  """Load image, calculate its aspect ratio, and set the widget's initial size."""
@@ -124,7 +136,10 @@ class AnnotationImageWidget(QWidget):
124
136
  self.image_label.setText("Error\nLoading Image")
125
137
  self.pixmap = None
126
138
  self.aspect_ratio = 1.0
139
+
127
140
  self.update_height(self.widget_height)
141
+ # Set the initial tooltip
142
+ self.update_tooltip()
128
143
 
129
144
  def update_height(self, new_height):
130
145
  """Updates the widget's height and rescales its width and content accordingly."""
@@ -204,8 +219,12 @@ class AnnotationImageWidget(QWidget):
204
219
  # The viewer is the controller and will decide how to change the selection state
205
220
  self.annotation_viewer.handle_annotation_selection(self, event)
206
221
  elif event.button() == Qt.RightButton:
207
- event.ignore()
208
- return
222
+ if self.annotation_viewer and hasattr(self.annotation_viewer, 'handle_annotation_context_menu'):
223
+ self.annotation_viewer.handle_annotation_context_menu(self, event)
224
+ event.accept()
225
+ return
226
+ else:
227
+ event.ignore()
209
228
  super().mousePressEvent(event)
210
229
 
211
230
 
@@ -218,14 +237,20 @@ class AnnotationDataItem:
218
237
 
219
238
  def __init__(self, annotation, embedding_x=None, embedding_y=None, embedding_id=None):
220
239
  self.annotation = annotation
240
+
221
241
  self.embedding_x = embedding_x if embedding_x is not None else 0.0
222
242
  self.embedding_y = embedding_y if embedding_y is not None else 0.0
223
243
  self.embedding_id = embedding_id if embedding_id is not None else 0
244
+
224
245
  self._is_selected = False
225
246
  self._preview_label = None
226
247
  self._original_label = annotation.label
227
- self._marked_for_deletion = False
228
-
248
+
249
+ # To store pre-formatted top-k prediction details
250
+ self.prediction_details = None
251
+ # To store prediction probabilities for sorting
252
+ self.prediction_probabilities = None
253
+
229
254
  @property
230
255
  def effective_label(self):
231
256
  """Get the current effective label (preview if it exists, otherwise original)."""
@@ -257,18 +282,6 @@ class AnnotationDataItem:
257
282
  """Check if this annotation has a temporary preview label assigned."""
258
283
  return self._preview_label is not None
259
284
 
260
- def mark_for_deletion(self):
261
- """Mark this annotation for deletion."""
262
- self._marked_for_deletion = True
263
-
264
- def unmark_for_deletion(self):
265
- """Unmark this annotation for deletion."""
266
- self._marked_for_deletion = False
267
-
268
- def is_marked_for_deletion(self):
269
- """Check if this annotation is marked for deletion."""
270
- return self._marked_for_deletion
271
-
272
285
  def apply_preview_permanently(self):
273
286
  """Apply the preview label permanently to the underlying annotation object."""
274
287
  if self._preview_label:
@@ -290,9 +303,35 @@ class AnnotationDataItem:
290
303
  'embedding_id': self.embedding_id,
291
304
  'color': self.effective_color
292
305
  }
306
+
307
+ def get_tooltip_text(self):
308
+ """
309
+ Generates a rich HTML-formatted tooltip with all relevant information.
310
+ """
311
+ info = self.get_display_info()
312
+
313
+ tooltip_parts = [
314
+ f"<b>ID:</b> {info['id']}",
315
+ f"<b>Image:</b> {info['image']}",
316
+ f"<b>Label:</b> {info['label']}",
317
+ f"<b>Type:</b> {info['type']}"
318
+ ]
319
+
320
+ # Add prediction details if they exist
321
+ if self.prediction_details:
322
+ tooltip_parts.append(f"<hr>{self.prediction_details}")
323
+
324
+ return "<br>".join(tooltip_parts)
293
325
 
294
326
  def get_effective_confidence(self):
295
327
  """Get the effective confidence value."""
328
+ # First check if prediction probabilities are available from model predictions
329
+ if hasattr(self, 'prediction_probabilities') and self.prediction_probabilities is not None:
330
+ if len(self.prediction_probabilities) > 0:
331
+ # Use the maximum probability for confidence sorting
332
+ return float(np.max(self.prediction_probabilities))
333
+
334
+ # Fallback to existing confidence values
296
335
  if self.annotation.verified and hasattr(self.annotation, 'user_confidence') and self.annotation.user_confidence:
297
336
  return list(self.annotation.user_confidence.values())[0]
298
337
  elif hasattr(self.annotation, 'machine_confidence') and self.annotation.machine_confidence: