Skip to main content

Graviti TensorBay python SDK

Project description

Graviti python SDK

Installation

pip3 install graviti

Usage

Get accessKey

AccessKey is required when upload data.

Use your username and password to login to Graviti website, and get accessKey on profile page.

Upload data

This sample is for uploading dataset which only contains data collected from a single sensor.

#!/usr/bin/env python3

from graviti import GAS

ACCESS_KEY = "Accesskey-****"
DATASET_NAME = "TestDataset"
SEGMENT_NAME = "segment1"

gas = GAS(ACCESS_KEY)

dataset = gas.get_or_create_dataset(DATASET_NAME)  # create dataset
segment = dataset.get_or_create_segment(SEGMENT_NAME)  # create segment

# single-thread upload
for filename in FILE_LIST:
    segment.upload_data(filename, "remote_path")
# 'remote_path' should follow linux style. If it has wrong format, raise GASPathError.

# # multi-thread uploading
# # when use multi-thread uploading
# # uncomment the following code and comment single-thread uploading code

# from concurrent.futures import ThreadPoolExecutor

# THREAD_NUM = 8 # number of threads

# with ThreadPoolExecutor(THREAD_NUM) as executor:
#     for filename in FILE_LIST:
#         executor.submit(segment.upload_data, filename, "remote_path")

Upload fusion data

This sample is for uploading dataset which contains data collected from fusion.

#!/usr/bin/env python3

from graviti import GAS
from graviti.dataset import Frame, Data
from graviti.sensor import Camera

ACCESS_KEY = "Accesskey-****"
DATASET_NAME = "TestFusionDataset"
SEGMENT_NAME = "segment1"

gas = GAS(ACCESS_KEY)

dataset = gas.get_or_create_fusion_dataset(DATASET_NAME)  # create fusion dataset
segment = dataset.get_or_create_segment(SEGMENT_NAME)  # create segment

for sensor_name in SENSOR_LIST:
    camera = Camera(sensor_name)
    camera.description = "This is a camera"
    camera.set_translation(x=1.1, y=2.2, z=3.3)
    camera.set_rotation(w=1.1, x=2.2, y=3.3, z=4.4)
    camera.set_camera_matrix(fx=1.1, fy=2.2, cx=3.3, cy=4.4)
    camera.set_distortion_coefficients(p1=1.1, p2=2.2, k1=3.3, k2=4.4, k3=5.5)

    segment.upload_sensor_object(camera)

# single-thread uploading
for index, frame_info in enumerate(FRAME_LIST):
    frame = Frame()
    for sensor_name in SENSOR_LIST:
        frame[sensor_name] = Data(
            frame_info.filename, remote_path="remote_path", timestamp=frame_info.timestamp,
        )
    # 'remote_path' should follow linux style. If it has wrong format, raise GASPathError.
    segment.upload_frame_object(frame, index)

# # multi-thread uploading
# # when use multi-thread uploading
# # uncomment the following code and comment single-thread uploading code

# from concurrent.futures import ThreadPoolExecutor

# THREAD_NUM = 8  # number of threads

# with ThreadPoolExecutor(THREAD_NUM) as executor:
# for index, frame_info in enumerate(FRAME_LIST):
#     frame = Frame()
#     for sensor_name in SENSOR_LIST:
#         frame[sensor_name] = Data(
#             frame_info.filename, remote_path="remote_path", timestamp=frame_info.timestamp,
#         )
#         executor.submit(segment.upload_frame_object, frame, index)

Command line

We also provide gas command to call SDK APIs.

Use gas in terminal to see the available commands as follows.

gas config
gas create
gas delete
gas publish
gas ls
gas cp
gas rm
config environment
gas config [accessKey]                   # config accesskey to default environment
gas -c [config_name] config [accessKey]  # create an environment named [config_name]
                                         # and config accesskey to it
show config
gas config         # show config information of all environments
choose environment
gas [command] [args]                           # choose default environment
gas -c [config_name] [command] [args]          # choose the environment named [config_name]
gas -k [accessKey] [command] [args]            # appoint accessKey in current command line

# '-k' has higher priority than '-c'
create dataset
gas create tb:[dataset_name]
delete dataset
gas delete tb:[dataset_name]
publish dataset
gas publish tb:[dataset_name]
list data
gas ls [Options] [tbrn]

Options:
  -a, --all      List all files under all segments. Only works when [tbrn] is tb:[dataset_name].

tbrn:
  None                                              # list all dataset names
  tb:[dataset_name]                                 # list all segment names under the dataset
  tb:[dataset_name]:[segment_name]                  # list all files under the segment
  tb:[dataset_name]:[segment_name]://[remote_path]  # list files under the remote path
upload data
gas cp [Options] [local_path1] [local_path2]... [tbrn]

Options:
  -r, --recursive     Copy directories recursively.
  -j, --jobs INTEGER  The number of threads.

tbrn:
  tb:[dataset_name]:[segment_name]                  # copy files to the segment
  tb:[dataset_name]:[segment_name]://[remote_path]  # copy files to the remote path

# [segment_name] is must required.
# If only upload one file and [remote_path] doesn't end with '/',
# then the file will be uploaded and renamed as [remote_path]
delete data
gas rm [Options] [tbrn]

Options:
  -r, --recursive  Remove directories recursively.
  -f, --force      Delete segments forcibly regardless of the nature of the dataset.
                   By default, only segments with no sensor can be deleted.
                   Once '-f' is used, sensors along with their objects will also be deleted.

tbrn:
  tb:[dataset_name]                                 # remove all segments under the dataset
  tb:[dataset_name]:[segment_name]                  # remove a segment
  tb:[dataset_name]:[segment_name]://[remote_path]  # remove files under the remote path

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

graviti-0.2.4.tar.gz (46.9 kB view details)

Uploaded Source

Built Distribution

graviti-0.2.4-py3-none-any.whl (61.8 kB view details)

Uploaded Python 3

File details

Details for the file graviti-0.2.4.tar.gz.

File metadata

  • Download URL: graviti-0.2.4.tar.gz
  • Upload date:
  • Size: 46.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.2

File hashes

Hashes for graviti-0.2.4.tar.gz
Algorithm Hash digest
SHA256 b63efadb59479ff076fe12da4d5f07f687d21b0c7fe53311807931892aeaca25
MD5 c994cf6e256d5daf9824a93ce763cb30
BLAKE2b-256 bed0ea0446cfa1319bf1bbbc6931bd6163eed9f4b57d0ed4ec89bde81be4a483

See more details on using hashes here.

File details

Details for the file graviti-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: graviti-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 61.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.2

File hashes

Hashes for graviti-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d0a872622fdbdbaed08674eccad5ace902baf96b28a32e0e0bccda567be62229
MD5 f1268bf39c65fee06cc6bac4b1c1c317
BLAKE2b-256 653d2104e802c317f327af01654718f33c66a1660d78481d49e81466542e22e6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page