Skip to content
Draft
Show file tree
Hide file tree
Changes from 90 commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
f911ef4
feat: minimap2 tool wrapper
adthrasher Dec 3, 2025
fd2bca4
refactor: handle optionally gzipped reference
adthrasher Dec 3, 2025
1ebe2a0
chore: fill in options
adthrasher Dec 3, 2025
9533656
chore: add samtools to minimap2 image and convert to BAM
adthrasher Dec 3, 2025
1b28075
chore: lint
adthrasher Dec 3, 2025
0ac46db
chore: add disk specification
adthrasher Dec 3, 2025
5161669
feat: add bwa-mem2 task
adthrasher Dec 3, 2025
af994e2
chore: lint
adthrasher Dec 4, 2025
00deed4
feat: add hisat2 task
adthrasher Dec 4, 2025
4434666
chore: change base image as other segfaults
adthrasher Dec 4, 2025
b07d769
feat: add `vg` indexing
adthrasher Dec 5, 2025
cb47772
chore: localize fasta for indexing
adthrasher Dec 5, 2025
39ca901
feat: add vg giraffe task
adthrasher Dec 5, 2025
a921e17
chore: avoid writing intermediate SAM to disk
adthrasher Dec 9, 2025
733368e
Merge branch 'feat/minimap2' of https://github.com/stjudecloud/workfl…
adthrasher Dec 9, 2025
2dc478a
chore: use database prefix
adthrasher Dec 12, 2025
1c832fc
chore: bump resources for azure
adthrasher Dec 12, 2025
bd84132
chore: format+lint
adthrasher Dec 12, 2025
8abaf9c
chore: remove memory oversubscribe
adthrasher Dec 18, 2025
d42fbfb
feat: add strelka and manta wrappers
adthrasher Dec 18, 2025
589190d
feat: add clair3 wrapper
adthrasher Dec 18, 2025
efb1d50
chore: fix invocation
adthrasher Dec 18, 2025
25681c7
feat: add NGSEP wrapper
adthrasher Dec 18, 2025
1083326
feat: add deepsomatic and deepvariant wrappers with GPU support
adthrasher Dec 18, 2025
30d1159
chore: change hisat2 output to BAM
adthrasher Dec 19, 2025
e58c2ed
chore: write to stdout instead of fifo
adthrasher Dec 19, 2025
e680a5b
chore: add undocumented FAI requirement
adthrasher Dec 22, 2025
60dce46
chore: add error checking to minimap2
adthrasher Dec 23, 2025
f614485
chore: cleanup reference files
adthrasher Jan 15, 2026
352fa6f
chore: minimum cores to 1
adthrasher Jan 20, 2026
339f20a
chore: update danio rerio url and add memory request
adthrasher Feb 2, 2026
df13caf
chore: scale memory with threads
adthrasher Feb 2, 2026
8ca1901
chore: update disk specification and memory requests
adthrasher Feb 2, 2026
a37db77
chore: add missing bam index
adthrasher Feb 2, 2026
5badc77
chore: update danio rerio url
adthrasher Feb 2, 2026
fb1ed43
chore: fix bad merge
adthrasher Feb 2, 2026
b8411d5
feat: add readgroup to array conversion for addreplacerg
adthrasher Feb 2, 2026
f749a6c
chore: bump disk requirements
adthrasher Feb 2, 2026
b2659f4
chore: bump requirements
adthrasher Feb 17, 2026
6bf5936
chore: correct container
adthrasher Feb 17, 2026
c17a874
feat: add samtools calmd implementation
adthrasher Feb 17, 2026
31d32b1
chore: eclipse 8 -> 21
adthrasher Feb 17, 2026
bc6af62
chore: add index files
adthrasher Feb 17, 2026
d53e15c
Merge remote-tracking branch 'refs/remotes/origin/feat/minimap2' into…
adthrasher Feb 17, 2026
fe34740
chore: address lint
adthrasher Mar 3, 2026
3afa3e0
feat: add samtools sort implementation
adthrasher Mar 3, 2026
e0e602d
Merge branch 'main' into feat/minimap2
adthrasher Mar 3, 2026
a9948bd
chore: address lint
adthrasher Mar 3, 2026
81224cf
chore: unify docker image version
adthrasher Mar 3, 2026
455f4d7
chore: GiB -> GB for new tools
adthrasher Mar 3, 2026
f197aef
chore: update outputs
adthrasher Mar 3, 2026
56328f2
chore: update sorting disk requirements
adthrasher Mar 4, 2026
174703f
chore: updates for somatic calling
adthrasher Mar 10, 2026
fd50c7e
feat: add octopus wrapper
adthrasher Mar 10, 2026
34e808e
chore: fixes for clair3
adthrasher Mar 10, 2026
c084df7
chore: update deepvariant to 1.10 plus fixes
adthrasher Mar 10, 2026
c6fdb1a
chore: cleanup FAI
adthrasher Mar 10, 2026
6b6b92e
chore: update sort memory
adthrasher Mar 10, 2026
f7b7fb1
chore: cleanup FAI
adthrasher Mar 10, 2026
664a0d1
chore: add BAM indices
adthrasher Mar 10, 2026
f470afa
chore: add octopus warning
adthrasher Mar 10, 2026
fcafe1e
chore: add FASTA index to manta
adthrasher Mar 10, 2026
b4621c3
chore: localize BAM and index
adthrasher Mar 10, 2026
dd35f36
chore: add index file
adthrasher Mar 11, 2026
ab2496a
chore: fix deepsomatic arguments
adthrasher Mar 11, 2026
5ba4e5a
chore: check
adthrasher Mar 11, 2026
99d645e
Merge branch 'feat/minimap2' of https://github.com/stjudecloud/workfl…
adthrasher Mar 11, 2026
7ab7375
feat: clairS wrapper
adthrasher Mar 12, 2026
cda5a4a
chore: lint and format
adthrasher Mar 12, 2026
e579d69
chore: add region filtering to manta
adthrasher Mar 13, 2026
9d07e09
chore: update tools
adthrasher Mar 17, 2026
810cbe6
chore: add outputs for strelka and manta somatic
adthrasher Mar 17, 2026
a8e2148
feat: mutect2 wrapper
adthrasher Mar 19, 2026
db57b47
chore: add dictionary because of course GATK needs that
adthrasher Mar 19, 2026
707b702
chore: ensure names match GATK's expectations
adthrasher Mar 19, 2026
0bb848a
chore: clean up mutect output
adthrasher Mar 20, 2026
ff82245
chore: localize files for Haplotype Caller
adthrasher Mar 20, 2026
9adf2f5
chore: localize inputs for deepvariant
adthrasher Mar 20, 2026
2efd098
chore: localize inputs for clair3 and strelka
adthrasher Mar 20, 2026
9f62956
chore: lint
adthrasher Mar 20, 2026
0929b67
feat: add mutect2 filtering
adthrasher Mar 23, 2026
211ba8e
feat: add mutect2 filtering
adthrasher Mar 25, 2026
d002e55
chore: clarify workflow name
adthrasher Mar 25, 2026
7ef3492
feat: add germline variant calling best practices workflow
adthrasher Mar 25, 2026
95a075d
chore: localize vcf
adthrasher Mar 25, 2026
5862a97
chore: cp instead of ln since tool resolves symlinks
adthrasher Mar 25, 2026
95d08cd
chore: add vcf index to output
adthrasher Mar 27, 2026
e5b5695
chore: add localization to base recalibrator and revert image version
adthrasher Mar 27, 2026
89882df
chore: redirect /tmp in SortSam
adthrasher Mar 27, 2026
4aeb876
chore: add index files to output
adthrasher Mar 27, 2026
5e29fb6
chore: add undocumented input to FilterMutectCalls and tweak resources
adthrasher Mar 30, 2026
942e51e
chore: set mode to gVCF
adthrasher Mar 30, 2026
ddf2f9d
chore: more updates for GATK
adthrasher Mar 30, 2026
af86744
chore: override /tmp
adthrasher Mar 30, 2026
b8ad722
chore: fix extension for output
adthrasher Mar 30, 2026
8edb6c8
chore: more undocumented dependencies
adthrasher Mar 30, 2026
6b3fc73
chore: add exome mode to manta
adthrasher Mar 31, 2026
be50eb5
Merge branch 'main' into feat/minimap2
adthrasher Apr 17, 2026
b709ccf
chore: fix bad merge
adthrasher Apr 17, 2026
f12b66b
chore: address lints
adthrasher Apr 17, 2026
7c5e9e6
chore: picard lints
adthrasher Apr 17, 2026
ee107bd
test: add bwamem2 index fixture for GRCh38 chrY/chrM
adthrasher Apr 24, 2026
ab4fb5b
test: write tests for bwamem2 align and index tasks
adthrasher Apr 24, 2026
6f610cf
test: add fixture symlinks for bwamem2 tests
adthrasher Apr 24, 2026
ee5657e
test: add minimap2 .mmi index fixture for GRCh38 chrY/chrM
adthrasher Apr 24, 2026
955451c
test: write tests for minimap2 align and index tasks
adthrasher Apr 24, 2026
1e9c395
test: add FASTA-reference and boolean flag tests for minimap2 align
adthrasher Apr 24, 2026
941f101
test: add vg giraffe index fixtures for GRCh38 chrY/chrM
adthrasher Apr 24, 2026
2e414ab
test: write tests for vg giraffe task covering output formats and pre…
adthrasher Apr 24, 2026
91ec9ab
test: split vg presets test — chaining presets require unpaired reads
adthrasher Apr 24, 2026
9c56c03
test: add tests for clair, deepvariant, strelka, and manta
adthrasher Apr 24, 2026
633286f
chore: reorg fixtures to match #263
adthrasher Apr 24, 2026
ba51f9c
chore: add @ prefix for json files
adthrasher Apr 24, 2026
62556c5
chore: disable pytest
adthrasher Apr 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions data_structures/read_group.wdl
Original file line number Diff line number Diff line change
Expand Up @@ -416,3 +416,50 @@ task inner_read_group_to_string {
maxRetries: 1
}
}

task read_group_to_array {
meta {
description: "Converts a `ReadGroup` struct to a `Array[String]` **without any validation**."
outputs: {
converted_read_group: "Input `ReadGroup` as a `Array[String]`"
}
}

parameter_meta {
read_group: "`ReadGroup` struct to convert to array"
}

input {
ReadGroup read_group
}

String delimiter = "\n"

command <<<
{
echo -n "~{"ID:" + read_group.ID}" # required field. All others optional
echo -n "~{delimiter + "BC:" + read_group.BC}"
echo -n "~{delimiter + "CN:" + read_group.CN}"
echo -n "~{delimiter + "DS:" + read_group.DS}"
echo -n "~{delimiter + "DT:" + read_group.DT}"
echo -n "~{delimiter + "FO:" + read_group.FO}"
echo -n "~{delimiter + "KS:" + read_group.KS}"
echo -n "~{delimiter + "LB:" + read_group.LB}"
echo -n "~{delimiter + "PG:" + read_group.PG}"
echo -n "~{delimiter + "PI:" + read_group.PI}"
echo -n "~{delimiter + "PL:" + read_group.PL}"
echo -n "~{delimiter + "PM:" + read_group.PM}"
echo -n "~{delimiter + "PU:" + read_group.PU}"
echo "~{delimiter + "SM:" + read_group.SM}"
} >> out.txt
>>>

output {
Array[String] converted_read_group = read_lines("out.txt")
}

runtime {
container: "ghcr.io/stjudecloud/util:3.0.3"
maxRetries: 1
}
}
8 changes: 8 additions & 0 deletions docker/bwamem2/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM quay.io/biocontainers/samtools:1.17--h00cdaf9_0 AS samtools
FROM quay.io/biocontainers/bwa-mem2:2.3--he70b90d_0

COPY --from=samtools /usr/local/bin/ /usr/local/bin/
COPY --from=samtools /usr/local/lib/ /usr/local/lib/
COPY --from=samtools /usr/local/libexec/ /usr/local/libexec/

ENTRYPOINT [ "bwa-mem2" ]
5 changes: 5 additions & 0 deletions docker/bwamem2/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"name": "bwamem2",
"version": "2.3",
"revision": "0"
}
8 changes: 8 additions & 0 deletions docker/hisat2/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM quay.io/biocontainers/samtools:1.17--h00cdaf9_0 AS samtools
FROM quay.io/biocontainers/hisat2:2.2.1--hdbdd923_7

COPY --from=samtools /usr/local/bin/ /usr/local/bin/
COPY --from=samtools /usr/local/lib/ /usr/local/lib/
COPY --from=samtools /usr/local/libexec/ /usr/local/libexec/

ENTRYPOINT [ "hisat2" ]
5 changes: 5 additions & 0 deletions docker/hisat2/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"name": "hisat2",
"version": "2.2.1",
"revision": "0"
}
8 changes: 8 additions & 0 deletions docker/minimap2/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM quay.io/biocontainers/samtools:1.17--h00cdaf9_0 AS samtools
FROM quay.io/biocontainers/minimap2:2.30--h577a1d6_0

COPY --from=samtools /usr/local/bin/ /usr/local/bin/
COPY --from=samtools /usr/local/lib/ /usr/local/lib/
COPY --from=samtools /usr/local/libexec/ /usr/local/libexec/

ENTRYPOINT [ "minimap2" ]
5 changes: 5 additions & 0 deletions docker/minimap2/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"name": "minimap2",
"version": "2.30",
"revision": "0"
}
5 changes: 5 additions & 0 deletions docker/ngsep/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM eclipse-temurin:21

Check failure

Code scanning / Snyk Container

Low severity - Allocation of Resources Without Limits or Throttling vulnerability in glibc High

This file introduces a vulnerable glibc package with a low severity vulnerability.

Check failure

Code scanning / Snyk Container

Medium severity - Directory Traversal vulnerability in pam High

This file introduces a vulnerable pam package with a medium severity vulnerability.
Comment thread Fixed

Check warning

Code scanning / Snyk Container

Medium severity - Out-of-Bounds vulnerability in binutils Medium

This file introduces a vulnerable binutils package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Low severity - Allocation of Resources Without Limits or Throttling vulnerability in binutils Medium

This file introduces a vulnerable binutils package with a low severity vulnerability.

Check warning

Code scanning / Snyk Container

Low severity - Improper Input Validation vulnerability in coreutils Medium

This file introduces a vulnerable coreutils package with a low severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - Algorithmic Complexity vulnerability in expat Medium

This file introduces a vulnerable expat package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - Improper Verification of Cryptographic Signature vulnerability in gnupg2 Medium

This file introduces a vulnerable gnupg2 package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - Directory Traversal vulnerability in tar Warning

This file introduces a vulnerable tar package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - Open Redirect vulnerability in wget Medium

This file introduces a vulnerable wget package with a medium severity vulnerability.

Check notice

Code scanning / Snyk Container

Low severity - Memory Leak vulnerability in binutils Low

This file introduces a vulnerable binutils package with a low severity vulnerability.

Check notice

Code scanning / Snyk Container

Medium severity - Out-of-Bounds vulnerability in binutils Low

This file introduces a vulnerable binutils package with a medium severity vulnerability.

Check notice

Code scanning / Snyk Container

Low severity - Out-of-bounds Write vulnerability in gnupg2 Low

This file introduces a vulnerable gnupg2 package with a low severity vulnerability.

Check notice

Code scanning / Snyk Container

Low severity - Covert Timing Channel vulnerability in libgcrypt20 Note

This file introduces a vulnerable libgcrypt20 package with a low severity vulnerability.
Comment thread Fixed

Check notice

Code scanning / Snyk Container

Low severity - CVE-2024-56433 vulnerability in shadow Note

This file introduces a vulnerable shadow package with a low severity vulnerability.
Comment thread Fixed

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2025-69648 vulnerability in binutils Warning

This file introduces a vulnerable binutils package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2025-69647 vulnerability in binutils Warning

This file introduces a vulnerable binutils package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2025-69644 vulnerability in binutils Warning

This file introduces a vulnerable binutils package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2025-69652 vulnerability in binutils Warning

This file introduces a vulnerable binutils package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2025-69651 vulnerability in binutils Medium

This file introduces a vulnerable binutils package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2025-69645 vulnerability in binutils Warning

This file introduces a vulnerable binutils package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2025-69646 vulnerability in binutils Warning

This file introduces a vulnerable binutils package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - Time-of-check Time-of-use (TOCTOU) vulnerability in util-linux Warning

This file introduces a vulnerable util-linux package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - Unrestricted Upload of File with Dangerous Type vulnerability in tar Medium

This file introduces a vulnerable tar package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - Time-of-check Time-of-use (TOCTOU) vulnerability in libcap2 Medium

This file introduces a vulnerable libcap2 package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2026-4046 vulnerability in glibc Warning

This file introduces a vulnerable glibc package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2026-4438 vulnerability in glibc Warning

This file introduces a vulnerable glibc package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2026-4437 vulnerability in glibc Warning

This file introduces a vulnerable glibc package with a medium severity vulnerability.

Check warning

Code scanning / Snyk Container

Medium severity - CVE-2026-2219 vulnerability in dpkg Warning

This file introduces a vulnerable dpkg package with a medium severity vulnerability.

RUN wget https://github.com/NGSEP/NGSEPcore/releases/download/v5.1.0/NGSEPcore_5.1.0.jar -O /usr/local/bin/NGSEPcore.jar

ENTRYPOINT [ "java", "-jar", "/usr/local/bin/NGSEPcore.jar" ]
5 changes: 5 additions & 0 deletions docker/ngsep/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"name": "ngsep",
"version": "5.1.0",
"revision": "0"
}
10 changes: 5 additions & 5 deletions tools/bwa.wdl
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ task bwa_aln {
n_cores=$(nproc)
fi
# -1 because samtools uses one more core than `--threads` specifies
(( samtools_cores = n_cores - 1 ))
(( samtools_cores = n_cores - 1 || 1 ))

mkdir bwa_db
tar -C bwa_db -xzf "~{bwa_db_tar_gz}" --no-same-owner
Expand Down Expand Up @@ -160,7 +160,7 @@ task bwa_aln_pe {
n_cores=$(nproc)
fi
# -1 because samtools uses one more core than `--threads` specifies
(( samtools_cores = n_cores - 1 ))
(( samtools_cores = n_cores - 1 || 1 ))

mkdir bwa_db
tar -C bwa_db -xzf "~{bwa_db_tar_gz}" --no-same-owner
Expand Down Expand Up @@ -250,14 +250,14 @@ task bwa_mem {
)

command <<<
set -euo pipefail
set -xeuo pipefail

n_cores=~{ncpu}
if ~{use_all_cores}; then
n_cores=$(nproc)
fi
# -1 because samtools uses one more core than `--threads` specifies
(( samtools_cores = n_cores - 1 ))
(( samtools_cores = n_cores - 1 || 1 ))

mkdir bwa_db
tar -C bwa_db -xzf "~{bwa_db_tar_gz}" --no-same-owner
Expand Down Expand Up @@ -294,7 +294,7 @@ task bwa_mem {

runtime {
cpu: ncpu
memory: "25 GB"
memory: "120 GB"
disks: "~{disk_size_gb} GB"
container: "ghcr.io/stjudecloud/bwa:0.7.17-2"
maxRetries: 1
Expand Down
134 changes: 134 additions & 0 deletions tools/bwamem2.wdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
version 1.2

task align {
meta {
description: "Align DNA sequences against a large reference database using BWA-MEM2"
outputs: {
alignments: "The output alignment file in SAM format"
}
}

parameter_meta {
read_one_fastq_gz: "Input gzipped FASTQ read one file to align with BWA-MEM2"
reference_index: "The BWA-MEM2 index file for the reference genome"
read_group: "The read group string to be included in the SAM header. Format: '@RG\\tID:foo\\tSM:bar'"
read_two_fastq_gz: "Input gzipped FASTQ read two file to align with BWA-MEM2"
prefix: "Prefix for the BAM file. The extension `.bam` will be added."
smart_pairing: "If true, enable smart pairing mode for paired-end reads"
skip_mate_rescue: "If true, skip mate rescue for paired-end reads"
threads: "Number of threads to use for alignment"
modify_disk_size_gb: "Additional disk space to allocate (in GB)"
seed_length: "Seed value for the BWA-MEM2 aligner"
min_score: "Minimum score threshold for reporting alignments"
}

input {
File read_one_fastq_gz
File reference_index
String read_group
File? read_two_fastq_gz
String prefix = sub(
basename(read_one_fastq_gz),
"([_\\.][rR][12])?(\\.subsampled)?\\.(fastq|fq)(\\.gz)?$",
""
)
Boolean smart_pairing = false
Boolean skip_mate_rescue = false
Int threads = 4
Int modify_disk_size_gb = 0
Int seed_length = 19
Int min_score = 30
}

String output_name = prefix + ".bam"
Int disk_size_gb = ceil((
size(read_one_fastq_gz, "GB") + size(read_two_fastq_gz, "GB")
) * 2)
+ ceil(size(reference_index, "GB"))
+ 30
+ modify_disk_size_gb

command <<<
set -euo pipefail

mkdir bwa_db
tar -C bwa_db -xzf "~{reference_index}" --no-same-owner
PREFIX=$(basename bwa_db/*.ann ".ann")

bwa-mem2 mem \
-t ~{threads} \
-R "~{read_group}" \
-k ~{seed_length} \
-T ~{min_score} \
~{if smart_pairing then "-p" else ""} \
~{if skip_mate_rescue then "-S" else ""} \
bwa_db/"$PREFIX" \
"~{read_one_fastq_gz}" \
~{if defined(read_two_fastq_gz) then "\"~{read_two_fastq_gz}\"" else ""} |
samtools view -b -o "~{output_name}" -

rm -r bwa_db
>>>

output {
File alignments = output_name
}

requirements {
container: "ghcr.io/stjudecloud/bwamem2:branch-minimap2-2.3-0"
cpu: threads
memory: "~{4 * threads} GB"
disks: "~{disk_size_gb} GB"
}
}

task index {
meta {
description: "Index a reference genome for alignment with minimap2"
outputs: {
reference_index: "The minimap2 index file for the reference genome"
}
}

parameter_meta {
reference_fasta: "The reference genome in FASTA format to be indexed"
db_name: "The base name for the output index files"
modify_disk_size_gb: "Additional disk space to allocate (in GB)"
}

input {
File reference_fasta
String db_name = "reference"
Int modify_disk_size_gb = 0
}

Float input_fasta_size = size(reference_fasta, "GB")
Int disk_size_gb = ceil(input_fasta_size * 2) + 10 + modify_disk_size_gb
String bwa_db_out_name = db_name + ".tar.gz"

command <<<
set -euo pipefail

ref_fasta=~{basename(reference_fasta, ".gz")}
gunzip -c "~{reference_fasta}" > "$ref_fasta" \
|| ln -sf "~{reference_fasta}" "$ref_fasta"

bwa-mem2 index \
"$ref_fasta"

tar -czf "~{bwa_db_out_name}" "$ref_fasta"*

rm -r "$ref_fasta"
>>>

output {
File reference_index = bwa_db_out_name
}

requirements {
container: "ghcr.io/stjudecloud/bwamem2:branch-minimap2-2.3-0"
cpu: 1
memory: "120 GB"
disks: "~{disk_size_gb} GB"
}
}
Loading
Loading