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.
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.gitignore +7 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/PKG-INFO +8 -4
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/README.md +6 -3
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtAnnotation.py +1 -1
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtDataItem.py +55 -16
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtExplorer.py +1211 -341
- coralnet_toolbox-0.0.70/coralnet_toolbox/Explorer/QtFeatureStore.py +176 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/QtSettingsWidgets.py +207 -24
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtAnnotationWindow.py +28 -1
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtEventFilter.py +18 -17
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtMainWindow.py +65 -8
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/__init__.py +1 -1
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/PKG-INFO +8 -4
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/SOURCES.txt +1 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/requires.txt +1 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/pyproject.toml +2 -2
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/requirements.txt +1 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.editorconfig +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.gitallowed +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/ISSUE_TEMPLATE/general_question.md +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/docs-build.yml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/docs.yml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/installation.yml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/macos.yml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/pypi.yml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/ubuntu.yml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/.github/workflows/windows.yml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/LICENSE.txt +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/MANIFEST.in +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtMultiPolygonAnnotation.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtPatchAnnotation.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtPolygonAnnotation.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtRectangleAnnotation.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/GroundingDINO.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/OWLViT.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/OmDetTurbo.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/Models/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/QtBatchInference.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/QtDeployModel.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/AutoDistill/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/BreakTime/QtBreakout.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/BreakTime/QtSnake.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/BreakTime/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtGraphicsUtility.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtMarginInput.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtOverlapInput.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtTileSizeInput.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Common/QtUpdateImagePaths.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/CoralNet/QtAuthenticate.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/CoralNet/QtDownload.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/CoralNet/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Explorer/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportCoralNetAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportGeoJSONAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportLabels.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportMaskAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportTagLabAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportTagLabLabels.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtExportViscoreAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportCoralNetAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportCoralNetLabels.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportFrames.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportImages.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportLabels.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportTagLabAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportTagLabLabels.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtImportViscoreAnnotations.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtOpenProject.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/QtSaveProject.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/IO/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/1.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/2.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/3.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/4.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/5.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/add.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/all.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/apple.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/breakout.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/coral.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/edit.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/eye.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/hide.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/home.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/lock.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/machine.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/magic.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/opaque.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/parameters.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/patch.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/polygon.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/rabbit.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/rectangle.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/remove.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/rocket.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/select.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/settings.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/snake.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/tile.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/transparent.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/turtle.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/unlock.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/user.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/wizard.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/workarea.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Icons/www.png +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/BatchInference/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/convnext_tiny.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/efficientnet_b0.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/mobilenet_v3_large.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/classify/swin_t.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/convnext_tiny.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_large-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_small-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/resnet101.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p2.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p6.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/convnext_tiny.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p2.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p6.yaml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ConfusionMatrix.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/DeployModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/EvaluateModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ExportDataset/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/ImportDataset/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/MergeDatasets/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/MergeDatasets/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/MergeDatasets/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/OptimizeModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/OptimizeModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TrainModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/TuneModel/tuner.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtInference.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/QtVideoWidget.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/bbox3d_utils.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/depth_model.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/detection_model.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/load_camera_params.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/run.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/VideoInference/analytics.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/WeightedDataset.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/MachineLearning/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtConfidenceWindow.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtImageWindow.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtLabelWindow.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtPatchSampling.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtProgressBar.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/QtWorkArea.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/ImageFilter.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/QtRaster.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/RasterManager.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/RasterTableModel.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Rasters/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/CombineResults.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/ConvertResults.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/MapResults.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/Masks.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/ResultsProcessor.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Results/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/QtBatchInference.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/QtDeployGenerator.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/QtDeployPredictor.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SAM/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/QtBatchInference.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/QtDeployPredictor.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/QtTrainModel.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/SeeAnything/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/QtTileBatchInference.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/QtTileCreation.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtBase.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/TileDataset/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tile/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtCutSubTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtMoveSubTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtPanTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtPatchTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtPolygonTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtRectangleTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtResizeSubTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSAMTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSeeAnythingTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSelectSubTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSelectTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtSubTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtWorkAreaTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/QtZoomTool.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Tools/__init__.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/main.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/utilities.py +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/dependency_links.txt +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/entry_points.txt +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox.egg-info/top_level.txt +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/mkdocs.yml +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/requirements_dev.txt +0 -0
- {coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/setup.cfg +0 -0
- {coralnet_toolbox-0.0.68 → 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.
|
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
|
-
-
|
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
|
-
-
|
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
|
-
-
|
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
|
-
-
|
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
|
{coralnet_toolbox-0.0.68 → coralnet_toolbox-0.0.70}/coralnet_toolbox/Annotations/QtAnnotation.py
RENAMED
@@ -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,
|
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
|
-
|
208
|
-
|
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
|
-
|
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:
|