coralnet-toolbox 0.0.68__tar.gz → 0.0.69__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.69}/.gitignore +7 -0
  2. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/PKG-INFO +4 -2
  3. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/README.md +2 -1
  4. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Explorer/QtDataItem.py +55 -16
  5. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Explorer/QtExplorer.py +1151 -336
  6. coralnet_toolbox-0.0.69/coralnet_toolbox/Explorer/QtFeatureStore.py +176 -0
  7. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Explorer/QtSettingsWidgets.py +207 -24
  8. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/QtEventFilter.py +18 -17
  9. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/QtMainWindow.py +59 -7
  10. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/__init__.py +1 -1
  11. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox.egg-info/PKG-INFO +4 -2
  12. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox.egg-info/SOURCES.txt +1 -0
  13. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox.egg-info/requires.txt +1 -0
  14. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/pyproject.toml +2 -2
  15. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/requirements.txt +1 -0
  16. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.editorconfig +0 -0
  17. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.gitallowed +0 -0
  18. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  20. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  21. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/ISSUE_TEMPLATE/general_question.md +0 -0
  22. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/workflows/docs-build.yml +0 -0
  23. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/workflows/docs.yml +0 -0
  24. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/workflows/installation.yml +0 -0
  25. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/workflows/macos.yml +0 -0
  26. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/workflows/pypi.yml +0 -0
  27. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/workflows/ubuntu.yml +0 -0
  28. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/.github/workflows/windows.yml +0 -0
  29. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/LICENSE.txt +0 -0
  30. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/MANIFEST.in +0 -0
  31. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Annotations/QtAnnotation.py +0 -0
  32. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Annotations/QtMultiPolygonAnnotation.py +0 -0
  33. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Annotations/QtPatchAnnotation.py +0 -0
  34. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Annotations/QtPolygonAnnotation.py +0 -0
  35. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Annotations/QtRectangleAnnotation.py +0 -0
  36. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Annotations/__init__.py +0 -0
  37. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/AutoDistill/Models/GroundingDINO.py +0 -0
  38. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/AutoDistill/Models/OWLViT.py +0 -0
  39. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/AutoDistill/Models/OmDetTurbo.py +0 -0
  40. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/AutoDistill/Models/QtBase.py +0 -0
  41. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/AutoDistill/Models/__init__.py +0 -0
  42. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/AutoDistill/QtBatchInference.py +0 -0
  43. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/AutoDistill/QtDeployModel.py +0 -0
  44. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/AutoDistill/__init__.py +0 -0
  45. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/BreakTime/QtBreakout.py +0 -0
  46. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/BreakTime/QtSnake.py +0 -0
  47. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/BreakTime/__init__.py +0 -0
  48. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Common/QtGraphicsUtility.py +0 -0
  49. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Common/QtMarginInput.py +0 -0
  50. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Common/QtOverlapInput.py +0 -0
  51. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Common/QtTileSizeInput.py +0 -0
  52. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Common/QtUpdateImagePaths.py +0 -0
  53. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/CoralNet/QtAuthenticate.py +0 -0
  54. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/CoralNet/QtDownload.py +0 -0
  55. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/CoralNet/__init__.py +0 -0
  56. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Explorer/__init__.py +0 -0
  57. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtExportAnnotations.py +0 -0
  58. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtExportCoralNetAnnotations.py +0 -0
  59. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtExportGeoJSONAnnotations.py +0 -0
  60. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtExportLabels.py +0 -0
  61. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtExportMaskAnnotations.py +0 -0
  62. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtExportTagLabAnnotations.py +0 -0
  63. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtExportTagLabLabels.py +0 -0
  64. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtExportViscoreAnnotations.py +0 -0
  65. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtImportAnnotations.py +0 -0
  66. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtImportCoralNetAnnotations.py +0 -0
  67. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtImportCoralNetLabels.py +0 -0
  68. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtImportFrames.py +0 -0
  69. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtImportImages.py +0 -0
  70. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtImportLabels.py +0 -0
  71. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtImportTagLabAnnotations.py +0 -0
  72. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtImportTagLabLabels.py +0 -0
  73. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtImportViscoreAnnotations.py +0 -0
  74. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtOpenProject.py +0 -0
  75. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/QtSaveProject.py +0 -0
  76. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/IO/__init__.py +0 -0
  77. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/1.png +0 -0
  78. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/2.png +0 -0
  79. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/3.png +0 -0
  80. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/4.png +0 -0
  81. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/5.png +0 -0
  82. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/__init__.py +0 -0
  83. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/add.png +0 -0
  84. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/all.png +0 -0
  85. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/apple.png +0 -0
  86. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/breakout.png +0 -0
  87. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/coral.png +0 -0
  88. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/edit.png +0 -0
  89. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/eye.png +0 -0
  90. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/hide.png +0 -0
  91. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/home.png +0 -0
  92. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/lock.png +0 -0
  93. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/machine.png +0 -0
  94. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/magic.png +0 -0
  95. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/opaque.png +0 -0
  96. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/parameters.png +0 -0
  97. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/patch.png +0 -0
  98. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/polygon.png +0 -0
  99. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/rabbit.png +0 -0
  100. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/rectangle.png +0 -0
  101. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/remove.png +0 -0
  102. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/rocket.png +0 -0
  103. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/select.png +0 -0
  104. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/settings.png +0 -0
  105. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/snake.png +0 -0
  106. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/tile.png +0 -0
  107. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/transparent.png +0 -0
  108. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/turtle.png +0 -0
  109. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/unlock.png +0 -0
  110. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/user.png +0 -0
  111. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/wizard.png +0 -0
  112. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/workarea.png +0 -0
  113. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Icons/www.png +0 -0
  114. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/BatchInference/QtBase.py +0 -0
  115. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/BatchInference/QtClassify.py +0 -0
  116. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/BatchInference/QtDetect.py +0 -0
  117. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/BatchInference/QtSegment.py +0 -0
  118. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/BatchInference/__init__.py +0 -0
  119. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/__init__.py +0 -0
  120. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/classify/convnext_tiny.yaml +0 -0
  121. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/classify/efficientnet_b0.yaml +0 -0
  122. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/classify/mobilenet_v3_large.yaml +0 -0
  123. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/classify/swin_t.yaml +0 -0
  124. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/detect/convnext_tiny.yaml +0 -0
  125. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_large-fpn.yaml +0 -0
  126. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_small-fpn.yaml +0 -0
  127. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/detect/resnet101.yaml +0 -0
  128. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t-fpn.yaml +0 -0
  129. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t.yaml +0 -0
  130. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p2.yaml +0 -0
  131. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p6.yaml +0 -0
  132. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/segment/convnext_tiny.yaml +0 -0
  133. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t-fpn.yaml +0 -0
  134. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t.yaml +0 -0
  135. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p2.yaml +0 -0
  136. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p6.yaml +0 -0
  137. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ConfusionMatrix.py +0 -0
  138. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/DeployModel/QtBase.py +0 -0
  139. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/DeployModel/QtClassify.py +0 -0
  140. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/DeployModel/QtDetect.py +0 -0
  141. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/DeployModel/QtSegment.py +0 -0
  142. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/DeployModel/__init__.py +0 -0
  143. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/EvaluateModel/QtBase.py +0 -0
  144. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/EvaluateModel/QtClassify.py +0 -0
  145. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/EvaluateModel/QtDetect.py +0 -0
  146. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/EvaluateModel/QtSegment.py +0 -0
  147. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/EvaluateModel/__init__.py +0 -0
  148. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ExportDataset/QtBase.py +0 -0
  149. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ExportDataset/QtClassify.py +0 -0
  150. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ExportDataset/QtDetect.py +0 -0
  151. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ExportDataset/QtSegment.py +0 -0
  152. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ExportDataset/__init__.py +0 -0
  153. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ImportDataset/QtBase.py +0 -0
  154. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ImportDataset/QtDetect.py +0 -0
  155. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ImportDataset/QtSegment.py +0 -0
  156. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/ImportDataset/__init__.py +0 -0
  157. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/MergeDatasets/QtBase.py +0 -0
  158. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/MergeDatasets/QtClassify.py +0 -0
  159. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/MergeDatasets/__init__.py +0 -0
  160. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/OptimizeModel/QtBase.py +0 -0
  161. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/OptimizeModel/__init__.py +0 -0
  162. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TrainModel/QtBase.py +0 -0
  163. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TrainModel/QtClassify.py +0 -0
  164. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TrainModel/QtDetect.py +0 -0
  165. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TrainModel/QtSegment.py +0 -0
  166. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TrainModel/__init__.py +0 -0
  167. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TuneModel/QtBase.py +0 -0
  168. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TuneModel/QtClassify.py +0 -0
  169. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TuneModel/QtDetect.py +0 -0
  170. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TuneModel/QtSegment.py +0 -0
  171. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TuneModel/__init__.py +0 -0
  172. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/TuneModel/tuner.py +0 -0
  173. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/QtBase.py +0 -0
  174. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/QtClassify.py +0 -0
  175. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/QtDetect.py +0 -0
  176. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/QtInference.py +0 -0
  177. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/QtSegment.py +0 -0
  178. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/QtVideoWidget.py +0 -0
  179. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/__init__.py +0 -0
  180. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/bbox3d_utils.py +0 -0
  181. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/depth_model.py +0 -0
  182. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/detection_model.py +0 -0
  183. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/load_camera_params.py +0 -0
  184. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/run.py +0 -0
  185. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/__init__.py +0 -0
  186. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/VideoInference/analytics.py +0 -0
  187. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/WeightedDataset.py +0 -0
  188. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/MachineLearning/__init__.py +0 -0
  189. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/QtAnnotationWindow.py +0 -0
  190. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/QtConfidenceWindow.py +0 -0
  191. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/QtImageWindow.py +0 -0
  192. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/QtLabelWindow.py +0 -0
  193. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/QtPatchSampling.py +0 -0
  194. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/QtProgressBar.py +0 -0
  195. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/QtWorkArea.py +0 -0
  196. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Rasters/ImageFilter.py +0 -0
  197. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Rasters/QtRaster.py +0 -0
  198. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Rasters/RasterManager.py +0 -0
  199. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Rasters/RasterTableModel.py +0 -0
  200. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Rasters/__init__.py +0 -0
  201. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Results/CombineResults.py +0 -0
  202. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Results/ConvertResults.py +0 -0
  203. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Results/MapResults.py +0 -0
  204. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Results/Masks.py +0 -0
  205. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Results/ResultsProcessor.py +0 -0
  206. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Results/__init__.py +0 -0
  207. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/SAM/QtBatchInference.py +0 -0
  208. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/SAM/QtDeployGenerator.py +0 -0
  209. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/SAM/QtDeployPredictor.py +0 -0
  210. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/SAM/__init__.py +0 -0
  211. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/SeeAnything/QtBatchInference.py +0 -0
  212. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/SeeAnything/QtDeployPredictor.py +0 -0
  213. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/SeeAnything/QtTrainModel.py +0 -0
  214. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/SeeAnything/__init__.py +0 -0
  215. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tile/QtTileBatchInference.py +0 -0
  216. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tile/QtTileCreation.py +0 -0
  217. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tile/TileDataset/QtBase.py +0 -0
  218. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tile/TileDataset/QtClassify.py +0 -0
  219. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tile/TileDataset/QtDetect.py +0 -0
  220. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tile/TileDataset/QtSegment.py +0 -0
  221. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tile/TileDataset/__init__.py +0 -0
  222. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tile/__init__.py +0 -0
  223. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtCutSubTool.py +0 -0
  224. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtMoveSubTool.py +0 -0
  225. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtPanTool.py +0 -0
  226. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtPatchTool.py +0 -0
  227. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtPolygonTool.py +0 -0
  228. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtRectangleTool.py +0 -0
  229. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtResizeSubTool.py +0 -0
  230. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtSAMTool.py +0 -0
  231. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtSeeAnythingTool.py +0 -0
  232. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtSelectSubTool.py +0 -0
  233. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtSelectTool.py +0 -0
  234. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtSubTool.py +0 -0
  235. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtTool.py +0 -0
  236. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtWorkAreaTool.py +0 -0
  237. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/QtZoomTool.py +0 -0
  238. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/Tools/__init__.py +0 -0
  239. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/main.py +0 -0
  240. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox/utilities.py +0 -0
  241. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox.egg-info/dependency_links.txt +0 -0
  242. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox.egg-info/entry_points.txt +0 -0
  243. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/coralnet_toolbox.egg-info/top_level.txt +0 -0
  244. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/mkdocs.yml +0 -0
  245. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/requirements_dev.txt +0 -0
  246. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/setup.cfg +0 -0
  247. {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.69}/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.69
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
@@ -171,11 +172,12 @@ Enhance your CoralNet experience with these tools:
171
172
  - Uses `Grounding DINO`, `OWLViT`, `OmDetTurbo`
172
173
  - 📻 Tune: Tune hyperparameters to identify ideal training conditions
173
174
  - 🧠 Train: Build local patch-based classifiers, object detection, and instance segmentation models
174
- - 🔮 Deploy: Use trained models for predictions
175
+ - 🧙‍♂️ Deploy: Use trained models for predictions
175
176
  - 📊 Evaluation: Evaluate model performance
176
177
  - 🚀 Optimize: Productionize models for faster inferencing
177
178
  - ⚙️ Batch Inference: Perform predictions on multiple images, automatically
178
179
  - 🎞️ Video Inference: Perform predictions on a video in real-time, record the output and analytics
180
+ - 🔮 Explorer: Cluster, view, and re-label annotations using embeddings, mapped from feature-space
179
181
  - ↔️ I/O: Import and Export annotations from / to CoralNet, Viscore, and TagLab
180
182
  - Export annotations as [GeoJSONs](https://datatracker.ietf.org/doc/html/rfc7946), segmentation masks
181
183
  - 📸 YOLO: Import and Export YOLO datasets for machine learning
@@ -128,11 +128,12 @@ Enhance your CoralNet experience with these tools:
128
128
  - Uses `Grounding DINO`, `OWLViT`, `OmDetTurbo`
129
129
  - 📻 Tune: Tune hyperparameters to identify ideal training conditions
130
130
  - 🧠 Train: Build local patch-based classifiers, object detection, and instance segmentation models
131
- - 🔮 Deploy: Use trained models for predictions
131
+ - 🧙‍♂️ Deploy: Use trained models for predictions
132
132
  - 📊 Evaluation: Evaluate model performance
133
133
  - 🚀 Optimize: Productionize models for faster inferencing
134
134
  - ⚙️ Batch Inference: Perform predictions on multiple images, automatically
135
135
  - 🎞️ Video Inference: Perform predictions on a video in real-time, record the output and analytics
136
+ - 🔮 Explorer: Cluster, view, and re-label annotations using embeddings, mapped from feature-space
136
137
  - ↔️ I/O: Import and Export annotations from / to CoralNet, Viscore, and TagLab
137
138
  - Export annotations as [GeoJSONs](https://datatracker.ietf.org/doc/html/rfc7946), segmentation masks
138
139
  - 📸 YOLO: Import and Export YOLO datasets for machine learning
@@ -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: