diff --git a/.github/workflows/womtools-check.yml b/.github/workflows/womtools-check.yml new file mode 100644 index 00000000..4704b8a5 --- /dev/null +++ b/.github/workflows/womtools-check.yml @@ -0,0 +1,42 @@ +name: Womtools + +on: + pull_request: + branches: + - master + +jobs: + validate: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.ref }} + repository: ${{ github.repository }} + fetch-depth: 0 # Fetch all history + + - name: Set up Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '21' + + - name: Fetch Womtool + run: | + curl -L -o womtool.jar https://github.com/broadinstitute/cromwell/releases/download/87/womtool-87.jar + + - name: List modified files + id: diff + run: echo "files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | tr '\n' ' ')" >> $GITHUB_ENV + + - name: Validate WDL files using Womtool + run: | + for file in ${{ env.files }} + do + if [[ $file == *.wdl ]]; then + echo "Validating $file" + java -jar womtool.jar validate "$file" + fi + done diff --git a/workflows/cellranger/cellranger_arc_count.wdl b/workflows/cellranger/cellranger_arc_count.wdl index b178a47b..01bd441b 100644 --- a/workflows/cellranger/cellranger_arc_count.wdl +++ b/workflows/cellranger/cellranger_arc_count.wdl @@ -153,7 +153,8 @@ task run_cellranger_arc_count { check_call(call_args) fout.write(os.path.abspath(target) + ',' + samples[i] + ',' + ('Gene Expression' if data_types[i] == 'rna' else 'Chromatin Accessibility') + '\n') - call_args = ['cellranger-arc', 'count', '--id=results', '--libraries=libraries.csv', '--reference=genome_dir', '--jobmode=local'] + mem_size = re.findall(r"\d+", "~{memory}")[0] + call_args = ['cellranger-arc', 'count', '--id=results', '--libraries=libraries.csv', '--reference=genome_dir', '--jobmode=local', '--localcores=~{num_cpu}', '--localmem='+mem_size] if '~{gex_exclude_introns}' == 'true': call_args.append('--gex-exclude-introns') if '~{no_bam}' == 'true': diff --git a/workflows/cellranger/cellranger_atac_aggr.wdl b/workflows/cellranger/cellranger_atac_aggr.wdl index 1526ba7f..a0a8a8d0 100644 --- a/workflows/cellranger/cellranger_atac_aggr.wdl +++ b/workflows/cellranger/cellranger_atac_aggr.wdl @@ -133,7 +133,8 @@ task run_cellranger_atac_aggr { counts.append(library_id) fout.write(library_id + "," + current_dir + '/' + library_id + "/fragments.tsv.gz," + current_dir + '/' + library_id + "/singlecell.csv\n") - call_args = ['cellranger-atac', 'aggr', '--id=results', '--reference=genome_dir', '--csv=aggr.csv', '--normalize=~{normalize}', '--jobmode=local'] + mem_size = re.findall(r"\d+", "~{memory}")[0] + call_args = ['cellranger-atac', 'aggr', '--id=results', '--reference=genome_dir', '--csv=aggr.csv', '--normalize=~{normalize}', '--jobmode=local', '--localcores=~{num_cpu}', '--localmem='+mem_size] if '~{secondary}' != 'true': call_args.append('--nosecondary') else: diff --git a/workflows/cellranger/cellranger_atac_count.wdl b/workflows/cellranger/cellranger_atac_count.wdl index 668e86d0..6f1aef3a 100644 --- a/workflows/cellranger/cellranger_atac_count.wdl +++ b/workflows/cellranger/cellranger_atac_count.wdl @@ -137,7 +137,8 @@ task run_cellranger_atac_count { check_call(call_args) fastqs.append(target) - call_args = ['cellranger-atac', 'count', '--id=results', '--reference=genome_dir', '--fastqs=' + ','.join(fastqs), '--sample=~{sample_id}', '--jobmode=local'] + mem_size = re.findall(r"\d+", "~{memory}")[0] + call_args = ['cellranger-atac', 'count', '--id=results', '--reference=genome_dir', '--fastqs=' + ','.join(fastqs), '--sample=~{sample_id}', '--jobmode=local', '--localcores=~{num_cpu}', '--localmem='+mem_size] if '~{force_cells}' != '': call_args.append('--force-cells=~{force_cells}') if '~{dim_reduce}' != '': diff --git a/workflows/cellranger/cellranger_count.wdl b/workflows/cellranger/cellranger_count.wdl index 556b0ac3..a92dc3ec 100644 --- a/workflows/cellranger/cellranger_count.wdl +++ b/workflows/cellranger/cellranger_count.wdl @@ -224,7 +224,7 @@ task run_cellranger_count { fastqs_dirs.append(target) mem_size = re.findall(r"\d+", "~{memory}")[0] - call_args = ['cellranger', 'count', '--id=results', '--transcriptome=genome_dir', '--chemistry=~{chemistry}', '--jobmode=local', '--localmem='+mem_size] + call_args = ['cellranger', 'count', '--id=results', '--transcriptome=genome_dir', '--chemistry=~{chemistry}', '--jobmode=local', '--localcores=~{num_cpu}', '--localmem='+mem_size] if samples is None: # not Feature Barcode call_args.extend(['--sample=~{sample_id}', '--fastqs=' + ','.join(fastqs_dirs)]) diff --git a/workflows/cellranger/cellranger_create_reference.wdl b/workflows/cellranger/cellranger_create_reference.wdl index 084fc83e..9f1bae36 100644 --- a/workflows/cellranger/cellranger_create_reference.wdl +++ b/workflows/cellranger/cellranger_create_reference.wdl @@ -22,8 +22,8 @@ workflow cellranger_create_reference { # Which docker registry to use String docker_registry = "quay.io/cumulus" - # 8.0.1, 8.0.0, 7.2.0, 7.1.0, 7.0.1, 7.0.0, 6.1.2, 6.1.1 - String cellranger_version = "8.0.1" + # 9.0.0, 8.0.1, 8.0.0, 7.2.0, 7.1.0, 7.0.1, 7.0.0, 6.1.2, 6.1.1 + String cellranger_version = "9.0.0" # Disk space in GB Int disk_space = 100 @@ -308,7 +308,7 @@ task run_cellranger_mkref { else: break - call_args.extend(['--nthreads=~{num_cpu}', '--memgb=' + mem_digit]) + call_args.extend(['--nthreads=~{num_cpu}', '--memgb=' + mem_digit, '--localcores=~{num_cpu}', '--localmem=' + mem_digit]) if '~{ref_version}' != '': call_args.append('--ref-version=~{ref_version}') diff --git a/workflows/cellranger/cellranger_multi.wdl b/workflows/cellranger/cellranger_multi.wdl index b55eee60..668c8d6a 100644 --- a/workflows/cellranger/cellranger_multi.wdl +++ b/workflows/cellranger/cellranger_multi.wdl @@ -273,7 +273,7 @@ task run_cellranger_multi { raise Exception("Cannot locate CMO or FRP sample file!") mem_size = re.findall(r"\d+", "~{memory}")[0] - call_args = ['cellranger', 'multi', '--id=results', '--csv=multi.csv', '--jobmode=local', '--localmem='+mem_size] + call_args = ['cellranger', 'multi', '--id=results', '--csv=multi.csv', '--jobmode=local', '--localcores=~{num_cpu}', '--localmem='+mem_size] print(' '.join(call_args)) check_call(call_args) CODE diff --git a/workflows/cellranger/cellranger_vdj.wdl b/workflows/cellranger/cellranger_vdj.wdl index 38a27fc7..cbfe129c 100644 --- a/workflows/cellranger/cellranger_vdj.wdl +++ b/workflows/cellranger/cellranger_vdj.wdl @@ -131,7 +131,7 @@ task run_cellranger_vdj { fastqs.append(target) mem_size = re.findall(r"\d+", "~{memory}")[0] - call_args = ['cellranger', 'vdj', '--chain=~{chain}', '--id=results', '--reference=ref_dir', '--fastqs=' + ','.join(fastqs), '--sample=~{sample_id}', '--jobmode=local', '--localmem='+mem_size] + call_args = ['cellranger', 'vdj', '--chain=~{chain}', '--id=results', '--reference=ref_dir', '--fastqs=' + ','.join(fastqs), '--sample=~{sample_id}', '--jobmode=local', '--localcores=~{num_cpu}', '--localmem='+mem_size] if '~{denovo}' != 'false': call_args.append('--denovo') print(' '.join(call_args)) diff --git a/workflows/cellranger/cellranger_vdj_create_reference.wdl b/workflows/cellranger/cellranger_vdj_create_reference.wdl index 0c105e2b..7690e854 100644 --- a/workflows/cellranger/cellranger_vdj_create_reference.wdl +++ b/workflows/cellranger/cellranger_vdj_create_reference.wdl @@ -16,8 +16,8 @@ workflow cellranger_vdj_create_reference { # Which docker registry to use String docker_registry = "quay.io/cumulus" - # 8.0.0, 7.2.0 7.1.0, 7.0.1, 7.0.0, 6.1.2, 6.1.1 - String cellranger_version = "8.0.0" + # 9.0.0, 8.0.0, 7.2.0 7.1.0, 7.0.1, 7.0.0, 6.1.2, 6.1.1 + String cellranger_version = "9.0.0" # Disk space in GB Int disk_space = 100 @@ -84,6 +84,7 @@ task run_cellranger_vdj_create_reference { python <