From 14eae4578ae34920fa1da8f99a033a76ae66ace3 Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Fri, 29 May 2026 09:50:18 -0400 Subject: [PATCH 01/10] refactor: module support --- tools/{ => fq}/fq.wdl | 0 tools/fq/module.json | 26 ++++++++++++++++ tools/samtools/module.json | 26 ++++++++++++++++ tools/{ => samtools}/samtools.wdl | 0 workflows/chipseq/chipseq-standard.wdl | 4 +-- workflows/dnaseq/dnaseq-core.wdl | 2 +- workflows/dnaseq/dnaseq-standard-fastq.wdl | 2 +- workflows/dnaseq/dnaseq-standard.wdl | 4 +-- workflows/general/alignment-post.wdl | 2 +- .../{ => bam-to-fastqs}/bam-to-fastqs.wdl | 0 workflows/general/bam-to-fastqs/module.json | 30 +++++++++++++++++++ workflows/general/samtools-merge.wdl | 2 +- workflows/qc/markdups-post.wdl | 2 +- workflows/qc/quality-check-standard.wdl | 4 +-- workflows/reference/gatk-reference.wdl | 2 +- workflows/rnaseq/rnaseq-standard-fastq.wdl | 2 +- workflows/rnaseq/rnaseq-standard.wdl | 4 +-- 17 files changed, 97 insertions(+), 15 deletions(-) rename tools/{ => fq}/fq.wdl (100%) create mode 100644 tools/fq/module.json create mode 100644 tools/samtools/module.json rename tools/{ => samtools}/samtools.wdl (100%) rename workflows/general/{ => bam-to-fastqs}/bam-to-fastqs.wdl (100%) create mode 100644 workflows/general/bam-to-fastqs/module.json diff --git a/tools/fq.wdl b/tools/fq/fq.wdl similarity index 100% rename from tools/fq.wdl rename to tools/fq/fq.wdl diff --git a/tools/fq/module.json b/tools/fq/module.json new file mode 100644 index 000000000..a4c5947d9 --- /dev/null +++ b/tools/fq/module.json @@ -0,0 +1,26 @@ +{ + "name": "fq", + "version": "1.0.0", + "license": "MIT", + "authors": [ + { + "name": "Ari Frantz", + "email": "Ari.Frantz@STJUDE.ORG" + }, + { + "name": "Andrew Thrasher", + "email": "Andrew.Thrasher@STJUDE.ORG" + } + ], + "description": "Module for handling FASTQ files", + "repository": "https://github.com/stjudecloud/workflows", + "entrypoint": "fq.wdl", + "tools": [ + { + "name": "fq", + "version": "0.12.0", + "license": "MIT", + "homepage": "https://github.com/stjude-rust-labs/fq" + } + ] +} \ No newline at end of file diff --git a/tools/samtools/module.json b/tools/samtools/module.json new file mode 100644 index 000000000..2c6aba532 --- /dev/null +++ b/tools/samtools/module.json @@ -0,0 +1,26 @@ +{ + "name": "samtools", + "version": "1.0.0", + "license": "MIT", + "authors": [ + { + "name": "Ari Frantz", + "email": "Ari.Frantz@STJUDE.ORG" + }, + { + "name": "Andrew Thrasher", + "email": "Andrew.Thrasher@STJUDE.ORG" + } + ], + "description": "Module for handling SAM/BAM files", + "repository": "https://github.com/stjudecloud/workflows", + "entrypoint": "samtools.wdl", + "tools": [ + { + "name": "samtools", + "version": "1.19.2", + "license": "MIT", + "homepage": "https://www.htslib.org/" + } + ] +} \ No newline at end of file diff --git a/tools/samtools.wdl b/tools/samtools/samtools.wdl similarity index 100% rename from tools/samtools.wdl rename to tools/samtools/samtools.wdl diff --git a/workflows/chipseq/chipseq-standard.wdl b/workflows/chipseq/chipseq-standard.wdl index 5f7296726..cea805720 100755 --- a/workflows/chipseq/chipseq-standard.wdl +++ b/workflows/chipseq/chipseq-standard.wdl @@ -5,9 +5,9 @@ import "../../tools/deeptools.wdl" import "../../tools/fastp.wdl" as fp import "../../tools/md5sum.wdl" import "../../tools/picard.wdl" -import "../../tools/samtools.wdl" +import "../../tools/samtools/samtools.wdl" import "../../tools/util.wdl" -import "../general/bam-to-fastqs.wdl" as b2fq +import "../general/bam-to-fastqs/bam-to-fastqs.wdl" as b2fq import "https://raw.githubusercontent.com/stjude/seaseq/2.3/workflows/workflows/mapping.wdl" as seaseq_map import "https://raw.githubusercontent.com/stjude/seaseq/3.0/workflows/tasks/samtools.wdl" diff --git a/workflows/dnaseq/dnaseq-core.wdl b/workflows/dnaseq/dnaseq-core.wdl index 21a1d3990..bff1546de 100644 --- a/workflows/dnaseq/dnaseq-core.wdl +++ b/workflows/dnaseq/dnaseq-core.wdl @@ -4,7 +4,7 @@ version 1.1 import "../../tools/bwa.wdl" import "../../tools/fastp.wdl" as fp import "../../tools/picard.wdl" -import "../../tools/samtools.wdl" +import "../../tools/samtools/samtools.wdl" import "../../tools/util.wdl" import "../general/samtools-merge.wdl" as samtools_merge_wf diff --git a/workflows/dnaseq/dnaseq-standard-fastq.wdl b/workflows/dnaseq/dnaseq-standard-fastq.wdl index fdf48606b..6b346ca80 100644 --- a/workflows/dnaseq/dnaseq-standard-fastq.wdl +++ b/workflows/dnaseq/dnaseq-standard-fastq.wdl @@ -2,7 +2,7 @@ version 1.1 import "../../data_structures/read_group.wdl" -import "../../tools/fq.wdl" +import "../../tools/fq/fq.wdl" import "./dnaseq-core.wdl" as dnaseq_core_wf import "./dnaseq-standard.wdl" as dnaseq_standard diff --git a/workflows/dnaseq/dnaseq-standard.wdl b/workflows/dnaseq/dnaseq-standard.wdl index f0a481509..1467b38e8 100644 --- a/workflows/dnaseq/dnaseq-standard.wdl +++ b/workflows/dnaseq/dnaseq-standard.wdl @@ -3,8 +3,8 @@ version 1.1 import "../../data_structures/read_group.wdl" import "../../tools/picard.wdl" -import "../../tools/samtools.wdl" -import "../general/bam-to-fastqs.wdl" as bam_to_fastqs_wf +import "../../tools/samtools/samtools.wdl" +import "../general/bam-to-fastqs/bam-to-fastqs.wdl" as bam_to_fastqs_wf import "./dnaseq-core.wdl" as dnaseq_core_wf workflow dnaseq_standard_experimental { diff --git a/workflows/general/alignment-post.wdl b/workflows/general/alignment-post.wdl index 618871b9d..177863259 100644 --- a/workflows/general/alignment-post.wdl +++ b/workflows/general/alignment-post.wdl @@ -2,7 +2,7 @@ version 1.1 import "../../tools/md5sum.wdl" import "../../tools/picard.wdl" -import "../../tools/samtools.wdl" +import "../../tools/samtools/samtools.wdl" import "https://raw.githubusercontent.com/stjude/XenoCP/4.0.0-alpha/wdl/workflows/xenocp.wdl" as xenocp_wf diff --git a/workflows/general/bam-to-fastqs.wdl b/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl similarity index 100% rename from workflows/general/bam-to-fastqs.wdl rename to workflows/general/bam-to-fastqs/bam-to-fastqs.wdl diff --git a/workflows/general/bam-to-fastqs/module.json b/workflows/general/bam-to-fastqs/module.json new file mode 100644 index 000000000..23da563d8 --- /dev/null +++ b/workflows/general/bam-to-fastqs/module.json @@ -0,0 +1,30 @@ +{ + "name": "bam-to-fastqs", + "version": "1.0.0", + "license": "MIT", + "authors": [ + { + "name": "Ari Frantz", + "email": "Ari.Frantz@STJUDE.ORG" + }, + { + "name": "Andrew Thrasher", + "email": "Andrew.Thrasher@STJUDE.ORG" + } + ], + "description": "Convert BAM files to FASTQ(s) with Samtools", + "repository": "https://github.com/stjudecloud/workflows", + "entrypoint": "bam-to-fastqs.wdl", + "dependencies": { + "fq": { + "git": "https://github.com/stjudecloud/workflows", + "branch": "main", + "path": "tools/fq" + }, + "samtools": { + "git": "https://github.com/stjudecloud/workflows", + "branch": "main", + "path": "tools/samtools" + } + } +} \ No newline at end of file diff --git a/workflows/general/samtools-merge.wdl b/workflows/general/samtools-merge.wdl index de9053218..333331ab4 100644 --- a/workflows/general/samtools-merge.wdl +++ b/workflows/general/samtools-merge.wdl @@ -1,7 +1,7 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! version 1.1 -import "../../tools/samtools.wdl" +import "../../tools/samtools/samtools.wdl" workflow samtools_merge { meta { diff --git a/workflows/qc/markdups-post.wdl b/workflows/qc/markdups-post.wdl index 2e0420fa5..acf78dea6 100644 --- a/workflows/qc/markdups-post.wdl +++ b/workflows/qc/markdups-post.wdl @@ -9,7 +9,7 @@ version 1.1 import "../../tools/mosdepth.wdl" import "../../tools/picard.wdl" -import "../../tools/samtools.wdl" +import "../../tools/samtools/samtools.wdl" workflow markdups_post { meta { diff --git a/workflows/qc/quality-check-standard.wdl b/workflows/qc/quality-check-standard.wdl index 8d80458c1..83d1a0851 100644 --- a/workflows/qc/quality-check-standard.wdl +++ b/workflows/qc/quality-check-standard.wdl @@ -2,7 +2,7 @@ version 1.1 import "../../data_structures/flag_filter.wdl" import "../../tools/fastp.wdl" as fp -import "../../tools/fq.wdl" +import "../../tools/fq/fq.wdl" import "../../tools/kraken2.wdl" import "../../tools/librarian.wdl" as libraran_tasks import "../../tools/md5sum.wdl" @@ -11,7 +11,7 @@ import "../../tools/multiqc.wdl" as multiqc_tasks import "../../tools/ngsderive.wdl" import "../../tools/picard.wdl" import "../../tools/qualimap.wdl" -import "../../tools/samtools.wdl" +import "../../tools/samtools/samtools.wdl" import "../../tools/util.wdl" import "./markdups-post.wdl" as markdups_post_wf diff --git a/workflows/reference/gatk-reference.wdl b/workflows/reference/gatk-reference.wdl index 2cf2e4087..2feabec32 100644 --- a/workflows/reference/gatk-reference.wdl +++ b/workflows/reference/gatk-reference.wdl @@ -1,7 +1,7 @@ version 1.1 import "../../tools/picard.wdl" -import "../../tools/samtools.wdl" +import "../../tools/samtools/samtools.wdl" import "../../tools/util.wdl" workflow gatk_reference { diff --git a/workflows/rnaseq/rnaseq-standard-fastq.wdl b/workflows/rnaseq/rnaseq-standard-fastq.wdl index 29ff3bfc6..16bcc11d8 100644 --- a/workflows/rnaseq/rnaseq-standard-fastq.wdl +++ b/workflows/rnaseq/rnaseq-standard-fastq.wdl @@ -1,7 +1,7 @@ version 1.1 import "../../data_structures/read_group.wdl" -import "../../tools/fq.wdl" +import "../../tools/fq/fq.wdl" import "./rnaseq-core.wdl" as rnaseq_core_wf import "./rnaseq-standard.wdl" as rnaseq_standard diff --git a/workflows/rnaseq/rnaseq-standard.wdl b/workflows/rnaseq/rnaseq-standard.wdl index ae5c53641..e388134bd 100755 --- a/workflows/rnaseq/rnaseq-standard.wdl +++ b/workflows/rnaseq/rnaseq-standard.wdl @@ -2,8 +2,8 @@ version 1.1 import "../../data_structures/read_group.wdl" import "../../tools/picard.wdl" -import "../../tools/samtools.wdl" -import "../general/bam-to-fastqs.wdl" as bam_to_fastqs_wf +import "../../tools/samtools/samtools.wdl" +import "../general/bam-to-fastqs/bam-to-fastqs.wdl" as bam_to_fastqs_wf import "./rnaseq-core.wdl" as rnaseq_core_wf workflow rnaseq_standard { From 3efae8eb1de1343febdac4838e005bcfea82de07 Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Fri, 29 May 2026 09:52:57 -0400 Subject: [PATCH 02/10] chore: update imports --- workflows/general/bam-to-fastqs/bam-to-fastqs.wdl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl b/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl index e5bcbedc9..0c972a15b 100644 --- a/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl +++ b/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl @@ -1,7 +1,7 @@ version 1.1 -import "../../tools/fq.wdl" -import "../../tools/samtools.wdl" +import "../../tools/fq/fq.wdl" +import "../../tools/samtools/samtools.wdl" workflow bam_to_fastqs { meta { From d4f8a55de882050a755e96b96add66217a00a6e3 Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Fri, 29 May 2026 09:57:30 -0400 Subject: [PATCH 03/10] refactor: arriba with default entrypoint --- tools/{arriba.wdl => arriba/index.wdl} | 0 tools/arriba/module.json | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+) rename tools/{arriba.wdl => arriba/index.wdl} (100%) create mode 100644 tools/arriba/module.json diff --git a/tools/arriba.wdl b/tools/arriba/index.wdl similarity index 100% rename from tools/arriba.wdl rename to tools/arriba/index.wdl diff --git a/tools/arriba/module.json b/tools/arriba/module.json new file mode 100644 index 000000000..3bd3b4827 --- /dev/null +++ b/tools/arriba/module.json @@ -0,0 +1,25 @@ +{ + "name": "arriba", + "version": "1.0.0", + "license": "MIT", + "authors": [ + { + "name": "Ari Frantz", + "email": "Ari.Frantz@STJUDE.ORG" + }, + { + "name": "Andrew Thrasher", + "email": "Andrew.Thrasher@STJUDE.ORG" + } + ], + "description": "Module for gene fusion detection in RNA-Seq", + "repository": "https://github.com/stjudecloud/workflows", + "tools": [ + { + "name": "arriba", + "version": "2.4.0", + "license": "MIT", + "homepage": "https://github.com/suhrig/arriba" + } + ] +} \ No newline at end of file From b67bf1daf6db1ffa557e43b7b24e47d2c2a7f73d Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Fri, 29 May 2026 12:39:40 -0400 Subject: [PATCH 04/10] refactor: combine DNAseq workflows into a single module --- tools/{ => alignment}/bwa.wdl | 0 tools/{ => alignment}/star.wdl | 0 workflows/dnaseq/module.json | 25 +++++++++++++++++++ .../general/bam-to-fastqs/bam-to-fastqs.wdl | 4 +-- 4 files changed, 27 insertions(+), 2 deletions(-) rename tools/{ => alignment}/bwa.wdl (100%) rename tools/{ => alignment}/star.wdl (100%) create mode 100644 workflows/dnaseq/module.json diff --git a/tools/bwa.wdl b/tools/alignment/bwa.wdl similarity index 100% rename from tools/bwa.wdl rename to tools/alignment/bwa.wdl diff --git a/tools/star.wdl b/tools/alignment/star.wdl similarity index 100% rename from tools/star.wdl rename to tools/alignment/star.wdl diff --git a/workflows/dnaseq/module.json b/workflows/dnaseq/module.json new file mode 100644 index 000000000..655be16de --- /dev/null +++ b/workflows/dnaseq/module.json @@ -0,0 +1,25 @@ +{ + "name": "dnaseq", + "version": "1.0.0", + "license": "MIT", + "authors": [ + { + "name": "Ari Frantz", + "email": "Ari.Frantz@STJUDE.ORG" + }, + { + "name": "Andrew Thrasher", + "email": "Andrew.Thrasher@STJUDE.ORG" + } + ], + "description": "DNAseq analysis workflow", + "repository": "https://github.com/stjudecloud/workflows", + "dependencies": { + "fastq": { + "path": "./dnaseq-standard-fastq.wdl" + }, + "bam": { + "path": "./dnaseq-standard.wdl" + } + } +} \ No newline at end of file diff --git a/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl b/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl index 0c972a15b..a1637bc21 100644 --- a/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl +++ b/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl @@ -1,7 +1,7 @@ version 1.1 -import "../../tools/fq/fq.wdl" -import "../../tools/samtools/samtools.wdl" +import "../../../tools/fq/fq.wdl" +import "../../../tools/samtools/samtools.wdl" workflow bam_to_fastqs { meta { From 35e791eb8af375f250803df43df0e12ab8348986 Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Mon, 1 Jun 2026 11:04:58 -0400 Subject: [PATCH 05/10] chore: add missing module.json --- tools/alignment/module.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tools/alignment/module.json diff --git a/tools/alignment/module.json b/tools/alignment/module.json new file mode 100644 index 000000000..6c450494a --- /dev/null +++ b/tools/alignment/module.json @@ -0,0 +1,31 @@ +{ + "name": "alignment", + "version": "1.0.0", + "license": "MIT", + "authors": [ + { + "name": "Ari Frantz", + "email": "Ari.Frantz@STJUDE.ORG" + }, + { + "name": "Andrew Thrasher", + "email": "Andrew.Thrasher@STJUDE.ORG" + } + ], + "description": "Module for handling SAM/BAM files", + "repository": "https://github.com/stjudecloud/workflows", + "tools": [ + { + "name": "bwa", + "version": "0.7.17", + "license": "MIT", + "homepage": "https://github.com/lh3/bwa" + }, + { + "name": "star", + "version": "2.7.11b", + "license": "MIT", + "homepage": "https://github.com/alexdobin/STAR" + } + ] +} \ No newline at end of file From 9578dc653da2b7f1c3c19f0069a4de180bd10e07 Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Tue, 2 Jun 2026 11:27:01 -0400 Subject: [PATCH 06/10] chore: move tests and fix imports --- tools/{ => fq}/test/fq.yaml | 0 tools/samtools/samtools.wdl | 2 +- tools/{ => samtools}/test/samtools.yaml | 0 workflows/dnaseq/dnaseq-core.wdl | 2 +- workflows/reference/bwa-db-build.wdl | 2 +- workflows/reference/star-db-build.wdl | 2 +- workflows/rnaseq/rnaseq-core.wdl | 2 +- 7 files changed, 5 insertions(+), 5 deletions(-) rename tools/{ => fq}/test/fq.yaml (100%) rename tools/{ => samtools}/test/samtools.yaml (100%) diff --git a/tools/test/fq.yaml b/tools/fq/test/fq.yaml similarity index 100% rename from tools/test/fq.yaml rename to tools/fq/test/fq.yaml diff --git a/tools/samtools/samtools.wdl b/tools/samtools/samtools.wdl index ace383ece..5782c1001 100755 --- a/tools/samtools/samtools.wdl +++ b/tools/samtools/samtools.wdl @@ -1,7 +1,7 @@ ## [Homepage](http://samtools.sourceforge.net/) version 1.1 -import "../data_structures/flag_filter.wdl" +import "../../data_structures/flag_filter.wdl" task quickcheck { meta { diff --git a/tools/test/samtools.yaml b/tools/samtools/test/samtools.yaml similarity index 100% rename from tools/test/samtools.yaml rename to tools/samtools/test/samtools.yaml diff --git a/workflows/dnaseq/dnaseq-core.wdl b/workflows/dnaseq/dnaseq-core.wdl index bff1546de..42c887fe9 100644 --- a/workflows/dnaseq/dnaseq-core.wdl +++ b/workflows/dnaseq/dnaseq-core.wdl @@ -1,7 +1,7 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! version 1.1 -import "../../tools/bwa.wdl" +import "../../tools/alignment/bwa.wdl" import "../../tools/fastp.wdl" as fp import "../../tools/picard.wdl" import "../../tools/samtools/samtools.wdl" diff --git a/workflows/reference/bwa-db-build.wdl b/workflows/reference/bwa-db-build.wdl index 579385f1c..e3362ac3c 100644 --- a/workflows/reference/bwa-db-build.wdl +++ b/workflows/reference/bwa-db-build.wdl @@ -1,6 +1,6 @@ version 1.1 -import "../../tools/bwa.wdl" +import "../../tools/alignment/bwa.wdl" import "../../tools/util.wdl" workflow bwa_db_build { diff --git a/workflows/reference/star-db-build.wdl b/workflows/reference/star-db-build.wdl index d2d14b2a1..c62a7532a 100644 --- a/workflows/reference/star-db-build.wdl +++ b/workflows/reference/star-db-build.wdl @@ -1,6 +1,6 @@ version 1.1 -import "../../tools/star.wdl" +import "../../tools/alignment/star.wdl" import "../../tools/util.wdl" workflow star_db_build { diff --git a/workflows/rnaseq/rnaseq-core.wdl b/workflows/rnaseq/rnaseq-core.wdl index 5dbf385f5..1e081f432 100644 --- a/workflows/rnaseq/rnaseq-core.wdl +++ b/workflows/rnaseq/rnaseq-core.wdl @@ -4,7 +4,7 @@ import "../../tools/deeptools.wdl" import "../../tools/fastp.wdl" as fp import "../../tools/htseq.wdl" import "../../tools/ngsderive.wdl" -import "../../tools/star.wdl" +import "../../tools/alignment/star.wdl" import "../../tools/util.wdl" import "../general/alignment-post.wdl" as alignment_post_wf From edf92da04013155772c546d3b8068436938f56d9 Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Mon, 13 Jul 2026 13:19:53 -0400 Subject: [PATCH 07/10] chore: updating module jsons --- .../{ => flag_filter}/flag_filter.wdl | 0 data_structures/flag_filter/module.json | 11 +++++ tools/arriba/module.json | 42 ++++++++----------- tools/fq/module.json | 12 ++---- tools/samtools/module.json | 19 ++++----- tools/samtools/samtools.wdl | 3 +- workflows/dnaseq/module.json | 20 ++++----- 7 files changed, 50 insertions(+), 57 deletions(-) rename data_structures/{ => flag_filter}/flag_filter.wdl (100%) create mode 100644 data_structures/flag_filter/module.json diff --git a/data_structures/flag_filter.wdl b/data_structures/flag_filter/flag_filter.wdl similarity index 100% rename from data_structures/flag_filter.wdl rename to data_structures/flag_filter/flag_filter.wdl diff --git a/data_structures/flag_filter/module.json b/data_structures/flag_filter/module.json new file mode 100644 index 000000000..4ee5db210 --- /dev/null +++ b/data_structures/flag_filter/module.json @@ -0,0 +1,11 @@ +{ + "name": "flag_filter", + "version": "1.0.0", + "license": "MIT", + "description": "The `flag_filter` WDL module.", + "authors": [ + "Ari Frantz " + ], + "entrypoint": "flag_filter.wdl", + "repository": "https://github.com/stjudecloud/workflows.git" +} diff --git a/tools/arriba/module.json b/tools/arriba/module.json index 3bd3b4827..3f1b6360c 100644 --- a/tools/arriba/module.json +++ b/tools/arriba/module.json @@ -1,25 +1,19 @@ { - "name": "arriba", - "version": "1.0.0", - "license": "MIT", - "authors": [ - { - "name": "Ari Frantz", - "email": "Ari.Frantz@STJUDE.ORG" - }, - { - "name": "Andrew Thrasher", - "email": "Andrew.Thrasher@STJUDE.ORG" - } - ], - "description": "Module for gene fusion detection in RNA-Seq", - "repository": "https://github.com/stjudecloud/workflows", - "tools": [ - { - "name": "arriba", - "version": "2.4.0", - "license": "MIT", - "homepage": "https://github.com/suhrig/arriba" - } - ] -} \ No newline at end of file + "name": "arriba", + "version": "1.0.0", + "license": "MIT", + "description": "Module for gene fusion detection in RNA-Seq", + "authors": [ + "Andrew Thrasher ", + "Ari Frantzz " + ], + "repository": "https://github.com/stjudecloud/workflows.git", + "tools": [ + { + "name": "arriba", + "version": "2.4.0", + "license": "MIT", + "homepage": "https://github.com/suhrig/arriba" + } + ] +} diff --git a/tools/fq/module.json b/tools/fq/module.json index a4c5947d9..c2ebd99dc 100644 --- a/tools/fq/module.json +++ b/tools/fq/module.json @@ -3,14 +3,8 @@ "version": "1.0.0", "license": "MIT", "authors": [ - { - "name": "Ari Frantz", - "email": "Ari.Frantz@STJUDE.ORG" - }, - { - "name": "Andrew Thrasher", - "email": "Andrew.Thrasher@STJUDE.ORG" - } + "Ari Frantz ", + "Andrew Thrasher " ], "description": "Module for handling FASTQ files", "repository": "https://github.com/stjudecloud/workflows", @@ -23,4 +17,4 @@ "homepage": "https://github.com/stjude-rust-labs/fq" } ] -} \ No newline at end of file +} diff --git a/tools/samtools/module.json b/tools/samtools/module.json index 2c6aba532..84b71be96 100644 --- a/tools/samtools/module.json +++ b/tools/samtools/module.json @@ -3,14 +3,8 @@ "version": "1.0.0", "license": "MIT", "authors": [ - { - "name": "Ari Frantz", - "email": "Ari.Frantz@STJUDE.ORG" - }, - { - "name": "Andrew Thrasher", - "email": "Andrew.Thrasher@STJUDE.ORG" - } + "Ari Frantz ", + "Andrew Thrasher " ], "description": "Module for handling SAM/BAM files", "repository": "https://github.com/stjudecloud/workflows", @@ -22,5 +16,10 @@ "license": "MIT", "homepage": "https://www.htslib.org/" } - ] -} \ No newline at end of file + ], + "dependencies": { + "flag_filter": { + "path": "../../data_structures/flag_filter" + } + } +} diff --git a/tools/samtools/samtools.wdl b/tools/samtools/samtools.wdl index 5782c1001..7622b0768 100755 --- a/tools/samtools/samtools.wdl +++ b/tools/samtools/samtools.wdl @@ -1,7 +1,8 @@ ## [Homepage](http://samtools.sourceforge.net/) version 1.1 -import "../../data_structures/flag_filter.wdl" +#import "../../data_structures/flag_filter.wdl" +import * from samtools task quickcheck { meta { diff --git a/workflows/dnaseq/module.json b/workflows/dnaseq/module.json index 655be16de..aa7ac667b 100644 --- a/workflows/dnaseq/module.json +++ b/workflows/dnaseq/module.json @@ -3,23 +3,17 @@ "version": "1.0.0", "license": "MIT", "authors": [ - { - "name": "Ari Frantz", - "email": "Ari.Frantz@STJUDE.ORG" - }, - { - "name": "Andrew Thrasher", - "email": "Andrew.Thrasher@STJUDE.ORG" - } + "Ari Frantz ", + "Andrew Thrasher " ], "description": "DNAseq analysis workflow", "repository": "https://github.com/stjudecloud/workflows", "dependencies": { - "fastq": { - "path": "./dnaseq-standard-fastq.wdl" + "samtools": { + "path": "../../tools/samtools" }, - "bam": { - "path": "./dnaseq-standard.wdl" + "fq": { + "path": "../../tools/fq" } } -} \ No newline at end of file +} From 17cb8545f0bcdbd8742d297c85e5ab2643a36e57 Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Mon, 13 Jul 2026 14:39:34 -0400 Subject: [PATCH 08/10] chore: cleanup from sprocket validation --- tools/samtools/samtools.wdl | 4 ++-- workflows/dnaseq/dnaseq-core.wdl | 6 +++--- workflows/dnaseq/dnaseq-standard-fastq.wdl | 8 ++++---- workflows/dnaseq/dnaseq-standard.wdl | 6 +++--- workflows/general/bam-to-fastqs/bam-to-fastqs.wdl | 2 +- workflows/general/samtools-merge.wdl | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tools/samtools/samtools.wdl b/tools/samtools/samtools.wdl index 7622b0768..d8ca94acc 100755 --- a/tools/samtools/samtools.wdl +++ b/tools/samtools/samtools.wdl @@ -1,8 +1,8 @@ ## [Homepage](http://samtools.sourceforge.net/) -version 1.1 +version 1.4 #import "../../data_structures/flag_filter.wdl" -import * from samtools +import * from flag_filter task quickcheck { meta { diff --git a/workflows/dnaseq/dnaseq-core.wdl b/workflows/dnaseq/dnaseq-core.wdl index 42c887fe9..f30a7164a 100644 --- a/workflows/dnaseq/dnaseq-core.wdl +++ b/workflows/dnaseq/dnaseq-core.wdl @@ -1,10 +1,10 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! -version 1.1 +version 1.4 import "../../tools/alignment/bwa.wdl" import "../../tools/fastp.wdl" as fp import "../../tools/picard.wdl" -import "../../tools/samtools/samtools.wdl" +import {index} from samtools import "../../tools/util.wdl" import "../general/samtools-merge.wdl" as samtools_merge_wf @@ -138,7 +138,7 @@ workflow dnaseq_core_experimental { use_all_cores, } - call samtools.index { input: + call index { input: bam = merge.merged_bam, } diff --git a/workflows/dnaseq/dnaseq-standard-fastq.wdl b/workflows/dnaseq/dnaseq-standard-fastq.wdl index 6b346ca80..4dbc098bc 100644 --- a/workflows/dnaseq/dnaseq-standard-fastq.wdl +++ b/workflows/dnaseq/dnaseq-standard-fastq.wdl @@ -1,8 +1,8 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! -version 1.1 +version 1.4 import "../../data_structures/read_group.wdl" -import "../../tools/fq/fq.wdl" +import {fqlint, subsample} from fq import "./dnaseq-core.wdl" as dnaseq_core_wf import "./dnaseq-standard.wdl" as dnaseq_standard @@ -77,7 +77,7 @@ workflow dnaseq_standard_fastq_experimental { if (validate_input) { scatter (reads in zip(read_one_fastqs_gz, read_two_fastqs_gz)) { - call fq.fqlint after read_group_to_string { input: + call fqlint after read_group_to_string { input: read_one_fastq = reads.left, read_two_fastq = reads.right, } @@ -87,7 +87,7 @@ workflow dnaseq_standard_fastq_experimental { if (subsample_n_reads > 0) { Int reads_per_pair = ceil(subsample_n_reads / length(read_one_fastqs_gz)) scatter (reads in zip(read_one_fastqs_gz, read_two_fastqs_gz)) { - call fq.subsample after fqlint { input: + call subsample after fqlint { input: read_one_fastq = reads.left, read_two_fastq = reads.right, record_count = reads_per_pair, diff --git a/workflows/dnaseq/dnaseq-standard.wdl b/workflows/dnaseq/dnaseq-standard.wdl index 1467b38e8..6628e96b0 100644 --- a/workflows/dnaseq/dnaseq-standard.wdl +++ b/workflows/dnaseq/dnaseq-standard.wdl @@ -1,9 +1,9 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! -version 1.1 +version 1.4 import "../../data_structures/read_group.wdl" import "../../tools/picard.wdl" -import "../../tools/samtools/samtools.wdl" +import {subsample} from samtools import "../general/bam-to-fastqs/bam-to-fastqs.wdl" as bam_to_fastqs_wf import "./dnaseq-core.wdl" as dnaseq_core_wf @@ -64,7 +64,7 @@ workflow dnaseq_standard_experimental { } if (subsample_n_reads > 0) { - call samtools.subsample after validate_input_bam { input: + call subsample after validate_input_bam { input: bam, desired_reads = subsample_n_reads, use_all_cores, diff --git a/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl b/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl index a1637bc21..0ca863c4e 100644 --- a/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl +++ b/workflows/general/bam-to-fastqs/bam-to-fastqs.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.4 import "../../../tools/fq/fq.wdl" import "../../../tools/samtools/samtools.wdl" diff --git a/workflows/general/samtools-merge.wdl b/workflows/general/samtools-merge.wdl index 333331ab4..a2993df20 100644 --- a/workflows/general/samtools-merge.wdl +++ b/workflows/general/samtools-merge.wdl @@ -1,5 +1,5 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! -version 1.1 +version 1.4 import "../../tools/samtools/samtools.wdl" From aaff20887a06ec5df9ea2650ad458f09fd091de9 Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Mon, 13 Jul 2026 17:13:59 -0400 Subject: [PATCH 09/10] chore: add exclude --- workflows/dnaseq/module.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/workflows/dnaseq/module.json b/workflows/dnaseq/module.json index aa7ac667b..2e04c527c 100644 --- a/workflows/dnaseq/module.json +++ b/workflows/dnaseq/module.json @@ -15,5 +15,8 @@ "fq": { "path": "../../tools/fq" } - } + }, + "exclude": [ + "dnaseq-core.wdl" + ] } From dbc8a7e8baaa98fd3869313c6e924ad1e7aa6e81 Mon Sep 17 00:00:00 2001 From: Andrew Thrasher Date: Tue, 14 Jul 2026 12:43:54 -0400 Subject: [PATCH 10/10] feat: mako implementation --- docker/mako/Dockerfile | 3 ++ docker/mako/package.json | 5 +++ tools/mako.wdl | 69 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 docker/mako/Dockerfile create mode 100644 docker/mako/package.json create mode 100644 tools/mako.wdl diff --git a/docker/mako/Dockerfile b/docker/mako/Dockerfile new file mode 100644 index 000000000..19bc0c5b2 --- /dev/null +++ b/docker/mako/Dockerfile @@ -0,0 +1,3 @@ +FROM rust:1.97 + +RUN cargo install fg-mako@0.1.3 diff --git a/docker/mako/package.json b/docker/mako/package.json new file mode 100644 index 000000000..578e02e7d --- /dev/null +++ b/docker/mako/package.json @@ -0,0 +1,5 @@ +{ + "name": "mako", + "version": "0.1.3", + "revision": "0" +} \ No newline at end of file diff --git a/tools/mako.wdl b/tools/mako.wdl new file mode 100644 index 000000000..11966a748 --- /dev/null +++ b/tools/mako.wdl @@ -0,0 +1,69 @@ +version 1.4 + +enum SortOrder[String] { + queryname = "queryname", + coordinate = "coordinate", + queryname_natural = "queryname::natural", + template_coordinate = "template-coordinate", +} + +task sort { + meta { + description: "Sorts the input BAM file" + outputs: { + sorted_bam: "The input BAM after it has been sorted according to `sort_order`", + } + } + + parameter_meta { + bam: "Input BAM format file to sort" + sort_order: { + description: "Order by which to sort the input BAM", + choices: [ + "queryname", + "coordinate", + "queryname::natural", + "template-coordinate", + ], + group: "Common", + } + prefix: "Prefix for the sorted BAM file and accessory files. The extension `.bam` will be added." + verify: "Only verify sort order. Does not sort the BAM file." + memory_gb: "RAM to allocate for task, specified in GB" + modify_disk_size_gb: "Add to or subtract from dynamic disk space allocation. Default disk size is determined by the size of the inputs. Specified in GB." + } + + input { + File bam + String sort_order = "coordinate" + String prefix = basename(bam, ".bam") + ".sorted" + Boolean verify = false + Int memory_gb = 25 + Int modify_disk_size_gb = 0 + } + + Float bam_size = size(bam, "GB") + Int disk_size_gb = ceil(bam_size * 4) + 10 + modify_disk_size_gb + + String outfile_name = prefix + ".bam" + + command <<< + set -euo pipefail + + mako sort \ + -i "~{bam}" \ + ~{if verify then "--verify" else "-o \"~{outfile_name}\""} \ + --order "~{sort_order}" + >>> + + output { + File sorted_bam = outfile_name + } + + requirements { + memory: "~{memory_gb} GB" + disks: "~{disk_size_gb} GB" + container: "ghcr.io/stjudecloud/mako:0.1.3-0" + maxRetries: 1 + } +} \ No newline at end of file