Submitting Jobs
NOTE: You need to be in NIH VPN to be able to submit jobs for your workflow runs.
Workflow servers are deployed in development, qa, and production environments separately.
In order to submit a workflow job, you will need deployment IDs of each of the workflows, as shown:
Pipelines |
Development |
QA |
Production |
---|---|---|---|
2D / DM conversion |
68dd3d3e-6c5d-4616-ab33-52d4dcbd8184 |
20ab41f5-3770-4834-97d0-33ce2f2d7c3e |
a72f8c80-9c51-4b50-b2e5-1d27314bcccb |
FIBSEM |
6eec994d-6d63-4e8e-b6fd-f4e516aa0caa |
32ed45f3-37eb-4b34-8220-f52fc9c96fb7 |
9d3f7d8d-308f-4d95-9433-66ae253a6379 |
BRT |
8a8f9c9b-476f-4b4c-8a19-881dc1cb5be9 |
6fcb4637-878f-4630-9f89-2bdea430ac3e |
cdf92549-80d9-4f4e-bde7-30409ed20e41 |
IF / Multichannel CZI |
265a8a6b-fa09-4503-a449-bdc5117933a5 |
208568ff-f487-4e10-bbd2-208640d39143 |
dccb9b62-cd2e-489d-ac12-f35b76b91fb1 |
Large 2D PNG / ROI |
81f99df4-4de5-4f29-9b73-16dc9ee65b0c |
8873c33b-d46d-4296-ae4f-0157ab2f5911 |
e5b25df2-6ae0-49f6-a080-cbe7c32e4f6a |
Pipeline Parameters
Below are the pipeline parameters for all the available workflows.
2D / DM conversion
{
"type": "object",
"title": "Parameters",
"required": [
"file_share",
"input_dir"
],
"properties": {
"token": {
"type": "string",
"title": "token",
"position": 4
},
"input_dir": {
"type": "string",
"title": "input_dir",
"position": 1
},
"file_share": {
"type": "string",
"title": "file_share",
"position": 0
},
"callback_url": {
"type": "string",
"title": "callback_url",
"position": 3
},
}
}
FIBSEM
{
"type": "object",
"title": "Parameters",
"required": [
"file_share",
"input_dir"
],
"properties": {
"token": {
"type": "string",
"title": "token",
"position": 4
},
"input_dir": {
"type": "string",
"title": "input_dir",
"position": 1
},
"file_share": {
"type": "string",
"title": "file_share",
"position": 0
},
"tilt_angle": {
"type": "number",
"title": "tilt_angle",
"default": 0,
"position": 7
},
"callback_url": {
"type": "string",
"title": "callback_url",
"position": 3
}
}
}
BRT
{
"type": "object",
"title": "Parameters",
"required": [
"montage",
"gold",
"focus",
"fiducialless",
"trackingMethod",
"TwoSurfaces",
"TargetNumberOfBeads",
"LocalAlignments",
"THICKNESS",
"file_share",
"input_dir"
],
"properties": {
"gold": {
"type": "integer",
"title": "gold",
"position": 1
},
"focus": {
"type": "integer",
"title": "focus",
"position": 2
},
"token": {
"type": "string",
"title": "token",
"position": 13
},
"montage": {
"type": "integer",
"title": "montage",
"position": 0
},
"THICKNESS": {
"type": "integer",
"title": "THICKNESS",
"position": 8
},
"input_dir": {
"type": "string",
"title": "input_dir",
"position": 10
},
"file_share": {
"type": "string",
"title": "file_share",
"position": 9
},
"TwoSurfaces": {
"type": "integer",
"title": "TwoSurfaces",
"position": 5
},
"callback_url": {
"type": "string",
"title": "callback_url",
"position": 12
},
"fiducialless": {
"type": "integer",
"title": "fiducialless",
"position": 3
},
"adoc_template": {
"type": "string",
"title": "adoc_template",
"default": "plastic_brt",
"position": 16
},
"trackingMethod": {
"type": "integer",
"title": "trackingMethod",
"position": 4
},
"LocalAlignments": {
"type": "integer",
"title": "LocalAlignments",
"position": 7
},
"TargetNumberOfBeads": {
"type": "integer",
"title": "TargetNumberOfBeads",
"position": 6
}
}
}
IF / Multichannel CZI
{
"type": "object",
"title": "Parameters",
"required": [
"file_share",
"input_dir"
],
"properties": {
"token": {
"type": "string",
"title": "token",
"position": 4
},
"input_dir": {
"type": "string",
"title": "input_dir",
"position": 1
},
"file_share": {
"type": "string",
"title": "file_share",
"position": 0
},
"callback_url": {
"type": "string",
"title": "callback_url",
"position": 3
}
}
}
Large 2d PNG / ROI
{
"type": "object",
"title": "Parameters",
"required": [
"file_share",
"input_dir"
],
"properties": {
"token": {
"type": "string",
"title": "token",
"position": 4
},
"input_dir": {
"type": "string",
"title": "input_dir",
"position": 1
},
"file_share": {
"type": "string",
"title": "file_share",
"position": 0
},
"callback_url": {
"type": "string",
"title": "callback_url",
"position": 3
}
}
}
The pipeline parameters can be also be observed programatically using following curl command:
curl -X 'POST' 'https://prefect2.hedwig-workflow-api.niaiddev.net/api/deployments/filter' \
-H 'accept: application/json' -H "Authorization: Bearer $PREFECT_API_KEY" -H 'Content-Type: application/json' -d '{}' \
| jq -r '.[] | "\(.id)"' \
| xargs -I{} \
curl -X 'GET' 'https://prefect2.hedwig-workflow-api.niaiddev.net/api/deployments/{}' \
-H 'accept: application/json' -H "Authorization: Bearer $PREFECT_API_KEY" \
| jq '.description,.id,.parameter_openapi_schema' > schema.json
Pipeline Response
All pipelines responses follow the same schema. Currently, all schema are documented in yaml files as such:
1type: object
2description: JSON emitted by pipeline upon completion.
3required:
4 - status
5 - files
6properties:
7 status:
8 description: Success is considered true if ANY conversion is successful.
9 type: string
10 enum:
11 - success
12 - error
13 files:
14 description: Input file paths, relative to projects_dir, grouped with generated outputs.
15 type: array
16 required:
17 - primaryFilePath
18 - thumbnailIndex
19 - title
20 - fileMetadata
21 - imageSet
22
23 items:
24 type: object
25 properties:
26 primaryFilePath:
27 description: Input file path, relative to projects_dir
28 type: string
29 status:
30 description: File level status of the workflow run
31 type: string
32 message:
33 description: Error message from the workflow conveyed to the user
34 type: string
35 thumbnailIndex:
36 description: The index of the image in imageSet which consists of the "label image" thumbnail
37 type: integer
38 title:
39 description: File specific, name of file minus path and extension. (Appears redundant.)
40 type: string
41 fileMetadata:
42 description: >
43 Per file information (as apposed to per imageSet element).
44 OMEXMLMetadataFile: `Location of METADATA.ome.xml`
45 type: object
46 additionalProperties: {}
47 imageSet:
48 description: >
49 Set of images contained within input file
50 Example: 1 for PNGs, n for CZIs
51 type: array
52 items:
53 $ref: ImageSet.yaml
You can explore more on the yaml files in the Github repo.
CLI/SDK Submission
You can use curl to submit a job.
~ curl -X 'POST' \
'https://prefect2.hedwig-workflow-api.niaiddev.net/api/deployments/<DEPLOYMENT-ID>/create_flow_run' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"parameters": {"key": value, "key2": value2, ...}
}'
As same as curl, you can use any other SDK to submit a job. For example, you can use axios to send a POST request to the workflow server to submit a job.
Manual Submission
Depending on the environment, go to the deployment section. Click on the Kebab menu icon next to your desired deployment and do a Custom Run. Here you can add appropriate values for the fields and submit your job. For manual submission, do not forget to add no_api: true value.