10 Minutes to Graviti#

This is a simple introductory tutorial for beginners.

Get an AccessKey#

Before using Graviti SDK, please visit Graviti Developer Tools to get an AccessKey.

Dataset Preparation#

This step is only for users who do not have datasets in their workspace. By running the code below, users can create a very simple dataset to experience Graviti SDK.

from graviti import DataFrame, Workspace
import graviti.portex as pt

ws = Workspace(f"{YOUR_ACCESSKEY}")
ds = ws.datasets.create("Graviti-dataset-demo")

std = pt.build_package("https://github.com/Project-OpenBytes/portex-standard", "main")
schema = pt.record(
    {
        "filename": pt.string(),
        "box2ds": pt.array(
            std.label.Box2D(
                categories=["boat", "car"],
                attributes={
                    "difficult": pt.boolean(),
                    "occluded": pt.boolean(),
                },
            )
        ),
    }
)

filenames = ["a.jpg", "b.jpg", "c.jpg"]
data = []
for filename in filenames:
    row_data = {
        "filename": filename,
        "box2ds": [
            {
                "xmin": 1,
                "ymin": 1,
                "xmax": 4,
                "ymax": 5,
                "category": "boat",
                "attribute": {
                    "difficult": False,
                    "occluded": False,
                },
            },
        ],
    }
    data.append(row_data)

ds["train"] = DataFrame(data, schema)
ds.commit("Commit-1")

Get a Dataset#

Workspace initialization:

from graviti import Workspace

ws = Workspace(f"{YOUR_ACCESSKEY}")

List datasets on the workspace:

>>> ws.datasets.list()
LazyPagingList [
  Dataset("graviti-example/Graviti-dataset-demo")
]

Get one dataset:

>>> ds = ws.datasets.get("Graviti-dataset-demo")
>>> ds
Dataset("graviti-example/Graviti-dataset-demo")(
  (alias): '',
  (default_branch): 'main',
  (created_at): 2022-07-20 04:22:35+00:00,
  (updated_at): 2022-07-20 04:23:45+00:00,
  (is_public): False,
  (storage_config): 'AmazonS3-us-west-1'
)

Get a Sheet#

>>> ds["train"]
   filename  box2ds
0  a.jpg     DataFrame(1, 6)
1  b.jpg     DataFrame(1, 6)
2  c.jpg     DataFrame(1, 6)

Get the Data#

Get the DataFrame:

>>> df = ds["train"]
>>> df
   filename  box2ds
0  a.jpg     DataFrame(1, 6)
1  b.jpg     DataFrame(1, 6)
2  c.jpg     DataFrame(1, 6)

View the schema of the sheet:

>>> df.schema
record(
  fields={
    'filename': string(),
    'box2ds': array(
      items=label.Box2D(
        coords=float32(),
        categories=['boat', 'car'],
        attributes={
          'difficult': boolean(),
          'occluded': boolean(),
        },
      ),
    ),
  },
)

Get the data by rows or columns:

>>> df.iloc[0]
filename  a.jpg
box2ds    DataFrame(1, 6)
>>> df["box2ds"]
0  DataFrame(1, 6)
1  DataFrame(1, 6)
2  DataFrame(1, 6)
>>> df.iloc[0]["box2ds"]
   xmin  ymin  xmax  ymax  category  attribute
                                     difficult  occluded
0  1.0   1.0   4.0   5.0   boat      False      False
>>> df["box2ds"][0]
   xmin  ymin  xmax  ymax  category  attribute
                                     difficult  occluded
0  1.0   1.0   4.0   5.0   boat      False      False