scale-nucleus 0.17.5__tar.gz → 0.17.6b0__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.
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/PKG-INFO +2 -1
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/dataset.py +66 -5
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/pyproject.toml +1 -1
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/LICENSE +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/README.md +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/client.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/datasets.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/helpers/__init__.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/helpers/nucleus_url.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/helpers/web_helper.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/install_completion.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/jobs.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/models.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/nu.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/reference.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/slices.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/tests.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/__init__.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/annotation.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/annotation_uploader.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/async_job.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/async_utils.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/autocurate.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/camera_params.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/chip_utils.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/connection.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/constants.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/__init__.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/dataset_details.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/dataset_info.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/dataset_size.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/job_status.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/scenes_list.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/dataset_item.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/dataset_item_uploader.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/deprecation_warning.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/embedding_index.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/errors.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/evaluation_match.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/job.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/logger.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metadata_manager.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/__init__.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/base.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/categorization_metrics.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/cuboid_metrics.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/cuboid_utils.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/custom_types.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/errors.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/filtering.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/filters.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/metric_utils.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/polygon_metrics.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/polygon_utils.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/segmentation_loader.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/segmentation_metrics.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/segmentation_to_poly_metrics.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/segmentation_utils.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/model.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/model_run.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/package_not_installed.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/payload_constructor.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/prediction.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/pydantic_base.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/quaternion.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/retry_strategy.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/scene.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/slice.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/test_launch_integration.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/track.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/upload_response.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/url_utils.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/utils.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/__init__.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/client.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/constants.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/__init__.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/eval_function.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/scenario_test.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/scenario_test_evaluations.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/scenario_test_metric.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/errors.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/__init__.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/available_eval_functions.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/base_eval_function.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/config_classes/__init__.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/config_classes/segmentation.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/scenario_test.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/scenario_test_evaluation.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/scenario_test_metric.py +0 -0
- {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/utils.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: scale-nucleus
|
3
|
-
Version: 0.17.
|
3
|
+
Version: 0.17.6b0
|
4
4
|
Summary: The official Python client library for Nucleus, the Data Platform for AI
|
5
5
|
Home-page: https://scale.com/nucleus
|
6
6
|
License: MIT
|
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3.8
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.9
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
17
18
|
Provides-Extra: launch
|
18
19
|
Provides-Extra: metrics
|
19
20
|
Requires-Dist: Pillow (>=7.1.2)
|
@@ -997,9 +997,9 @@ class Dataset:
|
|
997
997
|
raise Exception("Must provide at least one list of internal IDs")
|
998
998
|
payload = {
|
999
999
|
NAME_KEY: name,
|
1000
|
-
DATASET_ITEM_IDS_KEY:
|
1001
|
-
|
1002
|
-
|
1000
|
+
DATASET_ITEM_IDS_KEY: (
|
1001
|
+
dataset_item_ids if dataset_item_ids else None
|
1002
|
+
),
|
1003
1003
|
SCENE_IDS_KEY: scene_ids if scene_ids else None,
|
1004
1004
|
OBJECT_IDS_KEY: [*(annotation_ids or []), *(prediction_ids or [])]
|
1005
1005
|
or None,
|
@@ -1449,6 +1449,67 @@ class Dataset:
|
|
1449
1449
|
)
|
1450
1450
|
return convert_export_payload(api_payload[EXPORTED_ROWS])
|
1451
1451
|
|
1452
|
+
def scene_and_annotation_generator(self, page_size: int = 10):
|
1453
|
+
"""Provides a generator of all Scenes and Annotations in the dataset grouped by scene.
|
1454
|
+
|
1455
|
+
Args:
|
1456
|
+
page_size: Number of scenes to fetch per page. Default is 10.
|
1457
|
+
|
1458
|
+
Returns:
|
1459
|
+
Generator where each element is a nested dict containing scene and annotation information of the dataset structured as a JSON.
|
1460
|
+
|
1461
|
+
Track grouping is slightly more complicated and is done in the following order:
|
1462
|
+
1. If track_id is defined in the annotations table, use it as the track id.
|
1463
|
+
2. If track_reference_id is defined in the metadata field of the annotations table, use it as the track id.
|
1464
|
+
3. If track_id is defined in the metadata field of the annotations table, use it as the track id.
|
1465
|
+
4. If track_id is not defined and annotation_id is defined, use annotation_id as track id.
|
1466
|
+
5. If annotation_id grouping is unsuccessful such that the annotation id is unique across all frames in the scene for all annotations, throw an error that the annotation format is incompatible.
|
1467
|
+
6. If there is no track or annotation id, throw an error that the annotation format is incompatible.
|
1468
|
+
|
1469
|
+
If you use the generator and discover that no scenes were generated, check the response error message for more information. It is likely that the annotations are not in the correct format.
|
1470
|
+
|
1471
|
+
::
|
1472
|
+
Iterable[{
|
1473
|
+
"scene": {
|
1474
|
+
"id": str,
|
1475
|
+
"reference_id": str,
|
1476
|
+
"metadata": Dict[str, Any]
|
1477
|
+
"type": str,
|
1478
|
+
"fileLocation": str,
|
1479
|
+
}
|
1480
|
+
"annotations": {
|
1481
|
+
"{trackId}": {
|
1482
|
+
"label": str,
|
1483
|
+
"name": str,
|
1484
|
+
"frames": List[{
|
1485
|
+
"left": int,
|
1486
|
+
"top": int,
|
1487
|
+
"width": int,
|
1488
|
+
"height": int,
|
1489
|
+
"key": str, # frame key
|
1490
|
+
"metadata": Dict[str, Any]
|
1491
|
+
}]
|
1492
|
+
}
|
1493
|
+
}
|
1494
|
+
}]
|
1495
|
+
|
1496
|
+
This is similar to how the Scale API returns task data
|
1497
|
+
"""
|
1498
|
+
|
1499
|
+
if page_size > 30:
|
1500
|
+
raise ValueError("Page size must be less than or equal to 30")
|
1501
|
+
|
1502
|
+
endpoint_name = "exportForTrainingByScene"
|
1503
|
+
json_generator = paginate_generator(
|
1504
|
+
client=self._client,
|
1505
|
+
endpoint=f"dataset/{self.id}/{endpoint_name}",
|
1506
|
+
result_key=EXPORT_FOR_TRAINING_KEY,
|
1507
|
+
page_size=page_size,
|
1508
|
+
)
|
1509
|
+
|
1510
|
+
for data in json_generator:
|
1511
|
+
yield data
|
1512
|
+
|
1452
1513
|
def items_and_annotation_generator(
|
1453
1514
|
self,
|
1454
1515
|
query: Optional[str] = None,
|
@@ -2310,9 +2371,9 @@ class Dataset:
|
|
2310
2371
|
pointcloud_ref_id: str,
|
2311
2372
|
predictions_s3_path: str,
|
2312
2373
|
):
|
2313
|
-
"""Upload Lidar Semantic Segmentation predictions for a given
|
2374
|
+
"""Upload Lidar Semantic Segmentation predictions for a given point-cloud.
|
2314
2375
|
|
2315
|
-
Assuming a
|
2376
|
+
Assuming a point-cloud with only 4 points (three labeled as Car, one labeled as Person),
|
2316
2377
|
the contents of the predictions s3 object should be formatted as such:
|
2317
2378
|
|
2318
2379
|
.. code-block:: json
|
@@ -25,7 +25,7 @@ ignore = ["E501", "E741", "E731", "F401"] # Easy ignore for getting it running
|
|
25
25
|
|
26
26
|
[tool.poetry]
|
27
27
|
name = "scale-nucleus"
|
28
|
-
version = "0.17.
|
28
|
+
version = "0.17.6b0"
|
29
29
|
description = "The official Python client library for Nucleus, the Data Platform for AI"
|
30
30
|
license = "MIT"
|
31
31
|
authors = ["Scale AI Nucleus Team <nucleusapi@scaleapi.com>"]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/dataset_details.py
RENAMED
File without changes
|
{scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/dataset_info.py
RENAMED
File without changes
|
{scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/dataset_size.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/segmentation_to_poly_metrics.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/scenario_test_evaluation.py
RENAMED
File without changes
|
File without changes
|
File without changes
|