From 2829d515336a3a96300b11f1ad32020506a9a3ba Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:21:26 -0500 Subject: [PATCH 01/40] refactor: Move HAPLINK_VARIANTS module to its own folder --- main.nf | 24 +----------------------- modules/haplink/variants/main.nf | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 23 deletions(-) create mode 100644 modules/haplink/variants/main.nf diff --git a/main.nf b/main.nf index 58335df..69acadb 100755 --- a/main.nf +++ b/main.nf @@ -1,5 +1,6 @@ #!/usr/bin/env nextflow +include { HAPLINK_VARIANTS } from './modules/haplink/variants' include { VIQUAS } from './modules/viquas' workflow { @@ -195,29 +196,6 @@ process SHORAH_SHOTGUN { """ } -process HAPLINK_VARIANTS { - cpus 2 - memory '12.GB' - - input: - tuple val(prefix), path(bam), path(bai) - path reference - - output: - tuple val(prefix), path("*.vcf") - - publishDir "results", mode: 'copy' - - script: - """ - export JULIA_NUM_THREADS=${task.cpus} - haplink variants \\ - "${reference}" \\ - "${bam}" \\ - > "${prefix}.vcf" - """ -} - process HAPLINK_RAW_HAPLOTYPES { cpus 2 memory '12.GB' diff --git a/modules/haplink/variants/main.nf b/modules/haplink/variants/main.nf new file mode 100644 index 0000000..8e2c48f --- /dev/null +++ b/modules/haplink/variants/main.nf @@ -0,0 +1,22 @@ +process HAPLINK_VARIANTS { + cpus 2 + memory '12.GB' + + input: + tuple val(prefix), path(bam), path(bai) + path reference + + output: + tuple val(prefix), path("*.vcf") + + publishDir "results", mode: 'copy' + + script: + """ + export JULIA_NUM_THREADS=${task.cpus} + haplink variants \\ + "${reference}" \\ + "${bam}" \\ + > "${prefix}.vcf" + """ +} From a223b8746486b3e4e7b8091d17085b478d3780df Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:22:13 -0500 Subject: [PATCH 02/40] feat: Add tag directive to HAPLINK_VARIANTS module --- modules/haplink/variants/main.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/haplink/variants/main.nf b/modules/haplink/variants/main.nf index 8e2c48f..4106c78 100644 --- a/modules/haplink/variants/main.nf +++ b/modules/haplink/variants/main.nf @@ -1,4 +1,5 @@ process HAPLINK_VARIANTS { + tag "${prefix}" cpus 2 memory '12.GB' From cc433aaffe77e72d6d49bea9b7ce39d935c10f6e Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:23:45 -0500 Subject: [PATCH 03/40] feat: Add container directive to HAPLINK_VARIANTS --- modules/haplink/variants/main.nf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/haplink/variants/main.nf b/modules/haplink/variants/main.nf index 4106c78..324be8f 100644 --- a/modules/haplink/variants/main.nf +++ b/modules/haplink/variants/main.nf @@ -3,6 +3,8 @@ process HAPLINK_VARIANTS { cpus 2 memory '12.GB' + container 'quay.io/biocontainers/haplink:1.0.0--h031d066_0' + input: tuple val(prefix), path(bam), path(bai) path reference From 2c755dcd4f88524af2a20c83bd793e37bb1f14e2 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:27:05 -0500 Subject: [PATCH 04/40] refactor: Replace hard-coded performance directives with process label --- modules/haplink/variants/main.nf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/haplink/variants/main.nf b/modules/haplink/variants/main.nf index 324be8f..9f036de 100644 --- a/modules/haplink/variants/main.nf +++ b/modules/haplink/variants/main.nf @@ -1,7 +1,6 @@ process HAPLINK_VARIANTS { tag "${prefix}" - cpus 2 - memory '12.GB' + label 'process_medium' container 'quay.io/biocontainers/haplink:1.0.0--h031d066_0' From 18875ae1a63de8d09d8ca9db7669a38417ced0f9 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:34:27 -0500 Subject: [PATCH 05/40] refactor: Move EFETCH module to its own file --- main.nf | 22 +--------------------- modules/efetch/main.nf | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 modules/efetch/main.nf diff --git a/main.nf b/main.nf index 69acadb..3d4bf6a 100755 --- a/main.nf +++ b/main.nf @@ -1,5 +1,6 @@ #!/usr/bin/env nextflow +include { EFETCH } from './modules/efetch' include { HAPLINK_VARIANTS } from './modules/haplink/variants' include { VIQUAS } from './modules/viquas' @@ -68,27 +69,6 @@ workflow { ) } -process EFETCH { - cpus 1 - memory '256.MB' - container 'quay.io/biocontainers/entrez-direct:16.2--he881be0_1' - - publishDir "results", mode: 'copy' - - output: - path 'idv4.fasta' - - script: - """ - esearch \\ - -db nucleotide \\ - -query "NC_036618.1" \\ - | efetch \\ - -format fasta \\ - > idv4.fasta - """ -} - process NANOFILT { cpus 1 memory '8.GB' diff --git a/modules/efetch/main.nf b/modules/efetch/main.nf new file mode 100644 index 0000000..00ec585 --- /dev/null +++ b/modules/efetch/main.nf @@ -0,0 +1,20 @@ +process EFETCH { + cpus 1 + memory '256.MB' + container 'quay.io/biocontainers/entrez-direct:16.2--he881be0_1' + + publishDir "results", mode: 'copy' + + output: + path 'idv4.fasta' + + script: + """ + esearch \\ + -db nucleotide \\ + -query "NC_036618.1" \\ + | efetch \\ + -format fasta \\ + > idv4.fasta + """ +} From 7a3744a3d36796f7d90833d143ac51935d88ca34 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:36:01 -0500 Subject: [PATCH 06/40] refactor: Replace EFETCH performance directives with process label --- modules/efetch/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/efetch/main.nf b/modules/efetch/main.nf index 00ec585..2041d45 100644 --- a/modules/efetch/main.nf +++ b/modules/efetch/main.nf @@ -1,6 +1,6 @@ process EFETCH { - cpus 1 - memory '256.MB' + label 'process_single' + container 'quay.io/biocontainers/entrez-direct:16.2--he881be0_1' publishDir "results", mode: 'copy' From b1ee784daca2f5a722a85f27d15ebd5c2e642ec9 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:38:55 -0500 Subject: [PATCH 07/40] refactor: Make reference genome an input for EFETCH --- main.nf | 2 +- modules/efetch/main.nf | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/main.nf b/main.nf index 3d4bf6a..54ff5e4 100755 --- a/main.nf +++ b/main.nf @@ -11,7 +11,7 @@ workflow { .map { file -> tuple(file.simpleName, file) } .set { ch_input } - EFETCH() + EFETCH('NC_036618.1') EFETCH .out .set { ch_reference } diff --git a/modules/efetch/main.nf b/modules/efetch/main.nf index 2041d45..66272fd 100644 --- a/modules/efetch/main.nf +++ b/modules/efetch/main.nf @@ -3,6 +3,9 @@ process EFETCH { container 'quay.io/biocontainers/entrez-direct:16.2--he881be0_1' + input: + val(genome) + publishDir "results", mode: 'copy' output: @@ -12,7 +15,7 @@ process EFETCH { """ esearch \\ -db nucleotide \\ - -query "NC_036618.1" \\ + -query "${genome}" \\ | efetch \\ -format fasta \\ > idv4.fasta From ec4414184b442c354968e2b11d55d128270a43e1 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:39:21 -0500 Subject: [PATCH 08/40] refactor: Change output file name of EFETCH --- modules/efetch/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/efetch/main.nf b/modules/efetch/main.nf index 66272fd..ed38458 100644 --- a/modules/efetch/main.nf +++ b/modules/efetch/main.nf @@ -9,7 +9,7 @@ process EFETCH { publishDir "results", mode: 'copy' output: - path 'idv4.fasta' + path 'reference.fasta' script: """ @@ -18,6 +18,6 @@ process EFETCH { -query "${genome}" \\ | efetch \\ -format fasta \\ - > idv4.fasta + > reference.fasta """ } From 0e822c2729434edbd8748f20855c20e413f97c64 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:43:10 -0500 Subject: [PATCH 09/40] feat: Add genome tag to EFETCH --- modules/efetch/main.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/efetch/main.nf b/modules/efetch/main.nf index ed38458..f3ce0b3 100644 --- a/modules/efetch/main.nf +++ b/modules/efetch/main.nf @@ -1,4 +1,5 @@ process EFETCH { + tag "${genome}" label 'process_single' container 'quay.io/biocontainers/entrez-direct:16.2--he881be0_1' From f157b0395e888199c2510f3318da1ca73826393c Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:44:08 -0500 Subject: [PATCH 10/40] refactor: Move NANOFILT module to its own file --- main.nf | 29 +---------------------------- modules/nanofilt/main.nf | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 28 deletions(-) create mode 100644 modules/nanofilt/main.nf diff --git a/main.nf b/main.nf index 54ff5e4..3d938fa 100755 --- a/main.nf +++ b/main.nf @@ -2,6 +2,7 @@ include { EFETCH } from './modules/efetch' include { HAPLINK_VARIANTS } from './modules/haplink/variants' +include { NANOFILT } form './modules/nanofilt' include { VIQUAS } from './modules/viquas' workflow { @@ -69,34 +70,6 @@ workflow { ) } -process NANOFILT { - cpus 1 - memory '8.GB' - container 'quay.io/biocontainers/nanofilt:2.8.0--py_0' - - input: - tuple val(prefix), path(reads) - - output: - tuple val(prefix), path("*_trimmed.fastq.gz") - - script: - """ - gzip \\ - -cdf "${reads}" \\ - | NanoFilt \\ - --logfile "trimmed/${prefix}.nanofilt.log" \\ - --length 100 \\ - --quality 7 \\ - --headcrop 30 \\ - --tailcrop 30 \\ - --minGC 0.1 \\ - --maxGC 0.9 \\ - | gzip \\ - > "${prefix}_trimmed.fastq.gz" - """ -} - process MINIMAP2 { cpus 4 memory '8.GB' diff --git a/modules/nanofilt/main.nf b/modules/nanofilt/main.nf new file mode 100644 index 0000000..0852f23 --- /dev/null +++ b/modules/nanofilt/main.nf @@ -0,0 +1,27 @@ +process NANOFILT { + cpus 1 + memory '8.GB' + container 'quay.io/biocontainers/nanofilt:2.8.0--py_0' + + input: + tuple val(prefix), path(reads) + + output: + tuple val(prefix), path("*_trimmed.fastq.gz") + + script: + """ + gzip \\ + -cdf "${reads}" \\ + | NanoFilt \\ + --logfile "trimmed/${prefix}.nanofilt.log" \\ + --length 100 \\ + --quality 7 \\ + --headcrop 30 \\ + --tailcrop 30 \\ + --minGC 0.1 \\ + --maxGC 0.9 \\ + | gzip \\ + > "${prefix}_trimmed.fastq.gz" + """ +} From 461a4b64a34ba79555d192624ed2035a802daf2c Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:44:40 -0500 Subject: [PATCH 11/40] feat: Add prefix tag to NANOFILT module --- modules/nanofilt/main.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/nanofilt/main.nf b/modules/nanofilt/main.nf index 0852f23..3343513 100644 --- a/modules/nanofilt/main.nf +++ b/modules/nanofilt/main.nf @@ -1,4 +1,5 @@ process NANOFILT { + tag "${prefix}" cpus 1 memory '8.GB' container 'quay.io/biocontainers/nanofilt:2.8.0--py_0' From d12a8b77d83bc038cce8b297bd016a1fbecf59af Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 15:45:34 -0500 Subject: [PATCH 12/40] refactor: Replace NANOFILT performance directives with process label --- modules/nanofilt/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nanofilt/main.nf b/modules/nanofilt/main.nf index 3343513..c6ec93f 100644 --- a/modules/nanofilt/main.nf +++ b/modules/nanofilt/main.nf @@ -1,7 +1,7 @@ process NANOFILT { tag "${prefix}" - cpus 1 - memory '8.GB' + label 'process_low' + container 'quay.io/biocontainers/nanofilt:2.8.0--py_0' input: From a9aa590f007574090208bc3b946276c88c94acc8 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:05:02 -0500 Subject: [PATCH 13/40] refactor: Move MINIMAP2 module to separate file --- main.nf | 34 +--------------------------------- modules/minimap2/main.nf | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 33 deletions(-) create mode 100644 modules/minimap2/main.nf diff --git a/main.nf b/main.nf index 3d938fa..b80f998 100755 --- a/main.nf +++ b/main.nf @@ -2,6 +2,7 @@ include { EFETCH } from './modules/efetch' include { HAPLINK_VARIANTS } from './modules/haplink/variants' +include { MINIMAP2 } from './modules/minimap2' include { NANOFILT } form './modules/nanofilt' include { VIQUAS } from './modules/viquas' @@ -70,39 +71,6 @@ workflow { ) } -process MINIMAP2 { - cpus 4 - memory '8.GB' - container 'quay.io/biocontainers/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' - - input: - tuple val(prefix), path(reads) - path reference - - publishDir "results", mode: 'copy' - - output: - tuple val(prefix), path("*.bam"), path("*.bam.bai") - script: - """ - minimap2 \\ - -x map-ont \\ - --MD \\ - --eqx \\ - -t ${task.cpus} \\ - -a \\ - "${reference}" \\ - "${reads}" \\ - | samtools sort \\ - | samtools view \\ - -@ ${task.cpus} \\ - -b \\ - -h \\ - -o "${prefix}.bam" - samtools index "${prefix}.bam" - """ -} - process SHORAH_AMPLICON { label 'process_high' container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' diff --git a/modules/minimap2/main.nf b/modules/minimap2/main.nf new file mode 100644 index 0000000..610028b --- /dev/null +++ b/modules/minimap2/main.nf @@ -0,0 +1,32 @@ +process MINIMAP2 { + cpus 4 + memory '8.GB' + container 'quay.io/biocontainers/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' + + input: + tuple val(prefix), path(reads) + path reference + + publishDir "results", mode: 'copy' + + output: + tuple val(prefix), path("*.bam"), path("*.bam.bai") + script: + """ + minimap2 \\ + -x map-ont \\ + --MD \\ + --eqx \\ + -t ${task.cpus} \\ + -a \\ + "${reference}" \\ + "${reads}" \\ + | samtools sort \\ + | samtools view \\ + -@ ${task.cpus} \\ + -b \\ + -h \\ + -o "${prefix}.bam" + samtools index "${prefix}.bam" + """ +} From b08d9df6a94150410c2c91708bee98d4e0749dd2 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:05:29 -0500 Subject: [PATCH 14/40] feat: Add prefix tag to MINIMAP2 --- modules/minimap2/main.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/minimap2/main.nf b/modules/minimap2/main.nf index 610028b..d0d82dc 100644 --- a/modules/minimap2/main.nf +++ b/modules/minimap2/main.nf @@ -1,4 +1,5 @@ process MINIMAP2 { + tag "${prefix}" cpus 4 memory '8.GB' container 'quay.io/biocontainers/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' From 89323bf2c656f48713f16ccaf34fd64dbdc5c3cb Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:06:12 -0500 Subject: [PATCH 15/40] refactor: Replace MINIMAP2 performance directives with process label --- modules/minimap2/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/minimap2/main.nf b/modules/minimap2/main.nf index d0d82dc..7d3c2aa 100644 --- a/modules/minimap2/main.nf +++ b/modules/minimap2/main.nf @@ -1,7 +1,7 @@ process MINIMAP2 { tag "${prefix}" - cpus 4 - memory '8.GB' + label 'process_medium' + container 'quay.io/biocontainers/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' input: From dbea6fb30a105b134a75874606b7a2cb4247cc5e Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:09:21 -0500 Subject: [PATCH 16/40] refactor: Move SHORAH_AMPLICON to its own file --- main.nf | 24 +----------------------- modules/shorah/amplicon/main.nf | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 23 deletions(-) create mode 100644 modules/shorah/amplicon/main.nf diff --git a/main.nf b/main.nf index b80f998..82a0fbf 100755 --- a/main.nf +++ b/main.nf @@ -4,6 +4,7 @@ include { EFETCH } from './modules/efetch' include { HAPLINK_VARIANTS } from './modules/haplink/variants' include { MINIMAP2 } from './modules/minimap2' include { NANOFILT } form './modules/nanofilt' +include { SHORAH_AMPLICON } from './modules/shorah/amplicon' include { VIQUAS } from './modules/viquas' workflow { @@ -71,29 +72,6 @@ workflow { ) } -process SHORAH_AMPLICON { - label 'process_high' - container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' - - input: - tuple val(prefix), path(bam) - path(reference) - - output: - tuple val(prefix), path("*.vcf") - tuple val(prefix), path("*support.fas") - - publishDir "results/shorah-amplicon", mode: 'copy' - - script: - """ - shorah amplicon \\ - -t ${task.cpus} \\ - -f ${reference} \\ - -b ${bam} \\ - """ -} - process SHORAH_SHOTGUN { label 'process_high' container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' diff --git a/modules/shorah/amplicon/main.nf b/modules/shorah/amplicon/main.nf new file mode 100644 index 0000000..c15cd43 --- /dev/null +++ b/modules/shorah/amplicon/main.nf @@ -0,0 +1,22 @@ +process SHORAH_AMPLICON { + label 'process_high' + container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' + + input: + tuple val(prefix), path(bam) + path(reference) + + output: + tuple val(prefix), path("*.vcf") + tuple val(prefix), path("*support.fas") + + publishDir "results/shorah-amplicon", mode: 'copy' + + script: + """ + shorah amplicon \\ + -t ${task.cpus} \\ + -f ${reference} \\ + -b ${bam} \\ + """ +} From f6111f27c20f66f7801d77ec778489617441a3c2 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:09:47 -0500 Subject: [PATCH 17/40] feat: Add prefix tag to SHORAH_AMPLICON --- modules/shorah/amplicon/main.nf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/shorah/amplicon/main.nf b/modules/shorah/amplicon/main.nf index c15cd43..5c68ca1 100644 --- a/modules/shorah/amplicon/main.nf +++ b/modules/shorah/amplicon/main.nf @@ -1,5 +1,7 @@ process SHORAH_AMPLICON { + tag "${prefix}" label 'process_high' + container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' input: From db0255c54ac7070c66c6836dc13c440bdf43a7ea Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:12:40 -0500 Subject: [PATCH 18/40] refactor: Move SHORAH_SHOTGUN to its own file --- main.nf | 24 +----------------------- modules/shorah/shotgun/main.nf | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 23 deletions(-) create mode 100644 modules/shorah/shotgun/main.nf diff --git a/main.nf b/main.nf index 82a0fbf..d6449ed 100755 --- a/main.nf +++ b/main.nf @@ -5,6 +5,7 @@ include { HAPLINK_VARIANTS } from './modules/haplink/variants' include { MINIMAP2 } from './modules/minimap2' include { NANOFILT } form './modules/nanofilt' include { SHORAH_AMPLICON } from './modules/shorah/amplicon' +include { SHORAH_SHOTGUN } from './modules/shorah/shotgun' include { VIQUAS } from './modules/viquas' workflow { @@ -72,29 +73,6 @@ workflow { ) } -process SHORAH_SHOTGUN { - label 'process_high' - container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' - - input: - tuple val(prefix), path(bam) - path(reference) - - output: - tuple val(prefix), path("*.vcf") - tuple val(prefix), path("*support.fas") - - publishDir "results/shorah-shotgun", mode: 'copy' - - script: - """ - shorah shotgun \\ - -t ${task.cpus} \\ - -f ${reference} \\ - -b ${bam} \\ - """ -} - process HAPLINK_RAW_HAPLOTYPES { cpus 2 memory '12.GB' diff --git a/modules/shorah/shotgun/main.nf b/modules/shorah/shotgun/main.nf new file mode 100644 index 0000000..467e4ea --- /dev/null +++ b/modules/shorah/shotgun/main.nf @@ -0,0 +1,22 @@ +process SHORAH_SHOTGUN { + label 'process_high' + container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' + + input: + tuple val(prefix), path(bam) + path(reference) + + output: + tuple val(prefix), path("*.vcf") + tuple val(prefix), path("*support.fas") + + publishDir "results/shorah-shotgun", mode: 'copy' + + script: + """ + shorah shotgun \\ + -t ${task.cpus} \\ + -f ${reference} \\ + -b ${bam} \\ + """ +} From abfed449f6613a4f724a0351a37fbc4705b0e0fa Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:13:06 -0500 Subject: [PATCH 19/40] feat: Add prefix tag to SHORAH_SHOTGUN --- modules/shorah/shotgun/main.nf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/shorah/shotgun/main.nf b/modules/shorah/shotgun/main.nf index 467e4ea..89b8ef7 100644 --- a/modules/shorah/shotgun/main.nf +++ b/modules/shorah/shotgun/main.nf @@ -1,5 +1,7 @@ process SHORAH_SHOTGUN { + tag "${prefix}" label 'process_high' + container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' input: From 47500bc9867d93d3b67f5358621da90552baf905 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:20:44 -0500 Subject: [PATCH 20/40] feat: Add new HAPLINK_HAPLOTYPES module --- modules/haplink/haplotypes/main.nf | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 modules/haplink/haplotypes/main.nf diff --git a/modules/haplink/haplotypes/main.nf b/modules/haplink/haplotypes/main.nf new file mode 100644 index 0000000..e4b96e8 --- /dev/null +++ b/modules/haplink/haplotypes/main.nf @@ -0,0 +1,28 @@ +process HAPLINK_HAPLOTYPES { + tag "${prefix}" + label 'process_high' + + container 'quay.io/biocontainers/haplink:1.0.0--h031d066_0' + + input: + tuple val(prefix), path(bam), path(bai) + path reference + + output: + tuple val(prefix), path("*.yaml") + + publishDir "results/${task.process}", mode: 'copy' + + script: + def ml_args = task.ext.ml_args ?: '' + """ + export JULIA_NUM_THREADS=${task.cpus} + haplink haplotypes \\ + "${reference}" \\ + "${vcf}" \\ + "${bam}" \\ + --frequency 0.01 \\ + ${ml_args} \\ + > "${prefix}.yaml" + """ +} From 52ca8f152836904803c499cdcd6d0726cfc0d28b Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:24:57 -0500 Subject: [PATCH 21/40] refactor: Replace in-workflow HAPLINK processes with imported modules --- main.nf | 55 ++----------------------------------------------- nextflow.config | 8 +++++++ 2 files changed, 10 insertions(+), 53 deletions(-) diff --git a/main.nf b/main.nf index d6449ed..f6fbf59 100755 --- a/main.nf +++ b/main.nf @@ -1,6 +1,8 @@ #!/usr/bin/env nextflow include { EFETCH } from './modules/efetch' +include { HAPLINK_HAPLOTYPES as HAPLINK_ML_HAPLOTYPES } from './modules/haplink/haplotypes' +include { HAPLINK_HAPLOTYPES as HAPLINK_RAW_HAPLOTYPES } from './modules/haplink/haplotypes' include { HAPLINK_VARIANTS } from './modules/haplink/variants' include { MINIMAP2 } from './modules/minimap2' include { NANOFILT } form './modules/nanofilt' @@ -73,59 +75,6 @@ workflow { ) } -process HAPLINK_RAW_HAPLOTYPES { - cpus 2 - memory '12.GB' - - input: - tuple val(prefix), path(bam), path(bai), path(vcf) - path reference - - output: - tuple val(prefix), path("*.yaml") - - publishDir "results/raw-haplotypes", mode: 'copy' - - script: - """ - export JULIA_NUM_THREADS=${task.cpus} - haplink haplotypes \\ - "${reference}" \\ - "${vcf}" \\ - "${bam}" \\ - --frequency 0.01 \\ - > "${prefix}.yaml" - """ -} - -process HAPLINK_ML_HAPLOTYPES { - cpus 8 - memory '12.GB' - - input: - tuple val(prefix), path(bam), path(bai), path(vcf) - path reference - - output: - tuple val(prefix), path("*.yaml") - - publishDir "results/ml-haplotypes", mode: 'copy' - - script: - """ - export JULIA_NUM_THREADS=${task.cpus} - haplink haplotypes \\ - "${reference}" \\ - "${vcf}" \\ - "${bam}" \\ - --simulated-reads \\ - --overlap-min 20 \\ - --overlap-max 8000 \\ - --frequency 0.01 \\ - > "${prefix}.yaml" - """ -} - process HAPLINK_SEQUENCES { cpus 1 memory '6.GB' diff --git a/nextflow.config b/nextflow.config index 84597cb..fce47a2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -1,6 +1,14 @@ process { errorStrategy = 'finish' time = '7d' + + withName: 'HAPLINK_ML_HAPLOTYPES' { + ext.ml_args = """ + --simulated-reads \\ + --overlap-min 20 \\ + --overlap-max 8000 \\ + """ + } } singularity.enabled = true From 5162f649d876d61dc18132feb16e9fb89184839f Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:26:25 -0500 Subject: [PATCH 22/40] refactor: Move HAPLINK_SEQUENCES module to its own file --- main.nf | 25 +------------------------ modules/haplink/sequences/main.nf | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 24 deletions(-) create mode 100644 modules/haplink/sequences/main.nf diff --git a/main.nf b/main.nf index f6fbf59..8bc7a7f 100755 --- a/main.nf +++ b/main.nf @@ -3,6 +3,7 @@ include { EFETCH } from './modules/efetch' include { HAPLINK_HAPLOTYPES as HAPLINK_ML_HAPLOTYPES } from './modules/haplink/haplotypes' include { HAPLINK_HAPLOTYPES as HAPLINK_RAW_HAPLOTYPES } from './modules/haplink/haplotypes' +include { HAPLINK_SEQUENCES } from './modules/haplink/sequences' include { HAPLINK_VARIANTS } from './modules/haplink/variants' include { MINIMAP2 } from './modules/minimap2' include { NANOFILT } form './modules/nanofilt' @@ -74,27 +75,3 @@ workflow { ch_reference ) } - -process HAPLINK_SEQUENCES { - cpus 1 - memory '6.GB' - - input: - tuple val(prefix), val(method), path(yaml) - path reference - - output: - tuple val(prefix), val(method), path("*.fasta") - - publishDir "results/${method}-haplotypes", mode: 'copy' - - script: - """ - export JULIA_NUM_THREADS=${task.cpus} - haplink sequences \\ - "${reference}" \\ - "${yaml}" \\ - --prefix "${prefix}" \\ - > "${prefix}.fasta" - """ -} diff --git a/modules/haplink/sequences/main.nf b/modules/haplink/sequences/main.nf new file mode 100644 index 0000000..46610e8 --- /dev/null +++ b/modules/haplink/sequences/main.nf @@ -0,0 +1,23 @@ +process HAPLINK_SEQUENCES { + cpus 1 + memory '6.GB' + + input: + tuple val(prefix), val(method), path(yaml) + path reference + + output: + tuple val(prefix), val(method), path("*.fasta") + + publishDir "results/${method}-haplotypes", mode: 'copy' + + script: + """ + export JULIA_NUM_THREADS=${task.cpus} + haplink sequences \\ + "${reference}" \\ + "${yaml}" \\ + --prefix "${prefix}" \\ + > "${prefix}.fasta" + """ +} From 517b8eb66bc7d9715eced41719ac6cc3b6856aa4 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:27:17 -0500 Subject: [PATCH 23/40] feat: Add method/prefix tag to HAPLINK_SEQUENCES --- modules/haplink/sequences/main.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/haplink/sequences/main.nf b/modules/haplink/sequences/main.nf index 46610e8..f47e9a6 100644 --- a/modules/haplink/sequences/main.nf +++ b/modules/haplink/sequences/main.nf @@ -1,4 +1,5 @@ process HAPLINK_SEQUENCES { + tag "${method}: ${prefix}" cpus 1 memory '6.GB' From 095aff629d2926bffd32a1d604a2fc6e3dfda6b1 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:28:12 -0500 Subject: [PATCH 24/40] refactor: Replace performance directives with process label --- modules/haplink/sequences/main.nf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/haplink/sequences/main.nf b/modules/haplink/sequences/main.nf index f47e9a6..257b969 100644 --- a/modules/haplink/sequences/main.nf +++ b/modules/haplink/sequences/main.nf @@ -1,7 +1,6 @@ process HAPLINK_SEQUENCES { tag "${method}: ${prefix}" - cpus 1 - memory '6.GB' + label 'process_single' input: tuple val(prefix), val(method), path(yaml) From 475120357972bcc7e3a9a6e3ca1849bd42919c16 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:28:57 -0500 Subject: [PATCH 25/40] feat: Add container directive to HAPLINK_SEQUENCES --- modules/haplink/sequences/main.nf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/haplink/sequences/main.nf b/modules/haplink/sequences/main.nf index 257b969..bd09d66 100644 --- a/modules/haplink/sequences/main.nf +++ b/modules/haplink/sequences/main.nf @@ -2,6 +2,8 @@ process HAPLINK_SEQUENCES { tag "${method}: ${prefix}" label 'process_single' + container 'quay.io/biocontainers/haplink:1.0.0--h031d066_0' + input: tuple val(prefix), val(method), path(yaml) path reference From 002bd44975c21d508ef6124b69e85164c3826a2a Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:30:24 -0500 Subject: [PATCH 26/40] refactor: Change output directory to match haplotypes --- main.nf | 4 ++-- modules/haplink/sequences/main.nf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/main.nf b/main.nf index 8bc7a7f..e623fa6 100755 --- a/main.nf +++ b/main.nf @@ -49,7 +49,7 @@ workflow { ) HAPLINK_RAW_HAPLOTYPES .out - .map{ [ it[0], 'raw', it[1] ] } + .map{ [ it[0], 'HAPLINK_RAW_HAPLOTYPES', it[1] ] } .set{ ch_raw_haplotypes } HAPLINK_ML_HAPLOTYPES( @@ -58,7 +58,7 @@ workflow { ) HAPLINK_ML_HAPLOTYPES .out - .map{ [ it[0], 'ml', it[1] ] } + .map{ [ it[0], 'HAPLINK_ML_HAPLOTYPES', it[1] ] } .set{ ch_ml_haplotypes } ch_raw_haplotypes diff --git a/modules/haplink/sequences/main.nf b/modules/haplink/sequences/main.nf index bd09d66..109b92f 100644 --- a/modules/haplink/sequences/main.nf +++ b/modules/haplink/sequences/main.nf @@ -11,7 +11,7 @@ process HAPLINK_SEQUENCES { output: tuple val(prefix), val(method), path("*.fasta") - publishDir "results/${method}-haplotypes", mode: 'copy' + publishDir "results/${method}", mode: 'copy' script: """ From 5c4d02263be3cfd927d594d365702d5c162808ab Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:32:29 -0500 Subject: [PATCH 27/40] refactor: Replace custom publish dirs with reference to task.process --- modules/haplink/variants/main.nf | 2 +- modules/shorah/amplicon/main.nf | 2 +- modules/shorah/shotgun/main.nf | 2 +- modules/viquas/main.nf | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/haplink/variants/main.nf b/modules/haplink/variants/main.nf index 9f036de..b4f7149 100644 --- a/modules/haplink/variants/main.nf +++ b/modules/haplink/variants/main.nf @@ -11,7 +11,7 @@ process HAPLINK_VARIANTS { output: tuple val(prefix), path("*.vcf") - publishDir "results", mode: 'copy' + publishDir "results/${task.process}", mode: 'copy' script: """ diff --git a/modules/shorah/amplicon/main.nf b/modules/shorah/amplicon/main.nf index 5c68ca1..d35961a 100644 --- a/modules/shorah/amplicon/main.nf +++ b/modules/shorah/amplicon/main.nf @@ -12,7 +12,7 @@ process SHORAH_AMPLICON { tuple val(prefix), path("*.vcf") tuple val(prefix), path("*support.fas") - publishDir "results/shorah-amplicon", mode: 'copy' + publishDir "results/${task.process}", mode: 'copy' script: """ diff --git a/modules/shorah/shotgun/main.nf b/modules/shorah/shotgun/main.nf index 89b8ef7..224dca9 100644 --- a/modules/shorah/shotgun/main.nf +++ b/modules/shorah/shotgun/main.nf @@ -12,7 +12,7 @@ process SHORAH_SHOTGUN { tuple val(prefix), path("*.vcf") tuple val(prefix), path("*support.fas") - publishDir "results/shorah-shotgun", mode: 'copy' + publishDir "results/${task.process}", mode: 'copy' script: """ diff --git a/modules/viquas/main.nf b/modules/viquas/main.nf index 16bb7b5..ab467a3 100644 --- a/modules/viquas/main.nf +++ b/modules/viquas/main.nf @@ -11,7 +11,7 @@ process VIQUAS { output: tuple val(prefix), path("*.fa") - publishDir "results/viquas", mode: 'copy' + publishDir "results/${task.process}", mode: 'copy' script: """ From de853c2d229106ddcf99ef877ecb35cc012f35e8 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:40:04 -0500 Subject: [PATCH 28/40] feat: Add CliqueSNV module --- modules/cliquesnv/main.nf | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 modules/cliquesnv/main.nf diff --git a/modules/cliquesnv/main.nf b/modules/cliquesnv/main.nf new file mode 100644 index 0000000..f22ffa1 --- /dev/null +++ b/modules/cliquesnv/main.nf @@ -0,0 +1,27 @@ +process CLIQUESNV { + tag "${prefix}" + label 'process_high' + + container 'quay.io/biocontainers/cliquesnv:2.0.3--hdfd78af_0' + + input: + tuple val(prefix), path(bam) + val(method) + + output: + tuple val(prefix), path("*.json") + tuple val(prefix), path("*.fasta") + + publishDir "results/${task.process}", mode: 'copy' + + script: + def jmemstring = task.memory.toMega() + 'M' + """ + cliquesnv \\ + -Xmx${jmemstring} \\ + -threads ${task.cpus} \\ + -m '${method}' \\ + -in "${bam}" \\ + -outDir . + """ +} From 5ab64a8feab2c283eb881a6714e3ac88521ccf2b Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:43:02 -0500 Subject: [PATCH 29/40] feat: Add CliqueSNV haplotype calling to pipeline --- main.nf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/main.nf b/main.nf index e623fa6..65b1fd1 100755 --- a/main.nf +++ b/main.nf @@ -1,5 +1,6 @@ #!/usr/bin/env nextflow +include { CLIQUESNV } from './modules/cliquesnv' include { EFETCH } from './modules/efetch' include { HAPLINK_HAPLOTYPES as HAPLINK_ML_HAPLOTYPES } from './modules/haplink/haplotypes' include { HAPLINK_HAPLOTYPES as HAPLINK_RAW_HAPLOTYPES } from './modules/haplink/haplotypes' @@ -74,4 +75,9 @@ workflow { ch_alignments, ch_reference ) + + CLIQUESNV( + ch_alignments, + 'snv-pacbio' + ) } From 3e6a0ca5df0caab7d99b32448d398e739dfbec63 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:54:49 -0500 Subject: [PATCH 30/40] feat: Add QuasiRecomb module --- modules/quasirecomb/main.nf | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 modules/quasirecomb/main.nf diff --git a/modules/quasirecomb/main.nf b/modules/quasirecomb/main.nf new file mode 100644 index 0000000..e2896c0 --- /dev/null +++ b/modules/quasirecomb/main.nf @@ -0,0 +1,27 @@ +process QUASIRECOMB { + tag "${prefix}" + label 'process_high' + + container 'quay.io/biocontainers/quasirecomb:1.2--hdfd78af_1' + + input: + tuple val(prefix), path(bam) + + output: + tuple val(prefix), path("*.fasta") + + publishDir "results/${task.process}", mode: 'copy' + + script: + def jmemstring = task.memory.toMega() + 'M' + """ + quasirecomb \\ + -XX:+UseParallelGC \\ + -Xms2g \\ + -Xmx${jmemstring} \\ + -XX:+UseNUMA \\ + -XX:NewRatio=9 \\ + -i "${bam}" + mv quasispecies.fasta "${prefix}.fasta" + """ +} From 137804518f421d9e0769bba96b2c4a458497483f Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 25 Sep 2023 17:59:14 -0500 Subject: [PATCH 31/40] feat: Add nf-core config parameters --- nextflow.config | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/nextflow.config b/nextflow.config index fce47a2..3585de1 100644 --- a/nextflow.config +++ b/nextflow.config @@ -1,3 +1,21 @@ +params { + reference = null + + // Config options + config_profile_name = null + config_profile_description = null + custom_config_version = 'master' + custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" + config_profile_contact = null + config_profile_url = null + + // Max resource options + // Defaults only, expecting to be overwritten + max_memory = '128.GB' + max_cpus = 16 + max_time = '240.h' +} + process { errorStrategy = 'finish' time = '7d' @@ -11,6 +29,12 @@ process { } } +try { + includeConfig "${params.custom_config_base}/nfcore_custom.config" +} catch (Exception e) { + System.err.println("WARNING: Could not load nf-core/config profiles: ${params.custom_config_base}/nfcore_custom.config") +} + singularity.enabled = true env { From 7f43f0282fd4a4ca3c6bf3cb3cf734cb2a9b9f5d Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:05:10 -0500 Subject: [PATCH 32/40] feat: Add nf-core resource allocation parameters --- nextflow.config | 61 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/nextflow.config b/nextflow.config index 3585de1..de600ab 100644 --- a/nextflow.config +++ b/nextflow.config @@ -17,8 +17,34 @@ params { } process { - errorStrategy = 'finish' - time = '7d' + cpus = { check_max(1 * task.attempt, 'cpus') } + memory = { check_max(6.GB * task.attempt, 'memory') } + time = { check_max(4.h * task.attempt, 'time') } + + errorStrategy = { task.exitStatus in ((130..145) + 104) ? 'retry' : 'finish' } + maxRetries = 1 + maxErrors = '-1' + + withLabel:process_single { + cpus = { check_max(1, 'cpus') } + memory = { check_max( 6.GB * task.attempt, 'memory') } + time = { check_max( 4.h * task.attempt, 'time') } + } + withLabel:process_low { + cpus = { check_max( 2 * task.attempt, 'cpus') } + memory = { check_max( 12.GB * task.attempt, 'memory') } + time = { check_max( 4.h * task.attempt, 'time') } + } + withLabel:process_medium { + cpus = { check_max( 6 * task.attempt, 'cpus') } + memory = { check_max( 36.GB * task.attempt, 'memory') } + time = { check_max( 8.h * task.attempt, 'time') } + } + withLabel:process_high { + cpus = { check_max( 12 * task.attempt, 'cpus') } + memory = { check_max( 72.GB * task.attempt, 'memory') } + time = { check_max( 16.h * task.attempt, 'time') } + } withName: 'HAPLINK_ML_HAPLOTYPES' { ext.ml_args = """ @@ -41,3 +67,34 @@ env { R_PROFILE_USER = "/.Rprofile" R_ENVIRON_USER = "/.Renviron" } + +def check_max(obj, type) { + if (type == 'memory') { + try { + if (obj.compareTo(params.max_memory as nextflow.util.MemoryUnit) == 1) + return params.max_memory as nextflow.util.MemoryUnit + else + return obj + } catch (all) { + println " ### ERROR ### Max memory '${params.max_memory}' is not valid! Using default value: $obj" + return obj + } + } else if (type == 'time') { + try { + if (obj.compareTo(params.max_time as nextflow.util.Duration) == 1) + return params.max_time as nextflow.util.Duration + else + return obj + } catch (all) { + println " ### ERROR ### Max time '${params.max_time}' is not valid! Using default value: $obj" + return obj + } + } else if (type == 'cpus') { + try { + return Math.min( obj, params.max_cpus as int ) + } catch (all) { + println " ### ERROR ### Max cpus '${params.max_cpus}' is not valid! Using default value: $obj" + return obj + } + } +} From 96471746b9ff1bcc5e8479dd79e279002476f751 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:16:50 -0500 Subject: [PATCH 33/40] feat: Replace hard-coded singularity with profile-based containers --- nextflow.config | 60 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index de600ab..4e4c25c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -61,7 +61,65 @@ try { System.err.println("WARNING: Could not load nf-core/config profiles: ${params.custom_config_base}/nfcore_custom.config") } -singularity.enabled = true +profiles { + docker { + docker.enabled = true + docker.userEmulation = true + conda.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false + } + singularity { + singularity.enabled = true + singularity.autoMounts = true + conda.enabled = false + docker.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false + } + podman { + podman.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false + } + shifter { + shifter.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + charliecloud.enabled = false + apptainer.enabled = false + } + charliecloud { + charliecloud.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + apptainer.enabled = false + } + apptainer { + apptainer.enabled = true + apptainer.autoMounts = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + } +} env { R_PROFILE_USER = "/.Rprofile" From d8fee48c28e8e6b63b9fc7361e8100a4637b56f8 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:44:50 -0500 Subject: [PATCH 34/40] feat: Add CliqueSNV to pipeline --- main.nf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/main.nf b/main.nf index 65b1fd1..c73f49c 100755 --- a/main.nf +++ b/main.nf @@ -34,6 +34,11 @@ workflow { .out .set { ch_alignments } + CLIQUESNV( + ch_alignments, + 'snv-pacbio' + ) + HAPLINK_VARIANTS( ch_alignments, ch_reference ) HAPLINK_VARIANTS .out @@ -75,9 +80,4 @@ workflow { ch_alignments, ch_reference ) - - CLIQUESNV( - ch_alignments, - 'snv-pacbio' - ) } From 029f3a512691a7e8ea0027705083768047b13c9f Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:46:38 -0500 Subject: [PATCH 35/40] feat: Add PREDICTHAPLO module --- modules/predicthaplo/main.nf | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 modules/predicthaplo/main.nf diff --git a/modules/predicthaplo/main.nf b/modules/predicthaplo/main.nf new file mode 100644 index 0000000..71d2fc1 --- /dev/null +++ b/modules/predicthaplo/main.nf @@ -0,0 +1,23 @@ +process PREDICTHAPLO { + tag "${prefix}" + label 'process_high' + + container 'quay.io/biocontainers/predicthaplo:2.1.4--h9b88814_5' + + input: + tuple val(prefix), path(bam) + path(reference) + + output: + tuple val(prefix), path("*.fa*") + + publishDir "results/${task.process}", mode: 'copy' + + script: + """ + predicthaplo \\ + --sam "${bam}" \\ + --reference "${reference}" \\ + --prefix "${prefix}" + """ +} From 5cc886779964f8479e909793e72fa3760fff085b Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:47:48 -0500 Subject: [PATCH 36/40] feat: Add PREDICTHAPLO to pipeline --- main.nf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/main.nf b/main.nf index c73f49c..8cf7dd2 100755 --- a/main.nf +++ b/main.nf @@ -6,6 +6,7 @@ include { HAPLINK_HAPLOTYPES as HAPLINK_ML_HAPLOTYPES } from './modules/haplink/ include { HAPLINK_HAPLOTYPES as HAPLINK_RAW_HAPLOTYPES } from './modules/haplink/haplotypes' include { HAPLINK_SEQUENCES } from './modules/haplink/sequences' include { HAPLINK_VARIANTS } from './modules/haplink/variants' +include { PREDICTHAPLO } from './modules/predicthaplo' include { MINIMAP2 } from './modules/minimap2' include { NANOFILT } form './modules/nanofilt' include { SHORAH_AMPLICON } from './modules/shorah/amplicon' @@ -76,6 +77,11 @@ workflow { ch_reference ) + PREDICTHAPLO( + ch_alignments, + ch_reference + ) + VIQUAS( ch_alignments, ch_reference From 444001b49931911958695cd201752b4971922f33 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:50:37 -0500 Subject: [PATCH 37/40] feat: Add QUASIRECOMB to pipeline --- main.nf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/main.nf b/main.nf index 8cf7dd2..4042eeb 100755 --- a/main.nf +++ b/main.nf @@ -8,7 +8,8 @@ include { HAPLINK_SEQUENCES } from './modules/haplink/sequences' include { HAPLINK_VARIANTS } from './modules/haplink/variants' include { PREDICTHAPLO } from './modules/predicthaplo' include { MINIMAP2 } from './modules/minimap2' -include { NANOFILT } form './modules/nanofilt' +include { NANOFILT } from './modules/nanofilt' +include { QUASIRECOMB } from './modules/quasirecomb' include { SHORAH_AMPLICON } from './modules/shorah/amplicon' include { SHORAH_SHOTGUN } from './modules/shorah/shotgun' include { VIQUAS } from './modules/viquas' @@ -82,6 +83,8 @@ workflow { ch_reference ) + QUASIRECOMB( ch_alignments ) + VIQUAS( ch_alignments, ch_reference From 355ce9a00a04722173b398a77d0286b5ee57b63f Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:51:58 -0500 Subject: [PATCH 38/40] feat: Add SHORAH processes to pipeline --- main.nf | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/main.nf b/main.nf index 4042eeb..af776f3 100755 --- a/main.nf +++ b/main.nf @@ -85,6 +85,16 @@ workflow { QUASIRECOMB( ch_alignments ) + SHORAH_AMPLICON( + ch_alignments, + ch_reference + ) + + SHORAH_SHOTGUN( + ch_alignments, + ch_reference + ) + VIQUAS( ch_alignments, ch_reference From 9364225e74a4e6f9773ac559f776d523adf7f100 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Tue, 26 Sep 2023 08:06:43 -0500 Subject: [PATCH 39/40] fix: Change input cardinality on haplotyping modules --- modules/cliquesnv/main.nf | 2 +- modules/haplink/haplotypes/main.nf | 2 +- modules/predicthaplo/main.nf | 2 +- modules/quasirecomb/main.nf | 2 +- modules/shorah/amplicon/main.nf | 2 +- modules/shorah/shotgun/main.nf | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/cliquesnv/main.nf b/modules/cliquesnv/main.nf index f22ffa1..f00d979 100644 --- a/modules/cliquesnv/main.nf +++ b/modules/cliquesnv/main.nf @@ -5,7 +5,7 @@ process CLIQUESNV { container 'quay.io/biocontainers/cliquesnv:2.0.3--hdfd78af_0' input: - tuple val(prefix), path(bam) + tuple val(prefix), path(bam), path(bai) val(method) output: diff --git a/modules/haplink/haplotypes/main.nf b/modules/haplink/haplotypes/main.nf index e4b96e8..e178112 100644 --- a/modules/haplink/haplotypes/main.nf +++ b/modules/haplink/haplotypes/main.nf @@ -5,7 +5,7 @@ process HAPLINK_HAPLOTYPES { container 'quay.io/biocontainers/haplink:1.0.0--h031d066_0' input: - tuple val(prefix), path(bam), path(bai) + tuple val(prefix), path(bam), path(bai), path(vcf) path reference output: diff --git a/modules/predicthaplo/main.nf b/modules/predicthaplo/main.nf index 71d2fc1..2c14476 100644 --- a/modules/predicthaplo/main.nf +++ b/modules/predicthaplo/main.nf @@ -5,7 +5,7 @@ process PREDICTHAPLO { container 'quay.io/biocontainers/predicthaplo:2.1.4--h9b88814_5' input: - tuple val(prefix), path(bam) + tuple val(prefix), path(bam), path(bai) path(reference) output: diff --git a/modules/quasirecomb/main.nf b/modules/quasirecomb/main.nf index e2896c0..085122e 100644 --- a/modules/quasirecomb/main.nf +++ b/modules/quasirecomb/main.nf @@ -5,7 +5,7 @@ process QUASIRECOMB { container 'quay.io/biocontainers/quasirecomb:1.2--hdfd78af_1' input: - tuple val(prefix), path(bam) + tuple val(prefix), path(bam), path(bai) output: tuple val(prefix), path("*.fasta") diff --git a/modules/shorah/amplicon/main.nf b/modules/shorah/amplicon/main.nf index d35961a..171cf6b 100644 --- a/modules/shorah/amplicon/main.nf +++ b/modules/shorah/amplicon/main.nf @@ -5,7 +5,7 @@ process SHORAH_AMPLICON { container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' input: - tuple val(prefix), path(bam) + tuple val(prefix), path(bam), path(bai) path(reference) output: diff --git a/modules/shorah/shotgun/main.nf b/modules/shorah/shotgun/main.nf index 224dca9..9f2ece9 100644 --- a/modules/shorah/shotgun/main.nf +++ b/modules/shorah/shotgun/main.nf @@ -5,7 +5,7 @@ process SHORAH_SHOTGUN { container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' input: - tuple val(prefix), path(bam) + tuple val(prefix), path(bam), path(bai) path(reference) output: From b98a7977013b4e15934bc459abca325872aeb3f9 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Tue, 26 Sep 2023 08:27:22 -0500 Subject: [PATCH 40/40] feat: Add control flow for choosing haplotypers --- modules/cliquesnv/main.nf | 4 ++++ modules/haplink/haplotypes/main.nf | 4 ++++ modules/haplink/sequences/main.nf | 4 ++++ modules/haplink/variants/main.nf | 4 ++++ modules/predicthaplo/main.nf | 4 ++++ modules/quasirecomb/main.nf | 4 ++++ modules/shorah/amplicon/main.nf | 4 ++++ modules/shorah/shotgun/main.nf | 4 ++++ modules/viquas/main.nf | 4 ++++ nextflow.config | 28 ++++++++++++++++++++++++++++ 10 files changed, 64 insertions(+) diff --git a/modules/cliquesnv/main.nf b/modules/cliquesnv/main.nf index f00d979..da197e7 100644 --- a/modules/cliquesnv/main.nf +++ b/modules/cliquesnv/main.nf @@ -1,6 +1,7 @@ process CLIQUESNV { tag "${prefix}" label 'process_high' + label 'cliquesnv' container 'quay.io/biocontainers/cliquesnv:2.0.3--hdfd78af_0' @@ -14,6 +15,9 @@ process CLIQUESNV { publishDir "results/${task.process}", mode: 'copy' + when: + task.ext.when == null || task.ext.when + script: def jmemstring = task.memory.toMega() + 'M' """ diff --git a/modules/haplink/haplotypes/main.nf b/modules/haplink/haplotypes/main.nf index e178112..5673af4 100644 --- a/modules/haplink/haplotypes/main.nf +++ b/modules/haplink/haplotypes/main.nf @@ -1,6 +1,7 @@ process HAPLINK_HAPLOTYPES { tag "${prefix}" label 'process_high' + label 'haplink' container 'quay.io/biocontainers/haplink:1.0.0--h031d066_0' @@ -13,6 +14,9 @@ process HAPLINK_HAPLOTYPES { publishDir "results/${task.process}", mode: 'copy' + when: + task.ext.when == null || task.ext.when + script: def ml_args = task.ext.ml_args ?: '' """ diff --git a/modules/haplink/sequences/main.nf b/modules/haplink/sequences/main.nf index 109b92f..fa1c76e 100644 --- a/modules/haplink/sequences/main.nf +++ b/modules/haplink/sequences/main.nf @@ -1,6 +1,7 @@ process HAPLINK_SEQUENCES { tag "${method}: ${prefix}" label 'process_single' + label 'haplink' container 'quay.io/biocontainers/haplink:1.0.0--h031d066_0' @@ -13,6 +14,9 @@ process HAPLINK_SEQUENCES { publishDir "results/${method}", mode: 'copy' + when: + task.ext.when == null || task.ext.when + script: """ export JULIA_NUM_THREADS=${task.cpus} diff --git a/modules/haplink/variants/main.nf b/modules/haplink/variants/main.nf index b4f7149..ec6e9c8 100644 --- a/modules/haplink/variants/main.nf +++ b/modules/haplink/variants/main.nf @@ -1,6 +1,7 @@ process HAPLINK_VARIANTS { tag "${prefix}" label 'process_medium' + label 'haplink' container 'quay.io/biocontainers/haplink:1.0.0--h031d066_0' @@ -13,6 +14,9 @@ process HAPLINK_VARIANTS { publishDir "results/${task.process}", mode: 'copy' + when: + task.ext.when == null || task.ext.when + script: """ export JULIA_NUM_THREADS=${task.cpus} diff --git a/modules/predicthaplo/main.nf b/modules/predicthaplo/main.nf index 2c14476..f403c0e 100644 --- a/modules/predicthaplo/main.nf +++ b/modules/predicthaplo/main.nf @@ -1,6 +1,7 @@ process PREDICTHAPLO { tag "${prefix}" label 'process_high' + label 'predicthaplo' container 'quay.io/biocontainers/predicthaplo:2.1.4--h9b88814_5' @@ -13,6 +14,9 @@ process PREDICTHAPLO { publishDir "results/${task.process}", mode: 'copy' + when: + task.ext.when == null || task.ext.when + script: """ predicthaplo \\ diff --git a/modules/quasirecomb/main.nf b/modules/quasirecomb/main.nf index 085122e..8e054cf 100644 --- a/modules/quasirecomb/main.nf +++ b/modules/quasirecomb/main.nf @@ -1,6 +1,7 @@ process QUASIRECOMB { tag "${prefix}" label 'process_high' + label 'quasirecomb' container 'quay.io/biocontainers/quasirecomb:1.2--hdfd78af_1' @@ -12,6 +13,9 @@ process QUASIRECOMB { publishDir "results/${task.process}", mode: 'copy' + when: + task.ext.when == null || task.ext.when + script: def jmemstring = task.memory.toMega() + 'M' """ diff --git a/modules/shorah/amplicon/main.nf b/modules/shorah/amplicon/main.nf index 171cf6b..c8ccf38 100644 --- a/modules/shorah/amplicon/main.nf +++ b/modules/shorah/amplicon/main.nf @@ -1,6 +1,7 @@ process SHORAH_AMPLICON { tag "${prefix}" label 'process_high' + label 'shorah' container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' @@ -14,6 +15,9 @@ process SHORAH_AMPLICON { publishDir "results/${task.process}", mode: 'copy' + when: + task.ext.when == null || task.ext.when + script: """ shorah amplicon \\ diff --git a/modules/shorah/shotgun/main.nf b/modules/shorah/shotgun/main.nf index 9f2ece9..2b7aa86 100644 --- a/modules/shorah/shotgun/main.nf +++ b/modules/shorah/shotgun/main.nf @@ -1,6 +1,7 @@ process SHORAH_SHOTGUN { tag "${prefix}" label 'process_high' + label 'shorah' container 'quay.io/biocontainers/shorah:1.99.2--py38h73782ee_8' @@ -14,6 +15,9 @@ process SHORAH_SHOTGUN { publishDir "results/${task.process}", mode: 'copy' + when: + task.ext.when == null || task.ext.when + script: """ shorah shotgun \\ diff --git a/modules/viquas/main.nf b/modules/viquas/main.nf index ab467a3..ad19953 100644 --- a/modules/viquas/main.nf +++ b/modules/viquas/main.nf @@ -1,6 +1,7 @@ process VIQUAS { tag "${prefix}" label 'process_high' + label 'viquas' container 'code.millironx.com/millironx/haplotyper-battle-royale:viquas' @@ -13,6 +14,9 @@ process VIQUAS { publishDir "results/${task.process}", mode: 'copy' + when: + task.ext.when == null || task.ext.when + script: """ viquas \\ diff --git a/nextflow.config b/nextflow.config index 4e4c25c..98bf7b1 100644 --- a/nextflow.config +++ b/nextflow.config @@ -14,6 +14,15 @@ params { max_memory = '128.GB' max_cpus = 16 max_time = '240.h' + + // Haplotyper options + // By default, run all haplotypers + cliquesnv = true + haplink = true + predicthaplo = true + quasirecomb = true + shorah = true + viquas = true } process { @@ -53,6 +62,25 @@ process { --overlap-max 8000 \\ """ } + + withLabel: 'cliquesnv' { + ext.when = params.cliquesnv + } + withLabel: 'haplink' { + ext.when = params.haplink + } + withLabel: 'predicthaplo' { + ext.when = params.predicthaplo + } + withLabel: 'quasirecomb' { + ext.when = params.quasirecomb + } + withLabel: 'shorah' { + ext.when = params.shorah + } + withLabel: 'viquas' { + ext.when = params.viquas + } } try {