task create

Name:
    task create

Description:
    Create a batch of tasks from files in a local directory or files in Sama's S3 Bucket.

Usage:
    sama task create {S3_URI|LOCAL_PATH} [flags]

    LOCAL_PATH: represents the path of a local folder.
    S3_URI: represents the location of a Sama S3 folder. This must be written in the form s3://sama-client-assets/myclientid/myfolder where myfolder can have additional subfolders

Flags:
      --upload-path-prefix string   upload assets to S3, but to the specified path prefix(folder)
      --output string               output task data to a .csv or .json file instead of sending a task creation request
      --from-file                   use local .csv or .json file to create tasks
      --monitor                     display and monitor the status of the batch immediately after running this command
      --in-batches                  create batches based on each subfolder
      --in-client-batches           create batches based on each subfolder, and assign the Client Batch ID using the subfolder's name
      --client-batch-id string      specify the Client Batch ID string
      --group-size int              automatically assign Task Group IDs to tasks based on a specified group size
      --modified-after string       only include assets that were modified after given datetime string
      --modified-before string      only include assets that were modified before given datetime string
      --ext string                  filter files based on comma separated list of file extensions
      --deep                        (deprecated)include files deeply nested in subfolders
  -h, --help                        help for create

task monitor

Name:
    task monitor

Description:
    monitors the batch status in real time

Usage:
    sama task monitor <batch id> [flags]

Flags:
    -h, --help   help for monitor

Examples

Creating a batch of tasks given a local path

The mapping json can be automatically be generated during init. e.g.
    {
        "name": "{{ .BaseName }}",
        "url": "{{.URL}}"
    }

The following 'task create' command creates a task for each video file. Assume the following asset folder exists locally:
    assets/
        assets_batch001/
            video001.mp4
            video002.mp4
            video003.mp4

$ sama task create assets/assets_batch001/

Output:
    A task will be created for video001.mp4:
        "name" : video001.mp4
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/video001.mp4"
    A task will be created for video002.mp4:
        "name" : video002.mp4
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/video002.mp4"
    A task will be created for video003.mp4:
        "name" : video003.mp4
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/video003.mp4"

Creating a batch of tasks given a S3 path

The mapping json can be automatically be generated during init. e.g.
    {
        "name": "{{ .BaseName }}",
        "url": "{{.URL}}"
    }

The following 'task create' command creates a task for each video file. Assume the following asset folder already exists in S3:
    s3://sama-client-assets/123/assets/assets_batch002/
        video001.mp4
        video002.mp4
        video003.mp4

$ sama task create s3://sama-client-assets/123/assets/assets_batch002/

Output:
    A task will be created for video001.mp4:
        "name" : video001.mp4
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets/assets_batch002/video001.mp4"
    A task will be created for video002.mp4:
        "name" : video002.mp4
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets/assets_batch002/video002.mp4"
    A task will be created for video003.mp4:
        "name" : video003.mp4
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets/assets_batch002/video003.mp4"

Creating a batch of tasks that contains multiple URL inputs; for example, a 3D project with 2D helper videos

The mapping json will be automatically be generated during init as, for example:
    {
        "name": "{{ .BaseName }}",
        "3d_url_input": "{{.URL}}",
        "3d_sensor_location" : "{{.URL}}",
        "2d_back_url_input": "{{.URL}}",
        "2d_front_url_input": "{{.URL}}"
    }

However, since there are multiple URL inputs, the folder or files containing the correct assets need to be specified.
Folder example (don't forget to include the trailing "/" at the end of the folder names):
    {
        "name": "{{ .BaseName }}",
        "3d_url_input": "{{.URL}}lidar/",
        "3d_sensor_location" : "{{.URL}}sensor_location/",
        "2d_back_url_input": "{{.URL}}back_video/",
        "2d_front_url_input": "{{.URL}}front_video/"
    }
File example:
    {
        "name": "{{ .BaseName }}",
        "3d_url_input": "{{.URL}}lidar.zip",
        "3d_sensor_location" : "{{.URL}}sensor_location.zip",
        "2d_back_url_input": "{{.URL}}back_video.mp4",
        "2d_front_url_input": "{{.URL}}front_video.mp4"
    }

The following 'task create' command creates a task for each folder which is a sequence. Assume the following asset folder exists locally (you would use the mapping json with the folder example above):
    assets/
        assets_batch001/
            sequence1/
                 lidar/
                    001.pcd
                    002.pcd
                 back_video/
                    001.jpg
                    002.jpg
                 front_video/
                    001.jpg
                    002.jpg
                 sensor_location/
                    001.csv
                    002.csv
            sequence2/
                 lidar/
                    001.pcd
                    002.pcd
                 back_video/
                    001.jpg
                    002.jpg
                 front_video/
                    001.jpg
                    002.jpg
                 sensor_location/
                    001.csv
                    002.csv

$ sama task create assets/assets_batch001

Output:
    A task will be created for sequence1/:
        "name" : sequence1
        "3d_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets/assets_batch001/sequence1/lidar/"
        "3d_sensor_location" : "https://sama-client-assets.s3.amazonaws.com/123/assets/assets_batch001/sequence1/sensor_location/"
        "2d_back_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets/assets_batch001/sequence1/back_video/"
        "2d_front_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets/assets_batch001/sequence1/front_video/"

    A task will be created for sequence2/:
        "name" : sequence2
        "3d_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/sequence2/lidar/"
        "3d_sensor_location" :"https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/sequence2/sensor_location/"
        "2d_back_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/sequence2/back_video/"
        "2d_front_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/sequence2/front_video/"

Creating a batch of tasks that contains multiple URL inputs; for example, a project with multiple 2D videos

The mapping json will be automatically be generated during init as, for example:
    {
        "name": "{{ .BaseName }}",
        "2d_back_url_input": "{{.URL}}",
        "2d_front_url_input": "{{.URL}}"
    }

However, since there are multiple URL inputs, the folder or files containing the correct assets need to be specified.
Folder example (don't forget to include the trailing "/" at the end of the folder names):
    {
        "name": "{{ .BaseName }}",
        "2d_back_url_input": "{{.URL}}back_video/",
        "2d_front_url_input": "{{.URL}}front_video/"
    }
File example:
    {
        "name": "{{ .BaseName }}",
        "2d_back_url_input": "{{.URL}}back_video.mp4",
        "2d_front_url_input": "{{.URL}}front_video.mp4"
    }

The following 'task create' command creates a task for each folder which is a sequence. Assume the following asset folder exists locally (you would use the mapping json with the folder example above):
    assets/
        assets_batch001/
            sequence1/
                 back_video/
                    001.jpg
                    002.jpg
                 front_video/
                    001.jpg
                    002.jpg
            sequence2/
                 back_video/
                    001.jpg
                    002.jpg
                 front_video/
                    001.jpg
                    002.jpg

$ sama task create assets/assets_batch001

Output:
    A task will be created for sequence1/:
        "name" : sequence1
        "2d_back_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets/assets_batch001/sequence1/back_video/"
        "2d_front_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets/assets_batch001/sequence1/front_video/"

    A task will be created for sequence2/:
        "name" : sequence2
        "2d_back_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/sequence2/back_video/"
        "2d_front_url_input" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/sequence2/front_video/"

Monitoring the status of a batch immediately from task create command

Add the --monitor flag to 'task create':

$ sama task create assets_batch002 --monitor

Monitoring the status of a batch

Assume that batch 11236 exists. Call 'task monitor':

$ sama task monitor 11236

Output:
 Batch 11236:
  uploaded...

Creating a batch of tasks and specifying a client batch id

The mapping json can be automatically be generated during init. e.g.
    {
        "url": "{{.URL}}",
        "name": "{{ .BaseName }}",
        "client batch id": "{{ .ClientBatchID }}"
     }

The following 'task create' command creates task for each file. Assume the following assets exists locally:
    assets/
        assets_batch001/
            img001.png
            img002.png
            img003.png


$ sama task create assets/assets_batch001 --client-batch-id "my_batch_001"

Output:
    A batch will create individual tasks for img001.png, img002.png, img003.png and 'client batch id' is set to 'my_batch_001'.

Creating multiple batch of tasks where each parent folder is considered a separate batch

The mapping file can be automatically be generated during init. e.g.
    {
        "name": "{{ .BaseName }}",
        "url": "{{.URL}}"
    }

The following 'task create' command creates task for each file. Assume the following assets exists locally:
    assets/
        assets_batch001/
            img001.png
            img002.png
            img003.png
        assets_batch002/
            img004.png
            img005.png
            img006.png

$ sama task create assets --in-batches

Output:
    Batch 1 will create individual tasks for img001.png, img002.png, img003.png.
    Batch 2 will create individual tasks for img004.png, img005.png, img006.png.

Creating multiple batch of tasks where each parent folder is considered a separate batch, and automatically assign the client batch id as the parent folder

The mapping file can be automatically be generated during init. e.g.
    {
        "name": "{{ .BaseName }}",
        "url": "{{.URL}}",
        "client batch id": "{{ .ClientBatchID }}"
    }

The following 'task create' command creates task for each file. Assume the following assets exists locally:
    assets/
        assets_batch001/
            img001.png
            img002.png
            img003.png
        assets_batch002/
            img004.png
            img005.png
            img006.png

$ sama task create ./assets --in-client-batches

Output:
    A batch will create individual tasks for img001.png, img002.png, img003.png, and 'client batch id' is set to assets_batch001. The same batch will also create img004.png, img005.png, img006.png and 'client batch id' is set to assets_batch002.

Create a batch of tasks and group them according to size

The mapping file can be automatically be generated during init. e.g.
    {
        "example_input_url": "{{.URL}}",
        "name": "{{ .BaseName }}",
        "example_input_batch_id": "{{ .GroupID }}"
     }

The following 'task create' command creates task for each file. Assume the following assets exists locally:
    assets/
        assets_batch001/
            img001.png
            img002.png
            img003.png
            img004.png
            img005.png

$ sama task create assets/assets_batch001 --group-size 2

Output:
    Invididual tasks are created for img001.png, img002.png and are assigned to the same group id (auto assigned).
    Invididual tasks are created for img003.png, img004.png and are assigned to the same group id (auto assigned).
    Invididual tasks are created for img005.png and are assigned to the same group id (auto assigned).

Creating a batch of tasks and filter specific file types

The mapping json can be automatically be generated during init. e.g.
    {
        "name": "{{ .BaseName }}",
        "url": "{{.URL}}"
    }

The following 'task create' command creates a task for each video file. Assume the following asset folder exists locally:
    assets/
        assets_batch001/
            img1.jpg
            img2.png
            file2.txt
            unsupported.jp2


$ sama task create assets/assets_batch001/ --ext ".jpg,.png"

Output:
    A task will be created for img1.jpg:
        "name" : img1.jpg
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/img1.jpg"
    A task will be created for img2.png:
        "name" : img2.png
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/img2.png"

Creating a batch of tasks by finding recursively finding files in target folder (deprecated)

The mapping json can be automatically be generated during init. e.g.
    {
        "name": "{{ .BaseName }}",
        "url": "{{.URL}}"
    }

The following 'task create' command creates a task for each image file. Assume the following asset folder exists locally:
    assets/
        assets_batch001/
            img1.jpg
            subfolder1/
                img2.jpg
                subfolder2/
                    img3.jpg

$ sama task create assets/assets_batch001/ --deep

Output:
    A task will be created for img1.jpg:
        "name" : img1.jpg
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/img1.jpg"
    A task will be created for img2.jpg:
        "name" : img2.jpg
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/subfolder1/img2.jpg"
    A task will be created for img3.jpg:
        "name" : img3.jpg
        "url" : "https://sama-client-assets.s3.amazonaws.com/123/assets_batch001/subfolder1/subfolder2/img3.jpg"

Creating an export of a batch of tasks to CSV or JSON file

$ sama task create assets_batch001 --output tasks.csv
$ sama task create assets_batch001 --output tasks.json

Creating a batch of tasks from a CSV or JSON file

$ sama task create --from-file tasks.csv
$ sama task create --from-file tasks.json

Creating a batch of tasks from assets that were modified within a date range

$ sama task create assets/assets_batch001 –modified-after 2021-06-10T00:00:00Z –modified-before 2021-06-24T00:00:00Z