Skip to content

GPArrays workload⚓︎

The "GPArrays" workload launches workflows in Terra. Because Terra submits workflows to Cromwell using the RAWLs API, both the input data and pipeline must be imported into a Terra workspace prior to analysis.

In addition, the workload differs from the other WFL modules in several ways: - The executor field is the Terra API URL (instead of the Cromwell URL) - The project is the Terra workspace to use for processing, and must follow the format "{workspaceNamespace}/{workspaceName}".

Inputs⚓︎

A GPArrays workload specifies the following inputs for each workflow: - entity_name - entity_type

entity_name (required)⚓︎

  • The unique id of the sample in the Terra data table. The id field follows the format "{table_name}_id".

entity_type (required)⚓︎

  • The name of the Terra workspace data table containing the sample (e.g the entity_type of a row in the "sample" table is "sample")

Usage⚓︎

A GPArrays workload supports the following API endpoints:

Verb Endpoint Description
GET /api/v1/workload List all workloads
GET /api/v1/workload/{uuid} Query for a workload by its UUID
GET /api/v1/workload/{project} Query for a workload by its Project name
POST /api/v1/create Create a new workload
POST /api/v1/start Start a workload
POST /api/v1/exec Create and start (execute) a workload

Create Workload: /api/v1/create⚓︎

Creates a WFL workload. Before processing, confirm that the Terra proxy SA for the wfl-non-prod SA has at least read access to the input files, and the vault token path used by the Arrays pipeline.

curl --location --request POST 'https://dev-wfl.gotc-dev.broadinstitute.org/api/v1/create' \
--header 'Authorization: Bearer '$(gcloud auth print-access-token) \
--header 'Content-Type: application/json' \
--data-raw '{
  "executor": "https://firecloud-orchestration.dsde-dev.broadinstitute.org",
  "output": "gs://broad-gotc-dev-wfl-ptc-test-outputs/arrays-test-output/",
  "pipeline": "GPArrays",
  "project": "general-dev-billing-account/arrays",
  "items": [
    {
      "inputs": {
        "entity_name": "200598830050_R07C01-1",
        "entity_type": "sample"
      }
    }
  ]
}'
{
  "creator": "user@domain",
  "pipeline": "GPArrays",
  "executor": "https://firecloud-orchestration.dsde-dev.broadinstitute.org",
  "release": "Arrays_v2.3.0",
  "created": "YYYY-MM-DDTHH:MM:SSZ",
  "output": "gs://broad-gotc-dev-wfl-ptc-test-outputs/arrays-test-output/",
  "project": "general-dev-billing-account/arrays",
  "commit": "commit-ish",
  "wdl": "pipelines/broad/arrays/single_sample/Arrays.wdl",
  "uuid": "74d96a04-fea7-4270-a02b-a319dae2dd5e",
  "version": "X.Y.Z"
}

Note that the GPArrays module does NOT support specifying Cromwell "workflowOptions" via the options map, since this functionality is not exposed via the Terra API.

Start Workload: /api/v1/start⚓︎

Creates a new "submission" in Terra, which starts a Cromwell workflow for each item in the workload. Note that the workflow uuid in the response is the Terra submission uuid, not the Cromwell workflow uuid.

curl --location --request POST 'https://dev-wfl.gotc-dev.broadinstitute.org/api/v1/start' \
--header 'Authorization: Bearer '$(gcloud auth print-access-token) \
--header 'Content-Type: application/json' \
--data-raw '{"uuid": "74d96a04-fea7-4270-a02b-a319dae2dd5e"}'
{
  "started": "YYYY-MM-DDTHH:MM:SSZ",
  "creator": "user@domain",
  "pipeline": "GPArrays",
  "executor": "https://firecloud-orchestration.dsde-dev.broadinstitute.org",
  "release": "Arrays_v2.3.0",
  "created": "YYYY-MM-DDTHH:MM:SSZ",
  "output": "gs://broad-gotc-dev-wfl-ptc-test-outputs/arrays-test-output/",
  "workflows": [
    {
      "updated": "YYYY-MM-DDTHH:MM:SSZ",
      "uuid": "2c543b29-2db9-4643-b81b-b16a0654c5cc",
      "inputs": {
        "entity_name": "200598830050_R07C01-1",
        "entity_type": "sample"
      }
    }
  ],
  "project": "general-dev-billing-account/arrays",
  "commit": "commit-ish",
  "wdl": "pipelines/broad/arrays/single_sample/Arrays.wdl",
  "uuid": "74d96a04-fea7-4270-a02b-a319dae2dd5e",
  "version": "X.Y.Z"
}

Exec Workload: /api/v1/exec⚓︎

Creates and then starts a WFL workload.

curl --location --request POST 'https://dev-wfl.gotc-dev.broadinstitute.org/api/v1/exec' \
--header 'Authorization: Bearer '$(gcloud auth print-access-token) \
--header 'Content-Type: application/json' \
--data-raw '{
  "executor": "https://firecloud-orchestration.dsde-dev.broadinstitute.org",
  "output": "gs://broad-gotc-dev-wfl-ptc-test-outputs/arrays-test-output/",
  "pipeline": "GPArrays",
  "project": "general-dev-billing-account/arrays",
  "items": [
    {
      "inputs": {
        "entity_name": "200598830050_R07C01-1",
        "entity_type": "sample"
      }
    }
  ]
}'
{
  "started": "YYYY-MM-DDTHH:MM:SSZ",
  "creator": "user@domain",
  "pipeline": "GPArrays",
  "executor": "https://firecloud-orchestration.dsde-dev.broadinstitute.org",
  "release": "Arrays_v2.3.0",
  "created": "YYYY-MM-DDTHH:MM:SSZ",
  "output": "gs://broad-gotc-dev-wfl-ptc-test-outputs/arrays-test-output/",
  "workflows": [
    {
      "updated": "YYYY-MM-DDTHH:MM:SSZ",
      "uuid": "2c543b29-2db9-4643-b81b-b16a0654c5cc",
      "inputs": {
        "entity_name": "200598830050_R07C01-1",
        "entity_type": "sample"
      }
    }
  ],
  "project": "general-dev-billing-account/arrays",
  "commit": "commit-ish",
  "wdl": "pipelines/broad/arrays/single_sample/Arrays.wdl",
  "uuid": "74d96a04-fea7-4270-a02b-a319dae2dd5e",
  "version": "X.Y.Z"
}

Query Workload: /api/v1/workload?uuid=<uuid>⚓︎

Queries the WFL database for workloads. Specify the uuid to query for a specific workload.

curl --location --request GET 'https://dev-wfl.gotc-dev.broadinstitute.org/api/v1/workload?uuid=2c543b29-2db9-4643-b81b-b16a0654c5cc' \
--header 'Authorization: Bearer '$(gcloud auth print-access-token)
[{
  "creator": "user@domain",
  "pipeline": "GPArrays",
  "executor": "https://firecloud-orchestration.dsde-dev.broadinstitute.org",
  "release": "Arrays_v2.3.0",
  "created": "YYYY-MM-DDTHH:MM:SSZ",
  "output": "gs://broad-gotc-dev-wfl-ptc-test-outputs/arrays-test-output/",
  "workflows": [
    {
      "updated": "YYYY-MM-DDTHH:MM:SSZ",
      "uuid": "2c543b29-2db9-4643-b81b-b16a0654c5cc",
      "inputs": {
        "entity_name": "200598830050_R07C01-1",
        "entity_type": "sample"
       }
    }
  ],
  "project": "general-dev-billing-account/arrays",
  "commit": "commit-ish",
  "wdl": "pipelines/broad/arrays/single_sample/Arrays.wdl",
  "uuid": "74d96a04-fea7-4270-a02b-a319dae2dd5e",
  "version": "X.Y.Z"
}]

The "workflows" field lists out each Terra submission, and includes the status information of the workflow that was started for that sample. It is also possible to use the Terra UI to check workflow progress and easily see information about any workflow failures.

Query Workload with project: /api/v1/workload?project=<project>⚓︎

Queries the WFL database for workloads. Specify the project name to query for a list of specific workload(s).

curl --location --request GET 'https://dev-wfl.gotc-dev.broadinstitute.org/api/v1/workload?project=general-dev-billing-account/arrays' \
--header 'Authorization: Bearer '$(gcloud auth print-access-token)
[{
  "creator": "user@domain",
  "pipeline": "GPArrays",
  "executor": "https://firecloud-orchestration.dsde-dev.broadinstitute.org",
  "release": "Arrays_v2.3.0",
  "created": "YYYY-MM-DDTHH:MM:SSZ",
  "output": "gs://broad-gotc-dev-wfl-ptc-test-outputs/arrays-test-output/",
  "workflows": [
    {
      "updated": "YYYY-MM-DDTHH:MM:SSZ",
      "uuid": "2c543b29-2db9-4643-b81b-b16a0654c5cc",
      "inputs": {
        "entity_name": "200598830050_R07C01-1",
        "entity_type": "sample"
       }
    }
  ],
  "project": "general-dev-billing-account/arrays",
  "commit": "commit-ish",
  "wdl": "pipelines/broad/arrays/single_sample/Arrays.wdl",
  "uuid": "74d96a04-fea7-4270-a02b-a319dae2dd5e",
  "version": "X.Y.Z"
}]

The "workflows" field lists out each Terra submission, and includes the status information of the workflow that was started for that sample. It is also possible to use the Terra UI to check workflow progress and easily see information about any workflow failures.

Note

project and uuid are optional path parameters to the /api/v1/workload endpoint, hitting this endpoint without them will return all workloads. However, they cannot be specified together.