From 801240a9714082de913e8a72f4bb434018a50e8b Mon Sep 17 00:00:00 2001 From: Nathan Spix <56930974+njspix@users.noreply.github.com> Date: Mon, 14 Mar 2022 09:34:22 -0400 Subject: [PATCH] Add core Biscuit tools (#1354) * create files with nf-core command * update meta.yml files * starting to work on index main.nf * prelim test for index * index test working; not finding all output files * index passing tests * index and align passing tests * prototyping biscuitblaster and pileup * update containers * updates to pileup * pileup passing tests * template creation for more biscuit tools * tests passing on blaster,bsconv,pupsom * epiread passing tests, but need to update SNP bed file path * vcf2bed working; change test file * all biscuit commands passing tests * biscuitblaster rename * try to fix permissions * more permission fixes * trying a couple more permission changes * hopefully last permission fixes * really last permission changes * few more permissions * add when blocks * Remove read group meta Co-authored-by: James A. Fellows Yates * remove read group meta Co-authored-by: James A. Fellows Yates * changes for first round of review * update meta.yml with more specific links * Update modules/biscuit/biscuitblaster/main.nf Co-authored-by: Sateesh Peri <33637490+sateeshperi@users.noreply.github.com> * Apply new version reporting Co-authored-by: Sateesh Peri <33637490+sateeshperi@users.noreply.github.com> * Update modules/biscuit/pileup/main.nf Co-authored-by: Sateesh Peri <33637490+sateeshperi@users.noreply.github.com> * Update main.nf * Update modules/biscuit/pileupsomatic/main.nf Co-authored-by: Sateesh Peri <33637490+sateeshperi@users.noreply.github.com> * update test file path * Update modules/biscuit/align/main.nf Co-authored-by: Sateesh Peri <33637490+sateeshperi@users.noreply.github.com> * Update modules/biscuit/align/main.nf Co-authored-by: Sateesh Peri <33637490+sateeshperi@users.noreply.github.com> * tests passing again * Update modules/biscuit/align/main.nf * Update modules/biscuit/bsconv/main.nf * Update modules/biscuit/epiread/main.nf * Update modules/biscuit/index/main.nf * Update test.yml * Update modules/biscuit/pileupsomatic/main.nf * remove module-specific extension/prefix * remove module-specific extension/prefix * add missing args * switch pileup strategy * update test.yml * remove debug * whitespace cleanup * add in newline escapes * requested changes * Update modules/biscuit/pileup/meta.yml Co-authored-by: Spix Co-authored-by: James A. Fellows Yates Co-authored-by: Sateesh Peri <33637490+sateeshperi@users.noreply.github.com> Co-authored-by: Spix Co-authored-by: njspix --- modules/biscuit/align/main.nf | 44 ++++++++++ modules/biscuit/align/meta.yml | 52 ++++++++++++ modules/biscuit/biscuitblaster/main.nf | 52 ++++++++++++ modules/biscuit/biscuitblaster/meta.yml | 78 ++++++++++++++++++ modules/biscuit/bsconv/main.nf | 39 +++++++++ modules/biscuit/bsconv/meta.yml | 55 +++++++++++++ modules/biscuit/epiread/main.nf | 57 +++++++++++++ modules/biscuit/epiread/meta.yml | 58 ++++++++++++++ modules/biscuit/index/main.nf | 33 ++++++++ modules/biscuit/index/meta.yml | 38 +++++++++ modules/biscuit/mergecg/main.nf | 43 ++++++++++ modules/biscuit/mergecg/meta.yml | 51 ++++++++++++ modules/biscuit/pileup/main.nf | 45 +++++++++++ modules/biscuit/pileup/meta.yml | 70 ++++++++++++++++ modules/biscuit/qc/main.nf | 40 ++++++++++ modules/biscuit/qc/meta.yml | 51 ++++++++++++ modules/biscuit/vcf2bed/main.nf | 39 +++++++++ modules/biscuit/vcf2bed/meta.yml | 48 +++++++++++ tests/config/nextflow.config | 2 +- tests/config/pytest_modules.yml | 43 ++++++++++ tests/modules/biscuit/align/main.nf | 33 ++++++++ tests/modules/biscuit/align/nextflow.config | 5 ++ tests/modules/biscuit/align/test.yml | 53 ++++++++++++ tests/modules/biscuit/biscuitblaster/main.nf | 32 ++++++++ .../biscuit/biscuitblaster/nextflow.config | 5 ++ tests/modules/biscuit/biscuitblaster/test.yml | 57 +++++++++++++ tests/modules/biscuit/bsconv/main.nf | 19 +++++ tests/modules/biscuit/bsconv/nextflow.config | 10 +++ tests/modules/biscuit/bsconv/test.yml | 26 ++++++ tests/modules/biscuit/epiread/main.nf | 48 +++++++++++ tests/modules/biscuit/epiread/nextflow.config | 5 ++ tests/modules/biscuit/epiread/test.yml | 80 +++++++++++++++++++ tests/modules/biscuit/index/main.nf | 12 +++ tests/modules/biscuit/index/nextflow.config | 5 ++ tests/modules/biscuit/index/test.yml | 24 ++++++ tests/modules/biscuit/mergecg/main.nf | 18 +++++ tests/modules/biscuit/mergecg/nextflow.config | 5 ++ tests/modules/biscuit/mergecg/test.yml | 26 ++++++ tests/modules/biscuit/pileup/main.nf | 38 +++++++++ tests/modules/biscuit/pileup/nextflow.config | 5 ++ tests/modules/biscuit/pileup/test.yml | 53 ++++++++++++ tests/modules/biscuit/qc/main.nf | 18 +++++ tests/modules/biscuit/qc/nextflow.config | 5 ++ tests/modules/biscuit/qc/test.yml | 38 +++++++++ tests/modules/biscuit/vcf2bed/main.nf | 16 ++++ tests/modules/biscuit/vcf2bed/nextflow.config | 5 ++ tests/modules/biscuit/vcf2bed/test.yml | 10 +++ 47 files changed, 1588 insertions(+), 1 deletion(-) create mode 100644 modules/biscuit/align/main.nf create mode 100644 modules/biscuit/align/meta.yml create mode 100644 modules/biscuit/biscuitblaster/main.nf create mode 100644 modules/biscuit/biscuitblaster/meta.yml create mode 100644 modules/biscuit/bsconv/main.nf create mode 100644 modules/biscuit/bsconv/meta.yml create mode 100644 modules/biscuit/epiread/main.nf create mode 100644 modules/biscuit/epiread/meta.yml create mode 100644 modules/biscuit/index/main.nf create mode 100644 modules/biscuit/index/meta.yml create mode 100644 modules/biscuit/mergecg/main.nf create mode 100644 modules/biscuit/mergecg/meta.yml create mode 100644 modules/biscuit/pileup/main.nf create mode 100644 modules/biscuit/pileup/meta.yml create mode 100644 modules/biscuit/qc/main.nf create mode 100644 modules/biscuit/qc/meta.yml create mode 100644 modules/biscuit/vcf2bed/main.nf create mode 100644 modules/biscuit/vcf2bed/meta.yml create mode 100644 tests/modules/biscuit/align/main.nf create mode 100644 tests/modules/biscuit/align/nextflow.config create mode 100644 tests/modules/biscuit/align/test.yml create mode 100644 tests/modules/biscuit/biscuitblaster/main.nf create mode 100644 tests/modules/biscuit/biscuitblaster/nextflow.config create mode 100644 tests/modules/biscuit/biscuitblaster/test.yml create mode 100644 tests/modules/biscuit/bsconv/main.nf create mode 100644 tests/modules/biscuit/bsconv/nextflow.config create mode 100644 tests/modules/biscuit/bsconv/test.yml create mode 100644 tests/modules/biscuit/epiread/main.nf create mode 100644 tests/modules/biscuit/epiread/nextflow.config create mode 100644 tests/modules/biscuit/epiread/test.yml create mode 100644 tests/modules/biscuit/index/main.nf create mode 100644 tests/modules/biscuit/index/nextflow.config create mode 100644 tests/modules/biscuit/index/test.yml create mode 100644 tests/modules/biscuit/mergecg/main.nf create mode 100644 tests/modules/biscuit/mergecg/nextflow.config create mode 100644 tests/modules/biscuit/mergecg/test.yml create mode 100644 tests/modules/biscuit/pileup/main.nf create mode 100644 tests/modules/biscuit/pileup/nextflow.config create mode 100644 tests/modules/biscuit/pileup/test.yml create mode 100644 tests/modules/biscuit/qc/main.nf create mode 100644 tests/modules/biscuit/qc/nextflow.config create mode 100644 tests/modules/biscuit/qc/test.yml create mode 100644 tests/modules/biscuit/vcf2bed/main.nf create mode 100644 tests/modules/biscuit/vcf2bed/nextflow.config create mode 100644 tests/modules/biscuit/vcf2bed/test.yml diff --git a/modules/biscuit/align/main.nf b/modules/biscuit/align/main.nf new file mode 100644 index 00000000..18e178ff --- /dev/null +++ b/modules/biscuit/align/main.nf @@ -0,0 +1,44 @@ +process BISCUIT_ALIGN { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? "bioconda::biscuit=1.0.2.20220113 bioconda::samtools=1.15" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0': + 'quay.io/biocontainers/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0' }" + + input: + tuple val(meta), path(reads) + path index + + output: + tuple val(meta), path("*.bam"), emit: bam + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def biscuit_cpus = (int) Math.max(Math.floor(task.cpus*0.9),1) + def samtools_cpus = task.cpus-biscuit_cpus + """ + INDEX=`find -L ./ -name "*.bis.amb" | sed 's/.bis.amb//'` + + biscuit align \\ + $args \\ + -@ $biscuit_cpus \\ + \$INDEX \\ + $reads \\ + | samtools sort $args2 --threads $samtools_cpus -o ${prefix}.bam - + + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + samtools: \$( samtools --version |& sed '1!d; s/^.*samtools //' ) + END_VERSIONS + """ +} diff --git a/modules/biscuit/align/meta.yml b/modules/biscuit/align/meta.yml new file mode 100644 index 00000000..77af5e4d --- /dev/null +++ b/modules/biscuit/align/meta.yml @@ -0,0 +1,52 @@ +name: biscuit_align +description: Aligns single- or paired-end reads from bisulfite-converted libraries to a reference genome using Biscuit. +keywords: + - biscuit + - DNA methylation + - WGBS + - scWGBS + - bisulfite sequencing + - aligner + - bam +tools: + - biscuit: + description: A utility for analyzing sodium bisulfite conversion-based DNA methylation/modification data + homepage: https://huishenlab.github.io/biscuit/ + documentation: https://huishenlab.github.io/biscuit/docs/alignment + tool_dev_url: https://github.com/huishenlab/biscuit + doi: "" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input fastq files of size 1 and 2 for single-end and paired-end data, + respectively. + - index: + type: dir + description: Biscuit genome index directory (generated with 'biscuit index') + pattern: "BiscuitIndex" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Output BAM file containing read alignments + pattern: "*.{bam}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@njspix" diff --git a/modules/biscuit/biscuitblaster/main.nf b/modules/biscuit/biscuitblaster/main.nf new file mode 100644 index 00000000..700bc5e0 --- /dev/null +++ b/modules/biscuit/biscuitblaster/main.nf @@ -0,0 +1,52 @@ +process BISCUIT_BLASTER { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? "bioconda::biscuit=1.0.2.20220113 bioconda::samblaster=0.1.26 bioconda::samtools=1.15" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0': + 'quay.io/biocontainers/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0' }" + + input: + tuple val(meta), path(reads) + path index + + output: + tuple val(meta), path("*.bam"), emit: bam + tuple val(meta), path("*.bai"), emit: bai + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def args3 = task.ext.args3 ?: '' + def biscuit_cpus = (int) Math.max(Math.floor(task.cpus*0.95),1) + def samtools_cpus = task.cpus-biscuit_cpus + """ + INDEX=`find -L ./ -name "*.bis.amb" | sed 's/.bis.amb//'` + + biscuit align \\ + -@ $biscuit_cpus \\ + $args \\ + \$INDEX \\ + $reads | \\ + samblaster \\ + $args2 | \\ + samtools sort \\ + -@ $samtools_cpus \\ + $args3 \\ + --write-index \\ + -o ${prefix}.bam##idx##${prefix}.bam.bai + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + samtools: \$( samtools --version |& sed '1!d; s/^.*samtools //' ) + samblaster: \$( samblaster --version |& sed 's/^.*samblaster: Version //' ) + END_VERSIONS + """ +} diff --git a/modules/biscuit/biscuitblaster/meta.yml b/modules/biscuit/biscuitblaster/meta.yml new file mode 100644 index 00000000..eb22dd0f --- /dev/null +++ b/modules/biscuit/biscuitblaster/meta.yml @@ -0,0 +1,78 @@ +name: biscuit_blaster + +description: A fast, compact one-liner to produce duplicate-marked, sorted, and indexed BAM files using Biscuit +keywords: + - biscuit + - DNA methylation + - WGBS + - scWGBS + - bisulfite sequencing + - aligner + - bam + +tools: + - biscuit: + description: A utility for analyzing sodium bisulfite conversion-based DNA methylation/modification data + homepage: https://huishenlab.github.io/biscuit/ + documentation: https://huishenlab.github.io/biscuit/biscuitblaster/ + tool_dev_url: https://github.com/huishenlab/biscuit + doi: "" + licence: ["MIT"] + - samblaster: + description: | + samblaster is a fast and flexible program for marking duplicates in read-id grouped paired-end SAM files. + It can also optionally output discordant read pairs and/or split read mappings to separate SAM files, + and/or unmapped/clipped reads to a separate FASTQ file. + By default, samblaster reads SAM input from stdin and writes SAM to stdout. + homepage: None + documentation: https://github.com/GregoryFaust/samblaster + tool_dev_url: https://github.com/GregoryFaust/samblaster + doi: "10.1093/bioinformatics/btu314" + licence: ["MIT"] + - samtools: + description: | + SAMtools is a set of utilities for interacting with and post-processing + short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. + These files are generated as output by short read aligners like BWA. + homepage: http://www.htslib.org/ + documentation: hhttp://www.htslib.org/doc/samtools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input fastq files of size 1 and 2 for single-end and paired-end data, + respectively. + - index: + type: dir + description: Biscuit genome index directory (generated with 'biscuit index') + pattern: "BiscuitIndex" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Output BAM file containing read alignments + pattern: "*.{bam}" + - bai: + type: file + description: Output BAM index + pattern: "*.{bai}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@njspix" diff --git a/modules/biscuit/bsconv/main.nf b/modules/biscuit/bsconv/main.nf new file mode 100644 index 00000000..8c5ee91f --- /dev/null +++ b/modules/biscuit/bsconv/main.nf @@ -0,0 +1,39 @@ +process BISCUIT_BSCONV { + tag "$meta.id" + label 'process_long' + + conda (params.enable_conda ? "bioconda::biscuit=1.0.2.20220113" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/biscuit:1.0.2.20220113--h81a5ba2_0': + 'quay.io/biocontainers/biscuit:1.0.2.20220113--h81a5ba2_0' }" + + input: + tuple val(meta), path(bam), path(bai) + path(index) + + output: + tuple val(meta), path("*.bam"), emit: bsconv_bam + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + if ("$bam" == "${prefix}.bam") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + """ + INDEX=`find -L ./ -name "*.bis.amb" | sed 's/.bis.amb//'` + + biscuit bsconv \\ + $args \\ + \$INDEX \\ + $bam \\ + ${prefix}.bam + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + END_VERSIONS + """ +} diff --git a/modules/biscuit/bsconv/meta.yml b/modules/biscuit/bsconv/meta.yml new file mode 100644 index 00000000..fa05ee47 --- /dev/null +++ b/modules/biscuit/bsconv/meta.yml @@ -0,0 +1,55 @@ +name: biscuit_bsconv +description: Summarize and/or filter reads based on bisulfite conversion rate +keywords: + - biscuit + - DNA methylation + - WGBS + - scWGBS + - bisulfite sequencing + - aligner + - bam + - filter + +tools: + - biscuit: + description: A utility for analyzing sodium bisulfite conversion-based DNA methylation/modification data + homepage: https://huishenlab.github.io/biscuit/ + documentation: https://huishenlab.github.io/biscuit/docs/subcommand_help.html#biscuit-bsconv + tool_dev_url: https://github.com/huishenlab/biscuit + doi: "" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM file contained mapped reads + - bai: + type: file + description: BAM file index + - index: + type: dir + description: Biscuit genome index directory (generated with 'biscuit index') + pattern: "BiscuitIndex" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bsconv_bam: + type: file + description: Output BAM file containing filtered read alignments + pattern: "*.{bam}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@njspix" diff --git a/modules/biscuit/epiread/main.nf b/modules/biscuit/epiread/main.nf new file mode 100644 index 00000000..bc8c6d9f --- /dev/null +++ b/modules/biscuit/epiread/main.nf @@ -0,0 +1,57 @@ +process BISCUIT_EPIREAD { + tag "$meta.id" + label 'process_long' + + conda (params.enable_conda ? "bioconda::biscuit=1.0.2.20220113 bioconda::samtools=1.15" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0': + 'quay.io/biocontainers/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0' }" + + input: + tuple val(meta), path(bam), path(bai), path(snp_bed) + path(index) + + output: + tuple val(meta), path("*.bed.gz"), emit: epiread_bed + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def biscuit_cpus = (int) Math.max(Math.floor(task.cpus*0.9),1) + def samtools_cpus = task.cpus-biscuit_cpus + // As of 2/25/22, epiread does not support reading a gzipped SNP BED file. + // This is a bit hacky but allows the user to supply a gzipped OR uncompressed bed file + def unzip_snp_bed = snp_bed && (snp_bed.toString() =~ /\.gz$/) ? "bgzip -d ${snp_bed}" : "" + def unzipped_snp_bed = snp_bed ? snp_bed.toString() - ~/\.gz$/: "" + // SNP BED input is optional + def options_snp_bed = snp_bed ? "-B ${unzipped_snp_bed}" : "" + if ("$options_snp_bed" == "${prefix}.bed.gz") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + """ + INDEX=`find -L ./ -name "*.bis.amb" | sed 's/.bis.amb//'` + + $unzip_snp_bed + + biscuit epiread \\ + -@ $biscuit_cpus \\ + $args \\ + $options_snp_bed \\ + \$INDEX \\ + $bam | \\ + LC_ALL=C sort -k1,1 -k2,2n | \\ + bgzip \\ + -@ $samtools_cpus \\ + $args2 \\ + -c > ${prefix}.bed.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + samtools: \$( samtools --version |& sed '1!d; s/^.*samtools //' ) + END_VERSIONS + """ +} diff --git a/modules/biscuit/epiread/meta.yml b/modules/biscuit/epiread/meta.yml new file mode 100644 index 00000000..357b83df --- /dev/null +++ b/modules/biscuit/epiread/meta.yml @@ -0,0 +1,58 @@ +name: biscuit_epiread +description: | + Summarizes read-level methylation (and optionally SNV) information from a + Biscuit BAM file in a standard-compliant BED format. +keywords: + - biscuit + - DNA methylation + - WGBS + - scWGBS + - bisulfite sequencing + - aligner + - bam +tools: + - biscuit: + description: A utility for analyzing sodium bisulfite conversion-based DNA methylation/modification data + homepage: https://huishenlab.github.io/biscuit/ + documentation: https://huishenlab.github.io/biscuit/epiread_format/ + tool_dev_url: https://github.com/huishenlab/biscuit + doi: "" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Biscuit BAM file + - bai: + type: file + description: BAM index + - snp_bed: + type: file + description: BED file containing SNP information (optional) + - index: + type: dir + description: Biscuit genome index directory (generated with 'biscuit index') + pattern: "BiscuitIndex" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - epiread_bed: + type: file + description: Gzipped BED file with methylation (and optionally SNV) information + pattern: "*.{epiread.bed.gz}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@njspix" diff --git a/modules/biscuit/index/main.nf b/modules/biscuit/index/main.nf new file mode 100644 index 00000000..9aa04330 --- /dev/null +++ b/modules/biscuit/index/main.nf @@ -0,0 +1,33 @@ +process BISCUIT_INDEX { + tag "$fasta" + label 'process_long' + + conda (params.enable_conda ? "bioconda::biscuit=1.0.2.20220113" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/biscuit:1.0.2.20220113--h81a5ba2_0': + 'quay.io/biocontainers/biscuit:1.0.2.20220113--h81a5ba2_0' }" + + input: + path fasta, stageAs: "BiscuitIndex/*" + + output: + path "BiscuitIndex/*.fa*", emit: index, includeInputs: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + """ + biscuit \\ + index \\ + $args \\ + $fasta + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + END_VERSIONS + """ +} diff --git a/modules/biscuit/index/meta.yml b/modules/biscuit/index/meta.yml new file mode 100644 index 00000000..96134f65 --- /dev/null +++ b/modules/biscuit/index/meta.yml @@ -0,0 +1,38 @@ +name: biscuit_index +description: Indexes a reference genome for use with Biscuit +keywords: + - biscuit + - DNA methylation + - WGBS + - scWGBS + - bisulfite sequencing + - index + - reference + - fasta + +tools: + - biscuit: + description: A utility for analyzing sodium bisulfite conversion-based DNA methylation/modification data + homepage: https://huishenlab.github.io/biscuit/ + documentation: https://huishenlab.github.io/biscuit/docs/alignment + tool_dev_url: https://github.com/huishenlab/biscuit + doi: "" + licence: ["MIT"] + +input: + - fasta: + type: file + description: Input genome fasta file + +output: + - index: + type: dir + description: Biscuit genome index directory + pattern: "BiscuitIndex" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@njspix" diff --git a/modules/biscuit/mergecg/main.nf b/modules/biscuit/mergecg/main.nf new file mode 100644 index 00000000..6cafdb36 --- /dev/null +++ b/modules/biscuit/mergecg/main.nf @@ -0,0 +1,43 @@ +process BISCUIT_MERGECG { + tag "$meta.id" + label 'process_long' + + conda (params.enable_conda ? "bioconda::biscuit=1.0.2.20220113 bioconda::samtools=1.15" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0': + 'quay.io/biocontainers/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0' }" + + input: + tuple val(meta), path(bed) + path index + + output: + tuple val(meta), path("*.bed.gz"), emit: mergecg_bed + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + INDEX=`find -L ./ -name "*.bis.amb" | sed 's/.bis.amb//'` + + biscuit mergecg \\ + $args \\ + \$INDEX \\ + $bed | \\ + LC_ALL=C sort -k1,1 -k2,2n | \\ + bgzip \\ + $args2 \\ + -c > ${prefix}.bed.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + samtools: \$( samtools --version |& sed '1!d; s/^.*samtools //' ) + END_VERSIONS + """ +} diff --git a/modules/biscuit/mergecg/meta.yml b/modules/biscuit/mergecg/meta.yml new file mode 100644 index 00000000..25f6b9e2 --- /dev/null +++ b/modules/biscuit/mergecg/meta.yml @@ -0,0 +1,51 @@ +name: biscuit_mergecg +description: Merges methylation information for opposite-strand C's in a CpG context +keywords: + - biscuit + - DNA methylation + - WGBS + - scWGBS + - bisulfite sequencing + - aligner + - bed +tools: + - biscuit: + description: A utility for analyzing sodium bisulfite conversion-based DNA methylation/modification data + homepage: https://huishenlab.github.io/biscuit/ + documentation: https://huishenlab.github.io/biscuit/docs/methylextraction.html + tool_dev_url: https://github.com/huishenlab/biscuit + doi: "" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: | + Biscuit BED file (output of biscuit vcf2bed) + - index: + type: dir + description: Biscuit genome index directory (generated with 'biscuit index') + pattern: "BiscuitIndex" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - mergecg_bed: + type: file + description: Gzipped BED file with merged methylation information + pattern: "*.bed.gz" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@njspix" diff --git a/modules/biscuit/pileup/main.nf b/modules/biscuit/pileup/main.nf new file mode 100644 index 00000000..dcddc418 --- /dev/null +++ b/modules/biscuit/pileup/main.nf @@ -0,0 +1,45 @@ +process BISCUIT_PILEUP { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? "bioconda::biscuit=1.0.2.20220113 bioconda::samtools=1.15" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0': + 'quay.io/biocontainers/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0' }" + + input: + tuple val(meta), path(normal_bams), path(normal_bais), path(tumor_bam), path(tumor_bai) + path index + + output: + tuple val(meta), path("*.vcf.gz"), emit: vcf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def biscuit_cpus = (int) Math.max(Math.floor(task.cpus*0.9),1) + def bgzip_cpus = task.cpus-biscuit_cpus + if ( tumor_bam != [] && normal_bams.toList().size() > 1 ) error "[BISCUIT_PILEUP] error: Tumor BAM provided with more than one normal BAM" + if ( tumor_bam.toList().size() > 1 ) error "[BISCUIT_PILEUP] error: more than one tumor BAM provided" + input = ( tumor_bam==[] ) ? "${normal_bams}" : "-S -T ${tumor_bam} -I ${normal_bams}" + """ + INDEX=`find -L ./ -name "*.bis.amb" | sed 's/.bis.amb//'` + + biscuit pileup \\ + -@ $biscuit_cpus \\ + $args \\ + \$INDEX \\ + $input \\ + | bgzip -@ $bgzip_cpus $args2 > ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + END_VERSIONS + """ +} diff --git a/modules/biscuit/pileup/meta.yml b/modules/biscuit/pileup/meta.yml new file mode 100644 index 00000000..399e3c2f --- /dev/null +++ b/modules/biscuit/pileup/meta.yml @@ -0,0 +1,70 @@ +name: biscuit_pileup +description: Computes cytosine methylation and callable SNV mutations, optionally in reference to a germline BAM to call somatic variants +keywords: + - bisulfite + - DNA methylation + - pileup + - variant calling + - WGBS + - scWGBS + - bam + - vcf +tools: + - biscuit: + description: A utility for analyzing sodium bisulfite conversion-based DNA methylation/modification data + homepage: https://huishenlab.github.io/biscuit/ + documentation: https://huishenlab.github.io/biscuit/docs/pileup.html + tool_dev_url: https://github.com/huishenlab/biscuit + doi: "" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - normal_bams: + type: file(s) + description: | + BAM files to be analyzed. If no tumor_bam file is provided, any number of "normal" BAMs may be provided + ("normal" here is just a semantic issue, these BAMs could be from tumor or any other kind of tissue). If a + tumor BAM file is provided, exactly one normal (germline) BAM must be provided. + pattern: "*.{bam}" + - normal_bais: + type: file(s) + description: BAM index file or files corresponding to the provided normal_bams + pattern: "*.{bai}" + - tumor_bam: + type: file(s) + description: | + Optional. If a tumor BAM file is provided, pileup will run in "somatic" mode and will annotate variants with + their somatic state (present in tumor only, present in normal only, present in both, etc). Note that if a + tumor BAM file is provided, exactly one normal BAM must be provided. + pattern: "*.{bam}" + - tumor_bai: + type: file(s) + description: Optional. BAM index file corresponding to provided tumor_bam + pattern: "*.{bai}" + - index: + type: dir + description: Biscuit genome index directory (generated with 'biscuit index') + pattern: "BiscuitIndex" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - vcf: + type: file + description: vcf file with methylation information + pattern: "*.{vcf.gz}" + +authors: + - "@njspix" diff --git a/modules/biscuit/qc/main.nf b/modules/biscuit/qc/main.nf new file mode 100644 index 00000000..dea6473b --- /dev/null +++ b/modules/biscuit/qc/main.nf @@ -0,0 +1,40 @@ +process BISCUIT_QC { + tag "$meta.id" + label 'process_long' + + conda (params.enable_conda ? "bioconda::biscuit=1.0.2.20220113" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/biscuit:1.0.2.20220113--h81a5ba2_0': + 'quay.io/biocontainers/biscuit:1.0.2.20220113--h81a5ba2_0' }" + + input: + tuple val(meta), path(bam) + path(index) + + output: + tuple val(meta), path("*.txt"), emit: biscuit_qc_reports + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def se = meta.single_end ? "-s" : "" + """ + INDEX=`find -L ./ -name "*.bis.amb" | sed 's/.bis.amb//'` + + biscuit qc \\ + $args \\ + $se \\ + \$INDEX \\ + $bam \\ + $prefix + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + END_VERSIONS + """ +} diff --git a/modules/biscuit/qc/meta.yml b/modules/biscuit/qc/meta.yml new file mode 100644 index 00000000..a3e65a90 --- /dev/null +++ b/modules/biscuit/qc/meta.yml @@ -0,0 +1,51 @@ +name: biscuit_qc +description: Perform basic quality control on a BAM file generated with Biscuit +keywords: + - biscuit + - DNA methylation + - WGBS + - scWGBS + - bisulfite sequencing + - index + - BAM + - quality control + +tools: + - biscuit: + description: A utility for analyzing sodium bisulfite conversion-based DNA methylation/modification data + homepage: https://huishenlab.github.io/biscuit/ + documentation: https://huishenlab.github.io/biscuit/docs/subcommand_help.html#biscuit-qc + tool_dev_url: https://github.com/huishenlab/biscuit + doi: "" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM file produced using Biscuit + +output: + - biscuit_qc_reports: + type: file + description: | + Summary files containing the following information: + - CpG retention by position in read + - CpH retention by position in read + - Read duplication statistics + - Insert size distribution + - Distribution of mapping qualities + - Proportion of reads mapping to each strand + - Read-averaged cytosine conversion rate for CpA, CpC, CpG, and CpT + pattern: "*.txt" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@njspix" diff --git a/modules/biscuit/vcf2bed/main.nf b/modules/biscuit/vcf2bed/main.nf new file mode 100644 index 00000000..7bbcc826 --- /dev/null +++ b/modules/biscuit/vcf2bed/main.nf @@ -0,0 +1,39 @@ +process BISCUIT_VCF2BED { + tag "$meta.id" + label 'process_long' + + conda (params.enable_conda ? "bioconda::biscuit=1.0.2.20220113 bioconda::samtools=1.15" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0': + 'quay.io/biocontainers/mulled-v2-db16f1c237a26ea9245cf9924f858974ff321d6e:17fa66297f088a1bc7560b7b90dc273bf23f2d8c-0' }" + + input: + tuple val(meta), path(vcf) + + output: + tuple val(meta), path("*.bed.gz"), emit: bed + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + biscuit vcf2bed \\ + $args \\ + $vcf | \\ + LC_ALL=C sort -k1,1 -k2,2n | \\ + bgzip \\ + $args2 \\ + -c > ${prefix}.bed.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$(echo \$(biscuit version 2>&1) | sed 's/^.*BISCUIT Version: //; s/Using.*\$//') + samtools: \$( samtools --version |& sed '1!d; s/^.*samtools //' ) + END_VERSIONS + """ +} diff --git a/modules/biscuit/vcf2bed/meta.yml b/modules/biscuit/vcf2bed/meta.yml new file mode 100644 index 00000000..c34d5a4d --- /dev/null +++ b/modules/biscuit/vcf2bed/meta.yml @@ -0,0 +1,48 @@ +name: biscuit_vcf2bed +description: | + Summarizes methylation or SNV information from a Biscuit VCF in a + standard-compliant BED file. +keywords: + - biscuit + - DNA methylation + - WGBS + - scWGBS + - bisulfite sequencing + - aligner + - vcf +tools: + - biscuit: + description: A utility for analyzing sodium bisulfite conversion-based DNA methylation/modification data + homepage: https://huishenlab.github.io/biscuit/ + documentation: https://huishenlab.github.io/biscuit/docs/methylextraction.html + tool_dev_url: https://github.com/huishenlab/biscuit + doi: "" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: Biscuit vcf file (output of biscuit pileup) + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: Gzipped BED file with methylation or SNV information + pattern: "*.{bed.gz}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@njspix" diff --git a/tests/config/nextflow.config b/tests/config/nextflow.config index 741edf5e..4ea085f9 100644 --- a/tests/config/nextflow.config +++ b/tests/config/nextflow.config @@ -28,5 +28,5 @@ conda { createTimeout = "120 min" } includeConfig 'test_data.config' manifest { - nextflowVersion = '!>=21.10.3' + nextflowVersion = '!>=21.10.0' } diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 5c110ba7..6ecab096 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -198,6 +198,49 @@ bedtools/subtract: - modules/bedtools/subtract/** - tests/modules/bedtools/subtract/** +biscuit/align: + - modules/biscuit/index/** + - modules/biscuit/align/** + - tests/modules/biscuit/align/** + +biscuit/biscuitblaster: + - modules/biscuit/index/** + - modules/biscuit/biscuitblaster/** + - tests/modules/biscuit/biscuitblaster/** + +biscuit/bsconv: + - modules/biscuit/index/** + - modules/biscuit/bsconv/** + - tests/modules/biscuit/bsconv/** + +biscuit/epiread: + - modules/biscuit/index/** + - modules/biscuit/epiread/** + - tests/modules/biscuit/epiread/** + +biscuit/index: + - modules/biscuit/index/** + - tests/modules/biscuit/index/** + +biscuit/mergecg: + - modules/biscuit/index/** + - modules/biscuit/mergecg/** + - tests/modules/biscuit/mergecg/** + +biscuit/pileup: + - modules/biscuit/index/** + - modules/biscuit/pileup/** + - tests/modules/biscuit/pileup/** + +biscuit/qc: + - modules/biscuit/index/** + - modules/biscuit/qc/** + - tests/modules/biscuit/qc/** + +biscuit/vcf2bed: + - modules/biscuit/vcf2bed/** + - tests/modules/biscuit/vcf2bed/** + biobambam/bammarkduplicates2: - modules/biobambam/bammarkduplicates2/** - tests/modules/biobambam/bammarkduplicates2/** diff --git a/tests/modules/biscuit/align/main.nf b/tests/modules/biscuit/align/main.nf new file mode 100644 index 00000000..f3e3cb64 --- /dev/null +++ b/tests/modules/biscuit/align/main.nf @@ -0,0 +1,33 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { BISCUIT_INDEX } from '../../../../modules/biscuit/index/main.nf' +include { BISCUIT_ALIGN as BISCUIT_ALIGN_SE } from '../../../../modules/biscuit/align/main.nf' +include { BISCUIT_ALIGN as BISCUIT_ALIGN_PE } from '../../../../modules/biscuit/align/main.nf' + + +// Single-end test +workflow test_biscuit_align_single { + + input = [ [ id:'test' ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true) ] + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX ( fasta ) + BISCUIT_ALIGN_SE (input, BISCUIT_INDEX.out.index ) +} + +// paired-end test +workflow test_biscuit_align_paired { + + input = [ [ id:'test' ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_methylated_2_fastq_gz'], checkIfExists: true) ] + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX ( fasta ) + BISCUIT_ALIGN_SE (input, BISCUIT_INDEX.out.index ) +} diff --git a/tests/modules/biscuit/align/nextflow.config b/tests/modules/biscuit/align/nextflow.config new file mode 100644 index 00000000..8730f1c4 --- /dev/null +++ b/tests/modules/biscuit/align/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/tests/modules/biscuit/align/test.yml b/tests/modules/biscuit/align/test.yml new file mode 100644 index 00000000..bf778ff5 --- /dev/null +++ b/tests/modules/biscuit/align/test.yml @@ -0,0 +1,53 @@ +- name: biscuit align test_biscuit_align_single + command: nextflow run tests/modules/biscuit/align -entry test_biscuit_align_single -c tests/config/nextflow.config + tags: + - biscuit + - biscuit/align + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test.bam + md5sum: eb36532425cb9b259410d6464a9e523a + - path: output/biscuit/versions.yml + md5sum: a86c4170bbf90cc75b93eb59ea124acd + +- name: biscuit align test_biscuit_align_paired + command: nextflow run tests/modules/biscuit/align -entry test_biscuit_align_paired -c tests/config/nextflow.config + tags: + - biscuit + - biscuit/align + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test.bam + md5sum: be3f6aa86c499d6a6b2996e5936e4f50 + - path: output/biscuit/versions.yml + md5sum: f0b7dffd28f5e6bb1466fce6661d133f diff --git a/tests/modules/biscuit/biscuitblaster/main.nf b/tests/modules/biscuit/biscuitblaster/main.nf new file mode 100644 index 00000000..5e4bc95a --- /dev/null +++ b/tests/modules/biscuit/biscuitblaster/main.nf @@ -0,0 +1,32 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { BISCUIT_INDEX } from '../../../../modules/biscuit/index/main.nf' +include { BISCUIT_BLASTER as BISCUIT_BLASTER_SE } from '../../../../modules/biscuit/biscuitblaster/main.nf' +include { BISCUIT_BLASTER as BISCUIT_BLASTER_PE } from '../../../../modules/biscuit/biscuitblaster/main.nf' + +// Single-end test +workflow test_biscuit_blaster_single { + + input = [ [ id:'test' ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true) ] + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX ( fasta ) + BISCUIT_BLASTER_SE (input, BISCUIT_INDEX.out.index ) +} + +// paired-end test +workflow test_biscuit_blaster_paired { + + input = [ [ id:'test' ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_methylated_2_fastq_gz'], checkIfExists: true) ] + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX ( fasta ) + BISCUIT_BLASTER_PE (input, BISCUIT_INDEX.out.index ) +} diff --git a/tests/modules/biscuit/biscuitblaster/nextflow.config b/tests/modules/biscuit/biscuitblaster/nextflow.config new file mode 100644 index 00000000..8730f1c4 --- /dev/null +++ b/tests/modules/biscuit/biscuitblaster/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/tests/modules/biscuit/biscuitblaster/test.yml b/tests/modules/biscuit/biscuitblaster/test.yml new file mode 100644 index 00000000..37bb6543 --- /dev/null +++ b/tests/modules/biscuit/biscuitblaster/test.yml @@ -0,0 +1,57 @@ +- name: biscuit biscuitblaster test_biscuit_blaster_single + command: nextflow run tests/modules/biscuit/biscuitblaster -entry test_biscuit_blaster_single -c tests/config/nextflow.config + tags: + - biscuit/biscuitblaster + - biscuit + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test.bam + md5sum: 9ece50b67349382d38b20c2702e65675 + - path: output/biscuit/test.bam.bai + md5sum: 8f14bb42fd38cc7ce4a3c3a9d7133ea4 + - path: output/biscuit/versions.yml + md5sum: bfb660b5b0d92dde6817a1c6a2a302bb + +- name: biscuit biscuitblaster test_biscuit_blaster_paired + command: nextflow run tests/modules/biscuit/biscuitblaster -entry test_biscuit_blaster_paired -c tests/config/nextflow.config + tags: + - biscuit/biscuitblaster + - biscuit + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test.bam + md5sum: 0c6de35f38003df6ea5dd036170df91b + - path: output/biscuit/test.bam.bai + md5sum: 0d76977b2e36046cc176112776c5fa4e + - path: output/biscuit/versions.yml + md5sum: 82160a7ad29ccc3a21e59b1869399c04 diff --git a/tests/modules/biscuit/bsconv/main.nf b/tests/modules/biscuit/bsconv/main.nf new file mode 100644 index 00000000..f7338869 --- /dev/null +++ b/tests/modules/biscuit/bsconv/main.nf @@ -0,0 +1,19 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { BISCUIT_INDEX } from '../../../../modules/biscuit/index/main.nf' +include { BISCUIT_BSCONV } from '../../../../modules/biscuit/bsconv/main.nf' + +workflow test_biscuit_bsconv { + + input = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam_bai'], checkIfExists: true) + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX( fasta ) + BISCUIT_BSCONV ( input, BISCUIT_INDEX.out.index ) +} diff --git a/tests/modules/biscuit/bsconv/nextflow.config b/tests/modules/biscuit/bsconv/nextflow.config new file mode 100644 index 00000000..133905d0 --- /dev/null +++ b/tests/modules/biscuit/bsconv/nextflow.config @@ -0,0 +1,10 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: '.*BISCUIT_BSCONV' { + ext.args = '-f 0.1' + } + +} + diff --git a/tests/modules/biscuit/bsconv/test.yml b/tests/modules/biscuit/bsconv/test.yml new file mode 100644 index 00000000..528a4fe5 --- /dev/null +++ b/tests/modules/biscuit/bsconv/test.yml @@ -0,0 +1,26 @@ +- name: biscuit bsconv test_biscuit_bsconv + command: nextflow run tests/modules/biscuit/bsconv -entry test_biscuit_bsconv -c tests/config/nextflow.config + tags: + - biscuit + - biscuit/bsconv + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test.bam + md5sum: e33e9498d00dd32222b90a6bd981226f + - path: output/biscuit/versions.yml + md5sum: 7deec1f096203542bbb72ac4fa05f9ba diff --git a/tests/modules/biscuit/epiread/main.nf b/tests/modules/biscuit/epiread/main.nf new file mode 100644 index 00000000..54a73ae3 --- /dev/null +++ b/tests/modules/biscuit/epiread/main.nf @@ -0,0 +1,48 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { BISCUIT_INDEX } from '../../../../modules/biscuit/index/main.nf' +include { BISCUIT_EPIREAD } from '../../../../modules/biscuit/epiread/main.nf' + +workflow test_biscuit_epiread_nosnp { + + input = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam_bai'], checkIfExists: true), + [] //SNP BED file + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX( fasta ) + BISCUIT_EPIREAD ( input, BISCUIT_INDEX.out.index ) +} + +workflow test_biscuit_epiread_snp { + + input = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam_bai'], checkIfExists: true), + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/biscuit/test-snp.bed') + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX( fasta ) + BISCUIT_EPIREAD ( input, BISCUIT_INDEX.out.index ) +} + +workflow test_biscuit_epiread_snp_decompress { + + input = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam_bai'], checkIfExists: true), + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/biscuit/test-snp.bed.gz') + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX( fasta ) + BISCUIT_EPIREAD ( input, BISCUIT_INDEX.out.index ) +} diff --git a/tests/modules/biscuit/epiread/nextflow.config b/tests/modules/biscuit/epiread/nextflow.config new file mode 100644 index 00000000..8730f1c4 --- /dev/null +++ b/tests/modules/biscuit/epiread/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/tests/modules/biscuit/epiread/test.yml b/tests/modules/biscuit/epiread/test.yml new file mode 100644 index 00000000..1db86982 --- /dev/null +++ b/tests/modules/biscuit/epiread/test.yml @@ -0,0 +1,80 @@ +- name: biscuit epiread test_biscuit_epiread_nosnp + command: nextflow run tests/modules/biscuit/epiread -entry test_biscuit_epiread_nosnp -c tests/config/nextflow.config + tags: + - biscuit + - biscuit/epiread + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test.bed.gz + md5sum: dbb30b59f4ef6fdfdee38630225c0574 + - path: output/biscuit/versions.yml + md5sum: 674a77ac5ca8f4b42d30e58e30c3a9af + +- name: biscuit epiread test_biscuit_epiread_snp + command: nextflow run tests/modules/biscuit/epiread -entry test_biscuit_epiread_snp -c tests/config/nextflow.config + tags: + - biscuit + - biscuit/epiread + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test.bed.gz + md5sum: a29fea6ad74453ec94f8220747dab906 + - path: output/biscuit/versions.yml + md5sum: f2f7c4ff3c6a135b1c8a3aff24a44d81 + +- name: biscuit epiread test_biscuit_epiread_snp_decompress + command: nextflow run tests/modules/biscuit/epiread -entry test_biscuit_epiread_snp_decompress -c tests/config/nextflow.config + tags: + - biscuit + - biscuit/epiread + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test.bed.gz + md5sum: a29fea6ad74453ec94f8220747dab906 + - path: output/biscuit/versions.yml + md5sum: cb0258ebf4e1a731a4310ec17c3dc442 diff --git a/tests/modules/biscuit/index/main.nf b/tests/modules/biscuit/index/main.nf new file mode 100644 index 00000000..c13d441b --- /dev/null +++ b/tests/modules/biscuit/index/main.nf @@ -0,0 +1,12 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { BISCUIT_INDEX } from '../../../../modules/biscuit/index/main.nf' + +workflow test_biscuit_index { + + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX ( fasta ) +} diff --git a/tests/modules/biscuit/index/nextflow.config b/tests/modules/biscuit/index/nextflow.config new file mode 100644 index 00000000..8730f1c4 --- /dev/null +++ b/tests/modules/biscuit/index/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/tests/modules/biscuit/index/test.yml b/tests/modules/biscuit/index/test.yml new file mode 100644 index 00000000..a2e4cb67 --- /dev/null +++ b/tests/modules/biscuit/index/test.yml @@ -0,0 +1,24 @@ +- name: biscuit index test_biscuit_index + command: nextflow run tests/modules/biscuit/index -entry test_biscuit_index -c tests/config/nextflow.config + tags: + - biscuit/index + - biscuit + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/versions.yml + md5sum: 5c5873e482a57966db246648ffddf62f diff --git a/tests/modules/biscuit/mergecg/main.nf b/tests/modules/biscuit/mergecg/main.nf new file mode 100644 index 00000000..7d51f3b8 --- /dev/null +++ b/tests/modules/biscuit/mergecg/main.nf @@ -0,0 +1,18 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { BISCUIT_INDEX } from '../../../../modules/biscuit/index/main.nf' +include { BISCUIT_MERGECG } from '../../../../modules/biscuit/mergecg/main.nf' + +workflow test_biscuit_mergecg { + + input = [ + [ id:'test', single_end:false ], // meta map + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/biscuit/test-cg.bed.gz', checkIfExists: true) + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX( fasta ) + BISCUIT_MERGECG ( input, BISCUIT_INDEX.out.index ) +} diff --git a/tests/modules/biscuit/mergecg/nextflow.config b/tests/modules/biscuit/mergecg/nextflow.config new file mode 100644 index 00000000..8730f1c4 --- /dev/null +++ b/tests/modules/biscuit/mergecg/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/tests/modules/biscuit/mergecg/test.yml b/tests/modules/biscuit/mergecg/test.yml new file mode 100644 index 00000000..7b2408bb --- /dev/null +++ b/tests/modules/biscuit/mergecg/test.yml @@ -0,0 +1,26 @@ +- name: biscuit mergecg test_biscuit_mergecg + command: nextflow run tests/modules/biscuit/mergecg -entry test_biscuit_mergecg -c tests/config/nextflow.config + tags: + - biscuit + - biscuit/mergecg + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test.bed.gz + md5sum: d693b28ddc81265f388860d391fc7c5b + - path: output/biscuit/versions.yml + md5sum: f670d63671af06bf8654677bf373b3a1 diff --git a/tests/modules/biscuit/pileup/main.nf b/tests/modules/biscuit/pileup/main.nf new file mode 100644 index 00000000..cf1914ec --- /dev/null +++ b/tests/modules/biscuit/pileup/main.nf @@ -0,0 +1,38 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { BISCUIT_INDEX } from '../../../../modules/biscuit/index/main.nf' +include { BISCUIT_PILEUP } from '../../../../modules/biscuit/pileup/main.nf' + +workflow test_biscuit_pileup { + + input = [ [ id:'test' ], // meta map + [file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_sorted_bam'], checkIfExists: true)], + [file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_sorted_bam_bai'], checkIfExists: true)], + [], //tumor bam + [] //tumor bai + ] + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX ( fasta ) + BISCUIT_PILEUP ( input, BISCUIT_INDEX.out.index ) + +} + +workflow test_biscuit_pileup_somatic { + + input = [ [ id:'test' ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_sorted_bam_bai'], checkIfExists: true) + ] + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX ( fasta ) + BISCUIT_PILEUP ( input, BISCUIT_INDEX.out.index ) + +} diff --git a/tests/modules/biscuit/pileup/nextflow.config b/tests/modules/biscuit/pileup/nextflow.config new file mode 100644 index 00000000..8730f1c4 --- /dev/null +++ b/tests/modules/biscuit/pileup/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/tests/modules/biscuit/pileup/test.yml b/tests/modules/biscuit/pileup/test.yml new file mode 100644 index 00000000..ad840737 --- /dev/null +++ b/tests/modules/biscuit/pileup/test.yml @@ -0,0 +1,53 @@ +- name: biscuit pileup test_biscuit_pileup + command: nextflow run tests/modules/biscuit/pileup -entry test_biscuit_pileup -c tests/config/nextflow.config + tags: + - biscuit + - biscuit/pileup + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: f315020d899597c1b57e5fe9f60f4c3e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 1891c1de381b3a96d4e72f590fde20c1 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: 2df4aa2d7580639fa0fcdbcad5e2e969 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 8569fbdb2c98c6fb16dfa73d8eacb070 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: 668799eea40aefb8013cbf8ed6c47cfe + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 10541b05bbea44d0344b0345a6522ba8 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 2c38edd64234420add133f5fe1ff975d + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 7deee1aac3395d93bef1df11ab38379e + - path: output/biscuit/test.vcf.gz + md5sum: ef9798c318ead0f8a79ee7fdeb1ffbf9 + - path: output/biscuit/versions.yml + md5sum: ae38b891fdbf9f7ff5c486408f949dc5 + +- name: biscuit pileup test_biscuit_pileup_somatic + command: nextflow run tests/modules/biscuit/pileup -entry test_biscuit_pileup_somatic -c tests/config/nextflow.config + tags: + - biscuit + - biscuit/pileup + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: f315020d899597c1b57e5fe9f60f4c3e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 1891c1de381b3a96d4e72f590fde20c1 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: 2df4aa2d7580639fa0fcdbcad5e2e969 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 8569fbdb2c98c6fb16dfa73d8eacb070 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: 668799eea40aefb8013cbf8ed6c47cfe + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 10541b05bbea44d0344b0345a6522ba8 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 2c38edd64234420add133f5fe1ff975d + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 7deee1aac3395d93bef1df11ab38379e + - path: output/biscuit/test.vcf.gz + md5sum: 692b4a6191b08fabe5efa5abe00da420 + - path: output/biscuit/versions.yml + md5sum: cc51fd498d67fdc7cc067686eb855b93 diff --git a/tests/modules/biscuit/qc/main.nf b/tests/modules/biscuit/qc/main.nf new file mode 100644 index 00000000..7c6d61cd --- /dev/null +++ b/tests/modules/biscuit/qc/main.nf @@ -0,0 +1,18 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { BISCUIT_INDEX } from '../../../../modules/biscuit/index/main.nf' +include { BISCUIT_QC } from '../../../../modules/biscuit/qc/main.nf' + +workflow test_biscuit_qc { + + input = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam'], checkIfExists: true) + ] + fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + + BISCUIT_INDEX( fasta ) + BISCUIT_QC ( input, BISCUIT_INDEX.out.index ) +} diff --git a/tests/modules/biscuit/qc/nextflow.config b/tests/modules/biscuit/qc/nextflow.config new file mode 100644 index 00000000..8730f1c4 --- /dev/null +++ b/tests/modules/biscuit/qc/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/tests/modules/biscuit/qc/test.yml b/tests/modules/biscuit/qc/test.yml new file mode 100644 index 00000000..ed33dd30 --- /dev/null +++ b/tests/modules/biscuit/qc/test.yml @@ -0,0 +1,38 @@ +- name: biscuit qc test_biscuit_qc + command: nextflow run tests/modules/biscuit/qc -entry test_biscuit_qc -c tests/config/nextflow.config + tags: + - biscuit/qc + - biscuit + files: + - path: output/biscuit/BiscuitIndex/genome.fasta + md5sum: 6e9fe4042a72f2345f644f239272b7e6 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.amb + md5sum: 3a68b8b2287e07dd3f5f95f4344ba76e + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.ann + md5sum: c32e11f6c859f166c7525a9c1d583567 + - path: output/biscuit/BiscuitIndex/genome.fasta.bis.pac + md5sum: 983e3d2cd6f36e2546e6d25a0da78d66 + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.bwt + md5sum: a11bc31775f7b7a4f9cd3bc4f981661a + - path: output/biscuit/BiscuitIndex/genome.fasta.dau.sa + md5sum: 9c9e07fa1c75ef32d764274579c89b08 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.bwt + md5sum: 62eb83cd557a47b59589713d98024fc2 + - path: output/biscuit/BiscuitIndex/genome.fasta.par.sa + md5sum: 55bcd97d7059bf73dc0d221e36e8e901 + - path: output/biscuit/test_CpGRetentionByReadPos.txt + md5sum: 498b6c0af196fb34c8835371b9e9b68a + - path: output/biscuit/test_CpHRetentionByReadPos.txt + md5sum: a266942c5719cecab7f60f63cbe7335d + - path: output/biscuit/test_dup_report.txt + md5sum: 65bddf4fbe9e40d7c6c976060df53e3b + - path: output/biscuit/test_isize_table.txt + md5sum: aadf6f2e271abc334b6146cf164bdda3 + - path: output/biscuit/test_mapq_table.txt + md5sum: c8adaac84bb8db3b7f48e1ed4fccad00 + - path: output/biscuit/test_strand_table.txt + md5sum: 27068382ba6b2dbf313169a85c9dbb3a + - path: output/biscuit/test_totalReadConversionRate.txt + md5sum: 8f0c1fceaebfa74f2757720e3bc85fed + - path: output/biscuit/versions.yml + md5sum: a730fa4888e6882cf1b8ba92645b04ee diff --git a/tests/modules/biscuit/vcf2bed/main.nf b/tests/modules/biscuit/vcf2bed/main.nf new file mode 100644 index 00000000..25597d49 --- /dev/null +++ b/tests/modules/biscuit/vcf2bed/main.nf @@ -0,0 +1,16 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { BISCUIT_VCF2BED } from '../../../../modules/biscuit/vcf2bed/main.nf' + +workflow test_biscuit_vcf2bed { + + input = [ + [ id:'test', single_end:false ], // meta map + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/biscuit/test.vcf.gz', checkIfExists: true) + ] + + BISCUIT_VCF2BED ( input ) + +} diff --git a/tests/modules/biscuit/vcf2bed/nextflow.config b/tests/modules/biscuit/vcf2bed/nextflow.config new file mode 100644 index 00000000..8730f1c4 --- /dev/null +++ b/tests/modules/biscuit/vcf2bed/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/tests/modules/biscuit/vcf2bed/test.yml b/tests/modules/biscuit/vcf2bed/test.yml new file mode 100644 index 00000000..7eaa2972 --- /dev/null +++ b/tests/modules/biscuit/vcf2bed/test.yml @@ -0,0 +1,10 @@ +- name: biscuit vcf2bed test_biscuit_vcf2bed + command: nextflow run tests/modules/biscuit/vcf2bed -entry test_biscuit_vcf2bed -c tests/config/nextflow.config + tags: + - biscuit/vcf2bed + - biscuit + files: + - path: output/biscuit/test.bed.gz + md5sum: e2dd492289dc8463f364285e31b9553a + - path: output/biscuit/versions.yml + md5sum: cd784276e2fb6739d55e1b60d12202cd