coralnet-toolbox 0.0.71__tar.gz → 0.0.72__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.71 → coralnet_toolbox-0.0.72}/PKG-INFO +1 -1
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Annotations/QtRectangleAnnotation.py +31 -2
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Explorer/QtDataItem.py +52 -20
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Explorer/QtExplorer.py +439 -274
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Explorer/QtFeatureStore.py +15 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Explorer/QtSettingsWidgets.py +3 -3
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/QtAnnotationWindow.py +10 -2
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/QtMainWindow.py +60 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtResizeSubTool.py +6 -1
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtSelectTool.py +48 -6
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/__init__.py +1 -1
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox.egg-info/PKG-INFO +1 -1
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/pyproject.toml +2 -2
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.editorconfig +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.gitallowed +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/ISSUE_TEMPLATE/general_question.md +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/workflows/docs-build.yml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/workflows/docs.yml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/workflows/installation.yml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/workflows/macos.yml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/workflows/pypi.yml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/workflows/ubuntu.yml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.github/workflows/windows.yml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/.gitignore +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/LICENSE.txt +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/MANIFEST.in +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/README.md +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Annotations/QtAnnotation.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Annotations/QtMultiPolygonAnnotation.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Annotations/QtPatchAnnotation.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Annotations/QtPolygonAnnotation.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Annotations/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/AutoDistill/Models/GroundingDINO.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/AutoDistill/Models/OWLViT.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/AutoDistill/Models/OmDetTurbo.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/AutoDistill/Models/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/AutoDistill/Models/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/AutoDistill/QtBatchInference.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/AutoDistill/QtDeployModel.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/AutoDistill/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/BreakTime/QtBreakout.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/BreakTime/QtSnake.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/BreakTime/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Common/QtGraphicsUtility.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Common/QtMarginInput.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Common/QtOverlapInput.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Common/QtTileSizeInput.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Common/QtUpdateImagePaths.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/CoralNet/QtAuthenticate.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/CoralNet/QtDownload.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/CoralNet/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Explorer/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtExportAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtExportCoralNetAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtExportGeoJSONAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtExportLabels.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtExportMaskAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtExportTagLabAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtExportTagLabLabels.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtExportViscoreAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtImportAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtImportCoralNetAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtImportCoralNetLabels.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtImportFrames.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtImportImages.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtImportLabels.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtImportTagLabAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtImportTagLabLabels.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtImportViscoreAnnotations.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtOpenProject.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/QtSaveProject.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/IO/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/1.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/2.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/3.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/4.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/5.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/add.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/all.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/apple.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/breakout.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/coral.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/edit.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/eye.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/hide.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/home.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/lock.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/machine.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/magic.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/opaque.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/parameters.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/patch.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/polygon.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/rabbit.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/rectangle.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/remove.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/rocket.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/select.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/settings.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/snake.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/target.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/tile.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/transparent.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/turtle.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/unlock.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/user.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/wizard.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/workarea.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Icons/www.png +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/BatchInference/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/BatchInference/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/BatchInference/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/BatchInference/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/BatchInference/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/classify/convnext_tiny.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/classify/efficientnet_b0.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/classify/mobilenet_v3_large.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/classify/swin_t.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/detect/convnext_tiny.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_large-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_small-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/detect/resnet101.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p2.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p6.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/segment/convnext_tiny.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p2.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p6.yaml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ConfusionMatrix.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/DeployModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/DeployModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/DeployModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/DeployModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/DeployModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/EvaluateModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/EvaluateModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/EvaluateModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/EvaluateModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/EvaluateModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ExportDataset/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ExportDataset/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ExportDataset/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ExportDataset/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ExportDataset/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ImportDataset/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ImportDataset/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ImportDataset/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/ImportDataset/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/MergeDatasets/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/MergeDatasets/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/MergeDatasets/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/OptimizeModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/OptimizeModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TrainModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TrainModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TrainModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TrainModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TrainModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TuneModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TuneModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TuneModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TuneModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TuneModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/TuneModel/tuner.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/QtInference.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/QtVideoWidget.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/bbox3d_utils.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/depth_model.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/detection_model.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/load_camera_params.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/run.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/VideoInference/analytics.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/WeightedDataset.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/MachineLearning/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/QtConfidenceWindow.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/QtEventFilter.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/QtImageWindow.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/QtLabelWindow.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/QtPatchSampling.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/QtProgressBar.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/QtWorkArea.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Rasters/ImageFilter.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Rasters/QtRaster.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Rasters/RasterManager.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Rasters/RasterTableModel.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Rasters/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Results/CombineResults.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Results/ConvertResults.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Results/MapResults.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Results/Masks.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Results/ResultsProcessor.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Results/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/SAM/QtBatchInference.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/SAM/QtDeployGenerator.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/SAM/QtDeployPredictor.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/SAM/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/SeeAnything/QtBatchInference.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/SeeAnything/QtDeployPredictor.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/SeeAnything/QtTrainModel.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/SeeAnything/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tile/QtTileBatchInference.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tile/QtTileCreation.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tile/TileDataset/QtBase.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tile/TileDataset/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tile/TileDataset/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tile/TileDataset/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tile/TileDataset/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tile/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtCutSubTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtMoveSubTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtPanTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtPatchTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtPolygonTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtRectangleTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtSAMTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtSeeAnythingTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtSelectSubTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtSubTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtWorkAreaTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/QtZoomTool.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/Tools/__init__.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/main.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox/utilities.py +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox.egg-info/SOURCES.txt +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox.egg-info/dependency_links.txt +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox.egg-info/entry_points.txt +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox.egg-info/requires.txt +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/coralnet_toolbox.egg-info/top_level.txt +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/mkdocs.yml +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/requirements.txt +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/requirements_dev.txt +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/setup.cfg +0 -0
- {coralnet_toolbox-0.0.71 → coralnet_toolbox-0.0.72}/uv.lock +0 -0
@@ -57,9 +57,14 @@ class RectangleAnnotation(Annotation):
|
|
57
57
|
|
58
58
|
def set_cropped_bbox(self):
|
59
59
|
"""Set the cropped bounding box for the annotation."""
|
60
|
+
# Store the raw coordinates, keeping the top_left and bottom_right as they are
|
61
|
+
# to maintain the user's dragging experience
|
60
62
|
self.cropped_bbox = (self.top_left.x(), self.top_left.y(), self.bottom_right.x(), self.bottom_right.y())
|
61
|
-
|
62
|
-
|
63
|
+
|
64
|
+
# Calculate annotation_size using absolute differences to handle inverted coordinates
|
65
|
+
width = abs(self.bottom_right.x() - self.top_left.x())
|
66
|
+
height = abs(self.bottom_right.y() - self.top_left.y())
|
67
|
+
self.annotation_size = int(max(width, height))
|
63
68
|
|
64
69
|
def contains_point(self, point: QPointF) -> bool:
|
65
70
|
"""Check if the given point is within the rectangle."""
|
@@ -172,6 +177,10 @@ class RectangleAnnotation(Annotation):
|
|
172
177
|
self.set_cropped_bbox()
|
173
178
|
# Get the bounding box of the rectangle
|
174
179
|
min_x, min_y, max_x, max_y = self.cropped_bbox
|
180
|
+
|
181
|
+
# Ensure min/max values are correctly ordered to avoid negative width/height
|
182
|
+
min_x, max_x = min(min_x, max_x), max(min_x, max_x)
|
183
|
+
min_y, max_y = min(min_y, max_y), max(min_y, max_y)
|
175
184
|
|
176
185
|
# Calculate the window for rasterio
|
177
186
|
window = Window(
|
@@ -275,10 +284,30 @@ class RectangleAnnotation(Annotation):
|
|
275
284
|
elif handle == "bottom_right":
|
276
285
|
self.bottom_right = new_pos
|
277
286
|
|
287
|
+
# Normalize coordinates to ensure top_left has smaller values than bottom_right
|
288
|
+
self.normalize_coordinates()
|
289
|
+
|
278
290
|
self.set_precision(self.top_left, self.bottom_right)
|
279
291
|
self.set_centroid()
|
280
292
|
self.update_graphics_item()
|
281
293
|
self.annotationUpdated.emit(self)
|
294
|
+
|
295
|
+
def normalize_coordinates(self):
|
296
|
+
"""Ensure that top_left has smaller coordinates than bottom_right."""
|
297
|
+
# Create temporary points to store the normalized coordinates
|
298
|
+
x_min = min(self.top_left.x(), self.bottom_right.x())
|
299
|
+
y_min = min(self.top_left.y(), self.bottom_right.y())
|
300
|
+
x_max = max(self.top_left.x(), self.bottom_right.x())
|
301
|
+
y_max = max(self.top_left.y(), self.bottom_right.y())
|
302
|
+
|
303
|
+
# Update the points
|
304
|
+
self.top_left.setX(x_min)
|
305
|
+
self.top_left.setY(y_min)
|
306
|
+
self.bottom_right.setX(x_max)
|
307
|
+
self.bottom_right.setY(y_max)
|
308
|
+
|
309
|
+
# Update centroid after normalization
|
310
|
+
self.set_centroid()
|
282
311
|
|
283
312
|
@classmethod
|
284
313
|
def combine(cls, annotations: list):
|
@@ -94,6 +94,7 @@ class AnnotationImageWidget(QWidget):
|
|
94
94
|
self.widget_height = widget_height
|
95
95
|
self.aspect_ratio = 1.0
|
96
96
|
self.pixmap = None
|
97
|
+
self.is_loaded = False # Flag for lazy loading
|
97
98
|
|
98
99
|
self.animation_offset = 0
|
99
100
|
self.animation_timer = QTimer(self)
|
@@ -101,7 +102,9 @@ class AnnotationImageWidget(QWidget):
|
|
101
102
|
self.animation_timer.setInterval(75)
|
102
103
|
|
103
104
|
self.setup_ui()
|
104
|
-
self.
|
105
|
+
self.recalculate_aspect_ratio() # Calculate aspect ratio from geometry
|
106
|
+
self.update_height(self.widget_height) # Set initial size
|
107
|
+
self.update_tooltip()
|
105
108
|
|
106
109
|
def setup_ui(self):
|
107
110
|
"""Set up the basic UI with a label for the image."""
|
@@ -117,43 +120,72 @@ class AnnotationImageWidget(QWidget):
|
|
117
120
|
"""Updates the tooltip by fetching the latest text from the data item."""
|
118
121
|
self.setToolTip(self.data_item.get_tooltip_text())
|
119
122
|
|
120
|
-
def
|
121
|
-
"""
|
123
|
+
def recalculate_aspect_ratio(self):
|
124
|
+
"""Calculate aspect ratio from annotation geometry without loading image."""
|
125
|
+
try:
|
126
|
+
if hasattr(self.annotation, 'rect'): # RectangleAnnotation
|
127
|
+
rect = self.annotation.rect
|
128
|
+
if rect.height() > 0:
|
129
|
+
self.aspect_ratio = rect.width() / rect.height()
|
130
|
+
elif hasattr(self.annotation, 'size'): # PatchAnnotation
|
131
|
+
self.aspect_ratio = 1.0
|
132
|
+
elif hasattr(self.annotation, 'polygon'): # PolygonAnnotation
|
133
|
+
rect = self.annotation.polygon.boundingRect()
|
134
|
+
if rect.height() > 0:
|
135
|
+
self.aspect_ratio = rect.width() / rect.height()
|
136
|
+
else:
|
137
|
+
# Fallback for other types or if geometry is not available
|
138
|
+
self.aspect_ratio = 1.0
|
139
|
+
except Exception as e:
|
140
|
+
print(f"Could not determine aspect ratio for {self.annotation.id}: {e}")
|
141
|
+
self.aspect_ratio = 1.0
|
142
|
+
|
143
|
+
def load_image(self):
|
144
|
+
"""Loads the image pixmap if it hasn't been loaded yet."""
|
145
|
+
if self.is_loaded:
|
146
|
+
return
|
147
|
+
|
122
148
|
try:
|
123
149
|
cropped_pixmap = self.annotation.get_cropped_image_graphic()
|
124
150
|
if cropped_pixmap and not cropped_pixmap.isNull():
|
125
151
|
self.pixmap = cropped_pixmap
|
126
|
-
|
127
|
-
|
128
|
-
else:
|
129
|
-
self.aspect_ratio = 1.0
|
152
|
+
self.is_loaded = True
|
153
|
+
self._display_pixmap()
|
130
154
|
else:
|
131
155
|
self.image_label.setText("No Image\nAvailable")
|
132
156
|
self.pixmap = None
|
133
|
-
self.aspect_ratio = 1.0
|
134
157
|
except Exception as e:
|
135
158
|
print(f"Error loading annotation image: {e}")
|
136
159
|
self.image_label.setText("Error\nLoading Image")
|
137
160
|
self.pixmap = None
|
138
|
-
self.aspect_ratio = 1.0
|
139
|
-
|
140
|
-
self.update_height(self.widget_height)
|
141
|
-
# Set the initial tooltip
|
142
|
-
self.update_tooltip()
|
143
161
|
|
144
|
-
def
|
145
|
-
"""
|
146
|
-
self.
|
147
|
-
|
148
|
-
self.
|
162
|
+
def unload_image(self):
|
163
|
+
"""Unloads the pixmap to free memory."""
|
164
|
+
if not self.is_loaded:
|
165
|
+
return
|
166
|
+
self.pixmap = None
|
167
|
+
self.image_label.clear()
|
168
|
+
self.is_loaded = False
|
169
|
+
|
170
|
+
def _display_pixmap(self):
|
171
|
+
"""Scales and displays the currently loaded pixmap."""
|
149
172
|
if self.pixmap:
|
173
|
+
new_width = int(self.widget_height * self.aspect_ratio)
|
150
174
|
scaled_pixmap = self.pixmap.scaled(
|
151
175
|
new_width - 8,
|
152
|
-
|
176
|
+
self.widget_height - 8,
|
153
177
|
Qt.KeepAspectRatio,
|
154
178
|
Qt.SmoothTransformation
|
155
179
|
)
|
156
180
|
self.image_label.setPixmap(scaled_pixmap)
|
181
|
+
|
182
|
+
def update_height(self, new_height):
|
183
|
+
"""Updates the widget's height and rescales its width and content accordingly."""
|
184
|
+
self.widget_height = new_height
|
185
|
+
new_width = int(self.widget_height * self.aspect_ratio)
|
186
|
+
self.setFixedSize(new_width, new_height)
|
187
|
+
if self.pixmap:
|
188
|
+
self._display_pixmap()
|
157
189
|
self.update()
|
158
190
|
|
159
191
|
def update_selection_visuals(self):
|
@@ -336,4 +368,4 @@ class AnnotationDataItem:
|
|
336
368
|
return list(self.annotation.user_confidence.values())[0]
|
337
369
|
elif hasattr(self.annotation, 'machine_confidence') and self.annotation.machine_confidence:
|
338
370
|
return list(self.annotation.machine_confidence.values())[0]
|
339
|
-
return 0.0
|
371
|
+
return 0.0
|