coralnet-toolbox 0.0.69__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.69 → coralnet_toolbox-0.0.70}/PKG-INFO +5 -3
  2. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/README.md +4 -2
  3. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtAnnotation.py +1 -1
  4. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtExplorer.py +64 -9
  5. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtAnnotationWindow.py +28 -1
  6. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtMainWindow.py +8 -3
  7. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/__init__.py +1 -1
  8. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/PKG-INFO +5 -3
  9. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/pyproject.toml +2 -2
  10. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.editorconfig +0 -0
  11. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.gitallowed +0 -0
  12. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  13. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  14. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  15. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/general_question.md +0 -0
  16. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/workflows/docs-build.yml +0 -0
  17. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/workflows/docs.yml +0 -0
  18. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/workflows/installation.yml +0 -0
  19. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/workflows/macos.yml +0 -0
  20. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/workflows/pypi.yml +0 -0
  21. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/workflows/ubuntu.yml +0 -0
  22. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.github/workflows/windows.yml +0 -0
  23. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/.gitignore +0 -0
  24. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/LICENSE.txt +0 -0
  25. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/MANIFEST.in +0 -0
  26. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtMultiPolygonAnnotation.py +0 -0
  27. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtPatchAnnotation.py +0 -0
  28. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtPolygonAnnotation.py +0 -0
  29. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtRectangleAnnotation.py +0 -0
  30. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/__init__.py +0 -0
  31. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/GroundingDINO.py +0 -0
  32. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/OWLViT.py +0 -0
  33. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/OmDetTurbo.py +0 -0
  34. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/QtBase.py +0 -0
  35. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/__init__.py +0 -0
  36. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/QtBatchInference.py +0 -0
  37. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/QtDeployModel.py +0 -0
  38. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/__init__.py +0 -0
  39. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/BreakTime/QtBreakout.py +0 -0
  40. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/BreakTime/QtSnake.py +0 -0
  41. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/BreakTime/__init__.py +0 -0
  42. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtGraphicsUtility.py +0 -0
  43. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtMarginInput.py +0 -0
  44. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtOverlapInput.py +0 -0
  45. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtTileSizeInput.py +0 -0
  46. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtUpdateImagePaths.py +0 -0
  47. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/CoralNet/QtAuthenticate.py +0 -0
  48. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/CoralNet/QtDownload.py +0 -0
  49. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/CoralNet/__init__.py +0 -0
  50. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtDataItem.py +0 -0
  51. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtFeatureStore.py +0 -0
  52. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtSettingsWidgets.py +0 -0
  53. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/__init__.py +0 -0
  54. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportAnnotations.py +0 -0
  55. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportCoralNetAnnotations.py +0 -0
  56. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportGeoJSONAnnotations.py +0 -0
  57. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportLabels.py +0 -0
  58. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportMaskAnnotations.py +0 -0
  59. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportTagLabAnnotations.py +0 -0
  60. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportTagLabLabels.py +0 -0
  61. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportViscoreAnnotations.py +0 -0
  62. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportAnnotations.py +0 -0
  63. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportCoralNetAnnotations.py +0 -0
  64. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportCoralNetLabels.py +0 -0
  65. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportFrames.py +0 -0
  66. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportImages.py +0 -0
  67. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportLabels.py +0 -0
  68. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportTagLabAnnotations.py +0 -0
  69. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportTagLabLabels.py +0 -0
  70. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportViscoreAnnotations.py +0 -0
  71. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtOpenProject.py +0 -0
  72. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtSaveProject.py +0 -0
  73. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/__init__.py +0 -0
  74. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/1.png +0 -0
  75. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/2.png +0 -0
  76. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/3.png +0 -0
  77. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/4.png +0 -0
  78. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/5.png +0 -0
  79. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/__init__.py +0 -0
  80. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/add.png +0 -0
  81. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/all.png +0 -0
  82. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/apple.png +0 -0
  83. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/breakout.png +0 -0
  84. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/coral.png +0 -0
  85. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/edit.png +0 -0
  86. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/eye.png +0 -0
  87. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/hide.png +0 -0
  88. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/home.png +0 -0
  89. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/lock.png +0 -0
  90. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/machine.png +0 -0
  91. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/magic.png +0 -0
  92. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/opaque.png +0 -0
  93. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/parameters.png +0 -0
  94. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/patch.png +0 -0
  95. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/polygon.png +0 -0
  96. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/rabbit.png +0 -0
  97. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/rectangle.png +0 -0
  98. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/remove.png +0 -0
  99. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/rocket.png +0 -0
  100. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/select.png +0 -0
  101. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/settings.png +0 -0
  102. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/snake.png +0 -0
  103. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/tile.png +0 -0
  104. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/transparent.png +0 -0
  105. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/turtle.png +0 -0
  106. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/unlock.png +0 -0
  107. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/user.png +0 -0
  108. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/wizard.png +0 -0
  109. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/workarea.png +0 -0
  110. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/www.png +0 -0
  111. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtBase.py +0 -0
  112. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtClassify.py +0 -0
  113. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtDetect.py +0 -0
  114. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtSegment.py +0 -0
  115. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/__init__.py +0 -0
  116. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/__init__.py +0 -0
  117. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/convnext_tiny.yaml +0 -0
  118. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/efficientnet_b0.yaml +0 -0
  119. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/mobilenet_v3_large.yaml +0 -0
  120. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/swin_t.yaml +0 -0
  121. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/convnext_tiny.yaml +0 -0
  122. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_large-fpn.yaml +0 -0
  123. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_small-fpn.yaml +0 -0
  124. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/resnet101.yaml +0 -0
  125. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t-fpn.yaml +0 -0
  126. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t.yaml +0 -0
  127. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p2.yaml +0 -0
  128. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p6.yaml +0 -0
  129. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/convnext_tiny.yaml +0 -0
  130. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t-fpn.yaml +0 -0
  131. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t.yaml +0 -0
  132. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p2.yaml +0 -0
  133. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p6.yaml +0 -0
  134. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ConfusionMatrix.py +0 -0
  135. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtBase.py +0 -0
  136. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtClassify.py +0 -0
  137. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtDetect.py +0 -0
  138. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtSegment.py +0 -0
  139. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/__init__.py +0 -0
  140. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtBase.py +0 -0
  141. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtClassify.py +0 -0
  142. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtDetect.py +0 -0
  143. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtSegment.py +0 -0
  144. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/__init__.py +0 -0
  145. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtBase.py +0 -0
  146. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtClassify.py +0 -0
  147. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtDetect.py +0 -0
  148. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtSegment.py +0 -0
  149. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/__init__.py +0 -0
  150. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/QtBase.py +0 -0
  151. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/QtDetect.py +0 -0
  152. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/QtSegment.py +0 -0
  153. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/__init__.py +0 -0
  154. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/MergeDatasets/QtBase.py +0 -0
  155. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/MergeDatasets/QtClassify.py +0 -0
  156. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/MergeDatasets/__init__.py +0 -0
  157. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/OptimizeModel/QtBase.py +0 -0
  158. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/OptimizeModel/__init__.py +0 -0
  159. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtBase.py +0 -0
  160. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtClassify.py +0 -0
  161. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtDetect.py +0 -0
  162. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtSegment.py +0 -0
  163. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/__init__.py +0 -0
  164. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtBase.py +0 -0
  165. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtClassify.py +0 -0
  166. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtDetect.py +0 -0
  167. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtSegment.py +0 -0
  168. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/__init__.py +0 -0
  169. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/tuner.py +0 -0
  170. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtBase.py +0 -0
  171. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtClassify.py +0 -0
  172. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtDetect.py +0 -0
  173. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtInference.py +0 -0
  174. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtSegment.py +0 -0
  175. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtVideoWidget.py +0 -0
  176. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/__init__.py +0 -0
  177. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/bbox3d_utils.py +0 -0
  178. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/depth_model.py +0 -0
  179. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/detection_model.py +0 -0
  180. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/load_camera_params.py +0 -0
  181. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/run.py +0 -0
  182. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/__init__.py +0 -0
  183. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/analytics.py +0 -0
  184. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/WeightedDataset.py +0 -0
  185. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/__init__.py +0 -0
  186. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtConfidenceWindow.py +0 -0
  187. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtEventFilter.py +0 -0
  188. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtImageWindow.py +0 -0
  189. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtLabelWindow.py +0 -0
  190. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtPatchSampling.py +0 -0
  191. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtProgressBar.py +0 -0
  192. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtWorkArea.py +0 -0
  193. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/ImageFilter.py +0 -0
  194. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/QtRaster.py +0 -0
  195. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/RasterManager.py +0 -0
  196. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/RasterTableModel.py +0 -0
  197. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/__init__.py +0 -0
  198. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/CombineResults.py +0 -0
  199. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/ConvertResults.py +0 -0
  200. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/MapResults.py +0 -0
  201. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/Masks.py +0 -0
  202. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/ResultsProcessor.py +0 -0
  203. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/__init__.py +0 -0
  204. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/QtBatchInference.py +0 -0
  205. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/QtDeployGenerator.py +0 -0
  206. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/QtDeployPredictor.py +0 -0
  207. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/__init__.py +0 -0
  208. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/QtBatchInference.py +0 -0
  209. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/QtDeployPredictor.py +0 -0
  210. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/QtTrainModel.py +0 -0
  211. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/__init__.py +0 -0
  212. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/QtTileBatchInference.py +0 -0
  213. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/QtTileCreation.py +0 -0
  214. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtBase.py +0 -0
  215. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtClassify.py +0 -0
  216. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtDetect.py +0 -0
  217. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtSegment.py +0 -0
  218. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/__init__.py +0 -0
  219. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/__init__.py +0 -0
  220. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtCutSubTool.py +0 -0
  221. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtMoveSubTool.py +0 -0
  222. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtPanTool.py +0 -0
  223. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtPatchTool.py +0 -0
  224. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtPolygonTool.py +0 -0
  225. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtRectangleTool.py +0 -0
  226. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtResizeSubTool.py +0 -0
  227. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSAMTool.py +0 -0
  228. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSeeAnythingTool.py +0 -0
  229. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSelectSubTool.py +0 -0
  230. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSelectTool.py +0 -0
  231. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSubTool.py +0 -0
  232. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtTool.py +0 -0
  233. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtWorkAreaTool.py +0 -0
  234. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtZoomTool.py +0 -0
  235. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/__init__.py +0 -0
  236. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/main.py +0 -0
  237. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox/utilities.py +0 -0
  238. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/SOURCES.txt +0 -0
  239. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/dependency_links.txt +0 -0
  240. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/entry_points.txt +0 -0
  241. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/requires.txt +0 -0
  242. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/top_level.txt +0 -0
  243. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/mkdocs.yml +0 -0
  244. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/requirements.txt +0 -0
  245. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/requirements_dev.txt +0 -0
  246. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/setup.cfg +0 -0
  247. {coralnet_toolbox-0.0.69 → coralnet_toolbox-0.0.70}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coralnet-toolbox
3
- Version: 0.0.69
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
@@ -94,10 +94,12 @@ coralnet-toolbox
94
94
 
95
95
  ## 📚 Guides
96
96
 
97
- 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)
98
99
  - [Installation](https://jordan-pierce.github.io/CoralNet-Toolbox/installation)
99
100
  - [Usage](https://jordan-pierce.github.io/CoralNet-Toolbox/usage)
100
- - [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)
101
103
 
102
104
  <details open>
103
105
  <summary><h2><b>🎥 Watch the Video Demos</b></h2></summary>
@@ -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>
@@ -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)
@@ -346,6 +346,39 @@ class EmbeddingViewer(QWidget):
346
346
 
347
347
  def mousePressEvent(self, event):
348
348
  """Handle mouse press for selection (point or rubber band) and panning."""
349
+ # Ctrl+Right-Click for context menu selection
350
+ if event.button() == Qt.RightButton and event.modifiers() == Qt.ControlModifier:
351
+ item_at_pos = self.graphics_view.itemAt(event.pos())
352
+ if isinstance(item_at_pos, EmbeddingPointItem):
353
+ # 1. Clear all selections in both viewers
354
+ self.graphics_scene.clearSelection()
355
+ item_at_pos.setSelected(True)
356
+ self.on_selection_changed() # Updates internal state and emits signals
357
+
358
+ # 2. Sync annotation viewer selection
359
+ ann_id = item_at_pos.data_item.annotation.id
360
+ self.explorer_window.annotation_viewer.render_selection_from_ids({ann_id})
361
+
362
+ # 3. Update annotation window (set image, select, center)
363
+ explorer = self.explorer_window
364
+ annotation = item_at_pos.data_item.annotation
365
+ image_path = annotation.image_path
366
+
367
+ if hasattr(explorer, 'annotation_window'):
368
+ if explorer.annotation_window.current_image_path != image_path:
369
+ if hasattr(explorer.annotation_window, 'set_image'):
370
+ explorer.annotation_window.set_image(image_path)
371
+ if hasattr(explorer.annotation_window, 'select_annotation'):
372
+ explorer.annotation_window.select_annotation(annotation)
373
+ if hasattr(explorer.annotation_window, 'center_on_annotation'):
374
+ explorer.annotation_window.center_on_annotation(annotation)
375
+
376
+ explorer.update_label_window_selection()
377
+ explorer.update_button_states()
378
+ event.accept()
379
+ return
380
+
381
+ # Handle left-click for selection or rubber band
349
382
  if event.button() == Qt.LeftButton and event.modifiers() == Qt.ControlModifier:
350
383
  item_at_pos = self.graphics_view.itemAt(event.pos())
351
384
  if isinstance(item_at_pos, EmbeddingPointItem):
@@ -701,6 +734,14 @@ class AnnotationViewer(QScrollArea):
701
734
  explorer = self.explorer_window
702
735
  image_path = widget.annotation.image_path
703
736
  annotation_to_select = widget.annotation
737
+
738
+ # ctrl+right click to only select this annotation (single selection):
739
+ self.clear_selection()
740
+ self.select_widget(widget)
741
+ changed_ids = [widget.data_item.annotation.id]
742
+
743
+ if changed_ids:
744
+ self.selection_changed.emit(changed_ids)
704
745
 
705
746
  if hasattr(explorer, 'annotation_window'):
706
747
  # Check if the image needs to be changed
@@ -710,15 +751,17 @@ class AnnotationViewer(QScrollArea):
710
751
 
711
752
  # Now, select the annotation in the annotation_window
712
753
  if hasattr(explorer.annotation_window, 'select_annotation'):
713
- # This method by default unselects other annotations
714
754
  explorer.annotation_window.select_annotation(annotation_to_select)
755
+
756
+ # Center the annotation window view on the selected annotation
757
+ if hasattr(explorer.annotation_window, 'center_on_annotation'):
758
+ explorer.annotation_window.center_on_annotation(annotation_to_select)
715
759
 
716
760
  # Also clear any existing selection in the explorer window itself
717
- explorer.annotation_viewer.clear_selection()
718
- explorer.embedding_viewer.render_selection_from_ids(set())
761
+ explorer.embedding_viewer.render_selection_from_ids({widget.data_item.annotation.id})
719
762
  explorer.update_label_window_selection()
720
763
  explorer.update_button_states()
721
-
764
+
722
765
  event.accept()
723
766
 
724
767
  @pyqtSlot()
@@ -982,6 +1025,8 @@ class AnnotationViewer(QScrollArea):
982
1025
 
983
1026
  self.recalculate_widget_positions()
984
1027
  self._update_toolbar_state()
1028
+ # Update the label window with the new annotation count
1029
+ self.explorer_window.main_window.label_window.update_annotation_count()
985
1030
 
986
1031
  def resizeEvent(self, event):
987
1032
  """On window resize, reflow the annotation widgets."""
@@ -1027,11 +1072,17 @@ class AnnotationViewer(QScrollArea):
1027
1072
  break
1028
1073
  widget = widget.parent()
1029
1074
 
1030
- # If click is outside widgets and there is a selection, clear it
1031
- if not is_on_widget and self.selected_widgets:
1032
- changed_ids = [w.data_item.annotation.id for w in self.selected_widgets]
1033
- self.clear_selection()
1034
- self.selection_changed.emit(changed_ids)
1075
+ # If click is outside widgets, clear annotation_window selection
1076
+ if not is_on_widget:
1077
+ # Clear annotation selection in the annotation_window as well
1078
+ if hasattr(self.explorer_window, 'annotation_window') and self.explorer_window.annotation_window:
1079
+ if hasattr(self.explorer_window.annotation_window, 'unselect_annotations'):
1080
+ self.explorer_window.annotation_window.unselect_annotations()
1081
+ # If there is a selection in the viewer, clear it
1082
+ if self.selected_widgets:
1083
+ changed_ids = [w.data_item.annotation.id for w in self.selected_widgets]
1084
+ self.clear_selection()
1085
+ self.selection_changed.emit(changed_ids)
1035
1086
  return
1036
1087
 
1037
1088
  elif event.modifiers() == Qt.ControlModifier:
@@ -2488,6 +2539,10 @@ class ExplorerWindow(QMainWindow):
2488
2539
  # Reset sort options when filters change
2489
2540
  self.annotation_viewer.active_ordered_ids = []
2490
2541
  self.annotation_viewer.set_confidence_sort_availability(False)
2542
+
2543
+ # Update the annotation count in the label window
2544
+ self.label_window.update_annotation_count()
2545
+
2491
2546
  finally:
2492
2547
  QApplication.restoreOverrideCursor()
2493
2548
 
@@ -448,7 +448,7 @@ class AnnotationWindow(QGraphicsView):
448
448
  # Center the view on the work area's center
449
449
  self.centerOn(work_area_center)
450
450
 
451
- def center_on_annotation(self, annotation):
451
+ def just_center_on_annotation(self, annotation):
452
452
  """Center the view on the specified annotation."""
453
453
  # Create graphics item if it doesn't exist
454
454
  if not annotation.graphics_item:
@@ -460,6 +460,33 @@ class AnnotationWindow(QGraphicsView):
460
460
 
461
461
  # Center the view on the annotation's center
462
462
  self.centerOn(annotation_center)
463
+
464
+ def center_on_annotation(self, annotation):
465
+ """Center and zoom in to focus on the specified annotation."""
466
+ # Create graphics item if it doesn't exist
467
+ if not annotation.graphics_item:
468
+ annotation.create_graphics_item(self.scene)
469
+
470
+ # Get the bounding rect of the annotation in scene coordinates
471
+ annotation_rect = annotation.graphics_item.boundingRect()
472
+
473
+ # Add some padding around the annotation (20% on each side)
474
+ padding_x = annotation_rect.width() * 0.2
475
+ padding_y = annotation_rect.height() * 0.2
476
+ padded_rect = annotation_rect.adjusted(-padding_x, -padding_y, padding_x, padding_y)
477
+
478
+ # Fit the padded annotation rect in the view
479
+ self.fitInView(padded_rect, Qt.KeepAspectRatio)
480
+
481
+ # Update the zoom factor based on the new view transformation
482
+ # We can calculate this by comparing the viewport size to the scene rect size
483
+ view_rect = self.viewport().rect()
484
+ zoom_x = view_rect.width() / padded_rect.width()
485
+ zoom_y = view_rect.height() / padded_rect.height()
486
+ self.zoom_factor = min(zoom_x, zoom_y)
487
+
488
+ # Signal that the view has changed
489
+ self.viewChanged.emit(*self.get_image_dimensions())
463
490
 
464
491
  def cycle_annotations(self, direction):
465
492
  """Cycle through annotations in the specified direction."""
@@ -1398,6 +1398,9 @@ class MainWindow(QMainWindow):
1398
1398
 
1399
1399
  def update_label_transparency(self, value):
1400
1400
  """Update the label transparency value in LabelWindow, AnnotationWindow and the Slider"""
1401
+ if self.explorer_window:
1402
+ return # Do not update transparency if explorer window is open
1403
+
1401
1404
  if self.all_labels_button.isChecked():
1402
1405
  # Set transparency for all labels in LabelWindow, AnnotationWindow
1403
1406
  self.label_window.set_all_labels_transparency(value)
@@ -1677,6 +1680,9 @@ class MainWindow(QMainWindow):
1677
1680
 
1678
1681
  try:
1679
1682
  self.untoggle_all_tools()
1683
+ # Set the transparency value ahead of time
1684
+ self.update_transparency_slider(0)
1685
+
1680
1686
  # Recreate the explorer window, passing the main window instance
1681
1687
  self.explorer_window = ExplorerWindow(self)
1682
1688
 
@@ -1688,8 +1694,7 @@ class MainWindow(QMainWindow):
1688
1694
  # Disable all main window widgets except select few
1689
1695
  self.set_main_window_enabled_state(
1690
1696
  enable_list=[self.annotation_window,
1691
- self.label_window,
1692
- self.transparency_widget],
1697
+ self.label_window],
1693
1698
  disable_list=[self.toolbar,
1694
1699
  self.menu_bar,
1695
1700
  self.image_window,
@@ -1708,7 +1713,7 @@ class MainWindow(QMainWindow):
1708
1713
  self.explorer_window = None
1709
1714
  # Re-enable everything if there was an error
1710
1715
  self.set_main_window_enabled_state()
1711
-
1716
+
1712
1717
  def explorer_closed(self):
1713
1718
  """Handle the explorer window being closed."""
1714
1719
  if self.explorer_window:
@@ -1,6 +1,6 @@
1
1
  """Top-level package for CoralNet-Toolbox."""
2
2
 
3
- __version__ = "0.0.69"
3
+ __version__ = "0.0.70"
4
4
  __author__ = "Jordan Pierce"
5
5
  __email__ = "jordan.pierce@noaa.gov"
6
6
  __credits__ = "National Center for Coastal and Ocean Sciences (NCCOS)"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coralnet-toolbox
3
- Version: 0.0.69
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
@@ -94,10 +94,12 @@ coralnet-toolbox
94
94
 
95
95
  ## 📚 Guides
96
96
 
97
- 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)
98
99
  - [Installation](https://jordan-pierce.github.io/CoralNet-Toolbox/installation)
99
100
  - [Usage](https://jordan-pierce.github.io/CoralNet-Toolbox/usage)
100
- - [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)
101
103
 
102
104
  <details open>
103
105
  <summary><h2><b>🎥 Watch the Video Demos</b></h2></summary>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "coralnet-toolbox"
3
- version = "0.0.69"
3
+ version = "0.0.70"
4
4
 
5
5
  dynamic = [
6
6
  "dependencies",
@@ -43,7 +43,7 @@ universal = true
43
43
 
44
44
 
45
45
  [tool.bumpversion]
46
- current_version = "0.0.69"
46
+ current_version = "0.0.70"
47
47
  commit = true
48
48
  tag = true
49
49