diff --git a/modules/qualimap/bamqc/main.nf b/modules/qualimap/bamqc/main.nf index 4bff0254..92f38f8c 100644 --- a/modules/qualimap/bamqc/main.nf +++ b/modules/qualimap/bamqc/main.nf @@ -10,7 +10,6 @@ process QUALIMAP_BAMQC { input: tuple val(meta), path(bam) path gff - val use_gff output: tuple val(meta), path("${prefix}"), emit: results @@ -25,7 +24,7 @@ process QUALIMAP_BAMQC { def collect_pairs = meta.single_end ? '' : '--collect-overlap-pairs' def memory = task.memory.toGiga() + "G" - def regions = use_gff ? "--gff $gff" : '' + def regions = gff ? "--gff $gff" : '' def strandedness = 'non-strand-specific' if (meta.strandedness == 'forward') { diff --git a/modules/qualimap/bamqc/meta.yml b/modules/qualimap/bamqc/meta.yml index cf7cfb4f..303532eb 100644 --- a/modules/qualimap/bamqc/meta.yml +++ b/modules/qualimap/bamqc/meta.yml @@ -29,9 +29,6 @@ input: type: file description: Feature file with regions of interest pattern: "*.{gff,gtf,bed}" - - use_gff: - type: boolean - description: Specifies if feature file should be used or not output: - meta: type: map diff --git a/modules/qualimap/bamqccram/main.nf b/modules/qualimap/bamqccram/main.nf new file mode 100644 index 00000000..b9a5538d --- /dev/null +++ b/modules/qualimap/bamqccram/main.nf @@ -0,0 +1,60 @@ +process QUALIMAP_BAMQCCRAM { + tag "$meta.id" + label 'process_medium' + + conda (params.enable_conda ? "bioconda::qualimap=2.2.2d bioconda::samtools=1.12" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-d3934ca6bb4e61334891ffa2e9a4c87a530e3188:4bf11d12f2c3eccf1eb585097c0b6fd31c18c418-0' : + 'quay.io/biocontainers/mulled-v2-d3934ca6bb4e61334891ffa2e9a4c87a530e3188:4bf11d12f2c3eccf1eb585097c0b6fd31c18c418-0' }" + + input: + tuple val(meta), path(cram), path(crai) + path gff + path fasta + path fasta_fai + + output: + tuple val(meta), path("${prefix}"), emit: results + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + + def collect_pairs = meta.single_end ? '' : '--collect-overlap-pairs' + def memory = task.memory.toGiga() + "G" + def regions = gff ? "--gff $gff" : '' + + def strandedness = 'non-strand-specific' + if (meta.strandedness == 'forward') { + strandedness = 'strand-specific-forward' + } else if (meta.strandedness == 'reverse') { + strandedness = 'strand-specific-reverse' + } + """ + unset DISPLAY + mkdir tmp + export _JAVA_OPTIONS=-Djava.io.tmpdir=./tmp + + samtools view -hb -T ${fasta} ${cram} | + qualimap \\ + --java-mem-size=$memory \\ + bamqc \\ + $args \\ + -bam /dev/stdin \\ + $regions \\ + -p $strandedness \\ + $collect_pairs \\ + -outdir $prefix \\ + -nt $task.cpus + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + qualimap: \$(echo \$(qualimap 2>&1) | sed 's/^.*QualiMap v.//; s/Built.*\$//') + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ +} diff --git a/modules/qualimap/bamqccram/meta.yml b/modules/qualimap/bamqccram/meta.yml new file mode 100644 index 00000000..d72f203d --- /dev/null +++ b/modules/qualimap/bamqccram/meta.yml @@ -0,0 +1,51 @@ +name: qualimap_bamqccram +description: Evaluate alignment data +keywords: + - quality control + - qc + - bam +tools: + - qualimap: + description: | + Qualimap 2 is a platform-independent application written in + Java and R that provides both a Graphical User Interface and + a command-line interface to facilitate the quality control of + alignment sequencing data and its derivatives like feature counts. + homepage: http://qualimap.bioinfo.cipf.es/ + documentation: http://qualimap.conesalab.org/doc_html/index.html + doi: 10.1093/bioinformatics/bts503 + licence: ["GPL-2.0-only"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bacramm: + type: file + description: BAM file + pattern: "*.{bam}" + - gff: + type: file + description: Feature file with regions of interest + pattern: "*.{gff,gtf,bed}" + - fasta: + type: file + description: Reference file of cram file + pattern: "*.{fasta,fa,fna}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - results: + type: dir + description: Qualimap results dir + pattern: "*/*" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@FriederikeHanssen" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 317207e8..8ed68dca 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -1233,6 +1233,10 @@ qualimap/bamqc: - modules/qualimap/bamqc/** - tests/modules/qualimap/bamqc/** +qualimap/bamqccram: + - modules/qualimap/bamqccram/** + - tests/modules/qualimap/bamqccram/** + quast: - modules/quast/** - tests/modules/quast/** diff --git a/tests/modules/qualimap/bamqc/main.nf b/tests/modules/qualimap/bamqc/main.nf index a17efd59..623634e4 100644 --- a/tests/modules/qualimap/bamqc/main.nf +++ b/tests/modules/qualimap/bamqc/main.nf @@ -8,8 +8,7 @@ workflow test_qualimap_bamqc { input = [ [ id:'test', single_end:false ], // meta map [ file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] ] - gff = file("dummy_file.txt") - use_gff = false + gff = [] - QUALIMAP_BAMQC ( input, gff, use_gff ) + QUALIMAP_BAMQC ( input, gff ) } diff --git a/tests/modules/qualimap/bamqccram/main.nf b/tests/modules/qualimap/bamqccram/main.nf new file mode 100644 index 00000000..e4d8433e --- /dev/null +++ b/tests/modules/qualimap/bamqccram/main.nf @@ -0,0 +1,17 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { QUALIMAP_BAMQCCRAM } from '../../../../modules/qualimap/bamqccram/main.nf' + +workflow test_qualimap_bamqc { + input = [ [ id:'test', single_end:false ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true) + ] + gff = [] + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + fai = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + + QUALIMAP_BAMQCCRAM ( input, gff, fasta, fai ) +} diff --git a/tests/modules/qualimap/bamqccram/nextflow.config b/tests/modules/qualimap/bamqccram/nextflow.config new file mode 100644 index 00000000..50f50a7a --- /dev/null +++ b/tests/modules/qualimap/bamqccram/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} \ No newline at end of file diff --git a/tests/modules/qualimap/bamqccram/test.yml b/tests/modules/qualimap/bamqccram/test.yml new file mode 100644 index 00000000..49cf9b24 --- /dev/null +++ b/tests/modules/qualimap/bamqccram/test.yml @@ -0,0 +1,80 @@ +- name: qualimap bamqccram test_qualimap_bamqc + command: nextflow run tests/modules/qualimap/bamqccram -entry test_qualimap_bamqc -c tests/config/nextflow.config + tags: + - qualimap/bamqccram + - qualimap + files: + - path: ./output/qualimap/test/qualimapReport.html + - path: ./output/qualimap/test/genome_results.txt + md5sum: 61d8b36507652fd7d7db9583de708161 + - path: ./output/qualimap/test/css/plus.png + md5sum: 0125e6faa04e2cf0141a2d599d3bb220 + - path: ./output/qualimap/test/css/down-pressed.png + md5sum: ebe8979581eda700fb234a73c661a4b9 + - path: ./output/qualimap/test/css/underscore.js + md5sum: db5ba047a66617d4cd3e8c5099cc51db + - path: ./output/qualimap/test/css/ajax-loader.gif + md5sum: ae6667053ad118020b8e68ccf307b519 + - path: ./output/qualimap/test/css/searchtools.js + md5sum: d550841adeedc8ed47c40ee607620937 + - path: ./output/qualimap/test/css/up.png + - path: ./output/qualimap/test/css/file.png + - path: ./output/qualimap/test/css/up-pressed.png + - path: ./output/qualimap/test/css/down.png + - path: ./output/qualimap/test/css/minus.png + - path: ./output/qualimap/test/css/bgtop.png + - path: ./output/qualimap/test/css/comment.png + - path: ./output/qualimap/test/css/basic.css + md5sum: 25b2823342c0604924a2870eeb4e7e94 + - path: ./output/qualimap/test/css/report.css + md5sum: 7a5f09eaf7c176f966f4e8854168b812 + - path: ./output/qualimap/test/css/pygments.css + md5sum: d625a0adb949f181bd0d3f1432b0fa7f + - path: ./output/qualimap/test/css/comment-close.png + - path: ./output/qualimap/test/css/doctools.js + md5sum: 5ff571aa60e63f69c1890283e240ff8d + - path: ./output/qualimap/test/css/comment-bright.png + - path: ./output/qualimap/test/css/qualimap_logo_small.png + - path: ./output/qualimap/test/css/websupport.js + md5sum: 9e61e1e8a7433c56bd7e5a615affcf85 + - path: ./output/qualimap/test/css/agogo.css + md5sum: bd757b1a7ce6fdc0288ba148680f4583 + - path: ./output/qualimap/test/css/bgfooter.png + - path: ./output/qualimap/test/css/jquery.js + md5sum: 10092eee563dec2dca82b77d2cf5a1ae + - path: ./output/qualimap/test/raw_data_qualimapReport/insert_size_histogram.txt + md5sum: b7aeda7558e9b31f027f7dc530df90b8 + - path: ./output/qualimap/test/raw_data_qualimapReport/mapped_reads_nucleotide_content.txt + md5sum: 42774c6edd6e36538acbdb6ffbd019c2 + - path: ./output/qualimap/test/raw_data_qualimapReport/genome_fraction_coverage.txt + md5sum: 972a19d4846bf4e93ba32ae3dff5289c + - path: ./output/qualimap/test/raw_data_qualimapReport/mapping_quality_histogram.txt + md5sum: 4e3918da81202b52395a576f99c1a50f + - path: ./output/qualimap/test/raw_data_qualimapReport/insert_size_across_reference.txt + - path: ./output/qualimap/test/raw_data_qualimapReport/coverage_histogram.txt + md5sum: 353e74d2a6c4281686c9063de570a64d + - path: ./output/qualimap/test/raw_data_qualimapReport/mapping_quality_across_reference.txt + md5sum: 9bf33149528be9a0e154e4ba7cb89420 + - path: ./output/qualimap/test/raw_data_qualimapReport/mapped_reads_gc-content_distribution.txt + md5sum: be36d9346a402ba580718497d5075d06 + - path: ./output/qualimap/test/raw_data_qualimapReport/homopolymer_indels.txt + md5sum: b0e19fcfb60e5f039eb0986ef61ab3ed + - path: ./output/qualimap/test/raw_data_qualimapReport/duplication_rate_histogram.txt + md5sum: 76e80e4ce8d0e01bbd65f1c28f5a92e7 + - path: ./output/qualimap/test/raw_data_qualimapReport/coverage_across_reference.txt + md5sum: b609d33a1f98d24aa84a04e60513cbee + - path: ./output/qualimap/test/raw_data_qualimapReport/mapped_reads_clipping_profile.txt + md5sum: 7c86f7b225b99bc60008d7e4e55d6adb + - path: ./output/qualimap/test/images_qualimapReport/genome_reads_content_per_read_position.png + - path: ./output/qualimap/test/images_qualimapReport/genome_gc_content_per_window.png + - path: ./output/qualimap/test/images_qualimapReport/genome_coverage_0to50_histogram.png + - path: ./output/qualimap/test/images_qualimapReport/genome_uniq_read_starts_histogram.png + - path: ./output/qualimap/test/images_qualimapReport/genome_mapping_quality_across_reference.png + - path: ./output/qualimap/test/images_qualimapReport/genome_coverage_histogram.png + - path: ./output/qualimap/test/images_qualimapReport/genome_coverage_across_reference.png + - path: ./output/qualimap/test/images_qualimapReport/genome_homopolymer_indels.png + - path: ./output/qualimap/test/images_qualimapReport/genome_insert_size_histogram.png + - path: ./output/qualimap/test/images_qualimapReport/genome_mapping_quality_histogram.png + - path: ./output/qualimap/test/images_qualimapReport/genome_insert_size_across_reference.png + - path: ./output/qualimap/test/images_qualimapReport/genome_reads_clipping_profile.png + - path: ./output/qualimap/test/images_qualimapReport/genome_coverage_quotes.png