@@ -3,7 +3,6 @@ name: arteria-packs.ngi_uu_workflow
description : The ngi workflow, from sequencer to remote system...
workflows :
main :
type : direct
input :
@@ -12,96 +11,217 @@ workflows:
- run_type
- remote_host
- trigger_ngi_pipeline
- send_mail_to
- bcl2fastq_service_port
- bcl2fastq_version
- barcode_mismatches
- tiles
- use_base_mask
- bcl2fastq_additional_arguments
- siswrap_service_port
output :
output_the_whole_workflow_context : <% $ %>
stdout : < $.stdout %>
task-defaults :
on-error :
- oh_shit_error_main
tasks :
get_runfolder_name :
action : core.local
input :
cmd : python -c 'import sys; sys.stdout.write("<% $.runfolder %>".split("/")[-1])'
publish :
runfolder_name : <% $.get_runfolder_name.stdout %>
report_err : <% $.get_runfolder_name.stdout %> <% $.get_runfolder_name.stderr %>
runfolder_name : " <% $.get_runfolder_name.stdout % >"
on-success :
- get_demultiplex_config
# ## DEMULTIPLEX START ###
get_demultiplex_config :
action : arteria-packs.get_pack_config
publish :
hermes_base_url : <% $.get_config.result.hermes_base_url %>
hermes_user : <% $.get_config.result.hermes_user %>
hermes_token : <% $.get_config.result.hermes_token %>
on-success :
- get_flowcell_name
on-error :
- print_error
get_flowcell_name :
action : arteria-packs.get_flowcell_from_runfolder_name
input :
runfolder_name : < $.runfolder_name >
runfolder_name : <% $.runfolder_name %>
publish :
flowcell_name : <% $.get_flowcell_name.result %>
on-success :
- download_samplesheet
download_samplesheet :
action : core.http
input :
url : <% $.hermes_base_url %>/<% $.flowcell_name %>/samplesheetfile
headers : USER=<% $.hermes_user %>&X-XSRF-TOKEN=<% $.hermes_token %>
publish :
samplesheet_string : <% $.download_samplesheet.body.samplesheet %>
on-success :
- construct_bcl2fastq_body
# Since we don't want to pass empty values into
# bcl2fastq-ws, we remove any empty keys from
# this body.
construct_bcl2fastq_body :
action : arteria-packs.parse_bcl2fastq_args
input :
samplesheet : " <% $.samplesheet_string % >"
bcl2fastq_version : " <% $.bcl2fastq_version % >"
barcode_mismatches : " <% $.barcode_mismatches % >"
tiles : " <% $.tiles % >"
use_base_mask : " <% $.use_base_mask % >"
additional_arguments : " <% $.bcl2fastq_additional_arguments % >"
publish :
flowcell_name : <% $.get_flowcell_name.stdout %>
report_err : <% $.get_flowcell_name.stdout %> <% $.get_flowcell_name.stderr %>
bcl2fastq_body : <% $.construct_bcl2fastq_body.stdout %>
on-success :
- demultiplex
on-error :
- print_error
- run_bcl2fastq
demultiplex :
action : arteria-packs.demultiplex
run_bcl2fastq :
action : core.http
input :
host : " <% $.host % >"
runfolder_name : " <% $.runfolder_name % >"
run_type : " <% $.run_type % >"
url : " http://<% $.host % >:<% $.bcl2fastq_service_port % >/api/1.0/start/<% $.runfolder_name % >"
method : " POST"
headers : " Content-Type=application/json"
body : <% $.bcl2fastq_body %>
publish :
status_message : " Runfolder <% $.runfolder % > run on <% $.host % >..."
bcl2fastq_status_code : <% $.run_bcl2fastq.status_code %>
bcl2fastq_status_url : <% $.run_bcl2fastq.body.link %>
on-success :
- poll_demultiplex_status
poll_demultiplex_status :
action : arteria-packs.poll_status
input :
url : <% $.bcl2fastq_status_url %>
publish :
poll_out : <% $.poll_status.stdout %>
poll_err : <% $.poll_status.stderr %>
on-success :
- run_sisyphus_quick_report
# ## DEMULTIPLEX END ###
# demultiplex:
# action: arteria-packs.demultiplex
# input:
# host: "<% $.host %>"
# runfolder_name: "<% $.runfolder_name %>"
# run_type: "<% $.run_type %>"
# publish:
# demultiplex_message: "Finished demultiplex for <% $.runfolder %> on <% $.host %>..."
# #error_msg: "<% $.demultiplex.output_the_whole_workflow_context %>"
# #stdout: "<% $.demultiplex.stdout %>"
# #error_msg: "<% $.demultiplex.stdout %> <% $.demultiplex.stderr %>"
# on-success:
# - run_sisyphus_quick_report
# ## QUICK REPORT START ###
run_sisyphus_quick_report :
action : arteria-packs.sisyphus_quickreport
action : core.http
input :
host : " <% $.host % >"
runfolder : " <% $.runfolder_name % >"
url : " http://<% $.host % >:<% $.siswrap_service_port % >/api/1.0/report/run/<% $.runfolder_name % >"
method : " POST"
headers : " Content-Type=application/json"
body : ' {"runfolder": "<% $.runfolder_name % >"}'
publish :
siswrap_err : <% $.run_sisyphus_quick_report.output_the_whole_workflow_context %>
# report_message: "Report generated for <% $.runfolder %> on <% $.host %>"
# report_err: "<% $.run_sisyphus_quick_report.stdout $.run_sisyphus_quick_report.stderr %>"
report_code : " <% $.run_quickreport.status_code % >"
report_msg : " <% $.run_quickreport.body % >"
report_status_url : " <% $.run_quickreport.body.link % >"
report_err : " <% $.run_quickreport.status_code % > <% $.run_quickreport.body % >"
on-success :
- run_sisyphus_quality_control
on-error :
- print_error
- poll_report_status
run_sisyphus_quality_control :
action : arteria-packs.sisyphus_qc
poll_report_status :
action : arteria-packs.poll_status
input :
host : " <% $.host % >"
runfolder : " <% $.runfolder_name % >"
url : " <% $.report_status_url % >"
publish :
qc_message : " QC and report finished for <% $.runfolder % > on <% $.host % >"
siswrap_err : <% $.run_sisyphus_quality_control.output_the_whole_workflow_context %>
# qc_err: <% $.run_sisyphus_quality_control.stdout $.run_sisyphus_quality_control.stderr %>
poll_out : " <% $.poll_status.stdout % >"
poll_err : " <% $.poll_status.stderr % >"
on-success :
- notify
on-error :
- print_error
- run_sisyphus_qc
notify :
action : core.local
# ## QUICK REPORT END ###
# run_sisyphus_quick_report:
# action: arteria-packs.sisyphus_quickreport
# input:
# host: "<% $.host %>"
# runfolder: "<% $.runfolder_name %>"
# publish:
# report_message: "Report generated for <% $.runfolder %> on <% $.host %>"
# #error_msg: "<% $.run_sisyphus_quick_report.output_the_whole_workflow_context %>"
# #error_msg: "<% $.run_sisyphus_quick_report.stdout $.run_sisyphus_quick_report.stderr %>"
# on-success:
# - run_sisyphus_quality_control
# ## QUALITY CONTROL START ###
run_sisyphus_qc :
action : core.http
input :
cmd : " printf '<% $.qc_message % >'"
url : " http://<% $.host % >:<% $.siswrap_service_port % >/api/1.0/qc/run/<% $.runfolder_name % >"
method : " POST"
headers : " Content-Type=application/json"
body : ' {"runfolder": "<% $.runfolder_name % >"}'
publish :
qc_code : " <% $.run_qc.status_code % >"
qc_msg : " <% $.run_qc.body.msg % >"
qc_status_url : " <% $.run_qc.body.link % >"
qc_err : " <% $.run_quickreport.status_code % > <% $.run_quickreport.body % >"
on-success :
- poll_qc_status
print_error :
action : core.local
poll_qc_status :
action : arteria-packs.poll_status
input :
cmd : " printf 'an error occurred: <% $.siswrap_err % >'"
url : <% $.qc_status_url %>
publish :
poll_out : <% $.poll_status.stdout %>
poll_err : <% $.poll_status.stderr %>
on-success :
- notify_finished
# ## QUALITY CONTROL END ###
# run_sisyphus_local_processing :
# action: arteria-packs.sisyphus_local_processing
# run_sisyphus_quality_control :
# action: arteria-packs.sisyphus_qc
# input:
# host: "<% $.host %>"
# runfolder: "<% $.runfolder %>"
# host: "<% $.host %>"
# runfolder: "<% $.runfolder_name %>"
# publish:
# qc_message: "QC finished for <% $.runfolder %> on <% $.host %>"
# #error_msg: "<% $.run_sisyphus_quality_control.output_the_whole_workflow_context %>"
# #error_msg: "<% $.run_sisyphus_quality_control.stdout $.run_sisyphus_quality_control.stderr %>"
# on-success:
# - start_ngi_pipeline
# TODO Split out the ngi pipeline processing stuff..
# start_ngi_pipeline:
# action: core.http
# input:
# url: "http://www.uu.se"
# url: "http://localhost:9101/v1/webhooks/ngi_pipeline"
# method: "POST"
# headers: "X-Auth-Token={{system.st2_auth_token}}&Content-Type=application/json"
# body: '{ "start_ngi_pipeline": "<% $.trigger_ngi_pipeline %>" }'
# - notify_finished
notify_finished :
action : core.sendmail
input :
to : <% $.send_mail_to %>
subject : " '[ARTERIA] - Finished processing runfolder <% $.runfolder_name % >'"
body : " Finished processing on <% $.host % > for <% $.runfolder_name % >: <% $.demultiplex_message % > <% $.report_message % > <% $.qc_message % >"
# shit_error:
# action: arteria-packs.oh_shit_error execution_id=<% $.__execution.id %> host=<% $.host %> runfolder=<% $.runfolder %>
oh_shit_error_main :
action : core.sendmail
input :
to : <% $.send_mail_to %>
subject : " '[ARTERIA] - OH SHIT ERROR MAIN occurred for runfolder <% $.runfolder_name % >'"
body : " An oh shit error occurred on <% $.runfolder_name % > on <% $.host % > in main flow. Please investigate!"
on-complete :
- fail