Uploading Images to a Dataset
from innotescus import client_factory, DataType, AnnotationFormat, TaskType, ExportType, JobStatus, ResponseCode, StorageType # Create an authenticated instance of the Innotescus API Client client = client_factory('api_client_id', 'api_client_secret') # Upload these files to the specified project and dataset name #if this dataset name does not exist in this project, it will be created response = client.upload_data(project_name = "test project", dataset_name = "test dataset", file_paths =[ "/path/to/image_1.png", "/path/to/image_2.png", "/path/to/image_3.png", "/path/to/image_4.png" ], data_type = DataType.IMAGE, storage_type = StorageType.URL)
Uploading Annotations to a Task
from innotescus import client_factory, DataType, AnnotationFormat, TaskType, ExportType, JobStatus, ResponseCode, StorageType # Create an authenticated instance of the Innotescus API Client client = client_factory('api_client_id', 'api_client_secret') # Upload annotations to the specified task/dataset combo. # If this task does not exist it will be created response = client.upload_annotations(project_name = "example project", dataset_name = "example dataset", task_type = TaskType.SEGMENTATION, data_type = DataType.IMAGE, annotation_format = AnnotationFormat.COCO, file_paths =[ "/path/to/annotation_file_1.json", "/path/to/annotation_file_2.json" ], task_name = "example task", task_description = "Task created via annotation import", overwrite_existing_annotations = False, pre_annotate = True)
Generate and Download Exports
# Start an export for a given project, list of datasets, and list of tasks response = client.export(export_name = "demo_export", project_name = "sample project", annotation_format = AnnotationFormat.COCO, export_type = ExportType.ANNOTATIONS, dataset_names = ["sample dataset 1", "sample dataset 2"], task_name = "sample task") attempts = 0 # If the export was started successfully, begin polling for the export job completion while response.status.code == ResponseCode.SUCCESS: export_job_id = response.job_id # Get the job status to check if our export job is complete response = client.get_job_status(export_job_id) attempts += 1 # stop after 60 seconds or when the job is complete if attempts >= 5 or response.job_status == JobStatus.SUCCEEDED: # Download the completed export to local disc response = client.download_export(export_job_id, file_path) break time.sleep(10) # Delay for 10 seconds
All commands available to the python client are exposed using the same names. The general syntax for using the shell client is as follows:
$ innotescus <command> <arguments>
Command names are identical to the method names in the python client. For example,
InnoApiClient.get_projects() is exposed as
Authenticating is done using the same methods as the standard python client (environmental variables & config files), however the shell client also supports an additional way to pass the client id (--client-id) and client secret (--client-secret). If provided to the CLI client, these arguments will override any settings provided elsewhere.
$ innotescus --client-id=<myid> --client-secret=<mysecret> <command>
For commands with no input parameters, you only need to provide the name of the method you wish to call.
$ inotescus get_jobs
Commands with Parameter
Methods with CLI arguments expose the same arguments available to the python client, with underscores '_' replaced by hyphens '-'.
Warning: There are two differences between how the CLI and python client parse arguments.
For methods with enumerable values (see DataType below), the value should be passed as the name of the enum, not it's value.
When passing arguments with multiple values, the argument must be specified multiple times--one for each value in the list (see FilePaths below).
$ innotescus upload_data \ > --project-name='My Project' \ > --dataset-name='My Dataset' \ > --data-type=IMAGE \ > --file-paths=$HOME/my-first-file \ > --file-paths=$HOME/my-second-file
Currently, all commands return their output data as JSON to STDOUT. If you need to store this data, it should be redirected appropriately, as demonstrated below:
$ innotescus get_projects > $HOME/my-projects.json