scale-nucleus 0.1.22__py3-none-any.whl → 0.6.4__py3-none-any.whl
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.
- cli/client.py +14 -0
- cli/datasets.py +77 -0
- cli/helpers/__init__.py +0 -0
- cli/helpers/nucleus_url.py +10 -0
- cli/helpers/web_helper.py +40 -0
- cli/install_completion.py +33 -0
- cli/jobs.py +42 -0
- cli/models.py +35 -0
- cli/nu.py +42 -0
- cli/reference.py +8 -0
- cli/slices.py +62 -0
- cli/tests.py +121 -0
- nucleus/__init__.py +453 -699
- nucleus/annotation.py +435 -80
- nucleus/autocurate.py +9 -0
- nucleus/connection.py +87 -0
- nucleus/constants.py +12 -2
- nucleus/data_transfer_object/__init__.py +0 -0
- nucleus/data_transfer_object/dataset_details.py +9 -0
- nucleus/data_transfer_object/dataset_info.py +26 -0
- nucleus/data_transfer_object/dataset_size.py +5 -0
- nucleus/data_transfer_object/scenes_list.py +18 -0
- nucleus/dataset.py +1139 -215
- nucleus/dataset_item.py +130 -26
- nucleus/dataset_item_uploader.py +297 -0
- nucleus/deprecation_warning.py +32 -0
- nucleus/errors.py +21 -1
- nucleus/job.py +71 -3
- nucleus/logger.py +9 -0
- nucleus/metadata_manager.py +45 -0
- nucleus/metrics/__init__.py +10 -0
- nucleus/metrics/base.py +117 -0
- nucleus/metrics/categorization_metrics.py +197 -0
- nucleus/metrics/errors.py +7 -0
- nucleus/metrics/filters.py +40 -0
- nucleus/metrics/geometry.py +198 -0
- nucleus/metrics/metric_utils.py +28 -0
- nucleus/metrics/polygon_metrics.py +480 -0
- nucleus/metrics/polygon_utils.py +299 -0
- nucleus/model.py +121 -15
- nucleus/model_run.py +34 -57
- nucleus/payload_constructor.py +30 -18
- nucleus/prediction.py +259 -17
- nucleus/pydantic_base.py +26 -0
- nucleus/retry_strategy.py +4 -0
- nucleus/scene.py +204 -19
- nucleus/slice.py +230 -67
- nucleus/upload_response.py +20 -9
- nucleus/url_utils.py +4 -0
- nucleus/utils.py +139 -35
- nucleus/validate/__init__.py +24 -0
- nucleus/validate/client.py +168 -0
- nucleus/validate/constants.py +20 -0
- nucleus/validate/data_transfer_objects/__init__.py +0 -0
- nucleus/validate/data_transfer_objects/eval_function.py +81 -0
- nucleus/validate/data_transfer_objects/scenario_test.py +19 -0
- nucleus/validate/data_transfer_objects/scenario_test_evaluations.py +11 -0
- nucleus/validate/data_transfer_objects/scenario_test_metric.py +12 -0
- nucleus/validate/errors.py +6 -0
- nucleus/validate/eval_functions/__init__.py +0 -0
- nucleus/validate/eval_functions/available_eval_functions.py +212 -0
- nucleus/validate/eval_functions/base_eval_function.py +60 -0
- nucleus/validate/scenario_test.py +143 -0
- nucleus/validate/scenario_test_evaluation.py +114 -0
- nucleus/validate/scenario_test_metric.py +14 -0
- nucleus/validate/utils.py +8 -0
- {scale_nucleus-0.1.22.dist-info → scale_nucleus-0.6.4.dist-info}/LICENSE +0 -0
- scale_nucleus-0.6.4.dist-info/METADATA +213 -0
- scale_nucleus-0.6.4.dist-info/RECORD +71 -0
- {scale_nucleus-0.1.22.dist-info → scale_nucleus-0.6.4.dist-info}/WHEEL +1 -1
- scale_nucleus-0.6.4.dist-info/entry_points.txt +3 -0
- scale_nucleus-0.1.22.dist-info/METADATA +0 -85
- scale_nucleus-0.1.22.dist-info/RECORD +0 -21
@@ -0,0 +1,213 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: scale-nucleus
|
3
|
+
Version: 0.6.4
|
4
|
+
Summary: The official Python client library for Nucleus, the Data Platform for AI
|
5
|
+
Home-page: https://scale.com/nucleus
|
6
|
+
License: MIT
|
7
|
+
Author: Scale AI Nucleus Team
|
8
|
+
Author-email: nucleusapi@scaleapi.com
|
9
|
+
Requires-Python: >=3.6.2,<4.0.0
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
13
|
+
Classifier: Programming Language :: Python :: 3.7
|
14
|
+
Classifier: Programming Language :: Python :: 3.8
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
16
|
+
Requires-Dist: aiohttp (>=3.7.4,<4.0.0)
|
17
|
+
Requires-Dist: click (>=7.1.2,<9.0)
|
18
|
+
Requires-Dist: dataclasses (>=0.7,<0.8); python_full_version >= "3.6.1" and python_version < "3.7"
|
19
|
+
Requires-Dist: nest-asyncio (>=1.5.1,<2.0.0)
|
20
|
+
Requires-Dist: numpy (>=1.19.5,<2.0.0)
|
21
|
+
Requires-Dist: pydantic (>=1.8.2,<2.0.0)
|
22
|
+
Requires-Dist: requests (>=2.23.0,<3.0.0)
|
23
|
+
Requires-Dist: rich (>=10.15.2,<11.0.0)
|
24
|
+
Requires-Dist: scikit-learn (>=0.24.0)
|
25
|
+
Requires-Dist: scipy (>=1.4.1)
|
26
|
+
Requires-Dist: shellingham (>=1.4.0,<2.0.0)
|
27
|
+
Requires-Dist: tqdm (>=4.41.0,<5.0.0)
|
28
|
+
Project-URL: Documentation, https://dashboard.scale.com/nucleus/docs/api
|
29
|
+
Project-URL: Repository, https://github.com/scaleapi/nucleus-python-client
|
30
|
+
Description-Content-Type: text/markdown
|
31
|
+
|
32
|
+
# Nucleus
|
33
|
+
|
34
|
+
https://dashboard.scale.com/nucleus
|
35
|
+
|
36
|
+
Aggregate metrics in ML are not good enough. To improve production ML, you need to understand their qualitative failure modes, fix them by gathering more data, and curate diverse scenarios.
|
37
|
+
|
38
|
+
Scale Nucleus helps you:
|
39
|
+
|
40
|
+
- Visualize your data
|
41
|
+
- Curate interesting slices within your dataset
|
42
|
+
- Review and manage annotations
|
43
|
+
- Measure and debug your model performance
|
44
|
+
|
45
|
+
Nucleus is a new way—the right way—to develop ML models, helping us move away from the concept of one dataset and towards a paradigm of collections of scenarios.
|
46
|
+
|
47
|
+
## Installation
|
48
|
+
|
49
|
+
`$ pip install scale-nucleus`
|
50
|
+
|
51
|
+
|
52
|
+
## CLI installation
|
53
|
+
We recommend installing the CLI via `pipx` (https://pypa.github.io/pipx/installation/). This makes sure that
|
54
|
+
the CLI does not interfere with you system packages and is accessible from your favorite terminal.
|
55
|
+
|
56
|
+
For MacOS:
|
57
|
+
```bash
|
58
|
+
brew install pipx
|
59
|
+
pipx ensurepath
|
60
|
+
pipx install scale-nucleus
|
61
|
+
# Optional installation of shell completion (for bash, zsh or fish)
|
62
|
+
nu install-completions
|
63
|
+
```
|
64
|
+
|
65
|
+
Otherwise, install via pip (requires pip 19.0 or later):
|
66
|
+
```bash
|
67
|
+
python3 -m pip install --user pipx
|
68
|
+
python3 -m pipx ensurepath
|
69
|
+
python3 -m pipx install scale-nucleus
|
70
|
+
# Optional installation of shell completion (for bash, zsh or fish)
|
71
|
+
nu install-completions
|
72
|
+
```
|
73
|
+
|
74
|
+
## Common issues/FAQ
|
75
|
+
|
76
|
+
### Outdated Client
|
77
|
+
|
78
|
+
Nucleus is iterating rapidly and as a result we do not always perfectly preserve backwards compatibility with older versions of the client. If you run into any unexpected error, it's a good idea to upgrade your version of the client by running
|
79
|
+
```
|
80
|
+
pip install --upgrade scale-nucleus
|
81
|
+
```
|
82
|
+
|
83
|
+
## Usage
|
84
|
+
|
85
|
+
For the most up to date documentation, reference: https://dashboard.scale.com/nucleus/docs/api?language=python.
|
86
|
+
|
87
|
+
## For Developers
|
88
|
+
|
89
|
+
Clone from github and install as editable
|
90
|
+
|
91
|
+
```
|
92
|
+
git clone git@github.com:scaleapi/nucleus-python-client.git
|
93
|
+
cd nucleus-python-client
|
94
|
+
pip3 install poetry
|
95
|
+
poetry install
|
96
|
+
```
|
97
|
+
|
98
|
+
Please install the pre-commit hooks by running the following command:
|
99
|
+
|
100
|
+
```python
|
101
|
+
poetry run pre-commit install
|
102
|
+
```
|
103
|
+
|
104
|
+
When releasing a new version please add release notes to the changelog in `CHANGELOG.md`.
|
105
|
+
|
106
|
+
**Best practices for testing:**
|
107
|
+
(1). Please run pytest from the root directory of the repo, i.e.
|
108
|
+
|
109
|
+
```
|
110
|
+
poetry run pytest tests/test_dataset.py
|
111
|
+
```
|
112
|
+
|
113
|
+
(2) To skip slow integration tests that have to wait for an async job to start.
|
114
|
+
|
115
|
+
```
|
116
|
+
poetry run pytest -m "not integration"
|
117
|
+
```
|
118
|
+
|
119
|
+
## Pydantic Models
|
120
|
+
|
121
|
+
Prefer using [Pydantic](https://pydantic-docs.helpmanual.io/usage/models/) models rather than creating raw dictionaries
|
122
|
+
or dataclasses to send or receive over the wire as JSONs. Pydantic is created with data validation in mind and provides very clear error
|
123
|
+
messages when it encounters a problem with the payload.
|
124
|
+
|
125
|
+
The Pydantic model(s) should mirror the payload to send. To represent a JSON payload that looks like this:
|
126
|
+
```json
|
127
|
+
{
|
128
|
+
"example_json_with_info": {
|
129
|
+
"metadata": {
|
130
|
+
"frame": 0
|
131
|
+
},
|
132
|
+
"reference_id": "frame0",
|
133
|
+
"url": "s3://example/scale_nucleus/2021/lidar/0038711321865000.json",
|
134
|
+
"type": "pointcloud"
|
135
|
+
},
|
136
|
+
"example_image_with_info": {
|
137
|
+
"metadata": {
|
138
|
+
"author": "Picasso"
|
139
|
+
},
|
140
|
+
"reference_id": "frame0",
|
141
|
+
"url": "s3://bucket/0038711321865000.jpg",
|
142
|
+
"type": "image"
|
143
|
+
},
|
144
|
+
}
|
145
|
+
```
|
146
|
+
|
147
|
+
Could be represented as the following structure. Note that the field names map to the JSON keys and the usage of field
|
148
|
+
validators (`@validator`).
|
149
|
+
|
150
|
+
```python
|
151
|
+
import os.path
|
152
|
+
from pydantic import BaseModel, validator
|
153
|
+
from typing import Literal
|
154
|
+
|
155
|
+
|
156
|
+
class JsonWithInfo(BaseModel):
|
157
|
+
metadata: dict # any dict is valid
|
158
|
+
reference_id: str
|
159
|
+
url: str
|
160
|
+
type: Literal["pointcloud", "recipe"]
|
161
|
+
|
162
|
+
@validator("url")
|
163
|
+
def has_json_extension(cls, v):
|
164
|
+
if not v.endswith(".json"):
|
165
|
+
raise ValueError(f"Expected '.json' extension got {v}")
|
166
|
+
return v
|
167
|
+
|
168
|
+
|
169
|
+
class ImageWithInfo(BaseModel):
|
170
|
+
metadata: dict # any dict is valid
|
171
|
+
reference_id: str
|
172
|
+
url: str
|
173
|
+
type: Literal["image", "mask"]
|
174
|
+
|
175
|
+
@validator("url")
|
176
|
+
def has_valid_extension(cls, v):
|
177
|
+
valid_extensions = {".jpg", ".jpeg", ".png", ".tiff"}
|
178
|
+
_, extension = os.path.splitext(v)
|
179
|
+
if extension not in valid_extensions:
|
180
|
+
raise ValueError(f"Expected extension in {valid_extensions} got {v}")
|
181
|
+
return v
|
182
|
+
|
183
|
+
|
184
|
+
class ExampleNestedModel(BaseModel):
|
185
|
+
example_json_with_info: JsonWithInfo
|
186
|
+
example_image_with_info: ImageWithInfo
|
187
|
+
|
188
|
+
# Usage:
|
189
|
+
import requests
|
190
|
+
payload = requests.get("/example")
|
191
|
+
parsed_model = ExampleNestedModel.parse_obj(payload.json())
|
192
|
+
requests.post("example/post_to", json=parsed_model.dict())
|
193
|
+
```
|
194
|
+
|
195
|
+
|
196
|
+
### Migrating to Pydantic
|
197
|
+
- When migrating an interface from a dictionary use `nucleus.pydantic_base.DictCompatibleModel`. That allows you to get
|
198
|
+
the benefits of Pydantic but maintaints backwards compatibility with a Python dictionary by delegating `__getitem__` to
|
199
|
+
fields.
|
200
|
+
- When migrating a frozen dataclass use `nucleus.pydantic_base.ImmutableModel`. That is a base class set up to be
|
201
|
+
immutable after initialization.
|
202
|
+
|
203
|
+
**Updating documentation:**
|
204
|
+
We use [Sphinx](https://www.sphinx-doc.org/en/master/) to autogenerate our API Reference from docstrings.
|
205
|
+
|
206
|
+
To test your local docstring changes, run the following commands from the repository's root directory:
|
207
|
+
```
|
208
|
+
poetry shell
|
209
|
+
cd docs
|
210
|
+
sphinx-autobuild . ./_build/html --watch ../nucleus
|
211
|
+
```
|
212
|
+
`sphinx-autobuild` will spin up a server on localhost (port 8000 by default) that will watch for and automatically rebuild a version of the API reference based on your local docstring changes.
|
213
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
cli/client.py,sha256=ZMbM6ZMniWzXYTjl2sh-JNYzWuHZZSBsb0ecRtqLHAY,286
|
2
|
+
cli/datasets.py,sha256=Yqhsyoky62jx7HCB41V4u4jo5qyWCztNDKwxLz1fJCw,2351
|
3
|
+
cli/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
+
cli/helpers/nucleus_url.py,sha256=4azRSGbzBQnZYzI3Hx-DW8pHufaxbrMuaR0M4fwNHI8,317
|
5
|
+
cli/helpers/web_helper.py,sha256=E_8YGa3OXNExEB7vZbbQy3GEVSV7Ft3xsTwSJTQC_MI,1163
|
6
|
+
cli/install_completion.py,sha256=bOBSguD5pQf6zNPYViuuRP9HhsUV1Vm4wxBqialDOwI,1166
|
7
|
+
cli/jobs.py,sha256=v-ArlqUyK3iPose2ihlzk7rq2W3uf5gOKmN0npNULKU,1176
|
8
|
+
cli/models.py,sha256=IWJyL9EJZXlpul0aW2qRgZG9rhFO59M8Ux-u-yMofzI,1039
|
9
|
+
cli/nu.py,sha256=0f71zPq4fe3I1ghhiSRQi39ENhAzoLPdhz_vh8vxSI8,2074
|
10
|
+
cli/reference.py,sha256=hCLBbRjNQ8pca5mLFLNqql8rPoh3RRAmkjGsqfNzUMA,257
|
11
|
+
cli/slices.py,sha256=p7UGiUgvYKqi5iJpYSkoX3H-1GGoG5EQoOSObtkjYjg,2106
|
12
|
+
cli/tests.py,sha256=EVzv4_2PnZtZ0RN1LIBDfwf1S62Uaw3mWzlm_LOjn18,4516
|
13
|
+
nucleus/__init__.py,sha256=7BU5GDNlryn6qg3IYplDgUxVc4orWaspZYJc8pZhndU,33451
|
14
|
+
nucleus/annotation.py,sha256=wycqTR-AC3TU-pZOrx99uZMoiSGvLhEW_ym1j1Lqpn0,23777
|
15
|
+
nucleus/autocurate.py,sha256=Juw8V5CYKp3T-15u1QZOWaT6_fhXqGITf80eqtBNIqY,1074
|
16
|
+
nucleus/connection.py,sha256=0r8CTh04PVYKVIifbwrNkYS-brQ0G80wSeenZ60rnW8,2649
|
17
|
+
nucleus/constants.py,sha256=nQMWIuFBNarGRuWNtxukaO_aGOX4v1rk2iDtF4bi8TA,3152
|
18
|
+
nucleus/data_transfer_object/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
|
+
nucleus/data_transfer_object/dataset_details.py,sha256=1YGvfKkPSqDrXK_y5mBXyRThY07tU-nwOCYTkYCSl6k,214
|
20
|
+
nucleus/data_transfer_object/dataset_info.py,sha256=5P_gpvAyaqXxj2ZQuzLkGN2XROaN9Me56OLybCmO3R4,940
|
21
|
+
nucleus/data_transfer_object/dataset_size.py,sha256=oe-dXaMLpsQRDcJQRZ9Ja8JTagYz4dviZuTognEylp0,111
|
22
|
+
nucleus/data_transfer_object/scenes_list.py,sha256=iTHE6vA47bRB6ciyEU4LArUXEXco4ArnGvZTGTeK8xs,432
|
23
|
+
nucleus/dataset.py,sha256=UvQplhBon82VpCI-Zw-DLvADHcqupMF9z8M9v3kvr1s,54688
|
24
|
+
nucleus/dataset_item.py,sha256=xCsE-0c9jnFT4hji0-7ve3fv3acTj5t2caObzaTKxK8,11076
|
25
|
+
nucleus/dataset_item_uploader.py,sha256=Y_BzgjwF_ghP0dF3obXgkModIOfzGxiGRH_MyQx7wrA,9441
|
26
|
+
nucleus/deprecation_warning.py,sha256=5C9dVusR5UkUQnW2MrRkIXCfbc8ULc7xOaB134agNKk,976
|
27
|
+
nucleus/errors.py,sha256=FNzODZgb2wKjnS-At3w3nfvVYQEN00I3H4a360KZ6w4,2592
|
28
|
+
nucleus/job.py,sha256=qB2kUHXrUWI6ZwctQkSYqSia1OXTcMXw6_V-610D-J8,4745
|
29
|
+
nucleus/logger.py,sha256=acoFtszu4T-fj_Op4rwlXNNaLPrQ8Kw2ofaYusBHO8I,208
|
30
|
+
nucleus/metadata_manager.py,sha256=3mKte-xTFEraGtwm0b6VS2aFgOWXe81EmVNyQ5LxjXQ,1258
|
31
|
+
nucleus/metrics/__init__.py,sha256=aN6SFzOpwRNpdp-LgKHhUr7kx7wvCmj3Fcxfv0A9wTE,246
|
32
|
+
nucleus/metrics/base.py,sha256=OIx1jZiAQsWxJxuTzYLZ6VwG5SrIESEqO9p1_3dNTUg,4246
|
33
|
+
nucleus/metrics/categorization_metrics.py,sha256=NZBF_2bXu5vsbzfKJD5lNcrpLsMbp1zCKc21BnNzWbA,7867
|
34
|
+
nucleus/metrics/errors.py,sha256=1n0t4wdjzzryHlCqCcW8a-1oJmE3OXV4aoV0xjgeXCA,251
|
35
|
+
nucleus/metrics/filters.py,sha256=XQq1wDumYEzIwEthiJFsSEi99DX6y8CCST7LxAAv2xE,1146
|
36
|
+
nucleus/metrics/geometry.py,sha256=ehUvslPIb9ygxCuy2l3EcNaLOemtoE127b52Z1wIqIg,5390
|
37
|
+
nucleus/metrics/metric_utils.py,sha256=1EJf3ezTQAzh4mgECrxWyiUHzUjDqA_5hV9eqZISxRU,971
|
38
|
+
nucleus/metrics/polygon_metrics.py,sha256=gDXrRyXd_YSVHcCge9GM5qRPl2vjySQNAV2VBU8P8Ag,17440
|
39
|
+
nucleus/metrics/polygon_utils.py,sha256=zW14kHRlD0yGro81hHyxqjeArqct4eku0zcAq7tWbRM,11642
|
40
|
+
nucleus/model.py,sha256=ftr5AHIfF1R6MelI7nNYwxe1GOdmKiAuTVwFD9O0yYc,6253
|
41
|
+
nucleus/model_run.py,sha256=E3X4NAuPoXOjht1YSpjbhdzdhhVgBo_ykcWMNO9llcE,7451
|
42
|
+
nucleus/payload_constructor.py,sha256=LWTKI3QnGVzA_iwGoMuqnstPafSidWXSbBRmIJHJhuo,3779
|
43
|
+
nucleus/prediction.py,sha256=nAGVOZTktGnJpK3ALya-MjFTQ4pYhJ0xGoCMy_0gi7w,18042
|
44
|
+
nucleus/pydantic_base.py,sha256=EQER8_XqG4B-RC4aggUfukJa6f5OZ7ej92AsDWWIWPc,682
|
45
|
+
nucleus/retry_strategy.py,sha256=jpZx0NlCj1sy22-TRv_5BZBSRVJzZMa-xDO7RKqqOKE,159
|
46
|
+
nucleus/scene.py,sha256=VTZm1uufX88UqtgCEM1o9eHrYeOXcBfZetb4z8mwH58,14870
|
47
|
+
nucleus/slice.py,sha256=BNFwI14YdZPHbFlwxFtiCKDM6l9xEHK-mpLoH88eq3I,12032
|
48
|
+
nucleus/upload_response.py,sha256=wR_pfZCBju1vGiGqbVgk8zhM6GhD3ebYxyGBm8y0GvY,3287
|
49
|
+
nucleus/url_utils.py,sha256=EZ3vy1FYTGvXRVNyq43Wif-ypS8LFoDrYMYJre_DVuQ,790
|
50
|
+
nucleus/utils.py,sha256=1WhCwOM0lBjg4R431vsXAINfEvvmQQyYOXeSa2VK_jA,9209
|
51
|
+
nucleus/validate/__init__.py,sha256=yXQ1jZSARDSDDXqQMNYq2ygcBrk1frDl0r9AuG3m3wE,695
|
52
|
+
nucleus/validate/client.py,sha256=rwqX85siBMELbvD9uKW8BTZIrfds-sEvrRKk5utGzkc,5983
|
53
|
+
nucleus/validate/constants.py,sha256=ro9GBw_Ro2cF4echnmXOnQ89PQSc56wGcDjx4u5BWJA,581
|
54
|
+
nucleus/validate/data_transfer_objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
|
+
nucleus/validate/data_transfer_objects/eval_function.py,sha256=HK_pABf7wKuNyNnjw6eejjvj0NirLR-tQXaHakb216A,3019
|
56
|
+
nucleus/validate/data_transfer_objects/scenario_test.py,sha256=Iq3hVVT7g583elcJEuCWgQtmqPdaCA9EnZA4dz90G9A,530
|
57
|
+
nucleus/validate/data_transfer_objects/scenario_test_evaluations.py,sha256=zKNKWJQHY9UL2Cvj2JacBP2CoJRKFjw64FeW5O0bVMo,196
|
58
|
+
nucleus/validate/data_transfer_objects/scenario_test_metric.py,sha256=TDYY5qxUpWnltBUDQA4mWTmY00n1enP2H4DnazLbtZI,318
|
59
|
+
nucleus/validate/errors.py,sha256=UOI4oPeVzNLEmibWayfMdCMFNZvgsq-VRG42vC1cT_w,110
|
60
|
+
nucleus/validate/eval_functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
61
|
+
nucleus/validate/eval_functions/available_eval_functions.py,sha256=tS4ijpeSZfVjytZYthxOZsLjc5fB1fZDWBX4Mrmytgk,7313
|
62
|
+
nucleus/validate/eval_functions/base_eval_function.py,sha256=wivyN9-7o5ra-6StwViMmy5495gkKOqYr0VG4dPy6Jw,1995
|
63
|
+
nucleus/validate/scenario_test.py,sha256=9cjdb7uqWVijmf8p-Gu0wU2S90SnZfsoqir5RSIlzBI,5476
|
64
|
+
nucleus/validate/scenario_test_evaluation.py,sha256=J2VSnA2Ue1Rrh9sJ4b6AZvnt5ooQUc96b2xEyxjPb1g,4316
|
65
|
+
nucleus/validate/scenario_test_metric.py,sha256=EpkLR7uTHsQHaUdkoefueLaWh0XIrNvETF5DrHuPeYk,474
|
66
|
+
nucleus/validate/utils.py,sha256=yq5LCQJ1smoQWEGnIFltNTq2skrRtBWp6iK3E_u2lj0,172
|
67
|
+
scale_nucleus-0.6.4.dist-info/entry_points.txt,sha256=fmqEzh6NZQyg9eFMILnWabKT8OWQTMSCdDzMiVq2zYs,32
|
68
|
+
scale_nucleus-0.6.4.dist-info/LICENSE,sha256=jaTGyQSQIZeWMo5iyYqgbAYHR9Bdy7nOzgE-Up3m_-g,1075
|
69
|
+
scale_nucleus-0.6.4.dist-info/WHEEL,sha256=y3eDiaFVSNTPbgzfNn0nYn5tEn1cX6WrdetDlQM4xWw,83
|
70
|
+
scale_nucleus-0.6.4.dist-info/METADATA,sha256=6P-EYVJtOv5p-aPvxqxdla_G9zFE-DQiOY-OtVuPrsA,6883
|
71
|
+
scale_nucleus-0.6.4.dist-info/RECORD,,
|
@@ -1,85 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: scale-nucleus
|
3
|
-
Version: 0.1.22
|
4
|
-
Summary: The official Python client library for Nucleus, the Data Platform for AI
|
5
|
-
Home-page: https://scale.com/nucleus
|
6
|
-
License: MIT
|
7
|
-
Author: Scale AI Nucleus Team
|
8
|
-
Author-email: nucleusapi@scaleapi.com
|
9
|
-
Requires-Python: >=3.6.2,<4.0.0
|
10
|
-
Classifier: License :: OSI Approved :: MIT License
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
12
|
-
Classifier: Programming Language :: Python :: 3.7
|
13
|
-
Classifier: Programming Language :: Python :: 3.8
|
14
|
-
Classifier: Programming Language :: Python :: 3.9
|
15
|
-
Requires-Dist: aiohttp (>=3.7.4,<4.0.0)
|
16
|
-
Requires-Dist: dataclasses (>=0.7,<0.8); python_full_version >= "3.6.1" and python_version < "3.7"
|
17
|
-
Requires-Dist: nest-asyncio (>=1.5.1,<2.0.0)
|
18
|
-
Requires-Dist: requests (>=2.23.0,<3.0.0)
|
19
|
-
Requires-Dist: tqdm (>=4.41.0,<5.0.0)
|
20
|
-
Project-URL: Documentation, https://dashboard.scale.com/nucleus/docs/api
|
21
|
-
Project-URL: Repository, https://github.com/scaleapi/nucleus-python-client
|
22
|
-
Description-Content-Type: text/markdown
|
23
|
-
|
24
|
-
# Nucleus
|
25
|
-
|
26
|
-
https://dashboard.scale.com/nucleus
|
27
|
-
|
28
|
-
Aggregate metrics in ML are not good enough. To improve production ML, you need to understand their qualitative failure modes, fix them by gathering more data, and curate diverse scenarios.
|
29
|
-
|
30
|
-
Scale Nucleus helps you:
|
31
|
-
|
32
|
-
- Visualize your data
|
33
|
-
- Curate interesting slices within your dataset
|
34
|
-
- Review and manage annotations
|
35
|
-
- Measure and debug your model performance
|
36
|
-
|
37
|
-
Nucleus is a new way—the right way—to develop ML models, helping us move away from the concept of one dataset and towards a paradigm of collections of scenarios.
|
38
|
-
|
39
|
-
## Installation
|
40
|
-
|
41
|
-
`$ pip install scale-nucleus`
|
42
|
-
|
43
|
-
## Common issues/FAQ
|
44
|
-
|
45
|
-
### Outdated Client
|
46
|
-
|
47
|
-
Nucleus is iterating rapidly and as a result we do not always perfectly preserve backwards compatibility with older versions of the client. If you run into any unexpected error, it's a good idea to upgrade your version of the client by running
|
48
|
-
```
|
49
|
-
pip install --upgrade scale-nucleus
|
50
|
-
```
|
51
|
-
|
52
|
-
## Usage
|
53
|
-
|
54
|
-
For the most up to date documentation, reference: https://dashboard.scale.com/nucleus/docs/api?language=python.
|
55
|
-
|
56
|
-
## For Developers
|
57
|
-
|
58
|
-
Clone from github and install as editable
|
59
|
-
|
60
|
-
```
|
61
|
-
git clone git@github.com:scaleapi/nucleus-python-client.git
|
62
|
-
cd nucleus-python-client
|
63
|
-
pip3 install poetry
|
64
|
-
poetry install
|
65
|
-
```
|
66
|
-
|
67
|
-
Please install the pre-commit hooks by running the following command:
|
68
|
-
|
69
|
-
```python
|
70
|
-
poetry run pre-commit install
|
71
|
-
```
|
72
|
-
|
73
|
-
**Best practices for testing:**
|
74
|
-
(1). Please run pytest from the root directory of the repo, i.e.
|
75
|
-
|
76
|
-
```
|
77
|
-
poetry run pytest tests/test_dataset.py
|
78
|
-
```
|
79
|
-
|
80
|
-
(2) To skip slow integration tests that have to wait for an async job to start.
|
81
|
-
|
82
|
-
```
|
83
|
-
poetry run pytest -m "not integration"
|
84
|
-
```
|
85
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
nucleus/__init__.py,sha256=PRe5fr-9tPNkYDhqiGmJrEePcmd8h4JgbDUOFsXn7W8,40120
|
2
|
-
nucleus/annotation.py,sha256=csyeeC_C50CCvR7J6BXJpfc85JfLxP3FX5QqABRtwm0,8992
|
3
|
-
nucleus/autocurate.py,sha256=ogEX3kbuKCciWODOnTjUHU-JSwhQ_34wbNvW4xA79oY,854
|
4
|
-
nucleus/constants.py,sha256=kjpahNP4_gRLWOdd0LXT_v6z3UYOQ3qbF2CX-37wJAc,2988
|
5
|
-
nucleus/dataset.py,sha256=yRr6u7ucc-A0zjNmjbZbryjX7skivOvoUCckfLJqf5E,18309
|
6
|
-
nucleus/dataset_item.py,sha256=lKMMwNH9Iz5jxf1beIJSWrcD1UYNXbMbnPwenVW1He0,5781
|
7
|
-
nucleus/errors.py,sha256=XqBV5t0tEbV5yFM1RwZDjAvHWrkzsmTdprckzLZ6Kng,1924
|
8
|
-
nucleus/job.py,sha256=N2Ei3zJflcUyiZBavJOph3eLvckLANMrL7SwYzLUYAA,2301
|
9
|
-
nucleus/model.py,sha256=akuWKehw6u5fp-FfBuI2RobkSoceNN-huh9_G3rxWPo,2147
|
10
|
-
nucleus/model_run.py,sha256=-m_YzEqv253foD_ZQAIvD66CuDipvtKedzq9Pk0IBs4,7983
|
11
|
-
nucleus/payload_constructor.py,sha256=2O4jd774NBTOjDy_fBsN1SOTYKmtDkz4yYVPa_nuq-0,3511
|
12
|
-
nucleus/prediction.py,sha256=WJu5echvJKBjL67lQ6U9jM_LlbXvA1SPhUHyzdTeVpE,6276
|
13
|
-
nucleus/scene.py,sha256=w8mNU5Pt7U-jn9WQCL4Ch7AaZ2RHVPW8nTtIhlqTx0k,7803
|
14
|
-
nucleus/slice.py,sha256=zVLF6YyxU0ShJTERGTydcm1XiEx1yaVfJ1coq4H5KrI,5737
|
15
|
-
nucleus/upload_response.py,sha256=pwOb3iS6TbpoumC1Mao6Pyli7dXBRDcI0zjNfCMU4_c,2729
|
16
|
-
nucleus/url_utils.py,sha256=6iODEEVAa061-ROkqYM_Zhc4RbPHqOSYMczqYGVv4y0,660
|
17
|
-
nucleus/utils.py,sha256=sayZavDsvdPkvXm0QmvoSJ2_FZczje5n60uavHpOpgQ,5918
|
18
|
-
scale_nucleus-0.1.22.dist-info/LICENSE,sha256=jaTGyQSQIZeWMo5iyYqgbAYHR9Bdy7nOzgE-Up3m_-g,1075
|
19
|
-
scale_nucleus-0.1.22.dist-info/WHEEL,sha256=N0LZrBtofpkS5mJXgVHTCEy52Sam4D6PHQWC8HnMeTs,83
|
20
|
-
scale_nucleus-0.1.22.dist-info/METADATA,sha256=Zh_k6vNFP6hkUn_FZgC0gPCL8Iwe2vSpBB2CM77mOSE,2656
|
21
|
-
scale_nucleus-0.1.22.dist-info/RECORD,,
|