From 4ed5e4eff30922a1ba998441760d1f3537ca96b8 Mon Sep 17 00:00:00 2001 From: Benjamin Wingfield Date: Thu, 21 Oct 2021 17:04:15 +0100 Subject: [PATCH 01/14] New module: ucsc/liftover (#868) * add liftOver module * add liftover module tests * fix getProcessName * fix tests * fix out of date function * version numbers should be numeric * drop versions.yml from test.yml * Update modules/ucsc/liftover/main.nf Remove software name variable Co-authored-by: Jose Espinosa-Carrasco * Update tests/modules/ucsc/liftover/main.nf Use test chain file Co-authored-by: Jose Espinosa-Carrasco * add genome_chain_gz to test data config * update md5sum for new chain test data * Fix indentation in file declaration Co-authored-by: Jose Espinosa-Carrasco --- modules/ucsc/liftover/functions.nf | 78 ++++++++++++++++++++++++++++ modules/ucsc/liftover/main.nf | 48 +++++++++++++++++ modules/ucsc/liftover/meta.yml | 45 ++++++++++++++++ tests/config/pytest_modules.yml | 4 ++ tests/config/test_data.config | 1 + tests/modules/ucsc/liftover/main.nf | 14 +++++ tests/modules/ucsc/liftover/test.yml | 10 ++++ 7 files changed, 200 insertions(+) create mode 100644 modules/ucsc/liftover/functions.nf create mode 100644 modules/ucsc/liftover/main.nf create mode 100644 modules/ucsc/liftover/meta.yml create mode 100644 tests/modules/ucsc/liftover/main.nf create mode 100644 tests/modules/ucsc/liftover/test.yml diff --git a/modules/ucsc/liftover/functions.nf b/modules/ucsc/liftover/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/ucsc/liftover/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/ucsc/liftover/main.nf b/modules/ucsc/liftover/main.nf new file mode 100644 index 00000000..3739a1e5 --- /dev/null +++ b/modules/ucsc/liftover/main.nf @@ -0,0 +1,48 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +def VERSION = '377' + +process UCSC_LIFTOVER { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::ucsc-liftover=377" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/ucsc-liftover:377--h0b8a92a_3" + } else { + container "quay.io/biocontainers/ucsc-liftover:377--h0b8a92a_3" + } + + input: + tuple val(meta), path(bed) + path(chain) + + output: + tuple val(meta), path("*.lifted.bed") , emit: lifted + tuple val(meta), path("*.unlifted.bed"), emit: unlifted + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + + """ + liftOver \\ + $options.args \ + $bed \\ + $chain \\ + ${prefix}.lifted.bed \\ + ${prefix}.unlifted.bed + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$(echo "$VERSION") + END_VERSIONS + """ +} diff --git a/modules/ucsc/liftover/meta.yml b/modules/ucsc/liftover/meta.yml new file mode 100644 index 00000000..5c2febdc --- /dev/null +++ b/modules/ucsc/liftover/meta.yml @@ -0,0 +1,45 @@ +name: ucsc_liftover +description: convert between genome builds +keywords: + - liftOver +tools: + - ucsc: + description: Move annotations from one assembly to another + homepage: http://hgdownload.cse.ucsc.edu/admin/exe/ + documentation: None + tool_dev_url: None + doi: "" + licence: ['varies; see http://genome.ucsc.edu/license'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: Browser Extensible Data (BED) file + pattern: "*.{bed}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - version: + type: file + description: File containing software version + pattern: "versions.yml" + - lifted: + type: file + description: BED file containing successfully lifted variants + pattern: "*.{lifted.bed}" + - unlifted: + type: file + description: BED file containing variants that couldn't be lifted + pattern: "*.{unlifted.bed}" + +authors: + - "@nebfield" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 8f030bd8..99eb271c 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -1075,6 +1075,10 @@ ucsc/bigwigaverageoverbed: - modules/ucsc/bigwigaverageoverbed/** - tests/modules/ucsc/bigwigaverageoverbed/** +ucsc/liftover: + - modules/ucsc/liftover/** + - tests/modules/ucsc/liftover/** + ucsc/wigtobigwig: - modules/ucsc/wigtobigwig/** - tests/modules/ucsc/wigtobigwig/** diff --git a/tests/config/test_data.config b/tests/config/test_data.config index 744282cc..3c0308a0 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -109,6 +109,7 @@ params { genome_bed_gz_tbi = "${test_data_dir}/genomics/homo_sapiens/genome/genome.bed.gz.tbi" transcriptome_fasta = "${test_data_dir}/genomics/homo_sapiens/genome/transcriptome.fasta" genome2_fasta = "${test_data_dir}/genomics/homo_sapiens/genome/genome2.fasta" + genome_chain_gz = "${test_data_dir}/genomics/homo_sapiens/genome/genome.chain.gz" dbsnp_146_hg38_vcf_gz = "${test_data_dir}/genomics/homo_sapiens/genome/vcf/dbsnp_146.hg38.vcf.gz" dbsnp_146_hg38_vcf_gz_tbi = "${test_data_dir}/genomics/homo_sapiens/genome/vcf/dbsnp_146.hg38.vcf.gz.tbi" diff --git a/tests/modules/ucsc/liftover/main.nf b/tests/modules/ucsc/liftover/main.nf new file mode 100644 index 00000000..9670759a --- /dev/null +++ b/tests/modules/ucsc/liftover/main.nf @@ -0,0 +1,14 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { UCSC_LIFTOVER } from '../../../../modules/ucsc/liftover/main.nf' addParams( options: [:] ) + +workflow test_ucsc_liftover { + + input = [ [ id:'test', single_end:false ], // meta map + file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true)] + chain = file(params.test_data['homo_sapiens']['genome']['genome_chain_gz'], checkIfExists: true) + + UCSC_LIFTOVER ( input, chain ) +} diff --git a/tests/modules/ucsc/liftover/test.yml b/tests/modules/ucsc/liftover/test.yml new file mode 100644 index 00000000..74df6512 --- /dev/null +++ b/tests/modules/ucsc/liftover/test.yml @@ -0,0 +1,10 @@ +- name: ucsc liftover test_ucsc_liftover + command: nextflow run tests/modules/ucsc/liftover -entry test_ucsc_liftover -c tests/config/nextflow.config + tags: + - ucsc + - ucsc/liftover + files: + - path: output/ucsc/test.lifted.bed + md5sum: fd5878470257a8a0edeaa8b9374bd520 + - path: output/ucsc/test.unlifted.bed + md5sum: d41d8cd98f00b204e9800998ecf8427e From 32f6191aca1e15e74f12a6371f648e6eba42e513 Mon Sep 17 00:00:00 2001 From: Jose Espinosa-Carrasco Date: Fri, 22 Oct 2021 12:22:02 +0200 Subject: [PATCH 02/14] New module: genrich (#877) * Add genrich module * Rearrange genrich module from genrich/genrich to genrich * Remove copy/paste code * Fix meta.yml * Implement save_duplicates independently of -r opt --- modules/genrich/functions.nf | 78 +++++++++++++++++++++++++++++++++ modules/genrich/main.nf | 69 +++++++++++++++++++++++++++++ modules/genrich/meta.yml | 71 ++++++++++++++++++++++++++++++ tests/config/pytest_modules.yml | 4 ++ tests/config/test_data.config | 2 + tests/modules/genrich/main.nf | 44 +++++++++++++++++++ tests/modules/genrich/test.yml | 39 +++++++++++++++++ 7 files changed, 307 insertions(+) create mode 100644 modules/genrich/functions.nf create mode 100644 modules/genrich/main.nf create mode 100644 modules/genrich/meta.yml create mode 100644 tests/modules/genrich/main.nf create mode 100644 tests/modules/genrich/test.yml diff --git a/modules/genrich/functions.nf b/modules/genrich/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/genrich/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/genrich/main.nf b/modules/genrich/main.nf new file mode 100644 index 00000000..c947e9cf --- /dev/null +++ b/modules/genrich/main.nf @@ -0,0 +1,69 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GENRICH { + tag "$meta.id" + label 'process_high' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::genrich=0.6.1" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/genrich:0.6.1--h5bf99c6_1" + } else { + container "quay.io/biocontainers/genrich:0.6.1--h5bf99c6_1" + } + + input: + tuple val(meta), path(treatment_bam) + path control_bam + path blacklist_bed + + output: + tuple val(meta), path("*narrowPeak") , emit: peaks + tuple val(meta), path("*pvalues.bedGraph"), optional:true, emit: bedgraph_pvalues + tuple val(meta), path("*pileup.bedGraph") , optional:true, emit: bedgraph_pileup + tuple val(meta), path("*intervals.bed") , optional:true, emit: bed_intervals + tuple val(meta), path("*duplicates.txt") , optional:true, emit: duplicates + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + def control = params.control_bam ? "-c $control_bam" : '' + def pvalues = params.pvalues ? "-f ${prefix}.pvalues.bedGraph" : "" + def pileup = params.pileup ? "-k ${prefix}.pileup.bedGraph" : "" + def bed = params.bed ? "-b ${prefix}.intervals.bed" : "" + def blacklist = params.blacklist_bed ? "-E $blacklist_bed" : "" + def duplicates = "" + if (params.save_duplicates) { + if (options.args.contains('-r')) { + duplicates = "-R ${prefix}.duplicates.txt" + } else { + log.info '[Genrich] Duplicates can only be saved if they are filtered, defaulting to -r option (Remove PCR duplicates).' + duplicates = "-r -R ${prefix}.duplicates.txt" + } + } + """ + Genrich \\ + -t $treatment_bam \\ + $options.args \\ + $control \\ + $blacklist \\ + -o ${prefix}.narrowPeak \\ + $pvalues \\ + $pileup \\ + $bed \\ + $duplicates \\ + $blacklist \\ + $control + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$(echo \$(Genrich --version 2>&1) | sed 's/^Genrich, version //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/genrich/meta.yml b/modules/genrich/meta.yml new file mode 100644 index 00000000..8f7b004b --- /dev/null +++ b/modules/genrich/meta.yml @@ -0,0 +1,71 @@ +name: genrich +description: Peak-calling for ChIP-seq and ATAC-seq enrichment experiments +keywords: + - peak-calling + - ChIP-seq + - ATAC-seq +tools: + - genrich: + description: | + Genrich is a peak-caller for genomic enrichment assays (e.g. ChIP-seq, ATAC-seq). + It analyzes alignment files generated following the assay and produces a file + detailing peaks of significant enrichment. + homepage: https://github.com/jsh58/Genrich + documentation: https://github.com/jsh58/Genrich#readme + tool_dev_url: https://github.com/jsh58/Genrich + doi: "" + licence: ['MIT'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - treatment_bam: + type: file + description: Coordinate sorted BAM/SAM file from treatment sample + pattern: "*.{bam,sam}" + - control_bam: + type: file + description: Coordinate sorted BAM/SAM file from control sample + pattern: "*.{bam,sam}" + - blacklist_bed: + type: file + description: Bed file containing genomic intervals to exclude from the analysis + pattern: "*.{bed}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - peaks: + type: file + description: Output file is in ENCODE narrowPeak format + pattern: "*.{narrowPeak}" + - bedgraph_pvalues: + type: file + description: bedGraph file containing p/q values + pattern: "*.{pvalues.bedGraph}" + - bedgraph_pileup: + type: file + description: bedGraph file containing pileups and p-values + pattern: "*.{pileup.bedGraph}" + - bed_intervals: + type: file + description: Bed file containing annotated intervals + pattern: "*.{intervals.bed}" + - duplicates: + type: file + description: Text output file containing intervals corresponding to PCR duplicates + pattern: "*.{intervals.txt}" + - version: + type: file + description: File containing software version + pattern: "*.{version.txt}" + +authors: + - "@JoseEspinosa" + diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 99eb271c..7093790b 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -466,6 +466,10 @@ genmap/mappability: - modules/genmap/mappability/** - tests/modules/genmap/mappability/** +genrich: + - modules/genrich/** + - tests/modules/genrich/** + gffread: - modules/gffread/** - tests/modules/gffread/** diff --git a/tests/config/test_data.config b/tests/config/test_data.config index 3c0308a0..1abae34d 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -123,6 +123,7 @@ params { 'illumina' { test_paired_end_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam" test_paired_end_sorted_bam_bai = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai" + test_paired_end_name_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.name.sorted.bam" test_paired_end_markduplicates_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam" test_paired_end_markduplicates_sorted_bam_bai = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam.bai" test_paired_end_markduplicates_sorted_referencesn_txt = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.referencesn.txt" @@ -137,6 +138,7 @@ params { test2_paired_end_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam" test2_paired_end_sorted_bam_bai = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai" + test2_paired_end_name_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.name.sorted.bam" test2_paired_end_markduplicates_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.markduplicates.sorted.bam" test2_paired_end_markduplicates_sorted_bam_bai = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.markduplicates.sorted.bam.bai" test2_paired_end_recalibrated_sorted_bam = "${test_data_dir}/genomics/homo_sapiens/illumina/bam/test2.paired_end.recalibrated.sorted.bam" diff --git a/tests/modules/genrich/main.nf b/tests/modules/genrich/main.nf new file mode 100644 index 00000000..654b38e5 --- /dev/null +++ b/tests/modules/genrich/main.nf @@ -0,0 +1,44 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GENRICH } from '../../../modules/genrich/main.nf' addParams( control_bam: false, pvalues: false, pileup:false, bed:false, blacklist_bed:false, save_duplicates:false, options: ["args": "-p 0.1"] ) +include { GENRICH as GENRICH_BLACKLIST } from '../../../modules/genrich/main.nf' addParams( control_bam: false, pvalues: false, pileup:false, bed:false, blacklist_bed:true, save_duplicates:false, options: ["args": "-p 0.1"] ) +include { GENRICH as GENRICH_ALL_OUTPUTS } from '../../../modules/genrich/main.nf' addParams( control_bam: false, pvalues: true, pileup:true, bed:true, blacklist_bed:false, save_duplicates:true, options: ["args": "-r -p 0.1"] ) +include { GENRICH as GENRICH_ATACSEQ } from '../../../modules/genrich/main.nf' addParams( control_bam: false, pvalues: false, pileup:false, bed:false, blacklist_bed:false, save_duplicates:false, options: ["args": "-j -p 0.1"] ) + +workflow test_genrich { + input = [ [ id:'test', single_end:false ], // meta map + [ file( params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true) ]] + control = [ ] + blacklist = [ ] + + GENRICH ( input, control, blacklist ) +} + +workflow test_genrich_ctrl { + input = [ [ id:'test', single_end:false ], // meta map + [ file( params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true) ]] + control = [ file( params.test_data['homo_sapiens']['illumina']['test2_paired_end_name_sorted_bam'], checkIfExists: true) ] + blacklist = [ ] + + GENRICH ( input, control, blacklist ) +} + +workflow test_genrich_all_outputs { + input = [ [ id:'test', single_end:false ], // meta map + [ file( params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true) ]] + control = [ file( params.test_data['homo_sapiens']['illumina']['test2_paired_end_name_sorted_bam'], checkIfExists: true) ] + blacklist = [ ] + + GENRICH_ALL_OUTPUTS ( input, control, blacklist ) +} + +workflow test_genrich_atacseq { + input = [ [ id:'test', single_end:false ], // meta map + [ file( params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true) ]] + control = [ file( params.test_data['homo_sapiens']['illumina']['test2_paired_end_name_sorted_bam'], checkIfExists: true) ] + blacklist = [ ] + + GENRICH_ATACSEQ ( input, control, blacklist ) +} diff --git a/tests/modules/genrich/test.yml b/tests/modules/genrich/test.yml new file mode 100644 index 00000000..bd762f7c --- /dev/null +++ b/tests/modules/genrich/test.yml @@ -0,0 +1,39 @@ +- name: genrich test_genrich + command: nextflow run tests/modules/genrich -entry test_genrich -c tests/config/nextflow.config + tags: + - genrich + files: + - path: output/genrich/test.narrowPeak + md5sum: 6afabdd3f691c7c84c66ff8a23984681 + +- name: genrich test_genrich_ctrl + command: nextflow run tests/modules/genrich -entry test_genrich_ctrl -c tests/config/nextflow.config + tags: + - genrich + files: + - path: output/genrich/test.narrowPeak + md5sum: 6afabdd3f691c7c84c66ff8a23984681 + +- name: genrich test_genrich_all_outputs + command: nextflow run tests/modules/genrich -entry test_genrich_all_outputs -c tests/config/nextflow.config + tags: + - genrich + files: + - path: output/genrich/test.duplicates.txt + md5sum: a92893f905fd8b3751bc6a960fbfe7ba + - path: output/genrich/test.intervals.bed + md5sum: 52edf47e6641c0cc03f9cca7324f7eaa + - path: output/genrich/test.narrowPeak + md5sum: e45eb7d000387975050c2e85c164e5be + - path: output/genrich/test.pileup.bedGraph + md5sum: e4f7fa664cd4ed2cf3a1a3a9eb415e71 + - path: output/genrich/test.pvalues.bedGraph + md5sum: 564859953704983393d4b7d6317060cd + +- name: genrich test_genrich_atacseq + command: nextflow run tests/modules/genrich -entry test_genrich_atacseq -c tests/config/nextflow.config + tags: + - genrich + files: + - path: output/genrich/test.narrowPeak + md5sum: ddea556b820f8be3695ffdf6c6f70aff From 3aacd46da2b221ed47aaa05c413a828538d2c2ae Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 22 Oct 2021 15:39:54 -0700 Subject: [PATCH 03/14] Backfill software licenses meta (#876) * backfilled modules with meta.yml that had no license identifier * harmonized BSD license names * whitespace linting at modules/unzip/meta.yml:12 * harmonized software from US NIH-NCBI/NIST to 'US-Government-Work' * Update modules/bcftools/index/meta.yml `bcftools` is dual-licensed, use associative array to allow for multiple licenses Co-authored-by: Michael L Heuer Co-authored-by: Michael L Heuer --- modules/bandage/image/meta.yml | 1 + modules/bcftools/concat/meta.yml | 1 + modules/bcftools/consensus/meta.yml | 1 + modules/bcftools/filter/meta.yml | 1 + modules/bcftools/index/meta.yml | 2 +- modules/bcftools/isec/meta.yml | 1 + modules/bcftools/merge/meta.yml | 1 + modules/bcftools/mpileup/meta.yml | 1 + modules/bcftools/norm/meta.yml | 1 + modules/bcftools/query/meta.yml | 1 + modules/bcftools/reheader/meta.yml | 2 +- modules/bcftools/stats/meta.yml | 1 + modules/bcftools/view/meta.yml | 1 + modules/bedtools/bamtobed/meta.yml | 1 + modules/bedtools/complement/meta.yml | 1 + modules/bedtools/genomecov/meta.yml | 1 + modules/bedtools/getfasta/meta.yml | 1 + modules/bedtools/intersect/meta.yml | 1 + modules/bedtools/makewindows/meta.yml | 2 +- modules/bedtools/maskfasta/meta.yml | 1 + modules/bedtools/merge/meta.yml | 1 + modules/bedtools/slop/meta.yml | 1 + modules/bedtools/sort/meta.yml | 1 + modules/bedtools/subtract/meta.yml | 1 + modules/bismark/align/meta.yml | 1 + modules/bismark/deduplicate/meta.yml | 1 + modules/bismark/genomepreparation/meta.yml | 1 + modules/bismark/methylationextractor/meta.yml | 1 + modules/bismark/report/meta.yml | 1 + modules/bismark/summary/meta.yml | 1 + modules/blast/blastn/meta.yml | 1 + modules/blast/makeblastdb/meta.yml | 1 + modules/bowtie/align/meta.yml | 1 + modules/bowtie/build/meta.yml | 1 + modules/bowtie2/align/meta.yml | 1 + modules/bowtie2/build/meta.yml | 1 + modules/bwa/aln/meta.yml | 2 +- modules/bwa/index/meta.yml | 1 + modules/bwa/mem/meta.yml | 1 + modules/bwa/sampe/meta.yml | 2 +- modules/bwa/samse/meta.yml | 2 +- modules/bwamem2/index/meta.yml | 1 + modules/bwamem2/mem/meta.yml | 1 + modules/bwameth/align/meta.yml | 1 + modules/bwameth/index/meta.yml | 1 + modules/cat/cat/meta.yml | 2 +- modules/cat/fastq/meta.yml | 1 + modules/cnvkit/meta.yml | 1 + modules/cooler/digest/meta.yml | 2 +- modules/cooler/dump/meta.yml | 2 +- modules/custom/dumpsoftwareversions/meta.yml | 2 +- modules/cutadapt/meta.yml | 1 + modules/delly/call/meta.yml | 2 +- modules/dshbio/exportsegments/meta.yml | 1 + modules/dshbio/filterbed/meta.yml | 1 + modules/dshbio/filtergff3/meta.yml | 1 + modules/dshbio/splitbed/meta.yml | 1 + modules/dshbio/splitgff3/meta.yml | 1 + modules/ensemblvep/meta.yml | 1 + modules/expansionhunter/meta.yml | 2 +- modules/fastp/meta.yml | 1 + modules/fastqc/meta.yml | 1 + modules/gatk4/applybqsr/meta.yml | 1 + modules/gatk4/baserecalibrator/meta.yml | 1 + modules/gatk4/bedtointervallist/meta.yml | 1 + modules/gatk4/calculatecontamination/meta.yml | 1 + modules/gatk4/createsequencedictionary/meta.yml | 2 ++ modules/gatk4/fastqtosam/meta.yml | 4 ++-- modules/gatk4/getpileupsummaries/meta.yml | 1 + modules/gatk4/haplotypecaller/meta.yml | 1 + modules/gatk4/intervallisttools/meta.yml | 1 + modules/gatk4/learnreadorientationmodel/meta.yml | 1 + modules/gatk4/markduplicates/meta.yml | 2 +- modules/gatk4/mergebamalignment/meta.yml | 1 + modules/gatk4/mergevcfs/meta.yml | 1 + modules/gatk4/mutect2/meta.yml | 1 + modules/gatk4/revertsam/meta.yml | 1 + modules/gatk4/samtofastq/meta.yml | 1 + modules/gatk4/splitncigarreads/meta.yml | 1 + modules/gatk4/variantfiltration/meta.yml | 1 + modules/genmap/index/meta.yml | 2 +- modules/genmap/mappability/meta.yml | 2 +- modules/glnexus/meta.yml | 2 +- modules/graphmap2/align/meta.yml | 1 + modules/graphmap2/index/meta.yml | 1 + modules/gubbins/meta.yml | 1 + modules/gunzip/meta.yml | 1 + modules/hmmer/hmmalign/meta.yml | 2 +- modules/homer/annotatepeaks/meta.yml | 1 + modules/homer/findpeaks/meta.yml | 1 + modules/homer/maketagdirectory/meta.yml | 1 + modules/homer/makeucscfile/meta.yml | 1 + modules/ismapper/meta.yml | 2 +- modules/isoseq3/cluster/meta.yml | 2 +- modules/isoseq3/refine/meta.yml | 2 +- modules/ivar/consensus/meta.yml | 1 + modules/ivar/trim/meta.yml | 1 + modules/ivar/variants/meta.yml | 1 + modules/kallisto/index/meta.yml | 2 +- modules/kraken2/kraken2/meta.yml | 1 + modules/lima/meta.yml | 2 +- modules/methyldackel/extract/meta.yml | 1 + modules/methyldackel/mbias/meta.yml | 1 + modules/minia/meta.yml | 1 + modules/minimap2/align/meta.yml | 1 + modules/minimap2/index/meta.yml | 1 + modules/mosdepth/meta.yml | 1 + modules/multiqc/meta.yml | 1 + modules/nanolyse/meta.yml | 1 + modules/nanoplot/meta.yml | 1 + modules/optitype/meta.yml | 2 +- modules/pangolin/meta.yml | 1 + modules/pbbam/pbmerge/meta.yml | 2 +- modules/pbccs/meta.yml | 2 +- modules/picard/collectmultiplemetrics/meta.yml | 1 + modules/picard/collectwgsmetrics/meta.yml | 1 + modules/picard/markduplicates/meta.yml | 1 + modules/picard/mergesamfiles/meta.yml | 1 + modules/picard/sortsam/meta.yml | 1 + modules/qcat/meta.yml | 1 + modules/qualimap/bamqc/meta.yml | 1 + modules/quast/meta.yml | 3 ++- modules/rsem/calculateexpression/meta.yml | 1 + modules/rsem/preparereference/meta.yml | 1 + modules/rseqc/bamstat/meta.yml | 1 + modules/rseqc/inferexperiment/meta.yml | 1 + modules/rseqc/innerdistance/meta.yml | 1 + modules/rseqc/junctionannotation/meta.yml | 1 + modules/rseqc/junctionsaturation/meta.yml | 1 + modules/rseqc/readdistribution/meta.yml | 1 + modules/rseqc/readduplication/meta.yml | 1 + modules/salmon/index/meta.yml | 1 + modules/salmon/quant/meta.yml | 1 + modules/samtools/ampliconclip/meta.yml | 1 + modules/samtools/faidx/meta.yml | 1 + modules/samtools/fastq/meta.yml | 1 + modules/samtools/flagstat/meta.yml | 1 + modules/samtools/idxstats/meta.yml | 1 + modules/samtools/index/meta.yml | 1 + modules/samtools/merge/meta.yml | 1 + modules/samtools/mpileup/meta.yml | 1 + modules/samtools/sort/meta.yml | 1 + modules/samtools/stats/meta.yml | 1 + modules/samtools/view/meta.yml | 1 + modules/seacr/callpeak/meta.yml | 1 + modules/seqkit/split2/meta.yml | 1 + modules/sequenzautils/bam2seqz/meta.yml | 2 +- modules/sequenzautils/gcwiggle/meta.yml | 1 + modules/seqwish/induce/meta.yml | 1 + modules/snpeff/meta.yml | 1 + modules/snpsites/meta.yml | 1 + modules/sratools/fasterqdump/meta.yml | 2 +- modules/sratools/prefetch/meta.yml | 2 +- modules/star/align/meta.yml | 1 + modules/star/genomegenerate/meta.yml | 1 + modules/stringtie/merge/meta.yml | 1 + modules/stringtie/stringtie/meta.yml | 1 + modules/tabix/bgzip/meta.yml | 1 + modules/tabix/bgziptabix/meta.yml | 1 + modules/tabix/tabix/meta.yml | 1 + modules/tiddit/sv/meta.yml | 1 + modules/trimgalore/meta.yml | 1 + modules/untar/meta.yml | 1 + modules/unzip/meta.yml | 2 +- modules/variantbam/meta.yml | 2 +- 165 files changed, 168 insertions(+), 33 deletions(-) diff --git a/modules/bandage/image/meta.yml b/modules/bandage/image/meta.yml index 65f47664..1c2b9840 100644 --- a/modules/bandage/image/meta.yml +++ b/modules/bandage/image/meta.yml @@ -11,6 +11,7 @@ tools: Bandage - a Bioinformatics Application for Navigating De novo Assembly Graphs Easily homepage: https://github.com/rrwick/Bandage documentation: https://github.com/rrwick/Bandage + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bcftools/concat/meta.yml b/modules/bcftools/concat/meta.yml index e394d18d..b2848595 100644 --- a/modules/bcftools/concat/meta.yml +++ b/modules/bcftools/concat/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/consensus/meta.yml b/modules/bcftools/consensus/meta.yml index 30f4910a..761115a6 100644 --- a/modules/bcftools/consensus/meta.yml +++ b/modules/bcftools/consensus/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/filter/meta.yml b/modules/bcftools/filter/meta.yml index 433b203d..72d28bf0 100644 --- a/modules/bcftools/filter/meta.yml +++ b/modules/bcftools/filter/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/index/meta.yml b/modules/bcftools/index/meta.yml index 6fc7df17..0d5dd3ef 100644 --- a/modules/bcftools/index/meta.yml +++ b/modules/bcftools/index/meta.yml @@ -13,7 +13,7 @@ tools: documentation: https://samtools.github.io/bcftools/howtos/index.html tool_dev_url: https://github.com/samtools/bcftools doi: "10.1093/gigascience/giab008" - licence: ['GPL'] + licence: ['MIT', 'GPL-3.0-or-later'] input: - meta: diff --git a/modules/bcftools/isec/meta.yml b/modules/bcftools/isec/meta.yml index 6a482257..d0be6dce 100644 --- a/modules/bcftools/isec/meta.yml +++ b/modules/bcftools/isec/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/merge/meta.yml b/modules/bcftools/merge/meta.yml index 056ea37d..c7e3a280 100644 --- a/modules/bcftools/merge/meta.yml +++ b/modules/bcftools/merge/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/mpileup/meta.yml b/modules/bcftools/mpileup/meta.yml index 49f02a40..c31180ee 100644 --- a/modules/bcftools/mpileup/meta.yml +++ b/modules/bcftools/mpileup/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/norm/meta.yml b/modules/bcftools/norm/meta.yml index 760186dc..27978a53 100644 --- a/modules/bcftools/norm/meta.yml +++ b/modules/bcftools/norm/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/query/meta.yml b/modules/bcftools/query/meta.yml index 12b11216..e450f73e 100644 --- a/modules/bcftools/query/meta.yml +++ b/modules/bcftools/query/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/reheader/meta.yml b/modules/bcftools/reheader/meta.yml index 6d7c9f97..ee8cba32 100644 --- a/modules/bcftools/reheader/meta.yml +++ b/modules/bcftools/reheader/meta.yml @@ -11,7 +11,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://samtools.github.io/bcftools/bcftools.html#reheader doi: 10.1093/gigascience/giab008 - licence: ['GPL'] + licence: ['MIT'] input: - meta: diff --git a/modules/bcftools/stats/meta.yml b/modules/bcftools/stats/meta.yml index 78294ff7..505bf729 100644 --- a/modules/bcftools/stats/meta.yml +++ b/modules/bcftools/stats/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bcftools/view/meta.yml b/modules/bcftools/view/meta.yml index 638a4e4f..df5b0f8f 100644 --- a/modules/bcftools/view/meta.yml +++ b/modules/bcftools/view/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://samtools.github.io/bcftools/bcftools.html documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/bamtobed/meta.yml b/modules/bedtools/bamtobed/meta.yml index 0eaf3e2a..e8c67047 100644 --- a/modules/bedtools/bamtobed/meta.yml +++ b/modules/bedtools/bamtobed/meta.yml @@ -8,6 +8,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/complement.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/complement/meta.yml b/modules/bedtools/complement/meta.yml index 02ddca29..2ad8749c 100644 --- a/modules/bedtools/complement/meta.yml +++ b/modules/bedtools/complement/meta.yml @@ -8,6 +8,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/complement.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/genomecov/meta.yml b/modules/bedtools/genomecov/meta.yml index bc49ab03..3deb4d6b 100644 --- a/modules/bedtools/genomecov/meta.yml +++ b/modules/bedtools/genomecov/meta.yml @@ -9,6 +9,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/genomecov.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/getfasta/meta.yml b/modules/bedtools/getfasta/meta.yml index 89fbea54..38715c3d 100644 --- a/modules/bedtools/getfasta/meta.yml +++ b/modules/bedtools/getfasta/meta.yml @@ -9,6 +9,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/intersect.html + licence: ['MIT'] input: - bed: type: file diff --git a/modules/bedtools/intersect/meta.yml b/modules/bedtools/intersect/meta.yml index a14bf515..3bcb6ece 100644 --- a/modules/bedtools/intersect/meta.yml +++ b/modules/bedtools/intersect/meta.yml @@ -8,6 +8,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/intersect.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/makewindows/meta.yml b/modules/bedtools/makewindows/meta.yml index 7d86e127..a536d75f 100644 --- a/modules/bedtools/makewindows/meta.yml +++ b/modules/bedtools/makewindows/meta.yml @@ -11,7 +11,7 @@ tools: documentation: https://bedtools.readthedocs.io/en/latest/content/tools/makewindows.html tool_dev_url: None doi: "10.1093/bioinformatics/btq033" - licence: ['GPL v2'] + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/maskfasta/meta.yml b/modules/bedtools/maskfasta/meta.yml index 428d6f57..0b7aa3ed 100644 --- a/modules/bedtools/maskfasta/meta.yml +++ b/modules/bedtools/maskfasta/meta.yml @@ -9,6 +9,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/intersect.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/merge/meta.yml b/modules/bedtools/merge/meta.yml index 39e79cbd..40a42b7b 100644 --- a/modules/bedtools/merge/meta.yml +++ b/modules/bedtools/merge/meta.yml @@ -8,6 +8,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/merge.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/slop/meta.yml b/modules/bedtools/slop/meta.yml index 709d88c3..a4713936 100644 --- a/modules/bedtools/slop/meta.yml +++ b/modules/bedtools/slop/meta.yml @@ -8,6 +8,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/slop.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/sort/meta.yml b/modules/bedtools/sort/meta.yml index a0332787..5b8b41d7 100644 --- a/modules/bedtools/sort/meta.yml +++ b/modules/bedtools/sort/meta.yml @@ -8,6 +8,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/sort.html + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bedtools/subtract/meta.yml b/modules/bedtools/subtract/meta.yml index e13057bb..b9245a55 100644 --- a/modules/bedtools/subtract/meta.yml +++ b/modules/bedtools/subtract/meta.yml @@ -10,6 +10,7 @@ tools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/subtract.html + licence: ['MIT'] input: - meta: diff --git a/modules/bismark/align/meta.yml b/modules/bismark/align/meta.yml index 92a3b1ec..79948e1c 100644 --- a/modules/bismark/align/meta.yml +++ b/modules/bismark/align/meta.yml @@ -17,6 +17,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bismark/deduplicate/meta.yml b/modules/bismark/deduplicate/meta.yml index d19a915f..9e28cd22 100644 --- a/modules/bismark/deduplicate/meta.yml +++ b/modules/bismark/deduplicate/meta.yml @@ -19,6 +19,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bismark/genomepreparation/meta.yml b/modules/bismark/genomepreparation/meta.yml index 7712d7c2..2a17f1fb 100644 --- a/modules/bismark/genomepreparation/meta.yml +++ b/modules/bismark/genomepreparation/meta.yml @@ -19,6 +19,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - fasta: type: file diff --git a/modules/bismark/methylationextractor/meta.yml b/modules/bismark/methylationextractor/meta.yml index 9fa0f4f4..602fc06d 100644 --- a/modules/bismark/methylationextractor/meta.yml +++ b/modules/bismark/methylationextractor/meta.yml @@ -18,6 +18,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bismark/report/meta.yml b/modules/bismark/report/meta.yml index 889d1227..e849e109 100644 --- a/modules/bismark/report/meta.yml +++ b/modules/bismark/report/meta.yml @@ -16,6 +16,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bismark/summary/meta.yml b/modules/bismark/summary/meta.yml index 10f71fe4..0494bb8e 100644 --- a/modules/bismark/summary/meta.yml +++ b/modules/bismark/summary/meta.yml @@ -19,6 +19,7 @@ tools: homepage: https://github.com/FelixKrueger/Bismark documentation: https://github.com/FelixKrueger/Bismark/tree/master/Docs doi: 10.1093/bioinformatics/btr167 + licence: ['GPL-3.0-or-later'] input: - bam: type: file diff --git a/modules/blast/blastn/meta.yml b/modules/blast/blastn/meta.yml index d19d3df6..39acb663 100644 --- a/modules/blast/blastn/meta.yml +++ b/modules/blast/blastn/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://blast.ncbi.nlm.nih.gov/Blast.cgi documentation: https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=Blastdocs doi: 10.1016/S0022-2836(05)80360-2 + licence: ['US-Government-Work'] input: - meta: type: map diff --git a/modules/blast/makeblastdb/meta.yml b/modules/blast/makeblastdb/meta.yml index 545cc2a0..c9d18cba 100644 --- a/modules/blast/makeblastdb/meta.yml +++ b/modules/blast/makeblastdb/meta.yml @@ -11,6 +11,7 @@ tools: homepage: https://blast.ncbi.nlm.nih.gov/Blast.cgi documentation: https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=Blastdocs doi: 10.1016/S0022-2836(05)80360-2 + licence: ['US-Government-Work'] input: - fasta: type: file diff --git a/modules/bowtie/align/meta.yml b/modules/bowtie/align/meta.yml index 73c65631..07d480be 100644 --- a/modules/bowtie/align/meta.yml +++ b/modules/bowtie/align/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://bowtie-bio.sourceforge.net/index.shtml documentation: http://bowtie-bio.sourceforge.net/manual.shtml arxiv: arXiv:1303.3997 + licence: ['Artistic-2.0'] input: - meta: type: map diff --git a/modules/bowtie/build/meta.yml b/modules/bowtie/build/meta.yml index aa39f32e..016adcfe 100644 --- a/modules/bowtie/build/meta.yml +++ b/modules/bowtie/build/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://bowtie-bio.sourceforge.net/index.shtml documentation: http://bowtie-bio.sourceforge.net/manual.shtml arxiv: arXiv:1303.3997 + licence: ['Artistic-2.0'] input: - fasta: type: file diff --git a/modules/bowtie2/align/meta.yml b/modules/bowtie2/align/meta.yml index f9d54d87..77c9e397 100644 --- a/modules/bowtie2/align/meta.yml +++ b/modules/bowtie2/align/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml doi: 10.1038/nmeth.1923 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bowtie2/build/meta.yml b/modules/bowtie2/build/meta.yml index 4531d079..ecc54e9b 100644 --- a/modules/bowtie2/build/meta.yml +++ b/modules/bowtie2/build/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml doi: 10.1038/nmeth.1923 + licence: ['GPL-3.0-or-later'] input: - fasta: type: file diff --git a/modules/bwa/aln/meta.yml b/modules/bwa/aln/meta.yml index d4a2b19d..d2424a5f 100644 --- a/modules/bwa/aln/meta.yml +++ b/modules/bwa/aln/meta.yml @@ -17,7 +17,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://bio-bwa.sourceforge.net/ doi: "10.1093/bioinformatics/btp324" - licence: ['GPL v3'] + licence: ['GPL-3.0-or-later'] input: - meta: diff --git a/modules/bwa/index/meta.yml b/modules/bwa/index/meta.yml index c3c0a8d8..11d62df3 100644 --- a/modules/bwa/index/meta.yml +++ b/modules/bwa/index/meta.yml @@ -13,6 +13,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://www.htslib.org/doc/samtools.html arxiv: arXiv:1303.3997 + licence: ['GPL-3.0-or-later'] input: - fasta: type: file diff --git a/modules/bwa/mem/meta.yml b/modules/bwa/mem/meta.yml index 66238507..61eaddef 100644 --- a/modules/bwa/mem/meta.yml +++ b/modules/bwa/mem/meta.yml @@ -16,6 +16,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://www.htslib.org/doc/samtools.html arxiv: arXiv:1303.3997 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/bwa/sampe/meta.yml b/modules/bwa/sampe/meta.yml index ec2dfff5..7b530a03 100644 --- a/modules/bwa/sampe/meta.yml +++ b/modules/bwa/sampe/meta.yml @@ -18,7 +18,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://bio-bwa.sourceforge.net/ doi: "10.1093/bioinformatics/btp324" - licence: ['GPL v3'] + licence: ['GPL-3.0-or-later'] input: - meta: diff --git a/modules/bwa/samse/meta.yml b/modules/bwa/samse/meta.yml index 1e7ef335..9a9ecb39 100644 --- a/modules/bwa/samse/meta.yml +++ b/modules/bwa/samse/meta.yml @@ -19,7 +19,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://bio-bwa.sourceforge.net/ doi: "10.1093/bioinformatics/btp324" - licence: ['GPL v3'] + licence: ['GPL-3.0-or-later'] input: - meta: diff --git a/modules/bwamem2/index/meta.yml b/modules/bwamem2/index/meta.yml index 1b36be8d..e0f6014c 100644 --- a/modules/bwamem2/index/meta.yml +++ b/modules/bwamem2/index/meta.yml @@ -12,6 +12,7 @@ tools: a large reference genome, such as the human genome. homepage: https://github.com/bwa-mem2/bwa-mem2 documentation: https://github.com/bwa-mem2/bwa-mem2#usage + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/bwamem2/mem/meta.yml b/modules/bwamem2/mem/meta.yml index 2fb4449e..58a35e08 100644 --- a/modules/bwamem2/mem/meta.yml +++ b/modules/bwamem2/mem/meta.yml @@ -16,6 +16,7 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: http://www.htslib.org/doc/samtools.html arxiv: arXiv:1303.3997 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bwameth/align/meta.yml b/modules/bwameth/align/meta.yml index 11fc9949..1cd66237 100644 --- a/modules/bwameth/align/meta.yml +++ b/modules/bwameth/align/meta.yml @@ -19,6 +19,7 @@ tools: homepage: https://github.com/brentp/bwa-meth documentation: https://github.com/brentp/bwa-meth arxiv: arXiv:1401.1129 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/bwameth/index/meta.yml b/modules/bwameth/index/meta.yml index c96fbfbb..352dfd0f 100644 --- a/modules/bwameth/index/meta.yml +++ b/modules/bwameth/index/meta.yml @@ -15,6 +15,7 @@ tools: homepage: https://github.com/brentp/bwa-meth documentation: https://github.com/brentp/bwa-meth arxiv: arXiv:1401.1129 + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/cat/cat/meta.yml b/modules/cat/cat/meta.yml index f1a46ca3..b3f370ee 100644 --- a/modules/cat/cat/meta.yml +++ b/modules/cat/cat/meta.yml @@ -10,7 +10,7 @@ tools: homepage: None documentation: https://man7.org/linux/man-pages/man1/cat.1.html tool_dev_url: None - + licence: ['GPL-3.0-or-later'] input: - files_in: type: file diff --git a/modules/cat/fastq/meta.yml b/modules/cat/fastq/meta.yml index 6c6c397e..1992fa34 100644 --- a/modules/cat/fastq/meta.yml +++ b/modules/cat/fastq/meta.yml @@ -8,6 +8,7 @@ tools: description: | The cat utility reads files sequentially, writing them to the standard output. documentation: https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/cnvkit/meta.yml b/modules/cnvkit/meta.yml index 30c1b588..3e760d16 100755 --- a/modules/cnvkit/meta.yml +++ b/modules/cnvkit/meta.yml @@ -10,6 +10,7 @@ tools: CNVkit is a Python library and command-line software toolkit to infer and visualize copy number from high-throughput DNA sequencing data. It is designed for use with hybrid capture, including both whole-exome and custom target panels, and short-read sequencing platforms such as Illumina and Ion Torrent. homepage: https://cnvkit.readthedocs.io/en/stable/index.html documentation: https://cnvkit.readthedocs.io/en/stable/index.html + licence: ['Apache-2.0'] params: - outdir: type: string diff --git a/modules/cooler/digest/meta.yml b/modules/cooler/digest/meta.yml index 4fb85e4f..6ce95ad7 100644 --- a/modules/cooler/digest/meta.yml +++ b/modules/cooler/digest/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://cooler.readthedocs.io/en/latest/index.html tool_dev_url: https://github.com/open2c/cooler doi: "10.1093/bioinformatics/btz540" - licence: ['BSD-3-clause'] + licence: ['BSD-3-Clause'] input: - fasta: diff --git a/modules/cooler/dump/meta.yml b/modules/cooler/dump/meta.yml index 1d98a62e..659b06a1 100644 --- a/modules/cooler/dump/meta.yml +++ b/modules/cooler/dump/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://cooler.readthedocs.io/en/latest/index.html tool_dev_url: https://github.com/open2c/cooler doi: "10.1093/bioinformatics/btz540" - licence: ['BSD-3-clause'] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/custom/dumpsoftwareversions/meta.yml b/modules/custom/dumpsoftwareversions/meta.yml index 8d4a6ed4..c8310e35 100644 --- a/modules/custom/dumpsoftwareversions/meta.yml +++ b/modules/custom/dumpsoftwareversions/meta.yml @@ -8,7 +8,7 @@ tools: description: Custom module used to dump software versions within the nf-core pipeline template homepage: https://github.com/nf-core/tools documentation: https://github.com/nf-core/tools - + licence: ['MIT'] input: - versions: type: file diff --git a/modules/cutadapt/meta.yml b/modules/cutadapt/meta.yml index 62c2ccde..b4e6f6e7 100644 --- a/modules/cutadapt/meta.yml +++ b/modules/cutadapt/meta.yml @@ -11,6 +11,7 @@ tools: Cutadapt finds and removes adapter sequences, primers, poly-A tails and other types of unwanted sequence from your high-throughput sequencing reads. documentation: https://cutadapt.readthedocs.io/en/stable/index.html doi: DOI:10.14806/ej.17.1.200 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/delly/call/meta.yml b/modules/delly/call/meta.yml index 75e5c9c2..56539188 100644 --- a/modules/delly/call/meta.yml +++ b/modules/delly/call/meta.yml @@ -13,7 +13,7 @@ tools: documentation: https://github.com/dellytools/delly/blob/master/README.md tool_dev_url: None doi: "DOI:10.1093/bioinformatics/bts378" - licence: ["BSD-3-clause"] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/dshbio/exportsegments/meta.yml b/modules/dshbio/exportsegments/meta.yml index b9b145df..da5455c7 100644 --- a/modules/dshbio/exportsegments/meta.yml +++ b/modules/dshbio/exportsegments/meta.yml @@ -12,6 +12,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/dshbio/filterbed/meta.yml b/modules/dshbio/filterbed/meta.yml index 0e09b392..77054be4 100644 --- a/modules/dshbio/filterbed/meta.yml +++ b/modules/dshbio/filterbed/meta.yml @@ -10,6 +10,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/dshbio/filtergff3/meta.yml b/modules/dshbio/filtergff3/meta.yml index 2fd916fa..aa1bce43 100644 --- a/modules/dshbio/filtergff3/meta.yml +++ b/modules/dshbio/filtergff3/meta.yml @@ -10,6 +10,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/dshbio/splitbed/meta.yml b/modules/dshbio/splitbed/meta.yml index 16aec66b..a35ea25f 100644 --- a/modules/dshbio/splitbed/meta.yml +++ b/modules/dshbio/splitbed/meta.yml @@ -10,6 +10,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/dshbio/splitgff3/meta.yml b/modules/dshbio/splitgff3/meta.yml index 36e37862..fdbbe16a 100644 --- a/modules/dshbio/splitgff3/meta.yml +++ b/modules/dshbio/splitgff3/meta.yml @@ -10,6 +10,7 @@ tools: or later. homepage: https://github.com/heuermh/dishevelled-bio documentation: https://github.com/heuermh/dishevelled-bio + licence: ['LGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/ensemblvep/meta.yml b/modules/ensemblvep/meta.yml index 9ec4f6a4..1b819227 100644 --- a/modules/ensemblvep/meta.yml +++ b/modules/ensemblvep/meta.yml @@ -9,6 +9,7 @@ tools: or structural variants) on genes, transcripts, and protein sequence, as well as regulatory regions. homepage: https://www.ensembl.org/info/docs/tools/vep/index.html documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html + licence: ['Apache-2.0'] params: - use_cache: type: boolean diff --git a/modules/expansionhunter/meta.yml b/modules/expansionhunter/meta.yml index 54bb3293..17d72bb4 100644 --- a/modules/expansionhunter/meta.yml +++ b/modules/expansionhunter/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://github.com/Illumina/ExpansionHunter/blob/master/docs/01_Introduction.md tool_dev_url: None doi: "10.1093/bioinformatics/btz431" - licence: ['Apache v2.0'] + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/fastp/meta.yml b/modules/fastp/meta.yml index cfef4a99..6e133871 100644 --- a/modules/fastp/meta.yml +++ b/modules/fastp/meta.yml @@ -10,6 +10,7 @@ tools: A tool designed to provide fast all-in-one preprocessing for FastQ files. This tool is developed in C++ with multithreading supported to afford high performance. documentation: https://github.com/OpenGene/fastp doi: https://doi.org/10.1093/bioinformatics/bty560 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/fastqc/meta.yml b/modules/fastqc/meta.yml index 0ae08aee..b09553a3 100644 --- a/modules/fastqc/meta.yml +++ b/modules/fastqc/meta.yml @@ -15,6 +15,7 @@ tools: overrepresented sequences. homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/ + licence: ['GPL-2.0-only'] input: - meta: type: map diff --git a/modules/gatk4/applybqsr/meta.yml b/modules/gatk4/applybqsr/meta.yml index be815bd8..e09e8c52 100644 --- a/modules/gatk4/applybqsr/meta.yml +++ b/modules/gatk4/applybqsr/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/baserecalibrator/meta.yml b/modules/gatk4/baserecalibrator/meta.yml index 068f8ef1..d579d9e5 100644 --- a/modules/gatk4/baserecalibrator/meta.yml +++ b/modules/gatk4/baserecalibrator/meta.yml @@ -11,6 +11,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: diff --git a/modules/gatk4/bedtointervallist/meta.yml b/modules/gatk4/bedtointervallist/meta.yml index aacca1a6..910f9552 100644 --- a/modules/gatk4/bedtointervallist/meta.yml +++ b/modules/gatk4/bedtointervallist/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/calculatecontamination/meta.yml b/modules/gatk4/calculatecontamination/meta.yml index 0d1b9b85..8c843732 100644 --- a/modules/gatk4/calculatecontamination/meta.yml +++ b/modules/gatk4/calculatecontamination/meta.yml @@ -16,6 +16,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/createsequencedictionary/meta.yml b/modules/gatk4/createsequencedictionary/meta.yml index 90f415a2..54f479b3 100644 --- a/modules/gatk4/createsequencedictionary/meta.yml +++ b/modules/gatk4/createsequencedictionary/meta.yml @@ -12,6 +12,8 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] + input: - fasta: type: file diff --git a/modules/gatk4/fastqtosam/meta.yml b/modules/gatk4/fastqtosam/meta.yml index ab56ec53..8bd9eed5 100644 --- a/modules/gatk4/fastqtosam/meta.yml +++ b/modules/gatk4/fastqtosam/meta.yml @@ -1,5 +1,5 @@ name: gatk4_fastqtosam -description: Converts FastQ file to BAM format +description: Converts FastQ file to SAM/BAM format keywords: - bam - fastq @@ -14,7 +14,7 @@ tools: documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s tool_dev_url: https://github.com/broadinstitute/gatk doi: "10.1158/1538-7445.AM2017-3590" - licence: ['BSD-3-clause'] + licence: ['MIT'] input: - meta: diff --git a/modules/gatk4/getpileupsummaries/meta.yml b/modules/gatk4/getpileupsummaries/meta.yml index bda0ccb1..70158a8d 100644 --- a/modules/gatk4/getpileupsummaries/meta.yml +++ b/modules/gatk4/getpileupsummaries/meta.yml @@ -15,6 +15,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/haplotypecaller/meta.yml b/modules/gatk4/haplotypecaller/meta.yml index 73adc950..6a1bd7ed 100644 --- a/modules/gatk4/haplotypecaller/meta.yml +++ b/modules/gatk4/haplotypecaller/meta.yml @@ -13,6 +13,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/intervallisttools/meta.yml b/modules/gatk4/intervallisttools/meta.yml index 14f7db35..9e2d994f 100644 --- a/modules/gatk4/intervallisttools/meta.yml +++ b/modules/gatk4/intervallisttools/meta.yml @@ -14,6 +14,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/learnreadorientationmodel/meta.yml b/modules/gatk4/learnreadorientationmodel/meta.yml index c15b48cb..4eff6939 100644 --- a/modules/gatk4/learnreadorientationmodel/meta.yml +++ b/modules/gatk4/learnreadorientationmodel/meta.yml @@ -15,6 +15,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/markduplicates/meta.yml b/modules/gatk4/markduplicates/meta.yml index bd5ed5e7..59aaad4d 100644 --- a/modules/gatk4/markduplicates/meta.yml +++ b/modules/gatk4/markduplicates/meta.yml @@ -13,7 +13,7 @@ tools: documentation: https://gatk.broadinstitute.org/hc/en-us/articles/360037052812-MarkDuplicates-Picard- tool_dev_url: https://github.com/broadinstitute/gatk doi: 10.1158/1538-7445.AM2017-3590 - licence: ['BSD-3-clause'] + licence: ['MIT'] input: - meta: diff --git a/modules/gatk4/mergebamalignment/meta.yml b/modules/gatk4/mergebamalignment/meta.yml index 7823c458..c66c78db 100644 --- a/modules/gatk4/mergebamalignment/meta.yml +++ b/modules/gatk4/mergebamalignment/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/mergevcfs/meta.yml b/modules/gatk4/mergevcfs/meta.yml index b20d7bb5..597f9ec6 100644 --- a/modules/gatk4/mergevcfs/meta.yml +++ b/modules/gatk4/mergevcfs/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/mutect2/meta.yml b/modules/gatk4/mutect2/meta.yml index 182b6712..4c38a049 100644 --- a/modules/gatk4/mutect2/meta.yml +++ b/modules/gatk4/mutect2/meta.yml @@ -14,6 +14,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/gatk4/revertsam/meta.yml b/modules/gatk4/revertsam/meta.yml index 619450d3..b52dcb36 100644 --- a/modules/gatk4/revertsam/meta.yml +++ b/modules/gatk4/revertsam/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/samtofastq/meta.yml b/modules/gatk4/samtofastq/meta.yml index 20033ec2..de4624b5 100644 --- a/modules/gatk4/samtofastq/meta.yml +++ b/modules/gatk4/samtofastq/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/splitncigarreads/meta.yml b/modules/gatk4/splitncigarreads/meta.yml index 9eefb545..f287ede4 100644 --- a/modules/gatk4/splitncigarreads/meta.yml +++ b/modules/gatk4/splitncigarreads/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/gatk4/variantfiltration/meta.yml b/modules/gatk4/variantfiltration/meta.yml index 4dbd71fe..6d4983a6 100644 --- a/modules/gatk4/variantfiltration/meta.yml +++ b/modules/gatk4/variantfiltration/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + licence: ['Apache-2.0'] input: - meta: type: map diff --git a/modules/genmap/index/meta.yml b/modules/genmap/index/meta.yml index adecf3c0..2ab0910d 100644 --- a/modules/genmap/index/meta.yml +++ b/modules/genmap/index/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://github.com/cpockrandt/genmap tool_dev_url: https://github.com/cpockrandt/genmap doi: "10.1093/bioinformatics/btaa222" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - fasta: diff --git a/modules/genmap/mappability/meta.yml b/modules/genmap/mappability/meta.yml index c28cbd6d..d2835d92 100644 --- a/modules/genmap/mappability/meta.yml +++ b/modules/genmap/mappability/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://github.com/cpockrandt/genmap tool_dev_url: https://github.com/cpockrandt/genmap doi: "10.1093/bioinformatics/btaa222" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - fasta: diff --git a/modules/glnexus/meta.yml b/modules/glnexus/meta.yml index aec25bb0..5ba17cae 100644 --- a/modules/glnexus/meta.yml +++ b/modules/glnexus/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://github.com/dnanexus-rnd/GLnexus/wiki/Getting-Started tool_dev_url: None doi: https://doi.org/10.1101/343970 - licence: ['Apache License 2.0'] + licence: ['Apache-2.0'] input: - meta: diff --git a/modules/graphmap2/align/meta.yml b/modules/graphmap2/align/meta.yml index a4acb648..9fb1507a 100644 --- a/modules/graphmap2/align/meta.yml +++ b/modules/graphmap2/align/meta.yml @@ -12,6 +12,7 @@ tools: A versatile pairwise aligner for genomic and spliced nucleotide sequences. homepage: https://github.com/lbcb-sci/graphmap2 documentation: https://github.com/lbcb-sci/graphmap2#graphmap2---a-highly-sensitive-and-accurate-mapper-for-long-error-prone-reads + licence: ['MIT'] input: - meta: type: map diff --git a/modules/graphmap2/index/meta.yml b/modules/graphmap2/index/meta.yml index e7bd6cb6..92a0a3d7 100644 --- a/modules/graphmap2/index/meta.yml +++ b/modules/graphmap2/index/meta.yml @@ -10,6 +10,7 @@ tools: A versatile pairwise aligner for genomic and spliced nucleotide sequences. homepage: https://github.com/lbcb-sci/graphmap2 documentation: https://github.com/lbcb-sci/graphmap2#graphmap2---a-highly-sensitive-and-accurate-mapper-for-long-error-prone-reads + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/gubbins/meta.yml b/modules/gubbins/meta.yml index 84b930a2..f73e2bb0 100644 --- a/modules/gubbins/meta.yml +++ b/modules/gubbins/meta.yml @@ -2,6 +2,7 @@ name: gubbins description: Gubbins (Genealogies Unbiased By recomBinations In Nucleotide Sequences) is an algorithm that iteratively identifies loci containing elevated densities of base substitutions while concurrently constructing a phylogeny based on the putative point mutations outside of these regions. +licence: ['GPL-2.0-only'] keywords: - recombination - alignment diff --git a/modules/gunzip/meta.yml b/modules/gunzip/meta.yml index dbec5534..3482f0d2 100644 --- a/modules/gunzip/meta.yml +++ b/modules/gunzip/meta.yml @@ -8,6 +8,7 @@ tools: description: | gzip is a file format and a software application used for file compression and decompression. documentation: https://www.gnu.org/software/gzip/manual/gzip.html + licence: ['GPL-3.0-or-later'] input: - archive: type: file diff --git a/modules/hmmer/hmmalign/meta.yml b/modules/hmmer/hmmalign/meta.yml index c9a50bc2..58dc6b92 100644 --- a/modules/hmmer/hmmalign/meta.yml +++ b/modules/hmmer/hmmalign/meta.yml @@ -9,7 +9,7 @@ tools: documentation: http://hmmer.org/documentation.html tool_dev_url: None doi: "http://dx.doi.org/10.1371/journal.pcbi.1002195" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/homer/annotatepeaks/meta.yml b/modules/homer/annotatepeaks/meta.yml index 39fe4197..c3ab9460 100644 --- a/modules/homer/annotatepeaks/meta.yml +++ b/modules/homer/annotatepeaks/meta.yml @@ -10,6 +10,7 @@ tools: HOMER (Hypergeometric Optimization of Motif EnRichment) is a suite of tools for Motif Discovery and next-gen sequencing analysis. documentation: http://homer.ucsd.edu/homer/ doi: 10.1016/j.molcel.2010.05.004. + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/homer/findpeaks/meta.yml b/modules/homer/findpeaks/meta.yml index d1450f3c..2aa8db26 100644 --- a/modules/homer/findpeaks/meta.yml +++ b/modules/homer/findpeaks/meta.yml @@ -9,6 +9,7 @@ tools: HOMER (Hypergeometric Optimization of Motif EnRichment) is a suite of tools for Motif Discovery and next-gen sequencing analysis. documentation: http://homer.ucsd.edu/homer/ doi: 10.1016/j.molcel.2010.05.004. + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/homer/maketagdirectory/meta.yml b/modules/homer/maketagdirectory/meta.yml index 9a88c2e1..802320f9 100644 --- a/modules/homer/maketagdirectory/meta.yml +++ b/modules/homer/maketagdirectory/meta.yml @@ -9,6 +9,7 @@ tools: HOMER (Hypergeometric Optimization of Motif EnRichment) is a suite of tools for Motif Discovery and next-gen sequencing analysis. documentation: http://homer.ucsd.edu/homer/ doi: 10.1016/j.molcel.2010.05.004. + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/homer/makeucscfile/meta.yml b/modules/homer/makeucscfile/meta.yml index d9123c7e..68d5fcd4 100644 --- a/modules/homer/makeucscfile/meta.yml +++ b/modules/homer/makeucscfile/meta.yml @@ -10,6 +10,7 @@ tools: HOMER (Hypergeometric Optimization of Motif EnRichment) is a suite of tools for Motif Discovery and next-gen sequencing analysis. documentation: http://homer.ucsd.edu/homer/ doi: 10.1016/j.molcel.2010.05.004. + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/ismapper/meta.yml b/modules/ismapper/meta.yml index 4ca2450a..810c1674 100644 --- a/modules/ismapper/meta.yml +++ b/modules/ismapper/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://github.com/jhawkey/IS_mapper tool_dev_url: https://github.com/jhawkey/IS_mapper doi: "https://doi.org/10.1186/s12864-015-1860-2" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/isoseq3/cluster/meta.yml b/modules/isoseq3/cluster/meta.yml index 280e0150..4086ab05 100644 --- a/modules/isoseq3/cluster/meta.yml +++ b/modules/isoseq3/cluster/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://github.com/PacificBiosciences/IsoSeq/blob/master/isoseq-clustering.md tool_dev_url: https://github.com/PacificBiosciences/IsoSeq/blob/master/isoseq-clustering.md doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: diff --git a/modules/isoseq3/refine/meta.yml b/modules/isoseq3/refine/meta.yml index 81b57c7c..eefd015b 100644 --- a/modules/isoseq3/refine/meta.yml +++ b/modules/isoseq3/refine/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://github.com/PacificBiosciences/IsoSeq/blob/master/isoseq-clustering.md tool_dev_url: https://github.com/PacificBiosciences/IsoSeq/blob/master/isoseq-clustering.md doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: diff --git a/modules/ivar/consensus/meta.yml b/modules/ivar/consensus/meta.yml index 389e5fe6..2ee5f2c6 100644 --- a/modules/ivar/consensus/meta.yml +++ b/modules/ivar/consensus/meta.yml @@ -10,6 +10,7 @@ tools: iVar - a computational package that contains functions broadly useful for viral amplicon-based sequencing. homepage: https://github.com/andersen-lab/ivar documentation: https://andersen-lab.github.io/ivar/html/manualpage.html + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/ivar/trim/meta.yml b/modules/ivar/trim/meta.yml index 4798c25f..44bc742e 100644 --- a/modules/ivar/trim/meta.yml +++ b/modules/ivar/trim/meta.yml @@ -10,6 +10,7 @@ tools: iVar - a computational package that contains functions broadly useful for viral amplicon-based sequencing. homepage: https://github.com/andersen-lab/ivar documentation: https://andersen-lab.github.io/ivar/html/manualpage.html + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/ivar/variants/meta.yml b/modules/ivar/variants/meta.yml index a689ffeb..fd3fce9e 100644 --- a/modules/ivar/variants/meta.yml +++ b/modules/ivar/variants/meta.yml @@ -10,6 +10,7 @@ tools: iVar - a computational package that contains functions broadly useful for viral amplicon-based sequencing. homepage: https://github.com/andersen-lab/ivar documentation: https://andersen-lab.github.io/ivar/html/manualpage.html + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/kallisto/index/meta.yml b/modules/kallisto/index/meta.yml index a4fb08c3..dd952e33 100644 --- a/modules/kallisto/index/meta.yml +++ b/modules/kallisto/index/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://pachterlab.github.io/kallisto/manual tool_dev_url: https://github.com/pachterlab/kallisto doi: "" - licence: ['BSD_2_clause'] + licence: ['BSD-2-Clause'] input: - fasta: diff --git a/modules/kraken2/kraken2/meta.yml b/modules/kraken2/kraken2/meta.yml index 5b849c3e..4b894705 100644 --- a/modules/kraken2/kraken2/meta.yml +++ b/modules/kraken2/kraken2/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://ccb.jhu.edu/software/kraken2/ documentation: https://github.com/DerrickWood/kraken2/wiki/Manual doi: 10.1186/s13059-019-1891-0 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/lima/meta.yml b/modules/lima/meta.yml index d77246c6..567632df 100644 --- a/modules/lima/meta.yml +++ b/modules/lima/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://lima.how/ tool_dev_url: https://github.com/pacificbiosciences/barcoding/ doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: diff --git a/modules/methyldackel/extract/meta.yml b/modules/methyldackel/extract/meta.yml index 6c87f7c9..3c1dfb2a 100644 --- a/modules/methyldackel/extract/meta.yml +++ b/modules/methyldackel/extract/meta.yml @@ -17,6 +17,7 @@ tools: homepage: https://github.com/brentp/bwa-meth documentation: https://github.com/brentp/bwa-meth arxiv: arXiv:1401.1129 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/methyldackel/mbias/meta.yml b/modules/methyldackel/mbias/meta.yml index 4bc8f016..e66cde50 100644 --- a/modules/methyldackel/mbias/meta.yml +++ b/modules/methyldackel/mbias/meta.yml @@ -18,6 +18,7 @@ tools: homepage: https://github.com/brentp/bwa-meth documentation: https://github.com/brentp/bwa-meth arxiv: arXiv:1401.1129 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/minia/meta.yml b/modules/minia/meta.yml index 255bcc20..397a1d49 100644 --- a/modules/minia/meta.yml +++ b/modules/minia/meta.yml @@ -9,6 +9,7 @@ tools: a human genome on a desktop computer in a day. The output of Minia is a set of contigs. homepage: https://github.com/GATB/minia documentation: https://github.com/GATB/minia + licence: ['AGPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/minimap2/align/meta.yml b/modules/minimap2/align/meta.yml index 35ed411b..9994fb05 100644 --- a/modules/minimap2/align/meta.yml +++ b/modules/minimap2/align/meta.yml @@ -13,6 +13,7 @@ tools: A versatile pairwise aligner for genomic and spliced nucleotide sequences. homepage: https://github.com/lh3/minimap2 documentation: https://github.com/lh3/minimap2#uguide + licence: ['MIT'] input: - meta: type: map diff --git a/modules/minimap2/index/meta.yml b/modules/minimap2/index/meta.yml index e8450add..78a39bdd 100644 --- a/modules/minimap2/index/meta.yml +++ b/modules/minimap2/index/meta.yml @@ -10,6 +10,7 @@ tools: A versatile pairwise aligner for genomic and spliced nucleotide sequences. homepage: https://github.com/lh3/minimap2 documentation: https://github.com/lh3/minimap2#uguide + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/mosdepth/meta.yml b/modules/mosdepth/meta.yml index 5627c268..be568aa6 100644 --- a/modules/mosdepth/meta.yml +++ b/modules/mosdepth/meta.yml @@ -11,6 +11,7 @@ tools: Fast BAM/CRAM depth calculation for WGS, exome, or targeted sequencing. documentation: https://github.com/brentp/mosdepth doi: 10.1093/bioinformatics/btx699 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/multiqc/meta.yml b/modules/multiqc/meta.yml index a54f95ac..63c75a45 100644 --- a/modules/multiqc/meta.yml +++ b/modules/multiqc/meta.yml @@ -11,6 +11,7 @@ tools: It's a general use tool, perfect for summarising the output from numerous bioinformatics tools. homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ + licence: ['GPL-3.0-or-later'] input: - multiqc_files: type: file diff --git a/modules/nanolyse/meta.yml b/modules/nanolyse/meta.yml index c59607fa..326fc221 100644 --- a/modules/nanolyse/meta.yml +++ b/modules/nanolyse/meta.yml @@ -8,6 +8,7 @@ tools: DNA contaminant removal using NanoLyse homepage: https://github.com/wdecoster/nanolyse documentation: https://github.com/wdecoster/nanolyse#nanolyse + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/nanoplot/meta.yml b/modules/nanoplot/meta.yml index 0527624f..52ebb622 100644 --- a/modules/nanoplot/meta.yml +++ b/modules/nanoplot/meta.yml @@ -13,6 +13,7 @@ tools: alignment. homepage: http://nanoplot.bioinf.be documentation: https://github.com/wdecoster/NanoPlot + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/optitype/meta.yml b/modules/optitype/meta.yml index 15912125..37654463 100644 --- a/modules/optitype/meta.yml +++ b/modules/optitype/meta.yml @@ -10,7 +10,7 @@ tools: homepage: https://github.com/FRED-2/OptiType documentation: https://github.com/FRED-2/OptiType doi: "10.1093/bioinformatics/btu548" - licence: ['BSD'] + licence: ['BSD-3-Clause'] input: - meta: diff --git a/modules/pangolin/meta.yml b/modules/pangolin/meta.yml index 29878ef0..a2c0979a 100644 --- a/modules/pangolin/meta.yml +++ b/modules/pangolin/meta.yml @@ -10,6 +10,7 @@ tools: Phylogenetic Assignment of Named Global Outbreak LINeages homepage: https://github.com/cov-lineages/pangolin#pangolearn-description manual: https://github.com/cov-lineages/pangolin#pangolearn-description + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/pbbam/pbmerge/meta.yml b/modules/pbbam/pbmerge/meta.yml index c483ca40..7042d86b 100644 --- a/modules/pbbam/pbmerge/meta.yml +++ b/modules/pbbam/pbmerge/meta.yml @@ -10,7 +10,7 @@ tools: documentation: https://pbbam.readthedocs.io/en/latest/tools/pbmerge.html tool_dev_url: https://github.com/pacificbiosciences/pbbam/ doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: diff --git a/modules/pbccs/meta.yml b/modules/pbccs/meta.yml index b476c829..ef0899a1 100644 --- a/modules/pbccs/meta.yml +++ b/modules/pbccs/meta.yml @@ -9,7 +9,7 @@ tools: documentation: https://ccs.how/ tool_dev_url: https://github.com/PacificBiosciences/ccs doi: "" - licence: ['BSD-3-clause-Clear'] + licence: ['BSD-3-Clause-Clear'] input: - meta: diff --git a/modules/picard/collectmultiplemetrics/meta.yml b/modules/picard/collectmultiplemetrics/meta.yml index 587983a1..613afc62 100644 --- a/modules/picard/collectmultiplemetrics/meta.yml +++ b/modules/picard/collectmultiplemetrics/meta.yml @@ -14,6 +14,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: type: map diff --git a/modules/picard/collectwgsmetrics/meta.yml b/modules/picard/collectwgsmetrics/meta.yml index 7ae2d41d..5b4d8139 100644 --- a/modules/picard/collectwgsmetrics/meta.yml +++ b/modules/picard/collectwgsmetrics/meta.yml @@ -13,6 +13,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: type: map diff --git a/modules/picard/markduplicates/meta.yml b/modules/picard/markduplicates/meta.yml index 13f2d350..c9a08b36 100644 --- a/modules/picard/markduplicates/meta.yml +++ b/modules/picard/markduplicates/meta.yml @@ -14,6 +14,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: type: map diff --git a/modules/picard/mergesamfiles/meta.yml b/modules/picard/mergesamfiles/meta.yml index f732daf4..3d010c3c 100644 --- a/modules/picard/mergesamfiles/meta.yml +++ b/modules/picard/mergesamfiles/meta.yml @@ -12,6 +12,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: type: map diff --git a/modules/picard/sortsam/meta.yml b/modules/picard/sortsam/meta.yml index 3e0fb450..aa90e456 100644 --- a/modules/picard/sortsam/meta.yml +++ b/modules/picard/sortsam/meta.yml @@ -11,6 +11,7 @@ tools: data and formats such as SAM/BAM/CRAM and VCF. homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ + licence: ['MIT'] input: - meta: diff --git a/modules/qcat/meta.yml b/modules/qcat/meta.yml index 938bc337..e0ab6a0f 100644 --- a/modules/qcat/meta.yml +++ b/modules/qcat/meta.yml @@ -9,6 +9,7 @@ tools: A demultiplexer for Nanopore samples homepage: https://github.com/nanoporetech/qcat documentation: https://github.com/nanoporetech/qcat#qcat + licence: ['MPL-2.0'] input: - meta: type: map diff --git a/modules/qualimap/bamqc/meta.yml b/modules/qualimap/bamqc/meta.yml index cc0471fc..6888d30e 100644 --- a/modules/qualimap/bamqc/meta.yml +++ b/modules/qualimap/bamqc/meta.yml @@ -14,6 +14,7 @@ tools: 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 diff --git a/modules/quast/meta.yml b/modules/quast/meta.yml index 8b692e9e..05faa8b8 100644 --- a/modules/quast/meta.yml +++ b/modules/quast/meta.yml @@ -9,7 +9,8 @@ tools: description: | QUAST calculates quality metrics for genome assemblies homepage: http://bioinf.spbau.ru/quast - doi: + doi: https://doi.org/10.1093/bioinformatics/btt086 + licence: ['GPL-2.0-only'] input: - consensus: type: file diff --git a/modules/rsem/calculateexpression/meta.yml b/modules/rsem/calculateexpression/meta.yml index e2fb8f6d..fdfaa0c4 100644 --- a/modules/rsem/calculateexpression/meta.yml +++ b/modules/rsem/calculateexpression/meta.yml @@ -11,6 +11,7 @@ tools: homepage: https://github.com/deweylab/RSEM documentation: https://github.com/deweylab/RSEM doi: https://doi.org/10.1186/1471-2105-12-323 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rsem/preparereference/meta.yml b/modules/rsem/preparereference/meta.yml index 94f7cc05..062f0256 100644 --- a/modules/rsem/preparereference/meta.yml +++ b/modules/rsem/preparereference/meta.yml @@ -10,6 +10,7 @@ tools: homepage: https://github.com/deweylab/RSEM documentation: https://github.com/deweylab/RSEM doi: https://doi.org/10.1186/1471-2105-12-323 + licence: ['GPL-3.0-or-later'] input: - fasta: type: file diff --git a/modules/rseqc/bamstat/meta.yml b/modules/rseqc/bamstat/meta.yml index 64a0b9e4..561ba195 100644 --- a/modules/rseqc/bamstat/meta.yml +++ b/modules/rseqc/bamstat/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/inferexperiment/meta.yml b/modules/rseqc/inferexperiment/meta.yml index 63710d7b..88eabc8a 100644 --- a/modules/rseqc/inferexperiment/meta.yml +++ b/modules/rseqc/inferexperiment/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/innerdistance/meta.yml b/modules/rseqc/innerdistance/meta.yml index 7eea1350..27bcf242 100644 --- a/modules/rseqc/innerdistance/meta.yml +++ b/modules/rseqc/innerdistance/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/junctionannotation/meta.yml b/modules/rseqc/junctionannotation/meta.yml index 5562b0b7..56364232 100644 --- a/modules/rseqc/junctionannotation/meta.yml +++ b/modules/rseqc/junctionannotation/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/junctionsaturation/meta.yml b/modules/rseqc/junctionsaturation/meta.yml index ffa359ab..05d814ad 100644 --- a/modules/rseqc/junctionsaturation/meta.yml +++ b/modules/rseqc/junctionsaturation/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/readdistribution/meta.yml b/modules/rseqc/readdistribution/meta.yml index d12ad600..4c736878 100644 --- a/modules/rseqc/readdistribution/meta.yml +++ b/modules/rseqc/readdistribution/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/rseqc/readduplication/meta.yml b/modules/rseqc/readduplication/meta.yml index 98d25ea4..3623de80 100644 --- a/modules/rseqc/readduplication/meta.yml +++ b/modules/rseqc/readduplication/meta.yml @@ -11,6 +11,7 @@ tools: homepage: http://rseqc.sourceforge.net/ documentation: http://rseqc.sourceforge.net/ doi: 10.1093/bioinformatics/bts356 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/salmon/index/meta.yml b/modules/salmon/index/meta.yml index c956f15c..3b0cd853 100644 --- a/modules/salmon/index/meta.yml +++ b/modules/salmon/index/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://salmon.readthedocs.io/en/latest/salmon.html manual: https://salmon.readthedocs.io/en/latest/salmon.html doi: 10.1038/nmeth.4197 + licence: ['GPL-3.0-or-later'] input: - genome_fasta: type: file diff --git a/modules/salmon/quant/meta.yml b/modules/salmon/quant/meta.yml index 47e81229..223ca82b 100644 --- a/modules/salmon/quant/meta.yml +++ b/modules/salmon/quant/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://salmon.readthedocs.io/en/latest/salmon.html manual: https://salmon.readthedocs.io/en/latest/salmon.html doi: 10.1038/nmeth.4197 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/samtools/ampliconclip/meta.yml b/modules/samtools/ampliconclip/meta.yml index 7aa8c6bd..8959b98d 100644 --- a/modules/samtools/ampliconclip/meta.yml +++ b/modules/samtools/ampliconclip/meta.yml @@ -15,6 +15,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: diff --git a/modules/samtools/faidx/meta.yml b/modules/samtools/faidx/meta.yml index 6e63b671..16c0b334 100644 --- a/modules/samtools/faidx/meta.yml +++ b/modules/samtools/faidx/meta.yml @@ -12,6 +12,7 @@ tools: homepage: http://www.htslib.org/ documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/samtools/fastq/meta.yml b/modules/samtools/fastq/meta.yml index 9a45886b..91fd476d 100644 --- a/modules/samtools/fastq/meta.yml +++ b/modules/samtools/fastq/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/flagstat/meta.yml b/modules/samtools/flagstat/meta.yml index d408cb76..9bd9ff89 100644 --- a/modules/samtools/flagstat/meta.yml +++ b/modules/samtools/flagstat/meta.yml @@ -16,6 +16,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/idxstats/meta.yml b/modules/samtools/idxstats/meta.yml index f4cb613f..ec542f34 100644 --- a/modules/samtools/idxstats/meta.yml +++ b/modules/samtools/idxstats/meta.yml @@ -17,6 +17,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/index/meta.yml b/modules/samtools/index/meta.yml index 5f4dd3fb..988e8f53 100644 --- a/modules/samtools/index/meta.yml +++ b/modules/samtools/index/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/merge/meta.yml b/modules/samtools/merge/meta.yml index 1903cdaa..78b75b36 100644 --- a/modules/samtools/merge/meta.yml +++ b/modules/samtools/merge/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/mpileup/meta.yml b/modules/samtools/mpileup/meta.yml index ce55643a..fac7a5bc 100644 --- a/modules/samtools/mpileup/meta.yml +++ b/modules/samtools/mpileup/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/sort/meta.yml b/modules/samtools/sort/meta.yml index cd47c86d..3402a068 100644 --- a/modules/samtools/sort/meta.yml +++ b/modules/samtools/sort/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/stats/meta.yml b/modules/samtools/stats/meta.yml index d75d73e2..ae41498a 100644 --- a/modules/samtools/stats/meta.yml +++ b/modules/samtools/stats/meta.yml @@ -15,6 +15,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/samtools/view/meta.yml b/modules/samtools/view/meta.yml index 2e66e7cd..29d1ecc1 100644 --- a/modules/samtools/view/meta.yml +++ b/modules/samtools/view/meta.yml @@ -14,6 +14,7 @@ tools: homepage: http://www.htslib.org/ documentation: hhttp://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/seacr/callpeak/meta.yml b/modules/seacr/callpeak/meta.yml index 22db567d..53b3415f 100644 --- a/modules/seacr/callpeak/meta.yml +++ b/modules/seacr/callpeak/meta.yml @@ -17,6 +17,7 @@ tools: (i.e. regions with no read coverage). homepage: https://github.com/FredHutch/SEACR documentation: https://github.com/FredHutch/SEACR + licence: ['GPL-2.0-only'] input: - meta: type: map diff --git a/modules/seqkit/split2/meta.yml b/modules/seqkit/split2/meta.yml index beb676ea..90eec7f9 100644 --- a/modules/seqkit/split2/meta.yml +++ b/modules/seqkit/split2/meta.yml @@ -10,6 +10,7 @@ tools: homepage: https://github.com/shenwei356/seqkit documentation: https://bioinf.shenwei.me/seqkit/ doi: 10.1371/journal.pone.0163962 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/sequenzautils/bam2seqz/meta.yml b/modules/sequenzautils/bam2seqz/meta.yml index 278f9750..e05d2fa9 100755 --- a/modules/sequenzautils/bam2seqz/meta.yml +++ b/modules/sequenzautils/bam2seqz/meta.yml @@ -8,7 +8,7 @@ tools: homepage: https://sequenza-utils.readthedocs.io/en/latest/index.html documentation: https://sequenza-utils.readthedocs.io/en/latest/index.html doi: 10.1093/annonc/mdu479 - + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/sequenzautils/gcwiggle/meta.yml b/modules/sequenzautils/gcwiggle/meta.yml index 4ecba04a..616e073b 100644 --- a/modules/sequenzautils/gcwiggle/meta.yml +++ b/modules/sequenzautils/gcwiggle/meta.yml @@ -8,6 +8,7 @@ tools: homepage: https://sequenza-utils.readthedocs.io/en/latest/index.html documentation: https://sequenza-utils.readthedocs.io/en/latest/index.html doi: 10.1093/annonc/mdu479 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/seqwish/induce/meta.yml b/modules/seqwish/induce/meta.yml index c5f9d4c7..281e3994 100644 --- a/modules/seqwish/induce/meta.yml +++ b/modules/seqwish/induce/meta.yml @@ -13,6 +13,7 @@ tools: sequences to a variation graph encoding the sequences and their alignments. homepage: https://github.com/ekg/seqwish documentation: https://github.com/ekg/seqwish + licence: ['MIT'] input: - meta: type: map diff --git a/modules/snpeff/meta.yml b/modules/snpeff/meta.yml index ba049c0e..8ba18683 100644 --- a/modules/snpeff/meta.yml +++ b/modules/snpeff/meta.yml @@ -9,6 +9,7 @@ tools: It annotates and predicts the effects of genetic variants on genes and proteins (such as amino acid changes). homepage: https://pcingola.github.io/SnpEff/ documentation: https://pcingola.github.io/SnpEff/se_introduction/ + licence: ['MIT'] params: - use_cache: type: boolean diff --git a/modules/snpsites/meta.yml b/modules/snpsites/meta.yml index 5361aa3e..381d25cc 100644 --- a/modules/snpsites/meta.yml +++ b/modules/snpsites/meta.yml @@ -9,6 +9,7 @@ tools: description: Rapidly extracts SNPs from a multi-FASTA alignment. homepage: https://www.sanger.ac.uk/tool/snp-sites/ documentation: https://github.com/sanger-pathogens/snp-sites + licence: ['GPL-3.0-or-later'] input: - alignment: type: file diff --git a/modules/sratools/fasterqdump/meta.yml b/modules/sratools/fasterqdump/meta.yml index ac61e71f..1478bed8 100644 --- a/modules/sratools/fasterqdump/meta.yml +++ b/modules/sratools/fasterqdump/meta.yml @@ -10,7 +10,7 @@ tools: homepage: https://github.com/ncbi/sra-tools documentation: https://github.com/ncbi/sra-tools/wiki tool_dev_url: https://github.com/ncbi/sra-tools - licence: ['Public Domain'] + licence: ['US-Government-Work'] input: - meta: diff --git a/modules/sratools/prefetch/meta.yml b/modules/sratools/prefetch/meta.yml index ab0a5ce5..22213b29 100644 --- a/modules/sratools/prefetch/meta.yml +++ b/modules/sratools/prefetch/meta.yml @@ -10,7 +10,7 @@ tools: homepage: https://github.com/ncbi/sra-tools documentation: https://github.com/ncbi/sra-tools/wiki tool_dev_url: https://github.com/ncbi/sra-tools - licence: ['Public Domain'] + licence: ['US-Government-Work'] input: - meta: diff --git a/modules/star/align/meta.yml b/modules/star/align/meta.yml index 00f955dd..2d78b81a 100644 --- a/modules/star/align/meta.yml +++ b/modules/star/align/meta.yml @@ -13,6 +13,7 @@ tools: homepage: https://github.com/alexdobin/STAR manual: https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf doi: 10.1093/bioinformatics/bts635 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/star/genomegenerate/meta.yml b/modules/star/genomegenerate/meta.yml index 09728b58..04ade195 100644 --- a/modules/star/genomegenerate/meta.yml +++ b/modules/star/genomegenerate/meta.yml @@ -13,6 +13,7 @@ tools: homepage: https://github.com/alexdobin/STAR manual: https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf doi: 10.1093/bioinformatics/bts635 + licence: ['MIT'] input: - fasta: type: file diff --git a/modules/stringtie/merge/meta.yml b/modules/stringtie/merge/meta.yml index 81eca6dc..02899766 100644 --- a/modules/stringtie/merge/meta.yml +++ b/modules/stringtie/merge/meta.yml @@ -10,6 +10,7 @@ tools: Transcript assembly and quantification for RNA-Seq homepage: https://ccb.jhu.edu/software/stringtie/index.shtml documentation: https://ccb.jhu.edu/software/stringtie/index.shtml?t=manual + licence: ['MIT'] input: - stringtie_gtf: type: file diff --git a/modules/stringtie/stringtie/meta.yml b/modules/stringtie/stringtie/meta.yml index 0074b90f..7e854caa 100644 --- a/modules/stringtie/stringtie/meta.yml +++ b/modules/stringtie/stringtie/meta.yml @@ -12,6 +12,7 @@ tools: Transcript assembly and quantification for RNA-Seq homepage: https://ccb.jhu.edu/software/stringtie/index.shtml documentation: https://ccb.jhu.edu/software/stringtie/index.shtml?t=manual + licence: ['MIT'] input: - meta: type: map diff --git a/modules/tabix/bgzip/meta.yml b/modules/tabix/bgzip/meta.yml index 0b0787bf..f8318c7c 100644 --- a/modules/tabix/bgzip/meta.yml +++ b/modules/tabix/bgzip/meta.yml @@ -11,6 +11,7 @@ tools: homepage: https://www.htslib.org/doc/tabix.html documentation: http://www.htslib.org/doc/bgzip.html doi: 10.1093/bioinformatics/btp352 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/tabix/bgziptabix/meta.yml b/modules/tabix/bgziptabix/meta.yml index 5b4cc4e8..f2aed84d 100644 --- a/modules/tabix/bgziptabix/meta.yml +++ b/modules/tabix/bgziptabix/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://www.htslib.org/doc/tabix.html documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/tabix/tabix/meta.yml b/modules/tabix/tabix/meta.yml index 15edf8c3..2e37c4ff 100644 --- a/modules/tabix/tabix/meta.yml +++ b/modules/tabix/tabix/meta.yml @@ -10,6 +10,7 @@ tools: homepage: https://www.htslib.org/doc/tabix.html documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 + licence: ['MIT'] input: - meta: type: map diff --git a/modules/tiddit/sv/meta.yml b/modules/tiddit/sv/meta.yml index 4060a450..f788ffa6 100644 --- a/modules/tiddit/sv/meta.yml +++ b/modules/tiddit/sv/meta.yml @@ -10,6 +10,7 @@ tools: homepage: https://github.com/SciLifeLab/TIDDIT documentation: https://github.com/SciLifeLab/TIDDIT/blob/master/README.md doi: 10.12688/f1000research.11168.1 + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/trimgalore/meta.yml b/modules/trimgalore/meta.yml index 7c46bea9..c7e1df1d 100644 --- a/modules/trimgalore/meta.yml +++ b/modules/trimgalore/meta.yml @@ -13,6 +13,7 @@ tools: MspI-digested RRBS-type (Reduced Representation Bisufite-Seq) libraries. homepage: https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/ documentation: https://github.com/FelixKrueger/TrimGalore/blob/master/Docs/Trim_Galore_User_Guide.md + licence: ['GPL-3.0-or-later'] input: - meta: type: map diff --git a/modules/untar/meta.yml b/modules/untar/meta.yml index 2b586c92..51f94995 100644 --- a/modules/untar/meta.yml +++ b/modules/untar/meta.yml @@ -8,6 +8,7 @@ tools: description: | Extract tar.gz files. documentation: https://www.gnu.org/software/tar/manual/ + licence: ['GPL-3.0-or-later'] input: - archive: type: file diff --git a/modules/unzip/meta.yml b/modules/unzip/meta.yml index 57c07f00..7bca1ec2 100644 --- a/modules/unzip/meta.yml +++ b/modules/unzip/meta.yml @@ -9,7 +9,7 @@ tools: homepage: https://sourceforge.net/projects/p7zip/ documentation: https://sourceforge.net/projects/p7zip/ tool_dev_url: https://sourceforge.net/projects/p7zip" - licence: "GNU LPGL" + licence: ['LGPL-2.1-or-later'] input: - archive: diff --git a/modules/variantbam/meta.yml b/modules/variantbam/meta.yml index 9394e418..ddcd0656 100644 --- a/modules/variantbam/meta.yml +++ b/modules/variantbam/meta.yml @@ -14,7 +14,7 @@ tools: documentation: https://github.com/walaj/VariantBam#table-of-contents tool_dev_url: https://github.com/walaj/VariantBam doi: 10.1093/bioinformatics/btw111 - licence: ['Apache2'] + licence: ['Apache-2.0'] input: - meta: From 81ed0e0ff2a138cd65146d167f614fa4f5871c8b Mon Sep 17 00:00:00 2001 From: Kevin Date: Sat, 23 Oct 2021 09:30:10 -0700 Subject: [PATCH 04/14] added meta.yml for umitools (#860) * added meta.yml for umitools * Update modules/umitools/dedup/meta.yml type: list --> type: file Co-authored-by: Harshil Patel * Update modules/umitools/dedup/meta.yml aww thanks @drpateh :D Co-authored-by: Harshil Patel * Update modules/umitools/dedup/meta.yml module can only handle one BAM at a time, ergo BAM files --> BAM file Co-authored-by: Harshil Patel * Update meta.yml added `pattern` for input `bam` and `bai` * removed trailing whitespace to appease linter * added license to new meta.yml files * Apply suggestions from code review Co-authored-by: Harshil Patel --- modules/umitools/dedup/meta.yml | 47 +++++++++++++++++++++++++++++++ modules/umitools/extract/meta.yml | 46 ++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 modules/umitools/dedup/meta.yml create mode 100644 modules/umitools/extract/meta.yml diff --git a/modules/umitools/dedup/meta.yml b/modules/umitools/dedup/meta.yml new file mode 100644 index 00000000..f89cc1ea --- /dev/null +++ b/modules/umitools/dedup/meta.yml @@ -0,0 +1,47 @@ +name: umitools_dedup +description: Deduplicate reads based on the mapping co-ordinate and the UMI attached to the read. +keywords: + - umitools + - deduplication +tools: + - umi_tools: + description: > + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) + and single cell RNA-Seq cell barcodes + documentation: https://umi-tools.readthedocs.io/en/latest/ + license: ['MIT'] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: | + BAM file containing reads to be deduplicated via UMIs. + pattern: "*.{bam}" + - bai: + type: file + description: | + BAM index files corresponding to the input BAM file. + pattern: "*.{bai}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM file with deduplicated UMIs. + pattern: "*.{bam}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@drpatelh" + - "@grst" + - "@klkeys" diff --git a/modules/umitools/extract/meta.yml b/modules/umitools/extract/meta.yml new file mode 100644 index 00000000..ae6f9fee --- /dev/null +++ b/modules/umitools/extract/meta.yml @@ -0,0 +1,46 @@ +name: umitools_extract +description: Extracts UMI barcode from a read and add it to the read name, leaving any sample barcode in place +keywords: + - umitools + - extract +tools: + - umi_tools: + description: > + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) + and single cell RNA-Seq cell barcodes + documentation: https://umi-tools.readthedocs.io/en/latest/ + license: ['MIT'] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: list + description: | + List of input FASTQ files whose UMIs will be extracted. +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: Extracted FASTQ files. | + For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. + pattern: "*.{fastq.gz}" + - log: + type: file + description: Logfile for umi_tools + pattern: "*.{log}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@drpatelh" + - "@grst" From 7676d9d7282c74a429ed08962db5556295f17108 Mon Sep 17 00:00:00 2001 From: GCJMackenzie <43276267+GCJMackenzie@users.noreply.github.com> Date: Sat, 23 Oct 2021 18:45:19 +0100 Subject: [PATCH 05/14] Filtermutectcalls (#796) * first commit with files for filtermutectcalls initialised * found missing test file that needs to be resolved * saving config changes * fixing pytest_module conflict * finished module, just needs repository side tests added * test data added, versions file updated * modified to emit correct versions file * Update main.nf * Update test_data.config * updated test script * fixed main.nf * Update main.nf * Update main.nf * removed whitespace from test script * Update test_data.config * Update .gitignore * Update test_data.config * tests changed to new names, main script edited to match comments on learnreads pr * Update meta.yml * Apply suggestions from code review * Update main.nf * Apply suggestions from code review * Apply suggestions from code review * Update main.nf * Update main.nf * Update main.nf * Update main.nf Co-authored-by: GCJMackenzie Co-authored-by: James A. Fellows Yates Co-authored-by: Harshil Patel --- modules/gatk4/filtermutectcalls/functions.nf | 78 +++++++++++++++++ modules/gatk4/filtermutectcalls/main.nf | 65 ++++++++++++++ modules/gatk4/filtermutectcalls/meta.yml | 84 +++++++++++++++++++ tests/config/pytest_modules.yml | 4 + tests/modules/gatk4/filtermutectcalls/main.nf | 65 ++++++++++++++ .../modules/gatk4/filtermutectcalls/test.yml | 35 ++++++++ 6 files changed, 331 insertions(+) create mode 100644 modules/gatk4/filtermutectcalls/functions.nf create mode 100644 modules/gatk4/filtermutectcalls/main.nf create mode 100644 modules/gatk4/filtermutectcalls/meta.yml create mode 100644 tests/modules/gatk4/filtermutectcalls/main.nf create mode 100644 tests/modules/gatk4/filtermutectcalls/test.yml diff --git a/modules/gatk4/filtermutectcalls/functions.nf b/modules/gatk4/filtermutectcalls/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/gatk4/filtermutectcalls/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/gatk4/filtermutectcalls/main.nf b/modules/gatk4/filtermutectcalls/main.nf new file mode 100644 index 00000000..5a784677 --- /dev/null +++ b/modules/gatk4/filtermutectcalls/main.nf @@ -0,0 +1,65 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GATK4_FILTERMUTECTCALLS { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::gatk4=4.2.0.0" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/gatk4:4.2.0.0--0" + } else { + container "quay.io/biocontainers/gatk4:4.2.0.0--0" + } + + input: + tuple val(meta), path(vcf), path(tbi), path(stats), path(orientationbias), path(segmentation), path(contaminationfile), val(contaminationest) + path fasta + path fastaidx + path dict + + output: + tuple val(meta), path("*.vcf.gz") , emit: vcf + tuple val(meta), path("*.vcf.gz.tbi") , emit: tbi + tuple val(meta), path("*.filteringStats.tsv"), emit: stats + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + + def orientationbias_options = '' + if (orientationbias) { + orientationbias_options = '--orientation-bias-artifact-priors ' + orientationbias.join(' --orientation-bias-artifact-priors ') + } + + def segmentation_options = '' + if (segmentation) { + segmentation_options = '--tumor-segmentation ' + segmentation.join(' --tumor-segmentation ') + } + + def contamination_options = contaminationest ? " --contamination-estimate ${contaminationest} " : '' + if (contaminationfile) { + contamination_options = '--contamination-table ' + contaminationfile.join(' --contamination-table ') + } + """ + gatk FilterMutectCalls \\ + -R $fasta \\ + -V $vcf \\ + $orientationbias_options \\ + $segmentation_options \\ + $contamination_options \\ + -O ${prefix}.vcf.gz \\ + $options.args + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/gatk4/filtermutectcalls/meta.yml b/modules/gatk4/filtermutectcalls/meta.yml new file mode 100644 index 00000000..f14f9404 --- /dev/null +++ b/modules/gatk4/filtermutectcalls/meta.yml @@ -0,0 +1,84 @@ +name: gatk4_filtermutectcalls +description: | + Filters the raw output of mutect2, can optionally use outputs of calculatecontamination and learnreadorientationmodel to improve filtering. +keywords: + - filtermutectcalls + - mutect2 + - gatk4 + - filtervcf +tools: + - gatk4: + description: | + Developed in the Data Sciences Platform at the Broad Institute, the toolkit offers a wide variety of tools + with a primary focus on variant discovery and genotyping. Its powerful processing engine + and high-performance computing features make it capable of taking on projects of any size. + homepage: https://gatk.broadinstitute.org/hc/en-us + documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s + doi: 10.1158/1538-7445.AM2017-3590 + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - vcf: + type: file + description: compressed vcf file of mutect2calls + pattern: "*.vcf.gz" + - tbi: + type: file + description: Index of vcf file + pattern: "*vcf.gz.tbi" + - stats: + type: file + description: Stats file that pairs with output vcf file + pattern: "*vcf.gz.stats" + - orientationbias: + type: list + description: files containing artifact priors for input vcf. Optional input. + pattern: "*.artifact-prior.tar.gz" + - segmentation: + type: list + description: tables containing segmentation information for input vcf. Optional input. + pattern: "*.segmentation.table" + - contaminationfile: + type: list + description: table(s) containing contamination contamination data for input vcf. Optional input, takes priority over contaminationest. + pattern: "*.contamination.table" + - contaminationest: + type: val + description: estimation of contamination value as a double. Optional input, will only be used if contaminationfile is not specified. + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - fastaidx: + type: file + description: Index of reference fasta file + pattern: "fasta.fai" + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + +output: + - vcf: + type: file + description: file containing filtered mutect2 calls. + pattern: "*.vcf.gz" + - tbi: + type: file + description: tbi file that pairs with vcf. + pattern: "*.vcf.gz.tbi" + - stats: + type: file + description: file containing statistics of the filtermutectcalls run. + pattern: "*.filteringStats.tsv" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@GCJMackenzie" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 7093790b..dfa00bd0 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -410,6 +410,10 @@ gatk4/fastqtosam: - modules/gatk4/fastqtosam/** - tests/modules/gatk4/fastqtosam/** +gatk4/filtermutectcalls: + - modules/gatk4/filtermutectcalls/** + - tests/modules/gatk4/filtermutectcalls/** + gatk4/getpileupsummaries: - modules/gatk4/getpileupsummaries/** - tests/modules/gatk4/getpileupsummaries/** diff --git a/tests/modules/gatk4/filtermutectcalls/main.nf b/tests/modules/gatk4/filtermutectcalls/main.nf new file mode 100644 index 00000000..a425238b --- /dev/null +++ b/tests/modules/gatk4/filtermutectcalls/main.nf @@ -0,0 +1,65 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GATK4_FILTERMUTECTCALLS } from '../../../../modules/gatk4/filtermutectcalls/main.nf' addParams( options: [suffix:'.filtered'] ) + +workflow test_gatk4_filtermutectcalls_base { + + input = [ + [ id:'test'], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_tbi'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_stats'], checkIfExists: true), + [], + [], + [], + [] + ] + + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + fastaidx = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + dict = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + + GATK4_FILTERMUTECTCALLS ( input, fasta, fastaidx, dict ) +} + +workflow test_gatk4_filtermutectcalls_with_files { + + input = [ + [ id:'test'], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_tbi'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_stats'], checkIfExists: true), + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_artifact_prior_tar_gz'], checkIfExists: true) ], + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_segmentation_table'], checkIfExists: true) ], + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_contamination_table'], checkIfExists: true) ], + [] + ] + + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + fastaidx = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + dict = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + + GATK4_FILTERMUTECTCALLS ( input, fasta, fastaidx, dict ) +} + +workflow test_gatk4_filtermutectcalls_use_val { + + input = [ + [ id:'test'], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_tbi'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_vcf_gz_stats'], checkIfExists: true), + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_mutect2_calls_artifact_prior_tar_gz'], checkIfExists: true) ], + [ file(params.test_data['homo_sapiens']['illumina']['test_test2_paired_segmentation_table'], checkIfExists: true) ], + [], + '20.0' + ] + + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + fastaidx = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + dict = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + + GATK4_FILTERMUTECTCALLS ( input, fasta, fastaidx, dict ) +} diff --git a/tests/modules/gatk4/filtermutectcalls/test.yml b/tests/modules/gatk4/filtermutectcalls/test.yml new file mode 100644 index 00000000..b17a306c --- /dev/null +++ b/tests/modules/gatk4/filtermutectcalls/test.yml @@ -0,0 +1,35 @@ +- name: gatk4 filtermutectcalls test_gatk4_filtermutectcalls_base + command: nextflow run tests/modules/gatk4/filtermutectcalls -entry test_gatk4_filtermutectcalls_base -c tests/config/nextflow.config + tags: + - gatk4 + - gatk4/filtermutectcalls + files: + - path: output/gatk4/test.filtered.vcf.gz + - path: output/gatk4/test.filtered.vcf.gz.filteringStats.tsv + md5sum: 98e1b87a52999eb8f429ef4a7877eb3f + - path: output/gatk4/test.filtered.vcf.gz.tbi + md5sum: d88d2b745c9226ddf284e3494db8b9d2 + +- name: gatk4 filtermutectcalls test_gatk4_filtermutectcalls_with_files + command: nextflow run tests/modules/gatk4/filtermutectcalls -entry test_gatk4_filtermutectcalls_with_files -c tests/config/nextflow.config + tags: + - gatk4 + - gatk4/filtermutectcalls + files: + - path: output/gatk4/test.filtered.vcf.gz + - path: output/gatk4/test.filtered.vcf.gz.filteringStats.tsv + md5sum: 98e1b87a52999eb8f429ef4a7877eb3f + - path: output/gatk4/test.filtered.vcf.gz.tbi + md5sum: d88d2b745c9226ddf284e3494db8b9d2 + +- name: gatk4 filtermutectcalls test_gatk4_filtermutectcalls_use_val + command: nextflow run tests/modules/gatk4/filtermutectcalls -entry test_gatk4_filtermutectcalls_use_val -c tests/config/nextflow.config + tags: + - gatk4 + - gatk4/filtermutectcalls + files: + - path: output/gatk4/test.filtered.vcf.gz + - path: output/gatk4/test.filtered.vcf.gz.filteringStats.tsv + md5sum: 98e1b87a52999eb8f429ef4a7877eb3f + - path: output/gatk4/test.filtered.vcf.gz.tbi + md5sum: d88d2b745c9226ddf284e3494db8b9d2 From 481d3c811d07c35ddf7dbf2ee528575bbfb8254c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Guizard?= Date: Sat, 23 Oct 2021 18:55:28 +0100 Subject: [PATCH 06/14] New module: `gstama/collapse` (#809) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 👌 IMPROVE: Add some pacbio test files * 🐛 FIX: Add Pacbio index to test_data.config * 👌 IMPROVE: Re add 10000 data test * 👌 IMPROVE: Add some pbindex * 🐛 FIX: Add pbi extension to files * 📦 NEW: Add galgal6 chr30 test data * 📦 NEW: Add gd-tama module * 🐛 FIX (TEMP): Update singularity container address * 📦 NEW: Add bamtools module * 📦 NEW: Rewrite and rename module (gstama => gstama/collapse) * 👌 IMPROVE: ignore test data * 👌 IMPROVE: Remove junk files * 👌 IMPROVE: Update output * 👌 IMPROVE: Add channel for publishing tama's metadata outputs * 👌 IMPROVE: Update process label * 🐛 FIX: Use depot.galxyproject.org url for singularity * 👌 IMPROVE: autoselect running mode * 🐛 FIX: correct gstama collapse bash test * 👌 IMPROVE: Update to last templates version * 👌 IMPROVE: Update tama package and label * 👌 IMPROVE: Final version of test datasets config * 👌 IMPROVE: Remove useless index + Fix Typos * 👌 IMPROVE: Update test * 👌 IMPROVE: Add some pacbio test files * 🐛 FIX: Add Pacbio index to test_data.config * 👌 IMPROVE: Re add 10000 data test * 👌 IMPROVE: Add some pbindex * 🐛 FIX: Add pbi extension to files * 📦 NEW: Add galgal6 chr30 test data * 📦 NEW: Add gd-tama module * 🐛 FIX (TEMP): Update singularity container address * 📦 NEW: Add bamtools module * 📦 NEW: Rewrite and rename module (gstama => gstama/collapse) * 👌 IMPROVE: ignore test data * 👌 IMPROVE: Update output * 👌 IMPROVE: Add channel for publishing tama's metadata outputs * 👌 IMPROVE: Update process label * 🐛 FIX: Use depot.galxyproject.org url for singularity * 👌 IMPROVE: autoselect running mode * 🐛 FIX: correct gstama collapse bash test * 👌 IMPROVE: Update to last templates version * 👌 IMPROVE: Update tama package and label * 👌 IMPROVE: Final version of test datasets config * 👌 IMPROVE: Remove useless index + Fix Typos * 👌 IMPROVE: Update test * 👌 IMPROVE: delete unnecessary files * 👌 IMPROVE: Update + clean - Remove unnecessary files - Update to new versions.yml file - Better output channels * 👌 IMPROVE: Update meta.yml and output channels * 👌 IMPROVE: Remove useless files * 👌 IMPROVE: Remove automatic MODE setup * 👌 IMPROVE: Applied @jfy133 code modification suggestions * Update modules/gstama/collapse/meta.yml Co-authored-by: James A. Fellows Yates * 🐛 FIX: Add missing fasta option in meta.yml * 🐛 FIX: Fix typo * 🐛 FIX: Update package version * Update main.nf * Update meta.yml * Update modules/gstama/collapse/meta.yml * Apply suggestions from code review * Update tests/modules/gstama/collapse/main.nf * Update main.nf Co-authored-by: James A. Fellows Yates Co-authored-by: Harshil Patel --- modules/gstama/collapse/functions.nf | 78 ++++++++++++++++++++++++ modules/gstama/collapse/main.nf | 52 ++++++++++++++++ modules/gstama/collapse/meta.yml | 83 ++++++++++++++++++++++++++ tests/config/pytest_modules.yml | 4 ++ tests/modules/gstama/collapse/main.nf | 16 +++++ tests/modules/gstama/collapse/test.yml | 22 +++++++ 6 files changed, 255 insertions(+) create mode 100644 modules/gstama/collapse/functions.nf create mode 100644 modules/gstama/collapse/main.nf create mode 100644 modules/gstama/collapse/meta.yml create mode 100644 tests/modules/gstama/collapse/main.nf create mode 100644 tests/modules/gstama/collapse/test.yml diff --git a/modules/gstama/collapse/functions.nf b/modules/gstama/collapse/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/gstama/collapse/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/gstama/collapse/main.nf b/modules/gstama/collapse/main.nf new file mode 100644 index 00000000..d4167b5e --- /dev/null +++ b/modules/gstama/collapse/main.nf @@ -0,0 +1,52 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GSTAMA_COLLAPSE { + tag "$meta.id" + label 'process_medium' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::gs-tama=1.0.2" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/gs-tama:1.0.2--hdfd78af_0" + } else { + container "quay.io/biocontainers/gs-tama:1.0.2--hdfd78af_0" + } + + input: + tuple val(meta), path(bam) + path fasta + + output: + tuple val(meta), path("*.bed") , emit: bed + tuple val(meta), path("*_trans_read.bed") , emit: bed_trans_reads + tuple val(meta), path("*_local_density_error.txt"), emit: local_density_error + tuple val(meta), path("*_polya.txt") , emit: polya + tuple val(meta), path("*_read.txt") , emit: read + tuple val(meta), path("*_strand_check.txt") , emit: strand_check + tuple val(meta), path("*_trans_report.txt") , emit: trans_report + path "versions.yml" , emit: versions + + tuple val(meta), path("*_varcov.txt") , emit: varcov , optional: true + tuple val(meta), path("*_variants.txt") , emit: variants, optional: true + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + """ + tama_collapse.py \\ + -s $bam \\ + -f $fasta \\ + -p ${prefix} \\ + $options.args + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$( tama_collapse.py -version | grep 'tc_version_date_'|sed 's/tc_version_date_//g' ) + END_VERSIONS + """ +} diff --git a/modules/gstama/collapse/meta.yml b/modules/gstama/collapse/meta.yml new file mode 100644 index 00000000..0b26191f --- /dev/null +++ b/modules/gstama/collapse/meta.yml @@ -0,0 +1,83 @@ +name: GSTAMA_COLLAPSE +description: Collapse redundant transcript models in Iso-Seq data. +keywords: + - tama_collapse.py + - isoseq + - nanopore + - long-read + - transcriptome + - gene model + - TAMA +tools: + - tama_collapse.py: + description: Collapse similar gene model + homepage: https://github.com/sguizard/gs-tama + documentation: https://github.com/GenomeRIK/tama/wiki + tool_dev_url: https://github.com/sguizard/gs-tama + doi: 10.1186/s12864-020-07123-7 + licence: GNU GPL3 + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - bam: + type: file + description: A sorted BAM or sam file of aligned reads + pattern: "*.{bam,sam}" + - fasta: + type: file + description: A fasta file of the genome used for the mapping + pattern: "*.{fasta,fa}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - bed: + type: file + description: a bed12 format file containing the final collapsed version of your transcriptome + pattern: "*.bed" + - bed_trans_reads: + type: file + description: This file uses bed12 format to show the transcript model for each read based on the mapping prior to collapsing. This only contains the reads which were accepted according to the defined thresholds. You can use this file to see if there were any strange occurrences during collapsing. It also contains the relationships between reads and collapsed transcript models. The 1st subfield in the 4th column shows the final transcript ID and the 2nd subfield in the 4th column shows the read ID. If you used no_cap mode for collapsing there may be multiple lines for a single read. This happens when a 5' degraded read can match to multiple 5' longer transcript models. + pattern: "*_trans_read.bed" + - local_density_error: + type: file + description: This file contains the log of filtering for local density error around the splice junctions ("-lde") + pattern: "*_local_density_error.txt" + - polya: + type: file + description: This file contains the reads with potential poly A truncation. + pattern: "*_polya.txt" + - read: + type: file + description: This file contains information for all mapped reads from the input SAM/BAM file. It shows both accepted and discarded reads and should match the number of mapped reads in your SAM/BAM file + pattern: "*_read.txt" + - strand_check: + type: file + description: This file shows instances where the sam flag strand information contrasted the GMAP strand information. + pattern: "*_strand_check.txt" + - trans_report: + type: file + description: This file contains collapsing information for each transcript. + pattern: "*_trans_report.txt" + - varcov: + type: file + description: This file contains the coverage information for each variant detected. + pattern: "*_varcov.txt" + - variants: + type: file + description: This file contains the variants called. Variants are only called if 5 or more reads show the variant at a specific locus. If you would like to change the threshold, please make an issue about this in the Github repo. + pattern: "*_variants.txt" + +authors: + - "@sguizard" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index dfa00bd0..d1a8e7f4 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -490,6 +490,10 @@ graphmap2/index: - modules/graphmap2/index/** - tests/modules/graphmap2/index/** +gstama/collapse: + - modules/gstama/collapse/** + - tests/modules/gstama/collapse/** + gtdbtk/classifywf: - modules/gtdbtk/classifywf/** - tests/modules/gtdbtk/classifywf/** diff --git a/tests/modules/gstama/collapse/main.nf b/tests/modules/gstama/collapse/main.nf new file mode 100644 index 00000000..70b3c741 --- /dev/null +++ b/tests/modules/gstama/collapse/main.nf @@ -0,0 +1,16 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GSTAMA_COLLAPSE } from '../../../../modules/gstama/collapse/main.nf' addParams( options: [ args:"-x capped -b BAM", suffix:'_tc' ] ) + +workflow test_gstama_collapse { + + input = [ + [ id:'test' ], // meta map + file(params.test_data['homo_sapiens']['pacbio']['aligned'], checkIfExists: true) + ] + genome = file(params.test_data['homo_sapiens']['genome']['genome2_fasta'], checkIfExists: true) + + GSTAMA_COLLAPSE ( input, genome ) +} diff --git a/tests/modules/gstama/collapse/test.yml b/tests/modules/gstama/collapse/test.yml new file mode 100644 index 00000000..98de6bb3 --- /dev/null +++ b/tests/modules/gstama/collapse/test.yml @@ -0,0 +1,22 @@ +- name: gstama collapse test_gstama_collapse + command: nextflow run tests/modules/gstama/collapse -entry test_gstama_collapse -c tests/config/nextflow.config + tags: + - gstama + - gstama/collapse + files: + - path: output/gstama/test_tc.bed + md5sum: e5105198ed970a33ae0ecaa7bff421d9 + - path: output/gstama/test_tc_local_density_error.txt + md5sum: b917ac1f14eccd590b6881a686f324d5 + - path: output/gstama/test_tc_polya.txt + md5sum: 628ea62b918fc4f31e109f724d714a66 + - path: output/gstama/test_tc_read.txt + md5sum: d2685d7f24cd1611e0770a5ce25422fe + - path: output/gstama/test_tc_strand_check.txt + md5sum: 42cc52b2660b1e0b84e1c9ab37a965ec + - path: output/gstama/test_tc_trans_read.bed + md5sum: 0ca1a32f33ef05242d897d913802554b + - path: output/gstama/test_tc_trans_report.txt + md5sum: 33a86c15ca2acce36b2a5962f4c1adc4 + - path: output/gstama/test_tc_variants.txt + md5sum: 5b1165e9f33faba4f7207013fc27257e From d3369789dafca9aaa7e2535727705872c13385ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Guizard?= Date: Sat, 23 Oct 2021 19:00:39 +0100 Subject: [PATCH 07/14] New module: `gstama/merge` (#813) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 👌 IMPROVE: Add some pacbio test files * 🐛 FIX: Add Pacbio index to test_data.config * 👌 IMPROVE: Re add 10000 data test * 👌 IMPROVE: Add some pbindex * 🐛 FIX: Add pbi extension to files * 📦 NEW: Add galgal6 chr30 test data * 📦 NEW: Add bamtools module * 👌 IMPROVE: ignore test data * 👌 IMPROVE : add test bed files * 📦 NEW: Add gstama/merge module * 🐛 FIX: Change process label * 👌 IMPROVE: do not merge empty bed * 🐛 FIX: Change 0 lines files detection * 🐛 FIX: replace spaces by tab * 🐛 FIX: Remove tuple for report channel and add version output channel * 👌 IMPROVE: Update to last templates version * 👌 IMPROVE: Update module to last template version * 👌 IMPROVE: Final version of test datasets config * 👌 IMPROVE: Update test * 👌 IMPROVE: Remove useless index + Fix Typos * 👌 IMPROVE: Fix Typos * 👌 IMPROVE: Updates + clean code - Update to last versions.yml file - Better output channels - Update meta.yml * 👌 IMPROVE: Correct typo * 👌 IMPROVE: Remove included filelist creation and add an input channel * 🐛 FIX: Correct typo * 👌 IMPROVE: Add filelist file * 🐛 FIX: tama_merge.py emit a version number * Update modules/gstama/merge/meta.yml Co-authored-by: James A. Fellows Yates * 👌 IMPROVE: Update meta.yml * Update main.nf * Apply suggestions from code review Co-authored-by: James A. Fellows Yates Co-authored-by: Harshil Patel --- modules/gstama/merge/functions.nf | 78 +++++++++++++++++++++++++++++ modules/gstama/merge/main.nf | 46 +++++++++++++++++ modules/gstama/merge/meta.yml | 60 ++++++++++++++++++++++ tests/config/pytest_modules.yml | 4 ++ tests/config/test_data.config | 5 +- tests/modules/gstama/merge/main.nf | 19 +++++++ tests/modules/gstama/merge/test.yml | 14 ++++++ 7 files changed, 224 insertions(+), 2 deletions(-) create mode 100644 modules/gstama/merge/functions.nf create mode 100644 modules/gstama/merge/main.nf create mode 100644 modules/gstama/merge/meta.yml create mode 100644 tests/modules/gstama/merge/main.nf create mode 100644 tests/modules/gstama/merge/test.yml diff --git a/modules/gstama/merge/functions.nf b/modules/gstama/merge/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/gstama/merge/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/gstama/merge/main.nf b/modules/gstama/merge/main.nf new file mode 100644 index 00000000..37d685f6 --- /dev/null +++ b/modules/gstama/merge/main.nf @@ -0,0 +1,46 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GSTAMA_MERGE { + tag "$meta.id" + label 'process_medium' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::gs-tama=1.0.2" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/gs-tama:1.0.2--hdfd78af_0" + } else { + container "quay.io/biocontainers/gs-tama:1.0.2--hdfd78af_0" + } + + input: + tuple val(meta), path(bed) + path filelist + + output: + tuple val(meta), path("*.bed") , emit: bed + tuple val(meta), path("*_gene_report.txt") , emit: gene_report + tuple val(meta), path("*_merge.txt") , emit: merge + tuple val(meta), path("*_trans_report.txt"), emit: trans_report + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + """ + tama_merge.py \\ + -f $filelist \\ + -d merge_dup \\ + -p ${prefix} \\ + $options.args + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$( tama_merge.py -version | head -n1 ) + END_VERSIONS + """ +} diff --git a/modules/gstama/merge/meta.yml b/modules/gstama/merge/meta.yml new file mode 100644 index 00000000..1351b864 --- /dev/null +++ b/modules/gstama/merge/meta.yml @@ -0,0 +1,60 @@ +name: gstama_merge +description: Merge multiple transcriptomes while maintaining source information. +keywords: + - gstama + - gstama/merge + - long-read + - isoseq + - nanopore + - tama + - trancriptome + - annotation +tools: + - gstama: + description: Gene-Switch Transcriptome Annotation by Modular Algorithms + homepage: https://github.com/sguizard/gs-tama + documentation: https://github.com/GenomeRIK/tama/wiki + tool_dev_url: https://github.com/sguizard/gs-tama + doi: "https://doi.org/10.1186/s12864-020-07123-7" + licence: ['GPL v3 License'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: bed12 file generated by TAMA collapse + pattern: "*.bed" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - bed: + type: file + description: This is the main merged annotation file. Transcripts are coloured according to the source support for each model. Sources are numbered based on the order supplied in the input filelist file. For example the first file named in the filelist file would have its transcripts coloured in red. If a transcript has multiple sources the colour is shown as magenta. + pattern: "*.bed" + - gene_report: + type: file + description: This contains a report of the genes from the merged file. "num_clusters" refers to the number of source transcripts that were used to make this gene model. "num_final_trans" refers to the number of transcripts in the final gene model. + pattern: "*_gene_report.txt" + - merge: + type: file + description: This contains a bed12 format file which shows the coordinates of each input transcript matched to the merged transcript ID. I used the "txt" extension even though it is a bed file just to avoid confusion with the main bed file. You can use this file to map the final merged transcript models to their pre-merged supporting transcripts. The 1st subfield in the 4th column shows the final merged transcript ID while the 2nd subfield shows the pre-merged transcript ID with source prefix. + pattern: "*_merge.txt" + - trans_report: + type: file + description: This contains the source information for each merged transcript. + pattern: "*_trans_report.txt" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@sguizard" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index d1a8e7f4..8ffc958b 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -494,6 +494,10 @@ gstama/collapse: - modules/gstama/collapse/** - tests/modules/gstama/collapse/** +gstama/merge: + - modules/gstama/merge/** + - tests/modules/gstama/merge/** + gtdbtk/classifywf: - modules/gtdbtk/classifywf/** - tests/modules/gtdbtk/classifywf/** diff --git a/tests/config/test_data.config b/tests/config/test_data.config index 1abae34d..6beba163 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -224,8 +224,9 @@ params { singletons = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.bam" aligned = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned.bam" alignedbai = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned.bam.bai" - genemodel1 = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned_tc.bed" - genemodel2 = "${test_data_dir}/genomics/homo_sapiens/pacbio/bam/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned_tc.2.bed" + genemodel1 = "${test_data_dir}/genomics/homo_sapiens/pacbio/bed/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned_tc.bed" + genemodel2 = "${test_data_dir}/genomics/homo_sapiens/pacbio/bed/alz.ccs.fl.NEB_5p--NEB_Clontech_3p.flnc.clustered.singletons.merged.aligned_tc.2.bed" + filelist = "${test_data_dir}/genomics/homo_sapiens/pacbio/txt/filelist.txt" } } } diff --git a/tests/modules/gstama/merge/main.nf b/tests/modules/gstama/merge/main.nf new file mode 100644 index 00000000..f9a8e05f --- /dev/null +++ b/tests/modules/gstama/merge/main.nf @@ -0,0 +1,19 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GSTAMA_MERGE } from '../../../../modules/gstama/merge/main' addParams( options: [suffix:'_merged'] ) + +workflow test_gstama_merge { + + input = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.test_data['homo_sapiens']['pacbio']['genemodel1'], checkIfExists: true), + file(params.test_data['homo_sapiens']['pacbio']['genemodel2'], checkIfExists: true) + ] + ] + filelist = file(params.test_data['homo_sapiens']['pacbio']['filelist'], checkIfExists: true) + + GSTAMA_MERGE ( input, filelist ) +} diff --git a/tests/modules/gstama/merge/test.yml b/tests/modules/gstama/merge/test.yml new file mode 100644 index 00000000..b98e35b6 --- /dev/null +++ b/tests/modules/gstama/merge/test.yml @@ -0,0 +1,14 @@ +- name: gstama merge test_gstama_merge + command: nextflow run tests/modules/gstama/merge -entry test_gstama_merge -c tests/config/nextflow.config + tags: + - gstama + - gstama/merge + files: + - path: output/gstama/test_merged.bed + md5sum: 60ec34e1ff9655d4ce2e83d3f4bbf448 + - path: output/gstama/test_merged_gene_report.txt + md5sum: 7029fd183dfd905a233403cfbe44722a + - path: output/gstama/test_merged_merge.txt + md5sum: 4279e59ed5739ce4f2f811568962893f + - path: output/gstama/test_merged_trans_report.txt + md5sum: 97d8346d9eb9da140941656c3a3325cd From 8524e6b40f9337196ef3e6cafd61a141704a2c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Guizard?= Date: Sat, 23 Oct 2021 19:09:41 +0100 Subject: [PATCH 08/14] Update of `pbccs` (#835) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 📦 NEW: First commit of pbccs module * 👌 IMPROVE: Remove option from command + rename output (ccs -> bam) * 👌 IMPROVE: Move .pbi output into report channel * 🐛FIX: Correct code after --rq option removal from command line module - module main.nf: Remove ramaining rq input channel - Test main.nf: Transfert rq into addParams - Test test.yml: Update md5sums * 🐛FIX: Repair additionnal option usage * 👌 IMPROVE: Add some pacbio test files * 🐛 FIX: Add Pacbio index to test_data.config * 👌 IMPROVE: CCS is run in parallel with --chunk option * 👌 IMPROVE: Add Pbindex in bam ouput channel * 👌 IMPROVE: Change label to process_low * 👌 IMPROVE: Define reports files names + add json version of txt report * 🐛 FIX: Add missing backslashes * 🐛 FIX: Add missing gz extension * 🐛 FIX: update ouput channel * 🐛 FIX: output file name * 👌 IMPROVE: .gitignore * 👌 IMPROVE: Update function.nf to last version * 👌 IMPROVE: Update saveAs in main.nf * 👌 IMPROVE: Add pbccs module * 🐛 FIX: Fix Broken test * 👌 IMPROVE: Update test_data.config * 🐛 FIX: Fix test * 👌 IMPROVE: Update path of test dataset files * 👌 IMPROVE: Remove useless index + Fix Typos * 📦 NEW: First commit of pbccs module * 👌 IMPROVE: Remove option from command + rename output (ccs -> bam) * 👌 IMPROVE: Move .pbi output into report channel * 🐛FIX: Correct code after --rq option removal from command line module - module main.nf: Remove ramaining rq input channel - Test main.nf: Transfert rq into addParams - Test test.yml: Update md5sums * 🐛FIX: Repair additionnal option usage * 👌 IMPROVE: Add some pacbio test files * 🐛 FIX: Add Pacbio index to test_data.config * 👌 IMPROVE: CCS is run in parallel with --chunk option * 👌 IMPROVE: Add Pbindex in bam ouput channel * 👌 IMPROVE: Change label to process_low * 👌 IMPROVE: Define reports files names + add json version of txt report * 🐛 FIX: Add missing backslashes * 🐛 FIX: Add missing gz extension * 🐛 FIX: update ouput channel * 🐛 FIX: output file name * 👌 IMPROVE: .gitignore * 👌 IMPROVE: Update function.nf to last version * 👌 IMPROVE: Update saveAs in main.nf * 👌 IMPROVE: Add pbccs module * 🐛 FIX: Fix Broken test * 👌 IMPROVE: Update test_data.config * 🐛 FIX: Fix test * 👌 IMPROVE: Update path of test dataset files * 👌 IMPROVE: Remove useless index + Fix Typos * 🐛 FIX: fill contains args * 👌 IMPROVE: One output => One Channel * 👌 IMPROVE: One input => One channel * 🐛 FIX: Update tests * 🐛 FIX: Remove TODOs from test.yaml * 👌 IMPROVE: Revert and keep bam and pbi together * 🐛 FIX: Remove old rq input from meta.yml * 👌 IMPROVE: Update test to match input channels * 👌 IMPROVE: use prefix for for output file name * 👌 IMPROVE: Update to new versions.yml * 👌 IMPROVE: Update pbccs from v6.0.0 to v6.0.2 * 👌 IMPROVE: Keep track of the former sample id in meta * Update modules/pbccs/main.nf Co-authored-by: Harshil Patel * 👌 IMPROVE: remove former_id from meta * 👌 IMPROVE: Use chunk number in output filename Co-authored-by: James A. Fellows Yates Co-authored-by: Harshil Patel --- modules/pbccs/main.nf | 31 ++++++++---------- modules/pbccs/meta.yml | 2 +- ...t_versions_yml.cpython-39-pytest-6.2.5.pyc | Bin 0 -> 3558 bytes tests/modules/pbccs/main.nf | 2 +- tests/modules/pbccs/test.yml | 20 +++++------ 5 files changed, 26 insertions(+), 29 deletions(-) create mode 100644 tests/__pycache__/test_versions_yml.cpython-39-pytest-6.2.5.pyc diff --git a/modules/pbccs/main.nf b/modules/pbccs/main.nf index 49c47fda..7e70ac14 100644 --- a/modules/pbccs/main.nf +++ b/modules/pbccs/main.nf @@ -11,11 +11,11 @@ process PBCCS { mode: params.publish_dir_mode, saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } - conda (params.enable_conda ? "bioconda::pbccs=6.0.0" : null) + conda (params.enable_conda ? "bioconda::pbccs=6.2.0" : null) if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { - container "https://depot.galaxyproject.org/singularity/pbccs:6.0.0--h9ee0642_2" + container "https://depot.galaxyproject.org/singularity/pbccs:6.2.0--h9ee0642_0" } else { - container "quay.io/biocontainers/pbccs:6.0.0--h9ee0642_2" + container "quay.io/biocontainers/pbccs:6.2.0--h9ee0642_0" } input: @@ -24,25 +24,22 @@ process PBCCS { val chunk_on output: - tuple val(meta), path("*.ccs.bam") , emit: bam - tuple val(meta), path("*.ccs.bam.pbi") , emit: pbi - tuple val(meta), path("*.ccs_report.txt" ) , emit: ccs_report_txt - tuple val(meta), path("*.ccs_report.json" ) , emit: ccs_report_json - tuple val(meta), path("*.zmw_metrics.json.gz"), emit: zmw_metrics - path "versions.yml" , emit: versions + tuple val(meta), path("*.chunk*.bam") , emit: bam + tuple val(meta), path("*.chunk*.bam.pbi") , emit: pbi + tuple val(meta), path("*.report.txt" ) , emit: report_txt + tuple val(meta), path("*.report.json" ) , emit: report_json + tuple val(meta), path("*.metrics.json.gz"), emit: metrics + path "versions.yml" , emit: versions script: - def ccs = bam.toString().replaceAll(/bam$/, '') + chunk_num + '.ccs.bam' - def report_txt = bam.toString().replaceAll(/bam$/, '') + chunk_num + '.ccs_report.txt' - def report_json = bam.toString().replaceAll(/bam$/, '') + chunk_num + '.ccs_report.json' - def zmw_metrics = bam.toString().replaceAll(/bam$/, '') + chunk_num + '.zmw_metrics.json.gz' + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" """ ccs \\ $bam \\ - $ccs \\ - --report-file $report_txt \\ - --report-json $report_json \\ - --metrics-json $zmw_metrics \\ + ${prefix}.chunk${chunk_num}.bam \\ + --report-file ${prefix}.report.txt \\ + --report-json ${prefix}.report.json \\ + --metrics-json ${prefix}.metrics.json.gz \\ --chunk $chunk_num/$chunk_on \\ -j $task.cpus \\ $options.args diff --git a/modules/pbccs/meta.yml b/modules/pbccs/meta.yml index ef0899a1..38f31496 100644 --- a/modules/pbccs/meta.yml +++ b/modules/pbccs/meta.yml @@ -16,7 +16,7 @@ input: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + id: id of the split file - bam: type: file description: Raw subreads bam diff --git a/tests/__pycache__/test_versions_yml.cpython-39-pytest-6.2.5.pyc b/tests/__pycache__/test_versions_yml.cpython-39-pytest-6.2.5.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33acb8369a1bc62b5e66e1ed80e2247dd0e2759f GIT binary patch literal 3558 zcmaJ@TaVku73T0FQCdkWt=50fJ2%8xAU@;c_*j71tCg z&y04xD)|!Up)V=?+}g;h4+RSJp}(O&gXmj<0(mOXry?kto--7;v;&k9hjTgS%y%wx z=6LmbRfFfZUyVJ_*0jIjp!gUtco$v~KtnZ30msOtx zcHdT1m3~EitNki`jbLe9>(_wBq}G>Ozs~I4#_lq!Kh=Jt(Go3xsXZnACMEZ^j{Obn zsBLygYW~cVBlwmmqb!sIoX;N%I{4zG*n~!Ek~}55`k^t`5-rvaO-kk@Au+k9{qjxbpJ20feVU+IYv8?e?$%-E#Hn)VR1dVK5g8EOIwYxea|m~^}#a6)g)gcA+b zU_auIhC#G1oc)nM7&#+vk2#(rnULLsap3r&BS%b)g+qPL1~TFY-D=f==RxGq$Pv*c z2j-_-_K-ar?v6pkA zwLXeG%6Mub?#)hx>tLPKc3l+ex@ieSf{?V#nTUctmYO?3w4Is<-Z)6j0GQJXXC8GW zdm_{7d!AsK#EzAkBgR?(*yI5Bb8}lL$s#4g{*sypm_vUjwe$5qYPCkha|&Rsf(} z1YxX+8Z?^KAXQ@PtHdU}4dVg9*~N1VzDw}F53l&hz{rUq`Y>j8$)S!>L-jRH#SxjE zi6MGp@;iv!7shEV(IJLRh%n<*Equ#_SUUKeK->^bmSmY)u@01_7sgYF#V^P&v`}By zXc;3cHugwj#g<5=eORG(Yz+ym;QUaZn=n_6P1w0Amkw)lZBG-whq-!e%nARKT7_Py z(<)tht{>Nu63jJd4LIs2G}?$uK7rXXps){@6Z%*2w-!xl_&DfsB3@E@)E0VxerQLfhXuM+lZtH1)!05f zHV2=9CV(ieqeijyOc(DdX(vJ28b~Xm|0k^E=>Lrvj?kYvLa&RHNEO!sz0S`g74`xB zDb)w`^z?H>SwFLLDaQx<*AI`+HOMFb`b@Vuec(Dr&mU14LPx528K?|iQ}Un>RGHS`SvA)N*>5~AgT|{1kF4ezgEyM+w%}b! z+RyaIn^c3m`Q~OyT#n~$R*t4}GL^kqy_X+fOp&u~Oohc~tGK-7gpqWH(G-&3BAI4# zirKWtjs1-$6G*fS)1@5UcD82!*vc|)k?_ID7tX*7vz$Gi2GXAd3{tTtAhX<7Nwr9S z(Rr}QYCg>S(f z0T~~yAf(5ovk%!ZyHuhmyN$jtv|roUyyrgL_~ibFA8+38kZ()K?}r^SJN|WNX3Dpf5I(`sb z2IGu9iT?QM#wQ#1K7N1Jtlss6V4w|de*?CMoo;-CaROlVJ9hx+`T|+?SBs8wM^UeL z#08uI9Xi#-xs%P_L>U1KQ#%LMF;VC`KLJAdNoa6*bJka0j3$=@2G=d3%o)^$J)R1w zE>;ipV^6$+gey4;nFDtuKe(+7KjG1U39umg%ENnoAe~3-;1#uQWoq4;y$xGJcqq{j z44!lX2r{X}E;e`A*hdR>XWf@f1D^T+`ll@s4dp)E;YXKZ$KbD_&PR&RN}qp5-|k+V zwI62prV~!b+l<4p;?C@J2CNWV-eSG$%=k-au7K?`IM`eG<7z$!o&UM03mzYgs)=&d z^^UltdjBXLU1@A7C!o;5_1K`04o5_5YN<)4!|Mzp$$0FGiF6 z8dmuR&~{p>ojaWOU?N>}vuNpNn81Bq&h|MtCaoMzVR5bI_$A~i Date: Sat, 23 Oct 2021 19:30:14 +0100 Subject: [PATCH 09/14] Createsomaticpanelofnormals (#859) * files created for createsompon, script written, meta written, still needs tests * updated to 2.0.0 method input, however this requires a genomicsDB input now * script finished, meta yaml updated. Tests working locally, test yaml made, needs genomicsdb example on nf-core to run repository tests * versions updated, issue with test data not able to download directory * updated tests to include repo-side data * Apply suggestions from code review * Update modules/gatk4/createsomaticpanelofnormals/main.nf Co-authored-by: GCJMackenzie Co-authored-by: Harshil Patel --- .../createsomaticpanelofnormals/functions.nf | 78 +++++++++++++++++++ .../gatk4/createsomaticpanelofnormals/main.nf | 47 +++++++++++ .../createsomaticpanelofnormals/meta.yml | 55 +++++++++++++ tests/config/pytest_modules.yml | 4 + .../gatk4/createsomaticpanelofnormals/main.nf | 72 +++++++++++++++++ .../createsomaticpanelofnormals/test.yml | 9 +++ 6 files changed, 265 insertions(+) create mode 100644 modules/gatk4/createsomaticpanelofnormals/functions.nf create mode 100644 modules/gatk4/createsomaticpanelofnormals/main.nf create mode 100644 modules/gatk4/createsomaticpanelofnormals/meta.yml create mode 100644 tests/modules/gatk4/createsomaticpanelofnormals/main.nf create mode 100644 tests/modules/gatk4/createsomaticpanelofnormals/test.yml diff --git a/modules/gatk4/createsomaticpanelofnormals/functions.nf b/modules/gatk4/createsomaticpanelofnormals/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/gatk4/createsomaticpanelofnormals/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/gatk4/createsomaticpanelofnormals/main.nf b/modules/gatk4/createsomaticpanelofnormals/main.nf new file mode 100644 index 00000000..66dfda23 --- /dev/null +++ b/modules/gatk4/createsomaticpanelofnormals/main.nf @@ -0,0 +1,47 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process GATK4_CREATESOMATICPANELOFNORMALS { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::gatk4=4.2.0.0" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/gatk4:4.2.0.0--0" + } else { + container "quay.io/biocontainers/gatk4:4.2.0.0--0" + } + + input: + tuple val(meta), path(genomicsdb) + path fasta + path fastaidx + path dict + + output: + tuple val(meta), path("*.vcf.gz"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + """ + gatk \\ + CreateSomaticPanelOfNormals \\ + -R $fasta \\ + -V gendb://$genomicsdb \\ + -O ${prefix}.vcf.gz \\ + $options.args + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/gatk4/createsomaticpanelofnormals/meta.yml b/modules/gatk4/createsomaticpanelofnormals/meta.yml new file mode 100644 index 00000000..f0199ed6 --- /dev/null +++ b/modules/gatk4/createsomaticpanelofnormals/meta.yml @@ -0,0 +1,55 @@ +name: gatk4_createsomaticpanelofnormals +description: Create a panel of normals contraining germline and artifactual sites for use with mutect2. +keywords: + - gatk4 + - createsomaticpanelofnormals + - panelofnormals +tools: + - gatk4: + description: | + Developed in the Data Sciences Platform at the Broad Institute, the toolkit offers a wide variety of tools + with a primary focus on variant discovery and genotyping. Its powerful processing engine + and high-performance computing features make it capable of taking on projects of any size. + homepage: https://gatk.broadinstitute.org/hc/en-us + documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s + doi: 10.1158/1538-7445.AM2017-3590 + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test'] + - genoomicsdb: + type: directory + description: genomicsDB workspace that contains the samples to create the somatic panel of normals with. + pattern: "*_genomicsDBworkspace" + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - fastaidx: + type: file + description: Index of reference fasta file + pattern: "fasta.fai" + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + +output: + - vcf: + type: file + description: panel of normal as compressed vcf file + pattern: "*.vcf.gz" + - tbi: + type: file + description: Index of vcf file + pattern: "*vcf.gz.tbi" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@GCJMackenzie" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 8ffc958b..fac11d0e 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -406,6 +406,10 @@ gatk4/createsequencedictionary: - modules/gatk4/createsequencedictionary/** - tests/modules/gatk4/createsequencedictionary/** +gatk4/createsomaticpanelofnormals: + - modules/gatk4/createsomaticpanelofnormals/** + - tests/modules/gatk4/createsomaticpanelofnormals/** + gatk4/fastqtosam: - modules/gatk4/fastqtosam/** - tests/modules/gatk4/fastqtosam/** diff --git a/tests/modules/gatk4/createsomaticpanelofnormals/main.nf b/tests/modules/gatk4/createsomaticpanelofnormals/main.nf new file mode 100644 index 00000000..34fc9847 --- /dev/null +++ b/tests/modules/gatk4/createsomaticpanelofnormals/main.nf @@ -0,0 +1,72 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { GATK4_CREATESOMATICPANELOFNORMALS } from '../../../../modules/gatk4/createsomaticpanelofnormals/main.nf' addParams( options: [suffix:'.pon'] ) + +workflow test_gatk4_createsomaticpanelofnormals { + maindir = file('test_genomicsdb') + subdir1 = file('test_genomicsdb/chr22$1$40001') + subdir2 = file('test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448') + subdir3 = file('test_genomicsdb/chr22$1$40001/genomicsdb_meta_dir') + subdir2.mkdirs() + subdir3.mkdirs() + + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/__tiledb_workspace.tdb' , checkIfExists: true).copyTo(maindir) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/vcfheader.vcf' , checkIfExists: true).copyTo(maindir) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/vidmap.json' , checkIfExists: true).copyTo(maindir) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/callset.json' , checkIfExists: true).copyTo(maindir) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/.__consolidation_lock' , checkIfExists: true).copyTo(subdir1) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__array_schema.tdb' , checkIfExists: true).copyTo(subdir1) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/genomicsdb_meta_dir/genomicsdb_column_bounds.json' , checkIfExists: true).copyTo(subdir3) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/genomicsdb_meta_dir/genomicsdb_meta_2b25a6c2-cb94-4a4a-9005-acb7c595d322.json' , checkIfExists: true).copyTo(subdir3) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/AD.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/AD_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ALT.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ALT_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/BaseQRankSum.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/DB.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/DP.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/DP_FORMAT.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/END.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ExcessHet.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/FILTER.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/FILTER_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/GQ.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/GT.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/GT_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ID.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ID_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/InbreedingCoeff.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MIN_DP.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MLEAC.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MLEAC_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MLEAF.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MLEAF_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/MQRankSum.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PGT.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PGT_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PID.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PID_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PL.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PL_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/PS.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/QUAL.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/RAW_MQandDP.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/REF.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/REF_var.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/ReadPosRankSum.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/SB.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/__book_keeping.tdb.gz' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/__coords.tdb' , checkIfExists: true).copyTo(subdir2) + file( 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/illumina/gatk/test_genomicsdb/chr22$1$40001/__3cf81648-433d-4464-be08-23d082445c9b139814474716928_1630588248448/__tiledb_fragment.tdb' , checkIfExists: true).copyTo(subdir2) + + input = [ [ id:'test' ], // meta map + file( maindir , checkIfExists: true)] + + fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + fastaidx = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + dict = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + + GATK4_CREATESOMATICPANELOFNORMALS ( input, fasta, fastaidx, dict ) +} diff --git a/tests/modules/gatk4/createsomaticpanelofnormals/test.yml b/tests/modules/gatk4/createsomaticpanelofnormals/test.yml new file mode 100644 index 00000000..d3e6c537 --- /dev/null +++ b/tests/modules/gatk4/createsomaticpanelofnormals/test.yml @@ -0,0 +1,9 @@ +- name: gatk4 createsomaticpanelofnormals test_gatk4_createsomaticpanelofnormals + command: nextflow run tests/modules/gatk4/createsomaticpanelofnormals -entry test_gatk4_createsomaticpanelofnormals -c tests/config/nextflow.config + tags: + - gatk4 + - gatk4/createsomaticpanelofnormals + files: + - path: output/gatk4/test.pon.vcf.gz + - path: output/gatk4/test.pon.vcf.gz.tbi + md5sum: d88d2b745c9226ddf284e3494db8b9d2 From 0a5ddd0ad0f3035253fab569caa631fa0a81db9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Guizard?= Date: Sat, 23 Oct 2021 19:39:27 +0100 Subject: [PATCH 10/14] Update module: `bamtools/split` (#885) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 👌 IMPROVE: Add some pacbio test files * 🐛 FIX: Add Pacbio index to test_data.config * 👌 IMPROVE: Re add 10000 data test * 👌 IMPROVE: Add some pbindex * 🐛 FIX: Add pbi extension to files * 📦 NEW: Add galgal6 chr30 test data * 📦 NEW: Add bamtools module * 👌 IMPROVE: Ignore test data * 👌 IMPROVE: Update to last templates version * 👌 IMPROVE: Update module to last template version * 👌 IMPROVE: Update module to last template version * 👌 IMPROVE: Final version of test datasets config * 👌 IMPROVE: Remove useless index + Fix Typos * 👌 IMPROVE: Add some pacbio test files * 🐛 FIX: Add Pacbio index to test_data.config * 👌 IMPROVE: Re add 10000 data test * 👌 IMPROVE: Add some pbindex * 🐛 FIX: Add pbi extension to files * 📦 NEW: Add galgal6 chr30 test data * 📦 NEW: Add bamtools module * 👌 IMPROVE: Ignore test data * 👌 IMPROVE: Update to last templates version * 👌 IMPROVE: Update module to last template version * 👌 IMPROVE: Update module to last template version * 👌 IMPROVE: Final version of test datasets config * 👌 IMPROVE: Remove useless index + Fix Typos * 👌 IMPROVE: Update with new versions.yml file * 🐛 FIX: Update meta.yml + correct typos * Update modules/bamtools/split/meta.yml Add bam, split, chunk tags Co-authored-by: James A. Fellows Yates * 🐛 FIX: Correct meta.yml * 🐛 FIX: Grab software name using ${getSoftwareName(task.process)} * 🐛 FIX: Update test.yml Co-authored-by: James A. Fellows Yates Co-authored-by: Harshil Patel --- modules/bamtools/split/main.nf | 2 +- tests/modules/bamtools/split/test.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/bamtools/split/main.nf b/modules/bamtools/split/main.nf index 506a957c..86eaa5d6 100644 --- a/modules/bamtools/split/main.nf +++ b/modules/bamtools/split/main.nf @@ -35,7 +35,7 @@ process BAMTOOLS_SPLIT { cat <<-END_VERSIONS > versions.yml ${getProcessName(task.process)}: - bamtools: \$( bamtools --version | grep -e 'bamtools' | sed 's/^.*bamtools //' ) + ${getSoftwareName(task.process)}: \$( bamtools --version | grep -e 'bamtools' | sed 's/^.*bamtools //' ) END_VERSIONS """ } diff --git a/tests/modules/bamtools/split/test.yml b/tests/modules/bamtools/split/test.yml index f92f9345..f28a9bcf 100644 --- a/tests/modules/bamtools/split/test.yml +++ b/tests/modules/bamtools/split/test.yml @@ -1,10 +1,10 @@ - name: bamtools split test_bamtools_split command: nextflow run tests/modules/bamtools/split -entry test_bamtools_split -c tests/config/nextflow.config tags: - - bamtools - bamtools/split + - bamtools files: - - path: output/bamtools/test.paired_end.sorted.REF_chr22:16570000-16610000.bam - md5sum: 256535b9a3ab5864be0f7dea2218d159 + - path: output/bamtools/test.paired_end.sorted.REF_chr22.bam + md5sum: b7dc50e0edf9c6bfc2e3b0e6d074dc07 - path: output/bamtools/test.paired_end.sorted.REF_unmapped.bam - md5sum: 568e058d871d8bc319330360bcae4e43 + md5sum: e0754bf72c51543b2d745d96537035fb From 2ad98162f355671061f457c7c79db45c13478086 Mon Sep 17 00:00:00 2001 From: Gregor Sturm Date: Sun, 24 Oct 2021 20:51:56 +0200 Subject: [PATCH 11/14] Notebook modules (#617) * Draft rmarkdown module * stub jupyter notebook module * Create yaml file with params * Update meta.yml for rmarkdown module * Add comment on YAML * Update notebooks module, clean up parametrize.nf * Two separate channels for parameters and input files * Fix Rmd render script * Add tests for rmarkdown * Fix tests for rmarkdown module * Update checksums * Fix tests for jupyter * Test without Grab() * Update software versions * update rmarkdown dependencies * Draft for multiple versions * Fix indent of script * Fix indent in rmarkdown script * Emit version.syml * Update modules/rmarkdown/main.nf Co-authored-by: James A. Fellows Yates * Update modules/rmarkdown/meta.yml Co-authored-by: James A. Fellows Yates * Update modules/rmarkdown/meta.yml Co-authored-by: James A. Fellows Yates * Rename rmarkdown to rmarkdownnotebook * Add rmarkdown mulled biocontainer * Write sessionInfo to separate log file * Update rmarkdownnotebook * Sessioninfo does not have a stable md5sum * Update jupyternotebook * Update meta * Add jupyternotebook biocontainers * Handle Groovy Gstrings in parameterize * Update to versions.yml * Update functions.nf * Fix versions yaml * Fix EC lint * Update modules/rmarkdownnotebook/main.nf Co-authored-by: James A. Fellows Yates * Update modules/jupyternotebook/main.nf Co-authored-by: James A. Fellows Yates * Use official test data * Harshilify * Make parameters channel clearer * Apply suggestions from code review Co-authored-by: Harshil Patel * Apply suggestions from code review * Update main.nf Co-authored-by: James A. Fellows Yates Co-authored-by: Harshil Patel --- modules/jupyternotebook/functions.nf | 78 +++++++++++++++++++ modules/jupyternotebook/main.nf | 92 ++++++++++++++++++++++ modules/jupyternotebook/meta.yml | 68 +++++++++++++++++ modules/jupyternotebook/parametrize.nf | 44 +++++++++++ modules/rmarkdownnotebook/functions.nf | 78 +++++++++++++++++++ modules/rmarkdownnotebook/main.nf | 97 ++++++++++++++++++++++++ modules/rmarkdownnotebook/meta.yml | 73 ++++++++++++++++++ modules/rmarkdownnotebook/parametrize.nf | 36 +++++++++ tests/config/pytest_modules.yml | 8 ++ tests/config/test_data.config | 10 +++ tests/modules/jupyternotebook/main.nf | 49 ++++++++++++ tests/modules/jupyternotebook/test.yml | 30 ++++++++ tests/modules/rmarkdownnotebook/main.nf | 33 ++++++++ tests/modules/rmarkdownnotebook/test.yml | 27 +++++++ 14 files changed, 723 insertions(+) create mode 100644 modules/jupyternotebook/functions.nf create mode 100644 modules/jupyternotebook/main.nf create mode 100644 modules/jupyternotebook/meta.yml create mode 100644 modules/jupyternotebook/parametrize.nf create mode 100644 modules/rmarkdownnotebook/functions.nf create mode 100644 modules/rmarkdownnotebook/main.nf create mode 100644 modules/rmarkdownnotebook/meta.yml create mode 100644 modules/rmarkdownnotebook/parametrize.nf create mode 100644 tests/modules/jupyternotebook/main.nf create mode 100644 tests/modules/jupyternotebook/test.yml create mode 100644 tests/modules/rmarkdownnotebook/main.nf create mode 100644 tests/modules/rmarkdownnotebook/test.yml diff --git a/modules/jupyternotebook/functions.nf b/modules/jupyternotebook/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/jupyternotebook/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/jupyternotebook/main.nf b/modules/jupyternotebook/main.nf new file mode 100644 index 00000000..2d8ad92f --- /dev/null +++ b/modules/jupyternotebook/main.nf @@ -0,0 +1,92 @@ +// Import generic module functions +include { initOptions; saveFiles; getProcessName; getSoftwareName } from './functions' +include { dump_params_yml; indent_code_block } from "./parametrize" + +params.options = [:] +options = initOptions(params.options) +params.parametrize = true +params.implicit_params = true +params.meta_params = true + +process JUPYTERNOTEBOOK { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + //NB: You likely want to override this with a container containing all required + //dependencies for your analysis. The container at least needs to contain the + //ipykernel, jupytext, papermill and nbconvert Python packages. + conda (params.enable_conda ? "ipykernel=6.0.3 jupytext=1.11.4 nbconvert=6.1.0 papermill=2.3.3 matplotlib=3.4.2" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/mulled-v2-514b1a5d280c7043110b2a8d0a87b57ba392a963%3A879972fc8bdc81ee92f2bce3b4805d89a772bf84-0" + } else { + container "quay.io/biocontainers/mulled-v2-514b1a5d280c7043110b2a8d0a87b57ba392a963:879972fc8bdc81ee92f2bce3b4805d89a772bf84-0" + } + + input: + tuple val(meta), path(notebook) + val parameters + path input_files + + output: + tuple val(meta), path("*.html"), emit: report + tuple val(meta), path("artifacts/"), emit: artifacts, optional: true + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + + // Dump parameters to yaml file. + // Using a yaml file over using the CLI params because + // * no issue with escaping + // * allows to pass nested maps instead of just single values + def params_cmd = "" + def render_cmd = "" + if (params.parametrize) { + nb_params = [:] + if (params.implicit_params) { + nb_params["cpus"] = task.cpus + nb_params["artifact_dir"] = "artifacts" + nb_params["input_dir"] = "./" + } + if (params.meta_params) { + nb_params["meta"] = meta + } + nb_params += parameters + params_cmd = dump_params_yml(nb_params) + render_cmd = "papermill -f .params.yml" + } else { + render_cmd = "papermill" + } + + """ + set -o pipefail + + # Dump .params.yml heredoc (section will be empty if parametrization is disabled) + ${indent_code_block(params_cmd, 4)} + + # Create output directory + mkdir artifacts + + # Set parallelism for BLAS/MKL etc. to avoid over-booking of resources + export MKL_NUM_THREADS="${task.cpus}" + export OPENBLAS_NUM_THREADS="${task.cpus}" + export OMP_NUM_THREADS="${task.cpus}" + export NUMBA_NUM_THREADS="${task.cpus}" + + # Convert notebook to ipynb using jupytext, execute using papermill, convert using nbconvert + jupytext --to notebook --output - --set-kernel - ${notebook} \\ + | ${render_cmd} \\ + | jupyter nbconvert --stdin --to html --output ${prefix}.html + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + jupytext: \$(jupytext --version) + ipykernel: \$(python -c "import ipykernel; print(ipykernel.__version__)") + nbconvert: \$(jupyter nbconvert --version) + papermill: \$(papermill --version | cut -f1 -d' ') + END_VERSIONS + """ +} diff --git a/modules/jupyternotebook/meta.yml b/modules/jupyternotebook/meta.yml new file mode 100644 index 00000000..3a1b61e1 --- /dev/null +++ b/modules/jupyternotebook/meta.yml @@ -0,0 +1,68 @@ +name: jupyternotebook +description: | + Render jupyter (or jupytext) notebooks to HTML reports. Supports parametrization + through papermill. +keywords: + - Python + - Jupyter + - jupytext + - papermill + - notebook + - reports +tools: + - jupytext: + description: Jupyter notebooks as plain text scripts or markdown documents + homepage: https://github.com/mwouts/jupytext/ + documentation: https://jupyter.org/documentation + tool_dev_url: https://github.com/mwouts/jupytext/ + licence: "MIT" + - papermill: + description: Parameterize, execute, and analyze notebooks + homepage: https://github.com/nteract/papermill + documentation: http://papermill.readthedocs.io/en/latest/ + tool_dev_url: https://github.com/nteract/papermill + licence: "BSD 3-clause" + - nbconvert: + description: Parameterize, execute, and analyze notebooks + homepage: https://nbconvert.readthedocs.io/en/latest/ + documentation: https://nbconvert.readthedocs.io/en/latest/ + tool_dev_url: https://github.com/jupyter/nbconvert + licence: "BSD 3-clause" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - notebook: + type: file + description: Jupyter notebook or jupytext representation thereof + pattern: "*.{ipynb,py,md,Rmd,myst}" + - parameters: + type: map + description: | + Groovy map with notebook parameters which will be passed + to papermill in order to create parametrized reports. + - input_files: + type: path + description: One or multiple files serving as input data for the notebook. + pattern: "*" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - report: + type: file + description: HTML report generated from Jupyter notebook + pattern: "*.html" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@grst" diff --git a/modules/jupyternotebook/parametrize.nf b/modules/jupyternotebook/parametrize.nf new file mode 100644 index 00000000..bd74af27 --- /dev/null +++ b/modules/jupyternotebook/parametrize.nf @@ -0,0 +1,44 @@ +import org.yaml.snakeyaml.Yaml +import org.yaml.snakeyaml.representer.Representer +import org.yaml.snakeyaml.DumperOptions + + +/** + * Multiline code blocks need to have the same indentation level + * as the `script:` section. This function re-indents code to the specified level. + */ +def indent_code_block(code, n_spaces) { + def indent_str = " ".multiply(n_spaces) + return code.stripIndent().split("\n").join("\n" + indent_str) +} + +/** + * Create a config YAML file from a groovy map + * + * @params task The process' `task` variable + * @returns a line to be inserted in the bash script. + */ +def dump_params_yml(params) { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + + // Properly handle Groovy GStrings + // see https://stackoverflow.com/a/35108062/2340703 + def representer = new Representer() {{ + this.multiRepresenters.put(GString, this.representers.get(String)) + }} + + def yaml = new Yaml(representer, options) + def yaml_str = yaml.dump(params) + + // Writing the .params.yml file directly as follows does not work. + // It only works in 'exec:', but not if there is a `script:` section: + // task.workDir.resolve('.params.yml').text = yaml_str + + // Therefore, we inject it into the bash script: + return """\ + cat <<"END_PARAMS_SECTION" > ./.params.yml + ${indent_code_block(yaml_str, 8)} + END_PARAMS_SECTION + """ +} diff --git a/modules/rmarkdownnotebook/functions.nf b/modules/rmarkdownnotebook/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/rmarkdownnotebook/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/rmarkdownnotebook/main.nf b/modules/rmarkdownnotebook/main.nf new file mode 100644 index 00000000..4bded58c --- /dev/null +++ b/modules/rmarkdownnotebook/main.nf @@ -0,0 +1,97 @@ +// Import generic module functions +include { initOptions; saveFiles; getProcessName; getSoftwareName } from './functions' +include { dump_params_yml; indent_code_block } from "./parametrize" + +params.options = [:] +options = initOptions(params.options) +params.parametrize = true +params.implicit_params = true +params.meta_params = true + +process RMARKDOWNNOTEBOOK { + tag "$meta.id" + label 'process_low' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + //NB: You likely want to override this with a container containing all required + //dependencies for your analysis. The container at least needs to contain the + //yaml and rmarkdown R packages. + conda (params.enable_conda ? "r-base=4.1.0 r-rmarkdown=2.9 r-yaml=2.2.1" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/mulled-v2-31ad840d814d356e5f98030a4ee308a16db64ec5%3A0e852a1e4063fdcbe3f254ac2c7469747a60e361-0" + } else { + container "quay.io/biocontainers/mulled-v2-31ad840d814d356e5f98030a4ee308a16db64ec5:0e852a1e4063fdcbe3f254ac2c7469747a60e361-0" + } + + input: + tuple val(meta), path(notebook) + val parameters + path input_files + + output: + tuple val(meta), path("*.html") , emit: report + tuple val(meta), path ("artifacts/*") , emit: artifacts, optional: true + tuple val(meta), path ("session_info.log"), emit: session_info + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + + // Dump parameters to yaml file. + // Using a yaml file over using the CLI params because + // * no issue with escaping + // * allows to pass nested maps instead of just single values + def params_cmd = "" + def render_cmd = "" + if (params.parametrize) { + nb_params = [:] + if (params.implicit_params) { + nb_params["cpus"] = task.cpus + nb_params["artifact_dir"] = "artifacts" + nb_params["input_dir"] = "./" + } + if (params.meta_params) { + nb_params["meta"] = meta + } + nb_params += parameters + params_cmd = dump_params_yml(nb_params) + render_cmd = """\ + params = yaml::read_yaml('.params.yml') + rmarkdown::render('${prefix}.Rmd', params=params, envir=new.env()) + """ + } else { + render_cmd = "rmarkdown::render('${prefix}.Rmd')" + } + + """ + # Dump .params.yml heredoc (section will be empty if parametrization is disabled) + ${indent_code_block(params_cmd, 4)} + + # Create output directory + mkdir artifacts + + # Set parallelism for BLAS/MKL etc. to avoid over-booking of resources + export MKL_NUM_THREADS="${task.cpus}" + export OPENBLAS_NUM_THREADS="${task.cpus}" + export OMP_NUM_THREADS="${task.cpus}" + + # Work around https://github.com/rstudio/rmarkdown/issues/1508 + # If the symbolic link is not replaced by a physical file + # output- and temporary files will be written to the original directory. + mv "${notebook}" "${notebook}.orig" + cp -L "${notebook}.orig" "${prefix}.Rmd" + + # Render notebook + Rscript - < versions.yml + ${getProcessName(task.process)}: + rmarkdown: \$(Rscript -e "cat(paste(packageVersion('rmarkdown'), collapse='.'))") + END_VERSIONS + """ +} diff --git a/modules/rmarkdownnotebook/meta.yml b/modules/rmarkdownnotebook/meta.yml new file mode 100644 index 00000000..8d0f9d28 --- /dev/null +++ b/modules/rmarkdownnotebook/meta.yml @@ -0,0 +1,73 @@ +name: rmarkdownnotebook +description: Render an rmarkdown notebook. Supports parametrization. +keywords: + - R + - notebook + - reports +tools: + - rmarkdown: + description: Dynamic Documents for R + homepage: https://rmarkdown.rstudio.com/ + documentation: https://rmarkdown.rstudio.com/lesson-1.html + tool_dev_url: https://github.com/rstudio/rmarkdown + doi: "" + licence: GPL-3 + +params: + - parametrize: + type: boolean + description: If true, parametrize the notebook + - implicit_params: + type: boolean + description: | + If true (default), include the implicit params + * `input_dir`, which points to the directory containing the files added via `input_files`, + * `artifact_dir`, which points to the directory where the notebook should place output files, and + * `cpus`, which contains the value of ${task.cpus} + - meta_params: + type: boolean + description: | + If true, include a parameter `meta` which contains the information specified + via the `meta` input channel. + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - notebook: + type: file + description: Rmarkdown file + pattern: "*.{Rmd}" + - parameters: + type: map + description: | + Groovy map with notebook parameters which will be passed to + rmarkdown to generate parametrized reports. + - input_files: + type: path + description: One or multiple files serving as input data for the notebook. + pattern: "*" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - report: + type: file + description: HTML report generated from Rmarkdown + pattern: "*.html" + - session_info: + type: file + description: dump of R SessionInfo + pattern: "*.log" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@grst" diff --git a/modules/rmarkdownnotebook/parametrize.nf b/modules/rmarkdownnotebook/parametrize.nf new file mode 100644 index 00000000..05e259eb --- /dev/null +++ b/modules/rmarkdownnotebook/parametrize.nf @@ -0,0 +1,36 @@ +import org.yaml.snakeyaml.Yaml +import org.yaml.snakeyaml.DumperOptions + + +/** + * Multiline code blocks need to have the same indentation level + * as the `script:` section. This function re-indents code to the specified level. + */ +def indent_code_block(code, n_spaces) { + def indent_str = " ".multiply(n_spaces) + return code.stripIndent().split("\n").join("\n" + indent_str) +} + +/** + * Create a config YAML file from a groovy map + * + * @params task The process' `task` variable + * @returns a line to be inserted in the bash script. + */ +def dump_params_yml(params) { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + def yaml = new Yaml(options) + def yaml_str = yaml.dump(params) + + // Writing the .params.yml file directly as follows does not work. + // It only works in 'exec:', but not if there is a `script:` section: + // task.workDir.resolve('.params.yml').text = yaml_str + + // Therefore, we inject it into the bash script: + return """\ + cat <<"END_PARAMS_SECTION" > ./.params.yml + ${indent_code_block(yaml_str, 8)} + END_PARAMS_SECTION + """ +} diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index fac11d0e..4e35fa24 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -585,6 +585,10 @@ ivar/variants: - modules/ivar/variants/** - tests/modules/ivar/variants/** +jupyternotebook: + - modules/jupyternotebook/** + - tests/modules/jupyternotebook/** + kallisto/index: - modules/kallisto/index/** - tests/modules/kallisto/index/** @@ -871,6 +875,10 @@ raxmlng: - modules/raxmlng/** - tests/modules/raxmlng/** +rmarkdownnotebook: + - modules/rmarkdownnotebook/** + - tests/modules/rmarkdownnotebook/** + roary: - modules/roary/** - tests/modules/roary/** diff --git a/tests/config/test_data.config b/tests/config/test_data.config index 6beba163..d7eda458 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -229,5 +229,15 @@ params { filelist = "${test_data_dir}/genomics/homo_sapiens/pacbio/txt/filelist.txt" } } + 'generic' { + 'notebooks' { + rmarkdown = "${test_data_dir}/generic/notebooks/rmarkdown/rmarkdown_notebook.Rmd" + ipython_md = "${test_data_dir}/generic/notebooks/jupyter/ipython_notebook.md" + ipython_ipynb = "${test_data_dir}/generic/notebooks/jupyter/ipython_notebook.ipynb" + } + 'txt' { + hello = "${test_data_dir}/generic/txt/hello.txt" + } + } } } diff --git a/tests/modules/jupyternotebook/main.nf b/tests/modules/jupyternotebook/main.nf new file mode 100644 index 00000000..c1da7e11 --- /dev/null +++ b/tests/modules/jupyternotebook/main.nf @@ -0,0 +1,49 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { JUPYTERNOTEBOOK } from '../../../modules/jupyternotebook/main.nf' addParams( + parametrize: false, options: [:] +) +include { JUPYTERNOTEBOOK as JUPYTERNOTEBOOK_PARAMETRIZE } from '../../../modules/jupyternotebook/main.nf' addParams( + options: [:] +) +include { JUPYTERNOTEBOOK as JUPYTERNOTEBOOK_PARAMETRIZE_IPYNB } from '../../../modules/jupyternotebook/main.nf' addParams( + options: [:] +) + +workflow test_jupyternotebook { + + input = [ [ id:'test_jupyter' ], // meta map + file(params.test_data['generic']['notebooks']['ipython_md'], checkIfExists: true) ] + + JUPYTERNOTEBOOK ( input, [:], []) + +} + +workflow test_jupyternotebook_parametrize { + + input = [ [ id:'test_jupyter' ], // meta map + file(params.test_data['generic']['notebooks']['ipython_md'], checkIfExists: true) ] + + JUPYTERNOTEBOOK_PARAMETRIZE( + input, + [input_filename: "hello.txt", n_iter: 12], + file(params.test_data['generic']['txt']['hello'], checkIfExists: true) + ) + +} + +workflow test_jupyternotebook_parametrize_ipynb { + + input = [ [ id:'test_jupyter' ], // meta map + file(params.test_data['generic']['notebooks']['ipython_ipynb'], checkIfExists: true) ] + + JUPYTERNOTEBOOK_PARAMETRIZE_IPYNB( + input, + [input_filename: "hello.txt", n_iter: 12], + file(params.test_data['generic']['txt']['hello'], checkIfExists: true) + ) + +} + diff --git a/tests/modules/jupyternotebook/test.yml b/tests/modules/jupyternotebook/test.yml new file mode 100644 index 00000000..dd4f1175 --- /dev/null +++ b/tests/modules/jupyternotebook/test.yml @@ -0,0 +1,30 @@ +- name: jupyternotebook test_jupyternotebook + command: nextflow run tests/modules/jupyternotebook -entry test_jupyternotebook -c tests/config/nextflow.config + tags: + - jupyternotebook + files: + - path: output/jupyternotebook/test_jupyter.html + contains: + - "n_iter = 10" + +- name: jupyternotebook test_jupyternotebook_parametrize + command: nextflow run tests/modules/jupyternotebook -entry test_jupyternotebook_parametrize -c tests/config/nextflow.config + tags: + - jupyternotebook + files: + - path: output/jupyternotebook/artifacts/artifact.txt + md5sum: 8ddd8be4b179a529afa5f2ffae4b9858 + - path: output/jupyternotebook/test_jupyter.html + contains: + - "n_iter = 12" + +- name: jupyternotebook test_jupyternotebook_parametrize_ipynb + command: nextflow run tests/modules/jupyternotebook -entry test_jupyternotebook_parametrize_ipynb -c tests/config/nextflow.config + tags: + - jupyternotebook + files: + - path: output/jupyternotebook/artifacts/artifact.txt + md5sum: 8ddd8be4b179a529afa5f2ffae4b9858 + - path: output/jupyternotebook/test_jupyter.html + contains: + - "n_iter = 12" diff --git a/tests/modules/rmarkdownnotebook/main.nf b/tests/modules/rmarkdownnotebook/main.nf new file mode 100644 index 00000000..e56d54ff --- /dev/null +++ b/tests/modules/rmarkdownnotebook/main.nf @@ -0,0 +1,33 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { RMARKDOWNNOTEBOOK } from '../../../modules/rmarkdownnotebook/main.nf' addParams( + parametrize: false, options: [:] +) +include { RMARKDOWNNOTEBOOK as RMARKDOWNNOTEBOOK_PARAMETRIZE } from '../../../modules/rmarkdownnotebook/main.nf' addParams( + options: [:] +) + +workflow test_rmarkdown { + + input = [ [ id:'test_rmd' ], // meta map + file(params.test_data['generic']['notebooks']['rmarkdown'], checkIfExists: true) ] + + RMARKDOWNNOTEBOOK ( input, [:], []) + +} + +workflow test_rmarkdown_parametrize { + + input = [ [ id:'test_rmd' ], // meta map + file(params.test_data['generic']['notebooks']['rmarkdown'], checkIfExists: true) ] + + RMARKDOWNNOTEBOOK_PARAMETRIZE( + input, + [input_filename: "hello.txt", n_iter: 12], + file(params.test_data['generic']['txt']['hello'], checkIfExists: true) + ) + +} + diff --git a/tests/modules/rmarkdownnotebook/test.yml b/tests/modules/rmarkdownnotebook/test.yml new file mode 100644 index 00000000..bef6086a --- /dev/null +++ b/tests/modules/rmarkdownnotebook/test.yml @@ -0,0 +1,27 @@ +- name: rmarkdownnotebook test_rmarkdown + command: nextflow run tests/modules/rmarkdownnotebook -entry test_rmarkdown -c tests/config/nextflow.config + tags: + - rmarkdownnotebook + files: + - path: output/rmarkdownnotebook/session_info.log + contains: + - R version 4.1.0 + - yaml_2.2.1 + - path: output/rmarkdownnotebook/test_rmd.html + contains: + - "n_iter = 10" + +- name: rmarkdownnotebook test_rmarkdown_parametrize + command: nextflow run tests/modules/rmarkdownnotebook -entry test_rmarkdown_parametrize -c tests/config/nextflow.config + tags: + - rmarkdownnotebook + files: + - path: output/rmarkdownnotebook/artifacts/artifact.txt + md5sum: b10a8db164e0754105b7a99be72e3fe5 + - path: output/rmarkdownnotebook/session_info.log + contains: + - R version 4.1.0 + - yaml_2.2.1 + - path: output/rmarkdownnotebook/test_rmd.html + contains: + - "n_iter = 12" From a740a6ff4890be1abb4d4cb3f67c0cd332bd11d7 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 26 Oct 2021 22:54:10 +0200 Subject: [PATCH 12/14] New module: `checkm/lineagewf` (#899) * Specify more guidelines on input channels * Linting * Updates based on code review * Update README.md * Fix broken sentence * feat: add megahit module, currently decompressed output * Update main.nf * Update tests/modules/megahit/test.yml Co-authored-by: Maxime Borry * Apply suggestions from code review Co-authored-by: Harshil Patel * feat: compress all outputs, remove md5sums due to gz stochasicity * fix: wrong conda channel for pigz * fix: broken singleend tests and update meta.yml * Missed one * Apply suggestions from code review Co-authored-by: Harshil Patel * fix: pigz formatting * Apply suggestions from code review Co-authored-by: Harshil Patel * Apply suggestions from code review * Added but test failing due to null on output channel * fix prefix variable * Complete checkm_lineagewf * Remove TODOs * Add description of fasta_ext parameter * Improve meta map for this context * Update meta.yml * Update modules/checkm/lineagewf/meta.yml Co-authored-by: James A. Fellows Yates * Update main.nf Co-authored-by: Harshil Patel Co-authored-by: Maxime Borry Co-authored-by: Daniel Lundin --- modules/checkm/lineagewf/functions.nf | 78 +++++++++++++++++++++++++ modules/checkm/lineagewf/main.nf | 49 ++++++++++++++++ modules/checkm/lineagewf/meta.yml | 58 ++++++++++++++++++ tests/config/pytest_modules.yml | 6 +- tests/modules/checkm/lineagewf/main.nf | 24 ++++++++ tests/modules/checkm/lineagewf/test.yml | 35 +++++++++++ 6 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 modules/checkm/lineagewf/functions.nf create mode 100644 modules/checkm/lineagewf/main.nf create mode 100644 modules/checkm/lineagewf/meta.yml create mode 100644 tests/modules/checkm/lineagewf/main.nf create mode 100644 tests/modules/checkm/lineagewf/test.yml diff --git a/modules/checkm/lineagewf/functions.nf b/modules/checkm/lineagewf/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/checkm/lineagewf/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/checkm/lineagewf/main.nf b/modules/checkm/lineagewf/main.nf new file mode 100644 index 00000000..e655e5f5 --- /dev/null +++ b/modules/checkm/lineagewf/main.nf @@ -0,0 +1,49 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process CHECKM_LINEAGEWF { + tag "$meta.id" + label 'process_medium' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::checkm-genome=1.1.3" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/checkm-genome:1.1.3--py_1" + } else { + container "quay.io/biocontainers/checkm-genome:1.1.3--py_1" + } + + input: + tuple val(meta), path(fasta) + val fasta_ext + + output: + tuple val(meta), path("${prefix}") , emit: checkm_output + tuple val(meta), path("${prefix}.tsv"), emit: checkm_tsv + path "versions.yml" , emit: versions + + script: + prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + """ + checkm \\ + lineage_wf \\ + -t $task.cpus \\ + -f ${prefix}.tsv \\ + --tab_table \\ + --pplacer_threads $task.cpus \\ + -x $fasta_ext \\ + $options.args \\ + . \\ + $prefix + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + ${getSoftwareName(task.process)}: \$( checkm 2>&1 | grep '...:::' | sed 's/.*CheckM v//;s/ .*//' ) + END_VERSIONS + """ +} diff --git a/modules/checkm/lineagewf/meta.yml b/modules/checkm/lineagewf/meta.yml new file mode 100644 index 00000000..29c6096e --- /dev/null +++ b/modules/checkm/lineagewf/meta.yml @@ -0,0 +1,58 @@ +name: checkm_lineagewf +description: CheckM provides a set of tools for assessing the quality of genomes recovered from isolates, single cells, or metagenomes. +keywords: + - checkm + - mag + - metagenome + - quality + - isolates + - microbes + - single cells + - completeness + - contamination + - bins + - genome bins +tools: + - checkm: + description: Assess the quality of microbial genomes recovered from isolates, single cells, and metagenomes. + homepage: https://ecogenomics.github.io/CheckM/ + documentation: https://github.com/Ecogenomics/CheckM/wiki + tool_dev_url: https://github.com/Ecogenomics/CheckM + doi: "10.1101/gr.186072.114" + licence: ['GPL v3'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: One or a list of multiple FASTA files of each bin, with extension defined with the fasta_ext value + pattern: "*.{$fasta_ext}" + - fasta_ext: + type: value + description: The file-type extension suffix of the input FASTA files (e.g., fasta, fna, fa, fas) + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample', bin:'1' ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - checkm_output: + type: directory + description: CheckM output directory + pattern: "*/" + - checkm_tsv: + type: file + description: CheckM summary completeness statistics table + pattern: "*.tsv" + +authors: + - "@jfy133" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 4e35fa24..343a0fc2 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -254,6 +254,10 @@ cat/fastq: - modules/cat/fastq/** - tests/modules/cat/fastq/** +checkm/lineagewf: + - modules/checkm/lineagewf/** + - tests/modules/checkm/lineagewf/** + chromap/chromap: - modules/chromap/chromap/** - tests/modules/chromap/chromap/** @@ -1106,7 +1110,7 @@ ucsc/bigwigaverageoverbed: ucsc/liftover: - modules/ucsc/liftover/** - tests/modules/ucsc/liftover/** - + ucsc/wigtobigwig: - modules/ucsc/wigtobigwig/** - tests/modules/ucsc/wigtobigwig/** diff --git a/tests/modules/checkm/lineagewf/main.nf b/tests/modules/checkm/lineagewf/main.nf new file mode 100644 index 00000000..94309896 --- /dev/null +++ b/tests/modules/checkm/lineagewf/main.nf @@ -0,0 +1,24 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { CHECKM_LINEAGEWF } from '../../../../modules/checkm/lineagewf/main.nf' addParams( options: [:] ) + +workflow test_checkm_lineagewf { + + input = [ [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) ] + fasta_ext = 'fasta' + + CHECKM_LINEAGEWF ( input, fasta_ext ) +} + +workflow test_checkm_lineagewf_multi { + + input = [ [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] ] + fasta_ext = 'fasta' + + CHECKM_LINEAGEWF ( input, fasta_ext ) +} diff --git a/tests/modules/checkm/lineagewf/test.yml b/tests/modules/checkm/lineagewf/test.yml new file mode 100644 index 00000000..768601b0 --- /dev/null +++ b/tests/modules/checkm/lineagewf/test.yml @@ -0,0 +1,35 @@ +- name: checkm lineagewf + command: nextflow run ./tests/modules/checkm/lineagewf -entry test_checkm_lineagewf -c tests/config/nextflow.config + tags: + - checkm + - checkm/lineagewf + files: + - path: output/checkm/test.tsv + md5sum: d5559764f563c4b55223e4e4a3dc1ec9 + - path: output/checkm/test/checkm.log + contains: + - "INFO: Parsing HMM hits to marker genes:" + - path: output/checkm/test/lineage.ms + contains: + - "# [Lineage Marker File]" + - "contigs" + - "UID1" + +- name: checkm lineagewf_multi + command: nextflow run ./tests/modules/checkm/lineagewf -entry test_checkm_lineagewf_multi -c tests/config/nextflow.config + tags: + - checkm + - checkm/lineagewf + files: + - path: output/checkm/test.tsv + md5sum: 7e0fa177dcf151b84b7751813fbde3d1 + - path: output/checkm/test/checkm.log + contains: + - "INFO: Parsing HMM hits to marker genes:" + - path: output/checkm/test/lineage.ms + contains: + - "# [Lineage Marker File]" + - "contigs" + - "UID1" + - "genome" + From bd2baa1e7c0f0e3d052e10406d2f86125c51af20 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 26 Oct 2021 23:07:33 +0200 Subject: [PATCH 13/14] New module: `maxbin2` (#895) * Specify more guidelines on input channels * Linting * Updates based on code review * Update README.md * Fix broken sentence * feat: add megahit module, currently decompressed output * Update main.nf * Update tests/modules/megahit/test.yml Co-authored-by: Maxime Borry * Apply suggestions from code review Co-authored-by: Harshil Patel * feat: compress all outputs, remove md5sums due to gz stochasicity * fix: wrong conda channel for pigz * fix: broken singleend tests and update meta.yml * Missed one * Apply suggestions from code review Co-authored-by: Harshil Patel * fix: pigz formatting * Apply suggestions from code review Co-authored-by: Harshil Patel * Apply suggestions from code review * Added, just need to finish tests once we have bacterial data * Add prelim test data * Fix version reporting * Add tests based on proposed test-dataset * Finalise new testdata * Fix md5sum issue by removing it... * Update main.nf * Apply suggestions from code review Co-authored-by: Harshil Patel Co-authored-by: Maxime Borry --- modules/maxbin2/functions.nf | 78 ++++++++++++++++++++++++++++++++ modules/maxbin2/main.nf | 53 ++++++++++++++++++++++ modules/maxbin2/meta.yml | 79 +++++++++++++++++++++++++++++++++ tests/config/pytest_modules.yml | 4 ++ tests/config/test_data.config | 15 +++++++ tests/modules/maxbin2/main.nf | 17 +++++++ tests/modules/maxbin2/test.yml | 15 +++++++ 7 files changed, 261 insertions(+) create mode 100644 modules/maxbin2/functions.nf create mode 100644 modules/maxbin2/main.nf create mode 100644 modules/maxbin2/meta.yml create mode 100644 tests/modules/maxbin2/main.nf create mode 100644 tests/modules/maxbin2/test.yml diff --git a/modules/maxbin2/functions.nf b/modules/maxbin2/functions.nf new file mode 100644 index 00000000..85628ee0 --- /dev/null +++ b/modules/maxbin2/functions.nf @@ -0,0 +1,78 @@ +// +// Utility functions used in nf-core DSL2 module files +// + +// +// Extract name of software tool from process name using $task.process +// +def getSoftwareName(task_process) { + return task_process.tokenize(':')[-1].tokenize('_')[0].toLowerCase() +} + +// +// Extract name of module from process name using $task.process +// +def getProcessName(task_process) { + return task_process.tokenize(':')[-1] +} + +// +// Function to initialise default values and to generate a Groovy Map of available options for nf-core modules +// +def initOptions(Map args) { + def Map options = [:] + options.args = args.args ?: '' + options.args2 = args.args2 ?: '' + options.args3 = args.args3 ?: '' + options.publish_by_meta = args.publish_by_meta ?: [] + options.publish_dir = args.publish_dir ?: '' + options.publish_files = args.publish_files + options.suffix = args.suffix ?: '' + return options +} + +// +// Tidy up and join elements of a list to return a path string +// +def getPathFromList(path_list) { + def paths = path_list.findAll { item -> !item?.trim().isEmpty() } // Remove empty entries + paths = paths.collect { it.trim().replaceAll("^[/]+|[/]+\$", "") } // Trim whitespace and trailing slashes + return paths.join('/') +} + +// +// Function to save/publish module results +// +def saveFiles(Map args) { + def ioptions = initOptions(args.options) + def path_list = [ ioptions.publish_dir ?: args.publish_dir ] + + // Do not publish versions.yml unless running from pytest workflow + if (args.filename.equals('versions.yml') && !System.getenv("NF_CORE_MODULES_TEST")) { + return null + } + if (ioptions.publish_by_meta) { + def key_list = ioptions.publish_by_meta instanceof List ? ioptions.publish_by_meta : args.publish_by_meta + for (key in key_list) { + if (args.meta && key instanceof String) { + def path = key + if (args.meta.containsKey(key)) { + path = args.meta[key] instanceof Boolean ? "${key}_${args.meta[key]}".toString() : args.meta[key] + } + path = path instanceof String ? path : '' + path_list.add(path) + } + } + } + if (ioptions.publish_files instanceof Map) { + for (ext in ioptions.publish_files) { + if (args.filename.endsWith(ext.key)) { + def ext_list = path_list.collect() + ext_list.add(ext.value) + return "${getPathFromList(ext_list)}/$args.filename" + } + } + } else if (ioptions.publish_files == null) { + return "${getPathFromList(path_list)}/$args.filename" + } +} diff --git a/modules/maxbin2/main.nf b/modules/maxbin2/main.nf new file mode 100644 index 00000000..bcfa9590 --- /dev/null +++ b/modules/maxbin2/main.nf @@ -0,0 +1,53 @@ +// Import generic module functions +include { initOptions; saveFiles; getSoftwareName; getProcessName } from './functions' + +params.options = [:] +options = initOptions(params.options) + +process MAXBIN2 { + tag "$meta.id" + label 'process_medium' + publishDir "${params.outdir}", + mode: params.publish_dir_mode, + saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) } + + conda (params.enable_conda ? "bioconda::maxbin2=2.2.7" : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container "https://depot.galaxyproject.org/singularity/maxbin2:2.2.7--he1b5a44_2" + } else { + container "quay.io/biocontainers/maxbin2:2.2.7--he1b5a44_2" + } + + input: + tuple val(meta), path(contigs), path(reads), path(abund) + + output: + tuple val(meta), path("*.fasta.gz") , emit: binned_fastas + tuple val(meta), path("*.summary") , emit: summary + tuple val(meta), path("*.log.gz") , emit: log + tuple val(meta), path("*.marker.gz") , emit: marker_counts + tuple val(meta), path("*.noclass.gz") , emit: unbinned_fasta + tuple val(meta), path("*.tooshort.gz"), emit: tooshort_fasta + tuple val(meta), path("*_bin.tar.gz") , emit: marker_bins , optional: true + tuple val(meta), path("*_gene.tar.gz"), emit: marker_genes, optional: true + path "versions.yml" , emit: versions + + script: + def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}" + def associate_files = reads ? "-reads $reads" : "-abund $abund" + """ + run_MaxBin.pl \\ + -contig $contigs \\ + $associate_files \\ + -thread $task.cpus \\ + $options.args \\ + -out $prefix + + gzip *.fasta *.noclass *.tooshort *log *.marker + + cat <<-END_VERSIONS > versions.yml + ${getProcessName(task.process)}: + maxbin2: \$( run_MaxBin.pl -v | head -n 1 | sed 's/MaxBin //' ) + END_VERSIONS + """ +} diff --git a/modules/maxbin2/meta.yml b/modules/maxbin2/meta.yml new file mode 100644 index 00000000..358f8323 --- /dev/null +++ b/modules/maxbin2/meta.yml @@ -0,0 +1,79 @@ +name: maxbin2 +description: MaxBin is a software that is capable of clustering metagenomic contigs +keywords: + - metagenomics + - assembly + - binning + - maxbin2 + - de novo assembly + - mags + - metagenome-assembled genomes + - contigs +tools: + - maxbin2: + description: MaxBin is software for binning assembled metagenomic sequences based on an Expectation-Maximization algorithm. + homepage: https://sourceforge.net/projects/maxbin/ + documentation: https://sourceforge.net/projects/maxbin/ + tool_dev_url: https://sourceforge.net/projects/maxbin/ + doi: "10.1093/bioinformatics/btv638" + licence: ['BSD 3-clause'] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - contigs: + type: file + description: Multi FASTA file containing assembled contigs of a given sample + pattern: "*.fasta" + - reads: + type: file + description: Reads used to assemble contigs in FASTA or FASTQ format. Do not supply at the same time as abundance files. + pattern: "*.fasta" + - abund: + type: file + description: Contig abundance files, i.e. reads against each contig. See MaxBin2 README for details. Do not supply at the same time as read files. + +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" + - binned_fastas: + type: file + description: Binned contigs, one per bin designated with numeric IDs + pattern: "*.fasta.gz" + - summary: + type: file + description: Summary file describing which contigs are being classified into which bin + pattern: "*.summary" + - log: + type: file + description: Log file recording the core steps of MaxBin algorithm + pattern: "*.log.gz" + - marker: + type: file + description: Marker gene presence numbers for each bin + pattern: "*.marker.gz" + - unbinned_fasta: + type: file + description: All sequences that pass the minimum length threshold but are not classified successfully. + pattern: "*.noclass.gz" + - tooshort_fasta: + type: file + description: All sequences that do not meet the minimum length threshold. + pattern: "*.tooshort.gz" + - marker_genes: + type: file + description: All sequences that do not meet the minimum length threshold. + pattern: "*.marker_of_each_gene.tar.gz" + +authors: + - "@jfy133" diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 343a0fc2..98a6204c 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -686,6 +686,10 @@ mashtree: - modules/mashtree/** - tests/modules/mashtree/** +maxbin2: + - modules/maxbin2/** + - tests/modules/maxbin2/** + megahit: - modules/megahit/** - tests/modules/megahit/** diff --git a/tests/config/test_data.config b/tests/config/test_data.config index d7eda458..858e7737 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -239,5 +239,20 @@ params { hello = "${test_data_dir}/generic/txt/hello.txt" } } + 'bacteroides_fragilis'{ + 'genome' { + genome_fna_gz = "${test_data_dir}/genomics/bacteroides_fragilis/genome/genome.fna.gz" + } + 'illumina' { + test1_contigs_fa_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz" + test1_1_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fastq/test1_1.fastq.gz" + test1_2_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fastq/test1_2.fastq.gz" + test2_1_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fastq/test2_1.fastq.gz" + test2_2_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/illumina/fastq/test2_2.fastq.gz" + } + 'nanopore' { + test_fastq_gz = "${test_data_dir}/genomics/bacteroides_fragilis/nanopore/fastq/test.fastq.gz" + } + } } } diff --git a/tests/modules/maxbin2/main.nf b/tests/modules/maxbin2/main.nf new file mode 100644 index 00000000..bede2c6a --- /dev/null +++ b/tests/modules/maxbin2/main.nf @@ -0,0 +1,17 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { MAXBIN2 } from '../../../modules/maxbin2/main.nf' addParams( options: [:] ) + +workflow test_maxbin2 { + + input = [ + [ id:'test1', single_end:false ], // meta map + file(params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true), + file(params.test_data['bacteroides_fragilis']['illumina']['test1_1_fastq_gz'], checkIfExists: true), + [] + ] + + MAXBIN2 ( input ) +} diff --git a/tests/modules/maxbin2/test.yml b/tests/modules/maxbin2/test.yml new file mode 100644 index 00000000..2721d17a --- /dev/null +++ b/tests/modules/maxbin2/test.yml @@ -0,0 +1,15 @@ +- name: maxbin2 + command: nextflow run ./tests/modules/maxbin2 -entry test_maxbin2 -c tests/config/nextflow.config + tags: + - maxbin2 + files: + - path: output/maxbin2/test1.001.fasta.gz + - path: output/maxbin2/test1.002.fasta.gz + - path: output/maxbin2/test1.log.gz + - path: output/maxbin2/test1.marker.gz + - path: output/maxbin2/test1.marker_of_each_bin.tar.gz + - path: output/maxbin2/test1.noclass.gz + - path: output/maxbin2/test1.summary + contains: + - "Bin name\tAbundance\tCompleteness\tGenome size\tGC content" + - path: output/maxbin2/test1.tooshort.gz From f47c27edfbc6181779699ff6b919d773d578aed7 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Wed, 27 Oct 2021 00:09:04 +0200 Subject: [PATCH 14/14] Update checksum modules using human GTF (#900) * update test yml star align * update test yml stringtie merge * update star genomegenerate yml * update test yml rsem calculateexpression Co-authored-by: Harshil Patel --- .../modules/rsem/calculateexpression/test.yml | 2 +- tests/modules/star/align/test.yml | 1 + tests/modules/star/genomegenerate/test.yml | 2 +- tests/modules/stringtie/merge/test.yml | 52 ++++++++++++++----- 4 files changed, 42 insertions(+), 15 deletions(-) diff --git a/tests/modules/rsem/calculateexpression/test.yml b/tests/modules/rsem/calculateexpression/test.yml index 9eb5effc..ac0866ea 100644 --- a/tests/modules/rsem/calculateexpression/test.yml +++ b/tests/modules/rsem/calculateexpression/test.yml @@ -1,8 +1,8 @@ - name: rsem calculateexpression test_rsem_calculateexpression command: nextflow run tests/modules/rsem/calculateexpression -entry test_rsem_calculateexpression -c tests/config/nextflow.config tags: - - rsem/calculateexpression - rsem + - rsem/calculateexpression files: - path: output/index/rsem/Genome md5sum: a654229fbca6071dcb6b01ce7df704da diff --git a/tests/modules/star/align/test.yml b/tests/modules/star/align/test.yml index 79ab38f1..47731c5c 100644 --- a/tests/modules/star/align/test.yml +++ b/tests/modules/star/align/test.yml @@ -81,6 +81,7 @@ md5sum: 0c3a5adb49d15e5feff81db8e29f2e36 - path: output/star/test.Aligned.out.bam md5sum: 38d08f0b944a2a1b981a250d675aa0d9 + - path: output/star/test.Log.final.out - path: output/star/test.Log.out - path: output/star/test.Log.progress.out - path: output/star/test.SJ.out.tab diff --git a/tests/modules/star/genomegenerate/test.yml b/tests/modules/star/genomegenerate/test.yml index 1df59378..df8d5efc 100644 --- a/tests/modules/star/genomegenerate/test.yml +++ b/tests/modules/star/genomegenerate/test.yml @@ -1,8 +1,8 @@ - name: star genomegenerate test_star_genomegenerate command: nextflow run tests/modules/star/genomegenerate -entry test_star_genomegenerate -c tests/config/nextflow.config tags: - - star/genomegenerate - star + - star/genomegenerate files: - path: output/star/star/Genome md5sum: a654229fbca6071dcb6b01ce7df704da diff --git a/tests/modules/stringtie/merge/test.yml b/tests/modules/stringtie/merge/test.yml index ea47ad48..e6436612 100644 --- a/tests/modules/stringtie/merge/test.yml +++ b/tests/modules/stringtie/merge/test.yml @@ -1,23 +1,49 @@ - name: stringtie merge forward-strand - command: nextflow run ./tests/modules/stringtie/merge/ -entry test_stringtie_forward_merge -c tests/config/nextflow.config + command: nextflow run tests/modules/stringtie/merge -entry test_stringtie_forward_merge -c tests/config/nextflow.config tags: - stringtie - stringtie/merge files: - - path: ./output/stringtie/stringtie.merged.gtf - contains: - - 'stringtie' - - 'merge' - - 'chr22' + - path: output/stringtie/stringtie.merged.gtf + md5sum: 9fab7049ef2eafdea246fc787d1def40 + - path: output/stringtie/test.ballgown/e2t.ctab + md5sum: 9ae42e056c955a88a883e5e917840d77 + - path: output/stringtie/test.ballgown/e_data.ctab + md5sum: adbedee7b2f84c70362ad6dfa57442b7 + - path: output/stringtie/test.ballgown/i2t.ctab + md5sum: 658131af118cfb416939044fdb5411de + - path: output/stringtie/test.ballgown/i_data.ctab + md5sum: f01d94a7d0dcfad3bfab18ed50dad16c + - path: output/stringtie/test.ballgown/t_data.ctab + md5sum: 92a98902784e7406ffe054d2adbabc7c + - path: output/stringtie/test.coverage.gtf + md5sum: d41d8cd98f00b204e9800998ecf8427e + - path: output/stringtie/test.gene.abundance.txt + md5sum: 9708811bcefe0f6384293d6f419f3250 + - path: output/stringtie/test.transcripts.gtf + md5sum: 0e42709bfe30c2c7f2574ba664f5fa9f -- name: stringtie merge reverse-strand - command: nextflow run ./tests/modules/stringtie/merge/ -entry test_stringtie_reverse_merge -c tests/config/nextflow.config +- name: stringtie merge test_stringtie_reverse_merge + command: nextflow run tests/modules/stringtie/merge -entry test_stringtie_reverse_merge -c tests/config/nextflow.config tags: - stringtie - stringtie/merge files: - - path: ./output/stringtie/stringtie.merged.gtf - contains: - - 'stringtie' - - 'merge' - - 'chr22' + - path: output/stringtie/stringtie.merged.gtf + md5sum: afc461bb3cbc368f268a7a45c1b54497 + - path: output/stringtie/test.ballgown/e2t.ctab + md5sum: 9ae42e056c955a88a883e5e917840d77 + - path: output/stringtie/test.ballgown/e_data.ctab + md5sum: fd8496d3957ade3b2c0853155f9a67da + - path: output/stringtie/test.ballgown/i2t.ctab + md5sum: 658131af118cfb416939044fdb5411de + - path: output/stringtie/test.ballgown/i_data.ctab + md5sum: f01d94a7d0dcfad3bfab18ed50dad16c + - path: output/stringtie/test.ballgown/t_data.ctab + md5sum: 92a98902784e7406ffe054d2adbabc7c + - path: output/stringtie/test.coverage.gtf + md5sum: d41d8cd98f00b204e9800998ecf8427e + - path: output/stringtie/test.gene.abundance.txt + md5sum: 94b85145d60ab1b80a7f0f6cf08418b0 + - path: output/stringtie/test.transcripts.gtf + md5sum: 3196e3d50fd461aae6408e0a70acae68