Skip to content

Add GPU-accelerated mutectcaller from Parabricks #222

Add GPU-accelerated mutectcaller from Parabricks

Add GPU-accelerated mutectcaller from Parabricks #222

Workflow file for this run

name: nf-core AWS full size tests
# This workflow is triggered on PRs opened against the main/master branch.
# It can be additionally triggered manually with GitHub actions workflow dispatch button.
# It runs the -profile 'test_full' on AWS batch
on:
pull_request_review:
types: [submitted]
release:
types: [published]
workflow_dispatch:
inputs:
somatic:
description: "Somatic full test"
type: boolean
default: false
germline:
description: "Germline full test"
type: boolean
default: false
germline_ncbench_agilent:
description: "Germline Agilent NCBench test"
type: boolean
default: false
jobs:
setup-matrix:
name: Build test matrix
if: github.repository == 'nf-core/sarek' && (github.event.review.state == 'approved' && (github.event.pull_request.base.ref == 'master' || github.event.pull_request.base.ref == 'main') || github.event_name == 'workflow_dispatch' || github.event_name == 'release')
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.build-matrix.outputs.matrix }}
steps:
- name: Build matrix from inputs
id: build-matrix
run: |
# All available profiles
all='[
{
"profile": "test_full_aws",
"test": "somatic",
"compute_env": "TOWER_COMPUTE_ENV",
"workdir": "TOWER_BUCKET_AWS"
},
{
"profile": "test_full_germline_aws",
"test": "germline",
"compute_env": "TOWER_COMPUTE_ENV",
"workdir": "TOWER_BUCKET_AWS"
},
{
"profile": "test_full_germline_ncbench_agilent",
"test": "germline_ncbench_agilent",
"compute_env": "TOWER_COMPUTE_ENV",
"workdir": "TOWER_BUCKET_AWS"
}
]'
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
# Filter to only selected profiles
matrix=$(echo "$all" | jq -c '[.[] | select(
(.test == "somatic" and ${{ inputs.somatic }}) or
(.test == "germline" and ${{ inputs.germline }}) or
(.test == "germline_ncbench_agilent" and ${{ inputs.germline_ncbench_agilent }})
)]')
else
# PR review or release: run all profiles
matrix=$(echo "$all" | jq -c '.')
fi
echo "matrix={\"include\":$matrix}" >> "$GITHUB_OUTPUT"
run-platform:
needs: setup-matrix
if: fromJson(needs.setup-matrix.outputs.matrix).include[0] != null
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
name: Run ${{ matrix.profile }}
runs-on: ubuntu-latest
steps:
- name: Set revision variable
id: revision
run: |
echo "revision=${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'release') && github.sha || 'dev' }}" >> "$GITHUB_OUTPUT"
- name: Launch workflow via Seqera Platform
id: tower-launch
uses: seqeralabs/action-tower-launch@51565b514bff1827cf34620de25d0055759f1fc9 # v2
with:
run_name: sarek_${{ matrix.profile }}
workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }}
access_token: ${{ secrets.TOWER_ACCESS_TOKEN }}
compute_env: ${{ secrets[matrix.compute_env] }}
revision: ${{ steps.revision.outputs.revision }}
workdir: ${{ secrets[matrix.workdir] }}/work/sarek/work-${{ steps.revision.outputs.revision }}/${{ matrix.profile }}
parameters: |
{
"outdir": "${{ secrets[matrix.workdir] }}/sarek/results-${{ steps.revision.outputs.revision }}/${{ matrix.profile }}/"
}
nextflow_config: |
plugins {
id 'nf-slack@0.5.0'
}
slack {
enabled = true
bot {
token = '${{ secrets.NFSLACK_BOT_TOKEN }}'
channel = 'sarek_dev'
}
onStart {
enabled = false
}
onComplete {
message = ':white_check_mark: *sarek/${{ matrix.profile }}* completed successfully! :tada:'
}
onError {
message = ':x: *sarek/${{ matrix.profile }}* failed :crying_cat_face:'
}
}
profiles: ${{ matrix.profile }}
- name: Comment Platform link on PR
if: github.event_name == 'pull_request_review'
env:
GH_TOKEN: ${{ github.token }}
run: |
gh pr comment ${{ github.event.pull_request.number }} \
--repo ${{ github.repository }} \
--body "Cloud test **${{ matrix.profile }}** launched on [Seqera Platform](${{ steps.tower-launch.outputs.workflowUrl }})"
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: Seqera Platform debug log file - ${{ matrix.profile }}
path: |
tower_action_*.log
tower_action_*.json