diff --git a/CHANGELOG.md b/CHANGELOG.md index fb1b809..ae71456 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,12 +15,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#35](https://github.com/qbic-pipelines/vcftomaf/pull/35) - Template update to 3.2.0 (@famosab) - [#37](https://github.com/qbic-pipelines/vcftomaf/pull/37) - Template update to 3.2.1 (@famosab) - [#38](https://github.com/qbic-pipelines/vcftomaf/pull/38) - Template update to 3.5.1 (@famosab) +- [#39](https://github.com/qbic-pipelines/vcftomaf/pull/39) - Update all modules (@famosab) ### `Dependencies` -| Dependency | Old version | New version | -| ---------- | ----------- | ----------- | -| MultiQC | 1.25.1 | 1.32 | +| Dependency. | Old version | New version | +| -------------- | ----------- | ----------- | +| BCFtools | 1.20 | 1.22 | +| Gunzip | 1.1 | 1.13 | +| MultiQC | 1.25.1 | 1.33 | +| Picard | 3.3.0 | 3.4.0 | +| Tabix (HTSlib) | 1.20 | 1.21 | ### `Deprecated` diff --git a/conf/base.config b/conf/base.config index 333f3dc..986cb93 100644 --- a/conf/base.config +++ b/conf/base.config @@ -10,9 +10,9 @@ process { - cpus = { 1 * task.attempt } - memory = { 6.GB * task.attempt } - time = { 4.h * task.attempt } + cpus = { 1 * task.attempt } + memory = { 6.GB * task.attempt } + time = { 4.h * task.attempt } errorStrategy = { task.exitStatus in ((130..145) + 104 + 175) ? 'retry' : 'finish' } maxRetries = 1 @@ -23,43 +23,43 @@ process { // These labels are used and recognised by default in DSL2 files hosted on nf-core/modules. // If possible, it would be nice to keep the same label naming convention when // adding in your local modules too. - withLabel:error_ignore { + withLabel: error_ignore { errorStrategy = 'ignore' } - withLabel:error_retry { + withLabel: error_retry { errorStrategy = 'retry' maxRetries = 2 } - withLabel:process_single { - cpus = { 1 } + withLabel: process_single { + cpus = { 1 } memory = { 6.GB * task.attempt } - time = { 4.h * task.attempt } + time = { 4.h * task.attempt } } - withLabel:process_low { - cpus = { 2 * task.attempt } + withLabel: process_low { + cpus = { 2 * task.attempt } memory = { 12.GB * task.attempt } - time = { 4.h * task.attempt } + time = { 4.h * task.attempt } } - withLabel:process_medium { - cpus = { 6 * task.attempt } + withLabel: process_medium { + cpus = { 6 * task.attempt } memory = { 36.GB * task.attempt } - time = { 8.h * task.attempt } + time = { 8.h * task.attempt } } - withLabel:process_high { - cpus = { 12 * task.attempt } + withLabel: process_high { + cpus = { 12 * task.attempt } memory = { 72.GB * task.attempt } - time = { 16.h * task.attempt } + time = { 16.h * task.attempt } } - withLabel:process_long { - time = { 20.h * task.attempt } + withLabel: process_long { + time = { 20.h * task.attempt } } - withLabel:process_high_memory { + withLabel: process_high_memory { memory = { 200.GB * task.attempt } } - withLabel:error_ignore { + withLabel: error_ignore { errorStrategy = 'ignore' } - withLabel:error_retry { + withLabel: error_retry { errorStrategy = 'retry' maxRetries = 2 } diff --git a/conf/igenomes.config b/conf/igenomes.config index 9f10cf6..2d5de1d 100644 --- a/conf/igenomes.config +++ b/conf/igenomes.config @@ -81,263 +81,263 @@ params { vep_version = '108.2' } 'Ensembl.GRCh37' { - bwa = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Annotation/README.txt" - snpeff_db = 87 - snpeff_genome = 'GRCh37' - snpeff_version = '5.1' - vep_cache_version = 108 - vep_genome = 'GRCh37' - vep_species = 'homo_sapiens' - vep_version = '108.2' + bwa = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Annotation/README.txt" + snpeff_db = 87 + snpeff_genome = 'GRCh37' + snpeff_version = '5.1' + vep_cache_version = 108 + vep_genome = 'GRCh37' + vep_species = 'homo_sapiens' + vep_version = '108.2' } 'NCBI.GRCh38' { - bwa = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/WholeGenomeFasta/genome.fa" - snpeff_db = 105 - snpeff_genome = 'GRCh38' - snpeff_version = '5.1' - vep_cache_version = 108 - vep_genome = 'GRCh38' - vep_species = 'homo_sapiens' - vep_version = '108.2' - } - 'CHM13' { - fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/CHM13/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/CHM13/Sequence/BWAIndex/" - bwamem2 = "${params.igenomes_base}/Homo_sapiens/UCSC/CHM13/Sequence/BWAmem2Index/" - } - 'GRCm38' { - bwa = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/BWAIndex/version0.6.0/" - chr_dir = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/Chromosomes" - dbsnp = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/MouseGenomeProject/mgp.v5.merged.snps_all.dbSNP142.vcf.gz" - dbsnp_tbi = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/MouseGenomeProject/mgp.v5.merged.snps_all.dbSNP142.vcf.gz.tbi" - dict = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/WholeGenomeFasta/genome.dict" - fasta = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/WholeGenomeFasta/genome.fa" - fasta_fai = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/WholeGenomeFasta/genome.fa.fai" - intervals = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Annotation/intervals/GRCm38_calling_list.bed" - known_indels = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/MouseGenomeProject/mgp.v5.merged.indels.dbSNP142.normed.vcf.gz" - known_indels_tbi = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/MouseGenomeProject/mgp.v5.merged.indels.dbSNP142.normed.vcf.gz.tbi" - mappability = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Annotation/Control-FREEC/GRCm38_68_mm10.gem" - readme = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Annotation/README.txt" - snpeff_db = 99 - snpeff_genome = 'GRCm38' - snpeff_version = '5.1' - vep_cache_version = 102 - vep_genome = 'GRCm38' - vep_species = 'mus_musculus' - vep_version = '108.2' - } - 'TAIR10' { - bwa = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/README.txt" - } - 'EB2' { - bwa = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Annotation/README.txt" + bwa = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/WholeGenomeFasta/genome.fa" + snpeff_db = 105 + snpeff_genome = 'GRCh38' + snpeff_version = '5.1' + vep_cache_version = 108 + vep_genome = 'GRCh38' + vep_species = 'homo_sapiens' + vep_version = '108.2' + } + CHM13 { + fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/CHM13/Sequence/WholeGenomeFasta/genome.fa" + bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/CHM13/Sequence/BWAIndex/" + bwamem2 = "${params.igenomes_base}/Homo_sapiens/UCSC/CHM13/Sequence/BWAmem2Index/" + } + GRCm38 { + bwa = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/BWAIndex/version0.6.0/" + chr_dir = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/Chromosomes" + dbsnp = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/MouseGenomeProject/mgp.v5.merged.snps_all.dbSNP142.vcf.gz" + dbsnp_tbi = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/MouseGenomeProject/mgp.v5.merged.snps_all.dbSNP142.vcf.gz.tbi" + dict = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/WholeGenomeFasta/genome.dict" + fasta = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/WholeGenomeFasta/genome.fa" + fasta_fai = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/WholeGenomeFasta/genome.fa.fai" + intervals = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Annotation/intervals/GRCm38_calling_list.bed" + known_indels = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/MouseGenomeProject/mgp.v5.merged.indels.dbSNP142.normed.vcf.gz" + known_indels_tbi = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/MouseGenomeProject/mgp.v5.merged.indels.dbSNP142.normed.vcf.gz.tbi" + mappability = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Annotation/Control-FREEC/GRCm38_68_mm10.gem" + readme = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Annotation/README.txt" + snpeff_db = 99 + snpeff_genome = 'GRCm38' + snpeff_version = '5.1' + vep_cache_version = 102 + vep_genome = 'GRCm38' + vep_species = 'mus_musculus' + vep_version = '108.2' + } + TAIR10 { + bwa = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/README.txt" + } + EB2 { + bwa = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Annotation/README.txt" } 'UMD3.1' { - bwa = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Annotation/README.txt" - snpeff_db = 75 - snpeff_genome = 'UMD3.1' - snpeff_version = '5.1' - vep_cache_version = 94 - vep_genome = 'UMD3.1' - vep_species = 'bos_taurus' - vep_version = '108.2' - } - 'WBcel235' { - bwa = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/WholeGenomeFasta/genome.fa" - snpeff_db = 105 - snpeff_genome = 'WBcel235' - snpeff_version = '5.1' - vep_cache_version = 108 - vep_genome = 'WBcel235' - vep_species = 'caenorhabditis_elegans' - vep_version = '108.2' + bwa = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Annotation/README.txt" + snpeff_db = 75 + snpeff_genome = 'UMD3.1' + snpeff_version = '5.1' + vep_cache_version = 94 + vep_genome = 'UMD3.1' + vep_species = 'bos_taurus' + vep_version = '108.2' + } + WBcel235 { + bwa = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/WholeGenomeFasta/genome.fa" + snpeff_db = 105 + snpeff_genome = 'WBcel235' + snpeff_version = '5.1' + vep_cache_version = 108 + vep_genome = 'WBcel235' + vep_species = 'caenorhabditis_elegans' + vep_version = '108.2' } 'CanFam3.1' { - bwa = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Annotation/README.txt" - snpeff_db = 99 - snpeff_genome = 'CanFam3.1' - snpeff_version = '5.1' - vep_cache_version = 104 - vep_genome = 'CanFam3.1' - vep_species = 'canis_lupus_familiaris' - vep_version = '108.2' - } - 'GRCz10' { - bwa = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/WholeGenomeFasta/genome.fa" - } - 'BDGP6' { - bwa = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/WholeGenomeFasta/genome.fa" - } - 'EquCab2' { - bwa = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Annotation/README.txt" - } - 'EB1' { - bwa = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Annotation/README.txt" - } - 'Galgal4' { - bwa = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/WholeGenomeFasta/genome.fa" - } - 'Gm01' { - bwa = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Annotation/README.txt" - } - 'Mmul_1' { - bwa = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Annotation/README.txt" + bwa = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Annotation/README.txt" + snpeff_db = 99 + snpeff_genome = 'CanFam3.1' + snpeff_version = '5.1' + vep_cache_version = 104 + vep_genome = 'CanFam3.1' + vep_species = 'canis_lupus_familiaris' + vep_version = '108.2' + } + GRCz10 { + bwa = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/WholeGenomeFasta/genome.fa" + } + BDGP6 { + bwa = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/WholeGenomeFasta/genome.fa" + } + EquCab2 { + bwa = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Annotation/README.txt" + } + EB1 { + bwa = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Annotation/README.txt" + } + Galgal4 { + bwa = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/WholeGenomeFasta/genome.fa" + } + Gm01 { + bwa = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Annotation/README.txt" + } + Mmul_1 { + bwa = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Annotation/README.txt" } 'IRGSP-1.0' { - bwa = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/WholeGenomeFasta/genome.fa" + bwa = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/WholeGenomeFasta/genome.fa" } 'CHIMP2.1.4' { - bwa = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Annotation/README.txt" + bwa = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Annotation/README.txt" } 'Rnor_5.0' { - bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/WholeGenomeFasta/genome.fa" + bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/WholeGenomeFasta/genome.fa" } 'Rnor_6.0' { - bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/WholeGenomeFasta/genome.fa" + bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/WholeGenomeFasta/genome.fa" } 'R64-1-1' { - bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/WholeGenomeFasta/genome.fa" - snpeff_db = 105 - snpeff_genome = 'R64-1-1' - snpeff_version = '5.1' - vep_cache_version = 108 - vep_genome = 'R64-1-1' - vep_species = 'saccharomyces_cerevisiae' - vep_version = '108.2' - } - 'EF2' { - bwa = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Annotation/README.txt" - } - 'Sbi1' { - bwa = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Annotation/README.txt" + bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/WholeGenomeFasta/genome.fa" + snpeff_db = 105 + snpeff_genome = 'R64-1-1' + snpeff_version = '5.1' + vep_cache_version = 108 + vep_genome = 'R64-1-1' + vep_species = 'saccharomyces_cerevisiae' + vep_version = '108.2' + } + EF2 { + bwa = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Annotation/README.txt" + } + Sbi1 { + bwa = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Annotation/README.txt" } 'Sscrofa10.2' { - bwa = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Annotation/README.txt" - } - 'AGPv3' { - bwa = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/WholeGenomeFasta/genome.fa" - } - 'hg38' { - bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/WholeGenomeFasta/genome.fa" - snpeff_db = 105 - snpeff_genome = 'GRCh38' - snpeff_version = '5.1' - vep_cache_version = 108 - vep_genome = 'GRCh38' - vep_species = 'homo_sapiens' - vep_version = '108.2' - } - 'hg19' { - bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Annotation/README.txt" - snpeff_db = 87 - snpeff_genome = 'GRCh37' - snpeff_version = '5.1' - vep_cache_version = 108 - vep_genome = 'GRCh37' - vep_species = 'homo_sapiens' - vep_version = '108.2' - } - 'mm10' { - bwa = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Annotation/README.txt" - snpeff_db = 99 - snpeff_genome = 'GRCm38' - snpeff_version = '5.1' - vep_cache_version = 102 - vep_genome = 'GRCm38' - vep_species = 'mus_musculus' - vep_version = '108.2' - } - 'bosTau8' { - bwa = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/WholeGenomeFasta/genome.fa" - } - 'ce10' { - bwa = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Annotation/README.txt" - } - 'canFam3' { - bwa = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Annotation/README.txt" - } - 'danRer10' { - bwa = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/WholeGenomeFasta/genome.fa" - } - 'dm6' { - bwa = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/WholeGenomeFasta/genome.fa" - } - 'equCab2' { - bwa = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Annotation/README.txt" - } - 'galGal4' { - bwa = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Annotation/README.txt" - } - 'panTro4' { - bwa = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Annotation/README.txt" - } - 'rn6' { - bwa = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/WholeGenomeFasta/genome.fa" - } - 'sacCer3' { - bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Annotation/README.txt" - } - 'susScr3' { - bwa = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/BWAIndex/version0.6.0/" - fasta = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/WholeGenomeFasta/genome.fa" - readme = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Annotation/README.txt" + bwa = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Annotation/README.txt" + } + AGPv3 { + bwa = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/WholeGenomeFasta/genome.fa" + } + hg38 { + bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/WholeGenomeFasta/genome.fa" + snpeff_db = 105 + snpeff_genome = 'GRCh38' + snpeff_version = '5.1' + vep_cache_version = 108 + vep_genome = 'GRCh38' + vep_species = 'homo_sapiens' + vep_version = '108.2' + } + hg19 { + bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Annotation/README.txt" + snpeff_db = 87 + snpeff_genome = 'GRCh37' + snpeff_version = '5.1' + vep_cache_version = 108 + vep_genome = 'GRCh37' + vep_species = 'homo_sapiens' + vep_version = '108.2' + } + mm10 { + bwa = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Annotation/README.txt" + snpeff_db = 99 + snpeff_genome = 'GRCm38' + snpeff_version = '5.1' + vep_cache_version = 102 + vep_genome = 'GRCm38' + vep_species = 'mus_musculus' + vep_version = '108.2' + } + bosTau8 { + bwa = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/WholeGenomeFasta/genome.fa" + } + ce10 { + bwa = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Annotation/README.txt" + } + canFam3 { + bwa = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Annotation/README.txt" + } + danRer10 { + bwa = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/WholeGenomeFasta/genome.fa" + } + dm6 { + bwa = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/WholeGenomeFasta/genome.fa" + } + equCab2 { + bwa = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Annotation/README.txt" + } + galGal4 { + bwa = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Annotation/README.txt" + } + panTro4 { + bwa = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Annotation/README.txt" + } + rn6 { + bwa = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/WholeGenomeFasta/genome.fa" + } + sacCer3 { + bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Annotation/README.txt" + } + susScr3 { + bwa = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/BWAIndex/version0.6.0/" + fasta = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/WholeGenomeFasta/genome.fa" + readme = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Annotation/README.txt" } } } diff --git a/conf/modules.config b/conf/modules.config index 49ad72d..f9e6dc1 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -15,19 +15,21 @@ process { publishDir = [ path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, ] withName: BCFTOOLS_VIEW { - ext.args = { [ "", - params.filter ? "-f PASS": "", - "--output-type z" - ].join(" ").trim() } + ext.args = { + [ + "", + params.filter ? "-f PASS" : "", + "--output-type z", + ].join(" ").trim() + } } withName: GUNZIP { - publishDir = [ - //specify to avoid publishing, overwritten otherwise + publishDir = [ enabled: false ] } @@ -37,61 +39,61 @@ process { [ path: { "${params.outdir}/liftover/lifted/" }, mode: params.publish_dir_mode, - pattern: "*.lifted.vcf.gz" + pattern: "*.lifted.vcf.gz", ], [ path: { "${params.outdir}/liftover/unlifted/" }, mode: params.publish_dir_mode, - pattern: "*.unlifted.vcf.gz" + pattern: "*.unlifted.vcf.gz", ], [ path: { "${params.outdir}/liftover/logs/" }, mode: params.publish_dir_mode, - pattern: "*.log" - ] + pattern: "*.log", + ], ] } withName: TABIX_TABIX { - publishDir = [ - //specify to avoid publishing, overwritten otherwise + publishDir = [ enabled: false ] } withName: UNTAR { - publishDir = [ - //specify to avoid publishing, overwritten otherwise + publishDir = [ enabled: false ] } withName: VCF2MAF { - ext.args = { [ "", - params.run_vep ? "" : "--inhibit-vep", - meta.normal_id ? "--normal-id ${meta.normal_id} --vcf-normal-id ${meta.vcf_normal_id}" : "", - meta.tumor_id ? "--tumor-id ${meta.tumor_id} --vcf-tumor-id ${meta.vcf_tumor_id}" : "", - "--retain-fmt AD,AF,DP,GQ,GT,STR", - "--retain-info AS_FilterStatus,AS_SB_TABLE,DP,MBQ,POPAF,STR,ANN,LOF,NMD", - "--retain-ann Allele,Consequence,IMPACT,SYMBOL,Gene,Feature_type,Feature,BIOTYPE,EXON,INTRON,HGVSc,HGVSp,CDNA_position,CDS_position,Protein_position,Amino_acids,Codons,Existing_variation,DISTANCE,STRAND,FLAGS,VARIANT_CLASS,SYMBOL_SOURCE,HGNC_ID,CANONICAL,MANE,MANE_SELECT,MANE_PLUS_CLINICAL,TSL,APPRIS,CCDS,ENSP,SWISSPROT,TREMBL,UNIPARC,UNIPROT_ISOFORM,GENE_PHENO,SIFT,PolyPhen,DOMAINS,miRNA,AF,AFR_AF,AMR_AF,EAS_AF,EUR_AF,SAS_AF,gnomADe_AF,gnomADe_AFR_AF,gnomADe_AMR_AF,gnomADe_ASJ_AF,gnomADe_EAS_AF,gnomADe_FIN_AF,gnomADe_MID_AF,gnomADe_NFE_AF,gnomADe_REMAINING_AF,gnomADe_SAS_AF,gnomADg_AF,gnomADg_AFR_AF,gnomADg_AMI_AF,gnomADg_AMR_AF,gnomADg_ASJ_AFIgnomADg_EAS_AF,gnomADg_FIN_AF,gnomADg_MID_AF,gnomADg_NFE_AF,gnomADg_REMAINING_AF,gnomADg_SAS_AF,gnomADg_EAS_AF_POPS,FREQS,CLIN_SIG,SOMATIC,PHENO,PUBMED,MOTIF_NAME,MOTIF_POS,HIGH_INF_POS,MOTIF_SCORE_CHANGE,TRANSCRIPTION_FACTORS", - "--any-allele", - "--ncbi-build ${params.genome.tokenize('.')[-1]}", - "--species homo_sapiens" - ].join(" ").trim() } + ext.args = { + [ + "", + params.run_vep ? "" : "--inhibit-vep", + meta.normal_id ? "--normal-id ${meta.normal_id} --vcf-normal-id ${meta.vcf_normal_id}" : "", + meta.tumor_id ? "--tumor-id ${meta.tumor_id} --vcf-tumor-id ${meta.vcf_tumor_id}" : "", + "--retain-fmt AD,AF,DP,GQ,GT,STR", + "--retain-info AS_FilterStatus,AS_SB_TABLE,DP,MBQ,POPAF,STR,ANN,LOF,NMD", + "--retain-ann Allele,Consequence,IMPACT,SYMBOL,Gene,Feature_type,Feature,BIOTYPE,EXON,INTRON,HGVSc,HGVSp,CDNA_position,CDS_position,Protein_position,Amino_acids,Codons,Existing_variation,DISTANCE,STRAND,FLAGS,VARIANT_CLASS,SYMBOL_SOURCE,HGNC_ID,CANONICAL,MANE,MANE_SELECT,MANE_PLUS_CLINICAL,TSL,APPRIS,CCDS,ENSP,SWISSPROT,TREMBL,UNIPARC,UNIPROT_ISOFORM,GENE_PHENO,SIFT,PolyPhen,DOMAINS,miRNA,AF,AFR_AF,AMR_AF,EAS_AF,EUR_AF,SAS_AF,gnomADe_AF,gnomADe_AFR_AF,gnomADe_AMR_AF,gnomADe_ASJ_AF,gnomADe_EAS_AF,gnomADe_FIN_AF,gnomADe_MID_AF,gnomADe_NFE_AF,gnomADe_REMAINING_AF,gnomADe_SAS_AF,gnomADg_AF,gnomADg_AFR_AF,gnomADg_AMI_AF,gnomADg_AMR_AF,gnomADg_ASJ_AFIgnomADg_EAS_AF,gnomADg_FIN_AF,gnomADg_MID_AF,gnomADg_NFE_AF,gnomADg_REMAINING_AF,gnomADg_SAS_AF,gnomADg_EAS_AF_POPS,FREQS,CLIN_SIG,SOMATIC,PHENO,PUBMED,MOTIF_NAME,MOTIF_POS,HIGH_INF_POS,MOTIF_SCORE_CHANGE,TRANSCRIPTION_FACTORS", + "--any-allele", + "--ncbi-build ${params.genome.tokenize('.')[-1]}", + "--species homo_sapiens", + ].join(" ").trim() + } publishDir = [ path: { "${params.outdir}/maf" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, ] } - withName: 'MULTIQC' { - ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } + withName: MULTIQC { + ext.args = { params.multiqc_title ? "--title \"${params.multiqc_title}\"" : '' } publishDir = [ path: { "${params.outdir}/multiqc" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, ] } - } diff --git a/conf/test.config b/conf/test.config index 7e254f2..3703a4d 100644 --- a/conf/test.config +++ b/conf/test.config @@ -14,7 +14,7 @@ process { resourceLimits = [ cpus: 4, memory: '15.GB', - time: '1.h' + time: '1.h', ] } @@ -23,10 +23,9 @@ params { config_profile_description = 'Minimal test dataset to check pipeline function' // Input data - input = "${projectDir}/tests/samplesheets/samplesheet.csv" - fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' - intervals = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.bed' - genome = 'GATK.GRCh38' - filter = false - + input = "${projectDir}/tests/samplesheets/samplesheet.csv" + fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + intervals = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.bed' + genome = 'GATK.GRCh38' + filter = false } diff --git a/main.nf b/main.nf index c32d5a6..2702b9c 100644 --- a/main.nf +++ b/main.nf @@ -17,6 +17,46 @@ include { VCFTOMAF } from './workflows/vcftomaf' include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_vcftomaf_pipeline' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_vcftomaf_pipeline' include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_vcftomaf_pipeline' +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RUN MAIN WORKFLOW +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +workflow { + // + // SUBWORKFLOW: Run initialisation tasks + // + PIPELINE_INITIALISATION( + params.version, + params.validate_params, + params.monochrome_logs, + args, + params.outdir, + params.input, + params.help, + params.help_full, + params.show_hidden, + ) + + // + // WORKFLOW: Run main workflow + // + QBICPIPELINES_VCFTOMAF( + PIPELINE_INITIALISATION.out.samplesheet + ) + + // + PIPELINE_COMPLETION( + params.email, + params.email_on_fail, + params.plaintext_email, + params.outdir, + params.monochrome_logs, + params.hook_url, + QBICPIPELINES_VCFTOMAF.out.multiqc_report, + ) +} /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -28,12 +68,10 @@ include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_vcft // WORKFLOW: Run main analysis pipeline depending on type of input // workflow QBICPIPELINES_VCFTOMAF { - take: samplesheet // channel: samplesheet read in from --input main: - // // SET PARAMETERS // @@ -41,84 +79,31 @@ workflow QBICPIPELINES_VCFTOMAF { params.dict = getGenomeAttribute('dict') // Extra files - intervals = params.intervals ? Channel.fromPath(params.intervals).collect() : Channel.value([]) - liftover_chain = params.liftover_chain ? Channel.fromPath(params.liftover_chain).collect() : Channel.value([]) + intervals = params.intervals ? channel.fromPath(params.intervals).collect() : channel.value([]) + liftover_chain = params.liftover_chain ? channel.fromPath(params.liftover_chain).collect() : channel.value([]) // FASTA - fasta = params.fasta ? Channel.fromPath(params.fasta).collect() : Channel.value([]) - dict = params.dict ? Channel.fromPath(params.dict).collect() : Channel.empty() - - // Genome version - genome = params.genome ?: Channel.empty() + fasta = params.fasta ? channel.fromPath(params.fasta).collect() : channel.value([]) + dict = params.dict ? channel.fromPath(params.dict).collect() : channel.empty() // VEP cache - vep_cache = params.vep_cache ? Channel.fromPath(params.vep_cache).collect() : Channel.value([]) - vep_cache_unpacked = Channel.value([]) - + vep_cache = params.vep_cache ? channel.fromPath(params.vep_cache).collect() : channel.value([]) + vep_cache_unpacked = channel.value([]) // // WORKFLOW: Run pipeline // - VCFTOMAF ( + VCFTOMAF( samplesheet, intervals, fasta, dict, liftover_chain, - genome, vep_cache, - vep_cache_unpacked + vep_cache_unpacked, ) emit: multiqc_report = VCFTOMAF.out.multiqc_report // channel: /path/to/multiqc_report.html } -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RUN MAIN WORKFLOW -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -workflow { - - main: - // - // SUBWORKFLOW: Run initialisation tasks - // - PIPELINE_INITIALISATION ( - params.version, - params.validate_params, - params.monochrome_logs, - args, - params.outdir, - params.input, - params.help, - params.help_full, - params.show_hidden - ) - - // - // WORKFLOW: Run main workflow - // - QBICPIPELINES_VCFTOMAF ( - PIPELINE_INITIALISATION.out.samplesheet - ) - - // - PIPELINE_COMPLETION ( - params.email, - params.email_on_fail, - params.plaintext_email, - params.outdir, - params.monochrome_logs, - params.hook_url, - QBICPIPELINES_VCFTOMAF.out.multiqc_report - ) -} - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - THE END -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ diff --git a/modules.json b/modules.json index 925fac8..83e3e75 100644 --- a/modules.json +++ b/modules.json @@ -7,37 +7,37 @@ "nf-core": { "bcftools/view": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"] }, "gunzip": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "dfa7f1a33781e89f6efe727d371ed7ca9077059d", + "git_sha": "9656d955b700a8707c4a67821ab056f8c1095675", "installed_by": ["modules"] }, "picard/liftovervcf": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "df124e87c74d8b40285199f8cc20151f5aa57255", "installed_by": ["modules"] }, "tabix/tabix": { "branch": "master", - "git_sha": "7b972bdde6fa2154a95cf08a8ba1821f228f20d3", + "git_sha": "5cb9a8694da0a0e550921636bb60bc8c56445fd7", "installed_by": ["modules"] }, "untar": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "00ee87ebb541af0008596400ce6d5f66d79d5408", "installed_by": ["modules"] }, "vcf2maf": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] } } diff --git a/modules/nf-core/bcftools/view/environment.yml b/modules/nf-core/bcftools/view/environment.yml index 5c00b11..ba863b3 100644 --- a/modules/nf-core/bcftools/view/environment.yml +++ b/modules/nf-core/bcftools/view/environment.yml @@ -1,5 +1,10 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/bcftools + - bioconda::bcftools=1.22 diff --git a/modules/nf-core/bcftools/view/main.nf b/modules/nf-core/bcftools/view/main.nf index 7fe4303..72b3120 100644 --- a/modules/nf-core/bcftools/view/main.nf +++ b/modules/nf-core/bcftools/view/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_VIEW { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/47/474a5ea8dc03366b04df884d89aeacc4f8e6d1ad92266888e7a8e7958d07cde8/data': + 'community.wave.seqera.io/library/bcftools_htslib:0a3fa2654b52006f' }" input: tuple val(meta), path(vcf), path(index) @@ -57,13 +57,12 @@ process BCFTOOLS_VIEW { args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" - def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : - args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : - args.contains("--write-index") || args.contains("-W") ? "csi" : - "" + def stub_index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" - def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" - + def create_index = extension.endsWith(".gz") && stub_index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${stub_index}" : "" """ ${create_cmd} ${prefix}.${extension} ${create_index} diff --git a/modules/nf-core/bcftools/view/meta.yml b/modules/nf-core/bcftools/view/meta.yml index aa7785f..e9df974 100644 --- a/modules/nf-core/bcftools/view/meta.yml +++ b/modules/nf-core/bcftools/view/meta.yml @@ -26,29 +26,34 @@ input: description: | The vcf file to be inspected. e.g. 'file.vcf' + ontologies: [] - index: type: file description: | The tab index for the VCF file to be inspected. e.g. 'file.tbi' - - - regions: - type: file - description: | - Optionally, restrict the operation to regions listed in this file. - e.g. 'file.vcf' - - - targets: - type: file - description: | - Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) - e.g. 'file.vcf' - - - samples: - type: file - description: | - Optional, file of sample names to be included or excluded. - e.g. 'file.tsv' + ontologies: [] + - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. + e.g. 'file.vcf' + ontologies: [] + - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) + e.g. 'file.vcf' + ontologies: [] + - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -57,8 +62,9 @@ output: type: file description: VCF normalized output file pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - tbi: - - meta: + ontologies: [] + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -67,8 +73,9 @@ output: type: file description: Alternative VCF file index pattern: "*.tbi" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -77,11 +84,14 @@ output: type: file description: Default VCF file index pattern: "*.csi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@abhi18av" maintainers: diff --git a/modules/nf-core/bcftools/view/tests/main.nf.test b/modules/nf-core/bcftools/view/tests/main.nf.test index 1e60c50..8281c17 100644 --- a/modules/nf-core/bcftools/view/tests/main.nf.test +++ b/modules/nf-core/bcftools/view/tests/main.nf.test @@ -295,4 +295,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/nf-core/bcftools/view/tests/main.nf.test.snap b/modules/nf-core/bcftools/view/tests/main.nf.test.snap index fec22e3..38b61e4 100644 --- a/modules/nf-core/bcftools/view/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/view/tests/main.nf.test.snap @@ -24,7 +24,7 @@ ] ], "3": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ], "csi": [ [ @@ -48,15 +48,15 @@ ] ], "versions": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-06-05T12:14:38.717458272" + "timestamp": "2025-09-11T14:59:19.949819" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi": { "content": [ @@ -82,14 +82,14 @@ ] ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-06-05T12:13:44.760671384" + "timestamp": "2025-09-11T14:59:00.329884" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index - stub": { "content": [ @@ -116,7 +116,7 @@ ] ], "3": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ], "csi": [ [ @@ -140,15 +140,15 @@ ] ], "versions": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-06-04T16:06:21.669668533" + "timestamp": "2025-09-11T14:59:15.546282" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi - stub": { "content": [ @@ -175,7 +175,7 @@ ], "3": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ], "csi": [ @@ -199,15 +199,15 @@ ] ], "versions": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-06-05T12:14:53.026083914" + "timestamp": "2025-09-11T14:59:24.406961" }, "sarscov2 - [vcf, tbi], vcf, tsv, []": { "content": [ @@ -221,27 +221,27 @@ ] ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-05-31T15:15:14.663512924" + "timestamp": "2025-09-11T14:59:05.680096" }, "sarscov2 - [vcf, tbi], [], [], [] - stub": { "content": [ "out.vcf", [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-05-31T15:15:19.723448323" + "timestamp": "2025-09-11T14:59:10.959586" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index": { "content": [ @@ -267,14 +267,14 @@ ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-06-05T08:24:36.358469315" + "timestamp": "2025-09-11T14:58:50.932203" }, "sarscov2 - [vcf, tbi], [], [], []": { "content": [ @@ -288,14 +288,14 @@ ] ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-05-31T15:15:09.588867653" + "timestamp": "2025-09-11T14:58:45.877214" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi": { "content": [ @@ -321,13 +321,13 @@ ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,ad4e3c17561ccfd75a5438895b687d60" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-06-05T12:13:33.834986869" + "timestamp": "2025-09-11T14:58:55.616644" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/view/tests/tags.yml b/modules/nf-core/bcftools/view/tests/tags.yml deleted file mode 100644 index 43b1f0a..0000000 --- a/modules/nf-core/bcftools/view/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bcftools/view: - - "modules/nf-core/bcftools/view/**" diff --git a/modules/nf-core/gunzip/environment.yml b/modules/nf-core/gunzip/environment.yml index c779485..9b926b1 100644 --- a/modules/nf-core/gunzip/environment.yml +++ b/modules/nf-core/gunzip/environment.yml @@ -1,7 +1,12 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: + - conda-forge::coreutils=9.5 - conda-forge::grep=3.11 + - conda-forge::gzip=1.13 + - conda-forge::lbzip2=2.5 - conda-forge::sed=4.8 - conda-forge::tar=1.34 diff --git a/modules/nf-core/gunzip/main.nf b/modules/nf-core/gunzip/main.nf index 5e67e3b..3ffc8e9 100644 --- a/modules/nf-core/gunzip/main.nf +++ b/modules/nf-core/gunzip/main.nf @@ -1,37 +1,37 @@ process GUNZIP { - tag "$archive" + tag "${archive}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:22.04' : - 'nf-core/ubuntu:22.04' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/52/52ccce28d2ab928ab862e25aae26314d69c8e38bd41ca9431c67ef05221348aa/data' + : 'community.wave.seqera.io/library/coreutils_grep_gzip_lbzip2_pruned:838ba80435a629f8'}" input: tuple val(meta), path(archive) output: - tuple val(meta), path("$gunzip"), emit: gunzip - path "versions.yml" , emit: versions + tuple val(meta), path("${gunzip}"), emit: gunzip + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def extension = ( archive.toString() - '.gz' ).tokenize('.')[-1] - def name = archive.toString() - '.gz' - ".$extension" - def prefix = task.ext.prefix ?: name - gunzip = prefix + ".$extension" + def args = task.ext.args ?: '' + def extension = (archive.toString() - '.gz').tokenize('.')[-1] + def name = archive.toString() - '.gz' - ".${extension}" + def prefix = task.ext.prefix ?: name + gunzip = prefix + ".${extension}" """ # Not calling gunzip itself because it creates files # with the original group ownership rather than the # default one for that user / the work directory gzip \\ -cd \\ - $args \\ - $archive \\ - > $gunzip + ${args} \\ + ${archive} \\ + > ${gunzip} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -40,13 +40,13 @@ process GUNZIP { """ stub: - def args = task.ext.args ?: '' - def extension = ( archive.toString() - '.gz' ).tokenize('.')[-1] - def name = archive.toString() - '.gz' - ".$extension" - def prefix = task.ext.prefix ?: name - gunzip = prefix + ".$extension" + def args = task.ext.args ?: '' + def extension = (archive.toString() - '.gz').tokenize('.')[-1] + def name = archive.toString() - '.gz' - ".${extension}" + def prefix = task.ext.prefix ?: name + gunzip = prefix + ".${extension}" """ - touch $gunzip + touch ${gunzip} cat <<-END_VERSIONS > versions.yml "${task.process}": gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//') diff --git a/modules/nf-core/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml index 9066c03..926bb22 100644 --- a/modules/nf-core/gunzip/meta.yml +++ b/modules/nf-core/gunzip/meta.yml @@ -21,21 +21,26 @@ input: type: file description: File to be compressed/uncompressed pattern: "*.*" + ontologies: [] output: - - gunzip: - - meta: + gunzip: + - - meta: type: file description: Compressed/uncompressed file pattern: "*.*" - - $gunzip: + ontologies: [] + - ${gunzip}: type: file description: Compressed/uncompressed file pattern: "*.*" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/gunzip/tests/main.nf.test.snap b/modules/nf-core/gunzip/tests/main.nf.test.snap index 069967e..a0f0e67 100644 --- a/modules/nf-core/gunzip/tests/main.nf.test.snap +++ b/modules/nf-core/gunzip/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" ], "gunzip": [ [ @@ -22,15 +22,15 @@ ] ], "versions": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-06-25T11:35:10.861293" + "timestamp": "2024-12-13T11:48:22.080222697" }, "Should run without failures - stub": { "content": [ @@ -44,7 +44,7 @@ ] ], "1": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" ], "gunzip": [ [ @@ -55,15 +55,15 @@ ] ], "versions": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-06-25T11:35:05.857145" + "timestamp": "2024-12-13T11:48:14.593020264" }, "Should run without failures": { "content": [ @@ -77,7 +77,7 @@ ] ], "1": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" ], "gunzip": [ [ @@ -88,15 +88,15 @@ ] ], "versions": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2023-10-17T15:35:37.690477896" + "timestamp": "2024-12-13T11:48:01.295397925" }, "Should run without failures - prefix": { "content": [ @@ -110,7 +110,7 @@ ] ], "1": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" ], "gunzip": [ [ @@ -121,14 +121,14 @@ ] ], "versions": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-06-25T11:33:32.921739" + "timestamp": "2024-12-13T11:48:07.414271387" } } \ No newline at end of file diff --git a/modules/nf-core/gunzip/tests/tags.yml b/modules/nf-core/gunzip/tests/tags.yml deleted file mode 100644 index fd3f691..0000000 --- a/modules/nf-core/gunzip/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -gunzip: - - modules/nf-core/gunzip/** diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index d02016a..009874d 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::multiqc=1.32 + - bioconda::multiqc=1.33 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 82f8979..3b0e975 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -3,8 +3,8 @@ process MULTIQC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c6c120d559d7ee04c7442b61ad7cf5a9e8970be5feefb37d68eeaa60c1034eb/data' : - 'community.wave.seqera.io/library/multiqc:1.32--d58f60e4deb769bf' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/34/34e733a9ae16a27e80fe00f863ea1479c96416017f24a907996126283e7ecd4d/data' : + 'community.wave.seqera.io/library/multiqc:1.33--ee7739d47738383b' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 3a8ce6b..d72d35b 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -6,14 +6,14 @@ [ "MULTIQC", "multiqc", - "1.32" + "1.33" ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, "timestamp": "2025-12-09T10:10:43.020315838" }, @@ -28,15 +28,15 @@ [ "MULTIQC", "multiqc", - "1.32" + "1.33" ] ] } ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, "timestamp": "2025-12-09T10:11:14.131950776" }, @@ -47,14 +47,14 @@ [ "MULTIQC", "multiqc", - "1.32" + "1.33" ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, "timestamp": "2025-12-09T10:11:07.15692209" } diff --git a/modules/nf-core/picard/liftovervcf/environment.yml b/modules/nf-core/picard/liftovervcf/environment.yml index fb68506..b4ac4fe 100644 --- a/modules/nf-core/picard/liftovervcf/environment.yml +++ b/modules/nf-core/picard/liftovervcf/environment.yml @@ -1,5 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::picard=3.3.0 \ No newline at end of file + # renovate: datasource=conda depName=bioconda/picard + - bioconda::picard=3.4.0 diff --git a/modules/nf-core/picard/liftovervcf/main.nf b/modules/nf-core/picard/liftovervcf/main.nf index 69feb62..b38f297 100644 --- a/modules/nf-core/picard/liftovervcf/main.nf +++ b/modules/nf-core/picard/liftovervcf/main.nf @@ -4,8 +4,8 @@ process PICARD_LIFTOVERVCF { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.3.0--hdfd78af_0' : - 'biocontainers/picard:3.3.0--hdfd78af_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/08/0861295baa7c01fc593a9da94e82b44a729dcaf8da92be8e565da109aa549b25/data' : + 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6' }" input: tuple val(meta), path(input_vcf) diff --git a/modules/nf-core/picard/liftovervcf/meta.yml b/modules/nf-core/picard/liftovervcf/meta.yml index 10fbfc8..79baa3c 100644 --- a/modules/nf-core/picard/liftovervcf/meta.yml +++ b/modules/nf-core/picard/liftovervcf/meta.yml @@ -21,6 +21,7 @@ input: type: file description: VCF file pattern: "*.{vcf,vcf.gz}" + ontologies: [] - - meta2: type: map description: | @@ -30,6 +31,7 @@ input: type: file description: dictionary for fasta file pattern: "*.{dict}" + ontologies: [] - - meta3: type: map description: | @@ -39,6 +41,7 @@ input: type: file description: fasta file pattern: "*.fasta" + ontologies: [] - - meta4: type: map description: | @@ -47,9 +50,10 @@ input: - chain: type: file description: The liftover chain file + ontologies: [] output: - - vcf_lifted: - - meta: + vcf_lifted: + - - meta: type: map description: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] @@ -57,8 +61,9 @@ output: type: file description: VCF file containing successfully lifted variants pattern: "*.{lifted.vcf.gz}" - - vcf_unlifted: - - meta: + ontologies: [] + vcf_unlifted: + - - meta: type: map description: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] @@ -66,11 +71,14 @@ output: type: file description: VCF file containing unsuccessfully lifted variants pattern: "*.{unlifted.vcf.gz}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@lucpen" - "@ramprasadn" diff --git a/modules/nf-core/picard/liftovervcf/tests/main.nf.test.snap b/modules/nf-core/picard/liftovervcf/tests/main.nf.test.snap index e88aa97..4a2185e 100644 --- a/modules/nf-core/picard/liftovervcf/tests/main.nf.test.snap +++ b/modules/nf-core/picard/liftovervcf/tests/main.nf.test.snap @@ -4,27 +4,27 @@ "test.lifted.vcf.gz", "test.unlifted.vcf.gz", [ - "versions.yml:md5,af33ca5d76aec86863614805fbb4fafb" + "versions.yml:md5,c7ca1d1d7479af5c94b33259bc383383" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T12:08:23.913395641" + "timestamp": "2025-09-15T10:53:49.795435027" }, "test-picard-liftovervcf": { "content": [ "VcfFile [chromosomes=[], sampleCount=1, variantCount=0, phased=true, phasedAutodetect=true]", "39a9de5185d94289283bd27cfcdeba97", [ - "versions.yml:md5,af33ca5d76aec86863614805fbb4fafb" + "versions.yml:md5,c7ca1d1d7479af5c94b33259bc383383" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T12:08:12.803193917" + "timestamp": "2025-09-15T10:53:40.572212144" } } \ No newline at end of file diff --git a/modules/nf-core/tabix/tabix/environment.yml b/modules/nf-core/tabix/tabix/environment.yml index 017c259..771b138 100644 --- a/modules/nf-core/tabix/tabix/environment.yml +++ b/modules/nf-core/tabix/tabix/environment.yml @@ -1,7 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.20 - - bioconda::tabix=1.11 + - bioconda::htslib=1.21 diff --git a/modules/nf-core/tabix/tabix/main.nf b/modules/nf-core/tabix/tabix/main.nf index 13acd67..602a82a 100644 --- a/modules/nf-core/tabix/tabix/main.nf +++ b/modules/nf-core/tabix/tabix/main.nf @@ -4,16 +4,15 @@ process TABIX_TABIX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/htslib:1.20--h5efdd21_2' : - 'biocontainers/htslib:1.20--h5efdd21_2' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/92/92859404d861ae01afb87e2b789aebc71c0ab546397af890c7df74e4ee22c8dd/data' : + 'community.wave.seqera.io/library/htslib:1.21--ff8e28a189fbecaa' }" input: tuple val(meta), path(tab) output: - tuple val(meta), path("*.tbi"), optional:true, emit: tbi - tuple val(meta), path("*.csi"), optional:true, emit: csi - path "versions.yml" , emit: versions + tuple val(meta), path("*.{tbi,csi}"), emit: index + tuple val("${task.process}"), val('tabix'), eval("tabix -h 2>&1 | grep -oP 'Version:\\s*\\K[^\\s]+'") , topic: versions , emit: versions_tabix when: task.ext.when == null || task.ext.when @@ -26,20 +25,12 @@ process TABIX_TABIX { $args \\ $tab - cat <<-END_VERSIONS > versions.yml - "${task.process}": - tabix: \$(echo \$(tabix -h 2>&1) | sed 's/^.*Version: //; s/ .*\$//') - END_VERSIONS """ - stub: + def args = task.ext.args ?: '' + def index = args.contains("-C ") || args.contains("--csi") ? "csi" : "tbi" """ touch ${tab}.tbi touch ${tab}.csi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - tabix: \$(echo \$(tabix -h 2>&1) | sed 's/^.*Version: //; s/ .*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/tabix/tabix/meta.yml b/modules/nf-core/tabix/tabix/meta.yml index 7864832..f5b6b3c 100644 --- a/modules/nf-core/tabix/tabix/meta.yml +++ b/modules/nf-core/tabix/tabix/meta.yml @@ -22,32 +22,42 @@ input: type: file description: TAB-delimited genome position file compressed with bgzip pattern: "*.{bed.gz,gff.gz,sam.gz,vcf.gz}" + ontologies: [] output: - - tbi: - - meta: + index: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - "*.tbi": + - "*.{tbi,csi}": type: file - description: tabix index file - pattern: "*.{tbi}" - - csi: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.csi": - type: file - description: coordinate sorted index file - pattern: "*.{csi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + description: Tabix index file (either tbi or csi) + pattern: "*.{tbi,csi}" + ontologies: [] + versions_tabix: + - - ${task.process}: + type: string + description: The process the versions were collected from + - tabix: + type: string + description: The tool name + - tabix -h 2>&1 | grep -oP 'Version:\s*\K[^\s]+': + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - tabix: + type: string + description: The tool name + - tabix -h 2>&1 | grep -oP 'Version:\s*\K[^\s]+': + type: eval + description: The expression to obtain the version of the tool + authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/tabix/tabix/tests/main.nf.test b/modules/nf-core/tabix/tabix/tests/main.nf.test index 102b0d7..19eefab 100644 --- a/modules/nf-core/tabix/tabix/tests/main.nf.test +++ b/modules/nf-core/tabix/tabix/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_process { name "Test Process TABIX_TABIX" - script "modules/nf-core/tabix/tabix/main.nf" + script "../main.nf" process "TABIX_TABIX" tag "modules" @@ -9,9 +9,13 @@ nextflow_process { tag "tabix" tag "tabix/tabix" + config "./nextflow.config" + test("sarscov2_bedgz_tbi") { - config "./tabix_bed.config" when { + params { + module_args = '-p bed' + } process { """ input[0] = [ @@ -25,17 +29,16 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot( - process.out, - file(process.out.tbi[0][1]).name - ).match() } + { assert snapshot(process.out).match() } ) } } test("sarscov2_gff_tbi") { - config "./tabix_gff.config" when { + params { + module_args = '-p gff' + } process { """ input[0] = [ @@ -49,17 +52,17 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot( - process.out, - file(process.out.tbi[0][1]).name).match() } + { assert snapshot(process.out).match() } ) } } test("sarscov2_vcf_tbi") { - config "./tabix_vcf_tbi.config" when { + params { + module_args = '-p vcf' + } process { """ input[0] = [ @@ -73,18 +76,17 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot( - process.out, - file(process.out.tbi[0][1]).name - ).match() } + { assert snapshot(process.out).match() } ) } } test("sarscov2_vcf_csi") { - config "./tabix_vcf_csi.config" when { + params { + module_args = '-p vcf --csi' + } process { """ input[0] = [ @@ -98,19 +100,18 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot( - process.out, - file(process.out.csi[0][1]).name - ).match() } + { assert snapshot(process.out).match() } ) } } test("sarscov2_vcf_csi_stub") { - config "./tabix_vcf_csi.config" options "-stub" when { + params { + module_args = '-p vcf --csi' + } process { """ input[0] = [ @@ -124,13 +125,9 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot( - process.out, - file(process.out.csi[0][1]).name - ).match() } + { assert snapshot(process.out).match() } ) } - } } diff --git a/modules/nf-core/tabix/tabix/tests/main.nf.test.snap b/modules/nf-core/tabix/tabix/tests/main.nf.test.snap index c2b9ed0..7e4c1ee 100644 --- a/modules/nf-core/tabix/tabix/tests/main.nf.test.snap +++ b/modules/nf-core/tabix/tabix/tests/main.nf.test.snap @@ -11,15 +11,13 @@ ] ], "1": [ - - ], - "2": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" - ], - "csi": [ - + [ + "TABIX_TABIX", + "tabix", + "1.21" + ] ], - "tbi": [ + "index": [ [ { "id": "tbi_gff" @@ -27,17 +25,20 @@ "genome.gff3.gz.tbi:md5,f79a67d95a98076e04fbe0455d825926" ] ], - "versions": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" + "versions_tabix": [ + [ + "TABIX_TABIX", + "tabix", + "1.21" + ] ] - }, - "genome.gff3.gz.tbi" + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.04.7" }, - "timestamp": "2024-07-19T12:06:25.653807564" + "timestamp": "2025-11-20T13:47:34.055936" }, "sarscov2_bedgz_tbi": { "content": [ @@ -51,15 +52,13 @@ ] ], "1": [ - - ], - "2": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" - ], - "csi": [ - + [ + "TABIX_TABIX", + "tabix", + "1.21" + ] ], - "tbi": [ + "index": [ [ { "id": "tbi_bed" @@ -67,17 +66,20 @@ "test.bed.gz.tbi:md5,9a761d51cc81835fd1199201fdbcdd5d" ] ], - "versions": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" + "versions_tabix": [ + [ + "TABIX_TABIX", + "tabix", + "1.21" + ] ] - }, - "test.bed.gz.tbi" + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.04.7" }, - "timestamp": "2024-07-19T12:06:09.754082161" + "timestamp": "2025-11-20T13:47:29.90469" }, "sarscov2_vcf_tbi": { "content": [ @@ -91,15 +93,13 @@ ] ], "1": [ - - ], - "2": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" - ], - "csi": [ - + [ + "TABIX_TABIX", + "tabix", + "1.21" + ] ], - "tbi": [ + "index": [ [ { "id": "tbi_vcf" @@ -107,17 +107,20 @@ "test.vcf.gz.tbi:md5,d22e5b84e4fcd18792179f72e6da702e" ] ], - "versions": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" + "versions_tabix": [ + [ + "TABIX_TABIX", + "tabix", + "1.21" + ] ] - }, - "test.vcf.gz.tbi" + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.04.7" }, - "timestamp": "2024-07-19T12:06:40.042648294" + "timestamp": "2025-11-20T13:47:38.044307" }, "sarscov2_vcf_csi_stub": { "content": [ @@ -127,55 +130,49 @@ { "id": "vcf_csi_stub" }, - "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + [ + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] ], "1": [ [ - { - "id": "vcf_csi_stub" - }, - "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "TABIX_TABIX", + "tabix", + "1.21" ] ], - "2": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" - ], - "csi": [ + "index": [ [ { "id": "vcf_csi_stub" }, - "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + [ + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] ], - "tbi": [ + "versions_tabix": [ [ - { - "id": "vcf_csi_stub" - }, - "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "TABIX_TABIX", + "tabix", + "1.21" ] - ], - "versions": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" ] - }, - "test.vcf.gz.csi" + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.04.7" }, - "timestamp": "2024-07-19T12:07:08.700367261" + "timestamp": "2025-11-20T13:47:46.12436" }, "sarscov2_vcf_csi": { "content": [ { "0": [ - - ], - "1": [ [ { "id": "vcf_csi" @@ -183,10 +180,14 @@ "test.vcf.gz.csi:md5,04b41c1efd9ab3c6b1e008a286e27d2b" ] ], - "2": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" + "1": [ + [ + "TABIX_TABIX", + "tabix", + "1.21" + ] ], - "csi": [ + "index": [ [ { "id": "vcf_csi" @@ -194,19 +195,19 @@ "test.vcf.gz.csi:md5,04b41c1efd9ab3c6b1e008a286e27d2b" ] ], - "tbi": [ - - ], - "versions": [ - "versions.yml:md5,07064637fb8a217174052be8e40234e2" + "versions_tabix": [ + [ + "TABIX_TABIX", + "tabix", + "1.21" + ] ] - }, - "test.vcf.gz.csi" + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.04.7" }, - "timestamp": "2024-07-19T12:06:55.362067748" + "timestamp": "2025-11-20T13:47:42.013054" } } \ No newline at end of file diff --git a/modules/nf-core/tabix/tabix/tests/tabix_bed.config b/modules/nf-core/tabix/tabix/tests/tabix_bed.config deleted file mode 100644 index 7ff0590..0000000 --- a/modules/nf-core/tabix/tabix/tests/tabix_bed.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: TABIX_TABIX { - ext.args = '-p bed' - } -} \ No newline at end of file diff --git a/modules/nf-core/tabix/tabix/tests/tabix_gff.config b/modules/nf-core/tabix/tabix/tests/tabix_gff.config deleted file mode 100644 index 20c0a1e..0000000 --- a/modules/nf-core/tabix/tabix/tests/tabix_gff.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: TABIX_TABIX { - ext.args = '-p gff' - } -} \ No newline at end of file diff --git a/modules/nf-core/tabix/tabix/tests/tabix_vcf_csi.config b/modules/nf-core/tabix/tabix/tests/tabix_vcf_csi.config deleted file mode 100644 index eb4f2d7..0000000 --- a/modules/nf-core/tabix/tabix/tests/tabix_vcf_csi.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: TABIX_TABIX { - ext.args = '-p vcf --csi' - } -} diff --git a/modules/nf-core/tabix/tabix/tests/tabix_vcf_tbi.config b/modules/nf-core/tabix/tabix/tests/tabix_vcf_tbi.config deleted file mode 100644 index 2774c8a..0000000 --- a/modules/nf-core/tabix/tabix/tests/tabix_vcf_tbi.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: TABIX_TABIX { - ext.args = '-p vcf' - } -} \ No newline at end of file diff --git a/modules/nf-core/tabix/tabix/tests/tags.yml b/modules/nf-core/tabix/tabix/tests/tags.yml deleted file mode 100644 index 6eda065..0000000 --- a/modules/nf-core/tabix/tabix/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -tabix/tabix: - - "modules/nf-core/tabix/tabix/**" diff --git a/modules/nf-core/untar/environment.yml b/modules/nf-core/untar/environment.yml index ae4fa45..9b926b1 100644 --- a/modules/nf-core/untar/environment.yml +++ b/modules/nf-core/untar/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/untar/meta.yml b/modules/nf-core/untar/meta.yml index 3a37bb3..1603e38 100644 --- a/modules/nf-core/untar/meta.yml +++ b/modules/nf-core/untar/meta.yml @@ -1,5 +1,5 @@ name: untar -description: Extract files. +description: Extract files from tar, tar.gz, tar.bz2, tar.xz archives keywords: - untar - uncompress @@ -7,7 +7,7 @@ keywords: tools: - untar: description: | - Extract tar.gz files. + Extract tar, tar.gz, tar.bz2, tar.xz files. documentation: https://www.gnu.org/software/tar/manual/ licence: ["GPL-3.0-or-later"] identifier: "" @@ -19,11 +19,14 @@ input: e.g. [ id:'test', single_end:false ] - archive: type: file - description: File to be untar - pattern: "*.{tar}.{gz}" + description: File to be untarred + pattern: "*.{tar,tar.gz,tar.bz2,tar.xz}" + ontologies: + - edam: http://edamontology.org/format_3981 # TAR format + - edam: http://edamontology.org/format_3989 # GZIP format output: - - untar: - - meta: + untar: + - - meta: type: map description: | Groovy Map containing sample information @@ -35,11 +38,13 @@ output: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] pattern: "*/" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/untar/tests/tags.yml b/modules/nf-core/untar/tests/tags.yml deleted file mode 100644 index feb6f15..0000000 --- a/modules/nf-core/untar/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -untar: - - modules/nf-core/untar/** diff --git a/modules/nf-core/vcf2maf/environment.yml b/modules/nf-core/vcf2maf/environment.yml index b5b73f4..4e617a0 100644 --- a/modules/nf-core/vcf2maf/environment.yml +++ b/modules/nf-core/vcf2maf/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/vcf2maf/meta.yml b/modules/nf-core/vcf2maf/meta.yml index e5ce083..a1a0512 100644 --- a/modules/nf-core/vcf2maf/meta.yml +++ b/modules/nf-core/vcf2maf/meta.yml @@ -24,17 +24,20 @@ input: type: file description: | vcf to convert to MAF format. Must be uncompressed. - - - fasta: - type: file - description: | - Path to reference genome fasta file. - - - vep_cache: - type: file - description: | - Path to VEP cache dir. Required for correct running of VEP. + ontologies: [] + - fasta: + type: file + description: | + Path to reference genome fasta file. + ontologies: [] + - vep_cache: + type: file + description: | + Path to VEP cache dir. Required for correct running of VEP. + ontologies: [] output: - - maf: - - meta: + maf: + - - meta: type: map description: | Groovy Map containing sample information @@ -43,11 +46,14 @@ output: type: file description: MAF file produced from VCF pattern: "*.maf" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@adamrtalbot" maintainers: diff --git a/modules/nf-core/vcf2maf/vcf2maf.diff b/modules/nf-core/vcf2maf/vcf2maf.diff deleted file mode 100644 index 8442adc..0000000 --- a/modules/nf-core/vcf2maf/vcf2maf.diff +++ /dev/null @@ -1,51 +0,0 @@ -Changes in module 'nf-core/vcf2maf' ---- modules/nf-core/vcf2maf/environment.yml -+++ modules/nf-core/vcf2maf/environment.yml -@@ -5,4 +5,4 @@ - - defaults - dependencies: - - bioconda::vcf2maf=1.6.21 -- - bioconda::ensembl-vep=106.1 -+ - bioconda::ensembl-vep=108.2 - ---- modules/nf-core/vcf2maf/main.nf -+++ modules/nf-core/vcf2maf/main.nf -@@ -6,12 +6,13 @@ - // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/mulled-v2-b6fc09bed47d0dc4d8384ce9e04af5806f2cc91b:305092c6f8420acd17377d2cc8b96e1c3ccb7d26-0': -- 'biocontainers/mulled-v2-b6fc09bed47d0dc4d8384ce9e04af5806f2cc91b:305092c6f8420acd17377d2cc8b96e1c3ccb7d26-0' }" -+ 'https://depot.galaxyproject.org/singularity/mulled-v2-b1882a8fe50273c1485ae9ededaf10b625862cc1:2e14951bfa86df1bc30bb0dc1a0a3ec5fbaa5fd2-0': -+ 'biocontainers/mulled-v2-b1882a8fe50273c1485ae9ededaf10b625862cc1:2e14951bfa86df1bc30bb0dc1a0a3ec5fbaa5fd2-0' }" - - input: - tuple val(meta), path(vcf) // Use an uncompressed VCF file! - path fasta // Required -+ val genome // Required - path vep_cache // Required for VEP running. A default of /.vep is supplied. - - output: -@@ -25,9 +26,11 @@ - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def vep_cache_cmd = vep_cache ? "--vep-data $vep_cache" : "" -+ def genome_build = genome ? "--ncbi-build $genome" : "" -+ - // If VEP is present, it will find it and add it to commands. - // If VEP is not present they will be blank -- def VERSION = '1.6.21' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. -+ def VERSION = '1.6.21.20230511' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - """ - if command -v vep &> /dev/null - then -@@ -42,6 +45,7 @@ - $args \\ - \$VEP_CMD \\ - $vep_cache_cmd \\ -+ $genome_build \\ - --ref-fasta $fasta \\ - --input-vcf $vcf \\ - --output-maf ${prefix}.maf - -************************************************************ diff --git a/nextflow.config b/nextflow.config index 8ab40c0..de4bd92 100644 --- a/nextflow.config +++ b/nextflow.config @@ -10,24 +10,24 @@ params { // Input options - liftover_chain = null - input = null - intervals = null - vep_cache = null - run_vep = false - filter = false + liftover_chain = null + input = null + intervals = null + vep_cache = null + run_vep = false + filter = false // References - genome = null - igenomes_base = 's3://ngi-igenomes/igenomes/' - igenomes_ignore = false + genome = null + igenomes_base = 's3://ngi-igenomes/igenomes/' + igenomes_ignore = false // MultiQC options - multiqc_config = null - multiqc_title = null - multiqc_logo = null - max_multiqc_email_size = '25.MB' - multiqc_methods_description = null + multiqc_config = null + multiqc_title = null + multiqc_logo = null + max_multiqc_email_size = '25.MB' + multiqc_methods_description = null // Boilerplate options outdir = null @@ -42,20 +42,19 @@ params { show_hidden = false version = false pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/' - trace_report_suffix = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') + trace_report_suffix = new java.util.Date().format('yyyy-MM-dd_HH-mm-ss') // Config options - config_profile_name = null - config_profile_description = null + config_profile_name = null + config_profile_description = null - custom_config_version = 'master' - custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" - config_profile_contact = null - config_profile_url = null + custom_config_version = 'master' + custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" + config_profile_contact = null + config_profile_url = null // Schema validation default options - validate_params = true - + validate_params = true } // Load base.config by default for all pipelines @@ -63,40 +62,40 @@ includeConfig 'conf/base.config' profiles { debug { - dumpHashes = true - process.beforeScript = 'echo $HOSTNAME' - cleanup = false + dumpHashes = true + process.beforeScript = 'echo $HOSTNAME' + cleanup = false nextflow.enable.configProcessNamesValidation = true } conda { - conda.enabled = true - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - conda.channels = ['conda-forge', 'bioconda'] - apptainer.enabled = false + conda.enabled = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + conda.channels = ['conda-forge', 'bioconda'] + apptainer.enabled = false } mamba { - conda.enabled = true - conda.useMamba = true - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + conda.enabled = true + conda.useMamba = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } docker { - docker.enabled = true - conda.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false - docker.runOptions = '-u $(id -u):$(id -g)' + docker.enabled = true + conda.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false + docker.runOptions = '-u $(id -u):$(id -g)' } arm64 { process.arch = 'arm64' @@ -110,54 +109,54 @@ profiles { wave.strategy = 'conda,container' } emulate_amd64 { - docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' + docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' } singularity { - singularity.enabled = true - singularity.autoMounts = true - conda.enabled = false - docker.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + singularity.enabled = true + singularity.autoMounts = true + conda.enabled = false + docker.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } podman { - podman.enabled = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + podman.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } shifter { - shifter.enabled = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - podman.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + shifter.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } charliecloud { - charliecloud.enabled = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - apptainer.enabled = false + charliecloud.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + apptainer.enabled = false } apptainer { - apptainer.enabled = true - apptainer.autoMounts = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false + apptainer.enabled = true + apptainer.autoMounts = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false } wave { apptainer.ociAutoPull = true @@ -167,20 +166,22 @@ profiles { wave.strategy = 'conda,container' } gpu { - docker.runOptions = '-u $(id -u):$(id -g) --gpus all' - apptainer.runOptions = '--nv' - singularity.runOptions = '--nv' + docker.runOptions = '-u $(id -u):$(id -g) --gpus all' + apptainer.runOptions = '--nv' + singularity.runOptions = '--nv' + } + test { + includeConfig 'conf/test.config' } - test { includeConfig 'conf/test.config' } } // Set default registry for Apptainer, Docker, Podman, Charliecloud and Singularity independent of -profile // Will not be used unless Apptainer / Docker / Podman / Charliecloud / Singularity are enabled // Set to your registry if you have a mirror of containers -apptainer.registry = 'quay.io' -docker.registry = 'quay.io' -podman.registry = 'quay.io' -singularity.registry = 'quay.io' +apptainer.registry = 'quay.io' +docker.registry = 'quay.io' +podman.registry = 'quay.io' +singularity.registry = 'quay.io' charliecloud.registry = 'quay.io' // Load nf-core custom profiles from different institutions │ @@ -202,11 +203,11 @@ env { // Set bash options process.shell = [ "bash", - "-C", // No clobber - prevent output redirection from overwriting files. - "-e", // Exit if a tool returns a non-zero status/exit code - "-u", // Treat unset variables and parameters as an error - "-o", // Returns the status of the last command to exit.. - "pipefail" // ..with a non-zero status or zero if all successfully execute + "-C", + "-e", + "-u", + "-o", + "pipefail", ] // Disable process selector warnings by default. Use debug profile to enable warnings. @@ -238,7 +239,7 @@ manifest { email: '', github: '@SusiJo', contribution: ['author'], - orcid: '0009-0001-9152-7291' + orcid: '0009-0001-9152-7291', ], [ name: 'Friederike Hanssen', @@ -246,7 +247,7 @@ manifest { email: '', github: '@FriederikeHanssen', contribution: ['author'], - orcid: '0009-0001-9875-5262' + orcid: '0009-0001-9875-5262', ], [ name: 'Famke Bäuerle', @@ -254,8 +255,8 @@ manifest { email: 'famke.baeuerle@uni-tuebingen.de', github: '@famosab', contribution: ['maintainer'], - orcid: '0000-0003-1387-0251' - ] + orcid: '0000-0003-1387-0251', + ], ] homePage = 'https://github.com/qbic-pipelines/vcftomaf' description = """Convert vcf files to maf format""" @@ -268,16 +269,16 @@ manifest { // Nextflow plugins plugins { - id 'nf-schema@2.5.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet + id 'nf-schema@2.5.1' } validation { defaultIgnoreParams = ["genomes"] - monochromeLogs = params.monochrome_logs + monochromeLogs = params.monochrome_logs help { - enabled = true - command = "nextflow run qbic-pipelines/vcftomaf -profile --input samplesheet.csv --outdir " - fullParameter = "help_full" + enabled = true + command = "nextflow run qbic-pipelines/vcftomaf -profile --input samplesheet.csv --outdir " + fullParameter = "help_full" showHiddenParameter = "show_hidden" } } diff --git a/subworkflows/local/utils_nfcore_vcftomaf_pipeline/main.nf b/subworkflows/local/utils_nfcore_vcftomaf_pipeline/main.nf index def884d..922bcad 100644 --- a/subworkflows/local/utils_nfcore_vcftomaf_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_vcftomaf_pipeline/main.nf @@ -8,15 +8,15 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { UTILS_NFSCHEMA_PLUGIN } from '../../nf-core/utils_nfschema_plugin' -include { paramsSummaryMap } from 'plugin/nf-schema' -include { samplesheetToList } from 'plugin/nf-schema' -include { paramsHelp } from 'plugin/nf-schema' -include { completionEmail } from '../../nf-core/utils_nfcore_pipeline' -include { completionSummary } from '../../nf-core/utils_nfcore_pipeline' -include { imNotification } from '../../nf-core/utils_nfcore_pipeline' -include { UTILS_NFCORE_PIPELINE } from '../../nf-core/utils_nfcore_pipeline' -include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' +include { UTILS_NFSCHEMA_PLUGIN } from '../../nf-core/utils_nfschema_plugin' +include { paramsSummaryMap } from 'plugin/nf-schema' +include { samplesheetToList } from 'plugin/nf-schema' +include { paramsHelp } from 'plugin/nf-schema' +include { completionEmail } from '../../nf-core/utils_nfcore_pipeline' +include { completionSummary } from '../../nf-core/utils_nfcore_pipeline' +include { imNotification } from '../../nf-core/utils_nfcore_pipeline' +include { UTILS_NFCORE_PIPELINE } from '../../nf-core/utils_nfcore_pipeline' +include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -25,7 +25,6 @@ include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipelin */ workflow PIPELINE_INITIALISATION { - take: version // boolean: Display version and exit validate_params // boolean: Boolean whether to validate parameters against the schema at runtime @@ -44,11 +43,11 @@ workflow PIPELINE_INITIALISATION { // // Print version and exit if required and dump pipeline parameters to JSON file // - UTILS_NEXTFLOW_PIPELINE ( + UTILS_NEXTFLOW_PIPELINE( version, true, outdir, - workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1 + workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1, ) // @@ -56,7 +55,7 @@ workflow PIPELINE_INITIALISATION { // command = "nextflow run ${workflow.manifest.name} -profile --input samplesheet.csv --outdir " - UTILS_NFSCHEMA_PLUGIN ( + UTILS_NFSCHEMA_PLUGIN( workflow, validate_params, null, @@ -65,13 +64,13 @@ workflow PIPELINE_INITIALISATION { show_hidden, "", "", - command + command, ) // // Check config provided to the pipeline // - UTILS_NFCORE_PIPELINE ( + UTILS_NFCORE_PIPELINE( nextflow_cli_args ) @@ -83,22 +82,22 @@ workflow PIPELINE_INITIALISATION { // // Create channel from input file provided through params.input // - ch_samplesheet = Channel - .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) - .map{ meta, normal_id, tumor_id, vcf_normal_id, vcf_tumor_id, vcf, index -> + ch_samplesheet = Channel.fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) + .map { meta, normal_id, tumor_id, vcf_normal_id, vcf_tumor_id, vcf, index -> - meta.index = index ? true : false + meta.index = index ? true : false if (normal_id) { - meta.normal_id = normal_id - meta.vcf_normal_id = vcf_normal_id + meta.normal_id = normal_id + meta.vcf_normal_id = vcf_normal_id } if (tumor_id) { - meta.tumor_id = tumor_id - meta.vcf_tumor_id = vcf_tumor_id + meta.tumor_id = tumor_id + meta.vcf_tumor_id = vcf_tumor_id } - return [meta, vcf, index] // it[0], it[1], it[2] + return [meta, vcf, index] } + emit: samplesheet = ch_samplesheet versions = ch_versions @@ -111,7 +110,6 @@ workflow PIPELINE_INITIALISATION { */ workflow PIPELINE_COMPLETION { - take: email // string: email address email_on_fail // string: email address sent on pipeline failure @@ -148,7 +146,7 @@ workflow PIPELINE_COMPLETION { } workflow.onError { - log.error "Pipeline failed. Please refer to troubleshooting docs: https://nf-co.re/docs/usage/troubleshooting" + log.error("Pipeline failed. Please refer to troubleshooting docs: https://nf-co.re/docs/usage/troubleshooting") } } @@ -171,20 +169,20 @@ def validateInputSamplesheet(input) { def (metas, fastqs) = input[1..2] // Check that multiple runs of the same sample are of the same datatype i.e. single-end / paired-end - def endedness_ok = metas.collect{ meta -> meta.single_end }.unique().size == 1 + def endedness_ok = metas.collect { meta -> meta.single_end }.unique().size == 1 if (!endedness_ok) { error("Please check input samplesheet -> Multiple runs of a sample must be of the same datatype i.e. single-end or paired-end: ${metas[0].id}") } - return [ metas[0], fastqs ] + return [metas[0], fastqs] } // // Get attribute from genome config file e.g. fasta // def getGenomeAttribute(attribute) { if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { - if (params.genomes[ params.genome ].containsKey(attribute)) { - return params.genomes[ params.genome ][ attribute ] + if (params.genomes[params.genome].containsKey(attribute)) { + return params.genomes[params.genome][attribute] } } return null @@ -195,11 +193,7 @@ def getGenomeAttribute(attribute) { // def genomeExistsError() { if (params.genomes && params.genome && !params.genomes.containsKey(params.genome)) { - def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " Genome '${params.genome}' not found in any config files provided to the pipeline.\n" + - " Currently, the available genome keys are:\n" + - " ${params.genomes.keySet().join(", ")}\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + " Genome '${params.genome}' not found in any config files provided to the pipeline.\n" + " Currently, the available genome keys are:\n" + " ${params.genomes.keySet().join(", ")}\n" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" error(error_string) } } @@ -211,10 +205,10 @@ def toolCitationText() { // Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "Tool (Foo et al. 2023)" : "", // Uncomment function in methodsDescriptionText to render in MultiQC report def citation_text = [ - "Tools used in the workflow included:", - "MultiQC (Ewels et al. 2016)", - "." - ].join(' ').trim() + "Tools used in the workflow included:", + "MultiQC (Ewels et al. 2016)", + ".", + ].join(' ').trim() return citation_text } @@ -224,8 +218,8 @@ def toolBibliographyText() { // Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "
  • Author (2023) Pub name, Journal, DOI
  • " : "", // Uncomment function in methodsDescriptionText to render in MultiQC report def reference_text = [ - "
  • Ewels, P., Magnusson, M., Lundin, S., & Käller, M. (2016). MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics , 32(19), 3047–3048. doi: /10.1093/bioinformatics/btw354
  • " - ].join(' ').trim() + "
  • Ewels, P., Magnusson, M., Lundin, S., & Käller, M. (2016). MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics , 32(19), 3047–3048. doi: /10.1093/bioinformatics/btw354
  • " + ].join(' ').trim() return reference_text } @@ -247,7 +241,10 @@ def methodsDescriptionText(mqc_methods_yaml) { temp_doi_ref += "(doi: ${doi_ref.replace("https://doi.org/", "").replace(" ", "")}), " } meta["doi_text"] = temp_doi_ref.substring(0, temp_doi_ref.length() - 2) - } else meta["doi_text"] = "" + } + else { + meta["doi_text"] = "" + } meta["nodoi_text"] = meta.manifest_map.doi ? "" : "
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " // Tool references @@ -261,7 +258,7 @@ def methodsDescriptionText(mqc_methods_yaml) { def methods_text = mqc_methods_yaml.text - def engine = new groovy.text.SimpleTemplateEngine() + def engine = new groovy.text.SimpleTemplateEngine() def description_html = engine.createTemplate(methods_text).make(meta) return description_html.toString() diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 1ce02bc..56b8d6a 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -4,13 +4,13 @@ 8, { "BCFTOOLS_VIEW": { - "bcftools": 1.2 + "bcftools": 1.22 }, "GUNZIP": { - "gunzip": 1.1 + "gunzip": 1.13 }, "TABIX_TABIX": { - "tabix": 1.2 + "tabix": 1.21 }, "VCF2MAF": { "vcf2maf": "1.6.22" @@ -51,8 +51,8 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "25.04.6" }, - "timestamp": "2025-05-06T14:41:18.473188" + "timestamp": "2025-12-10T13:25:39.05212212" } } \ No newline at end of file diff --git a/tests/vep.nf.test.snap b/tests/vep.nf.test.snap index 3fcee3d..fd280ab 100644 --- a/tests/vep.nf.test.snap +++ b/tests/vep.nf.test.snap @@ -4,13 +4,13 @@ 9, { "BCFTOOLS_VIEW": { - "bcftools": 1.2 + "bcftools": 1.22 }, "GUNZIP": { - "gunzip": 1.1 + "gunzip": 1.13 }, "TABIX_TABIX": { - "tabix": 1.2 + "tabix": 1.21 }, "UNTAR": { "untar": 1.34 @@ -55,8 +55,8 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "25.04.6" }, - "timestamp": "2025-05-06T14:40:45.144536" + "timestamp": "2025-12-10T13:28:44.643003247" } } \ No newline at end of file diff --git a/workflows/vcftomaf/main.nf b/workflows/vcftomaf/main.nf index f5536a9..8a1c65b 100644 --- a/workflows/vcftomaf/main.nf +++ b/workflows/vcftomaf/main.nf @@ -7,17 +7,17 @@ // // MODULE: Installed directly from nf-core/modules // -include { BCFTOOLS_VIEW } from '../../modules/nf-core/bcftools/view/main' -include { GUNZIP } from '../../modules/nf-core/gunzip/main' -include { MULTIQC } from '../../modules/nf-core/multiqc/main' -include { PICARD_LIFTOVERVCF } from '../../modules/nf-core/picard/liftovervcf/main' -include { TABIX_TABIX } from '../../modules/nf-core/tabix/tabix/main' -include { UNTAR } from '../../modules/nf-core/untar/main' -include { VCF2MAF } from '../../modules/nf-core/vcf2maf/main' -include { paramsSummaryMap } from 'plugin/nf-schema' -include { paramsSummaryMultiqc } from '../../subworkflows/nf-core/utils_nfcore_pipeline' -include { softwareVersionsToYAML } from '../../subworkflows/nf-core/utils_nfcore_pipeline' -include { methodsDescriptionText } from '../../subworkflows/local/utils_nfcore_vcftomaf_pipeline' +include { BCFTOOLS_VIEW } from '../../modules/nf-core/bcftools/view/main' +include { GUNZIP } from '../../modules/nf-core/gunzip/main' +include { MULTIQC } from '../../modules/nf-core/multiqc/main' +include { PICARD_LIFTOVERVCF } from '../../modules/nf-core/picard/liftovervcf/main' +include { TABIX_TABIX } from '../../modules/nf-core/tabix/tabix/main' +include { UNTAR } from '../../modules/nf-core/untar/main' +include { VCF2MAF } from '../../modules/nf-core/vcf2maf/main' +include { paramsSummaryMap } from 'plugin/nf-schema' +include { paramsSummaryMultiqc } from '../../subworkflows/nf-core/utils_nfcore_pipeline' +include { softwareVersionsToYAML } from '../../subworkflows/nf-core/utils_nfcore_pipeline' +include { methodsDescriptionText } from '../../subworkflows/local/utils_nfcore_vcftomaf_pipeline' /* @@ -27,19 +27,16 @@ include { methodsDescriptionText } from '../../subworkflows/local/utils_nfc */ workflow VCFTOMAF { - take: - ch_samplesheet // channel: samplesheet read in from --input + ch_samplesheet // channel: samplesheet read in from --input intervals fasta dict liftover_chain - genome vep_cache vep_cache_unpacked main: - ch_versions = channel.empty() ch_multiqc_files = channel.empty() @@ -47,34 +44,29 @@ workflow VCFTOMAF { // SUBWORKFLOW: Read in samplesheet, validate and stage input files // - if (params.vep_cache){ - ch_vep_cache = vep_cache.map{ - it -> def new_id = "" - if(it) { - new_id = it[0].simpleName.toString() - } - [[id:new_id], it] - } + if (params.vep_cache) { + ch_vep_cache = vep_cache.map { it -> [[id: it[0].simpleName.toString()], it] } // UNTAR if available - vep_cache_unpacked = UNTAR(ch_vep_cache).untar.map { it[1] } - ch_versions = ch_versions.mix(UNTAR.out.versions) + vep_cache_unpacked = UNTAR(ch_vep_cache).untar.map { unpacked -> unpacked[1] } + ch_versions = ch_versions.mix(UNTAR.out.versions) } // BRANCH CHANNEL - ch_samplesheet.branch{ - is_indexed: it[0].index == true - to_index: it[0].index == false - }.set{ch_input} + ch_samplesheet + .branch { it -> + is_indexed: it[0].index == true + to_index: it[0].index == false + } + .set { ch_input } // Remove empty index [] from channel = it[2] - input_to_index = ch_input.to_index.map{ it -> [it[0], it[1]] } + input_to_index = ch_input.to_index.map { it -> [it[0], it[1]] } // Create tbi index only if not provided TABIX_TABIX(input_to_index) - ch_versions = ch_versions.mix(TABIX_TABIX.out.versions.first()) // Join tbi index back to input - ch_indexed_to_index = input_to_index.join(TABIX_TABIX.out.tbi) + ch_indexed_to_index = input_to_index.join(TABIX_TABIX.out.index) // Join both channels back together ch_vcf = ch_input.is_indexed.mix(ch_indexed_to_index) @@ -82,23 +74,25 @@ workflow VCFTOMAF { // // MODULE: Run PASS + BED filtering // - BCFTOOLS_VIEW ( + BCFTOOLS_VIEW( ch_vcf, intervals, - [], // targets - [] // samples + [], + [], ) ch_versions = ch_versions.mix(BCFTOOLS_VIEW.out.versions.first()) ch_gunzip = BCFTOOLS_VIEW.out.vcf - if(params.liftover_chain){ + if (params.liftover_chain) { - PICARD_LIFTOVERVCF(BCFTOOLS_VIEW.out.vcf, - dict.map{ it -> [ [ id:it.baseName ], it ] }, - fasta.map{ it -> [ [ id:it.baseName ], it ] }, - liftover_chain.map{ it -> [ [ id:it.baseName ], it ] }) + PICARD_LIFTOVERVCF( + BCFTOOLS_VIEW.out.vcf, + dict.map { it -> [[id: it.baseName], it] }, + fasta.map { it -> [[id: it.baseName], it] }, + liftover_chain.map { it -> [[id: it.baseName], it] }, + ) ch_gunzip = PICARD_LIFTOVERVCF.out.vcf_lifted ch_versions = ch_versions.mix(PICARD_LIFTOVERVCF.out.versions.first()) } @@ -113,7 +107,7 @@ workflow VCFTOMAF { VCF2MAF( GUNZIP.out.gunzip, fasta, - vep_cache_unpacked + vep_cache_unpacked, ) ch_versions = ch_versions.mix(VCF2MAF.out.versions.first()) @@ -121,7 +115,8 @@ workflow VCFTOMAF { // // Collate and save software versions // - def topic_versions = channel.topic("versions") + def topic_versions = channel + .topic("versions") .distinct() .branch { entry -> versions_file: entry instanceof Path @@ -151,33 +146,27 @@ workflow VCFTOMAF { // // MODULE: MultiQC // - ch_multiqc_config = channel.fromPath("$projectDir/assets/multiqc_config.yml", checkIfExists: true) - ch_multiqc_custom_config = params.multiqc_config ? channel.fromPath(params.multiqc_config, checkIfExists: true) : channel.empty() - ch_multiqc_logo = params.multiqc_logo ? channel.fromPath(params.multiqc_logo, checkIfExists: true) : channel.empty() - summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") - ch_workflow_summary = channel.value(paramsSummaryMultiqc(summary_params)) - ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) - ch_methods_description = channel.value(methodsDescriptionText(ch_multiqc_custom_methods_description)) - ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) - ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) - ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml', sort: false)) - - MULTIQC ( + ch_multiqc_config = channel.fromPath("${projectDir}/assets/multiqc_config.yml", checkIfExists: true) + ch_multiqc_custom_config = params.multiqc_config ? channel.fromPath(params.multiqc_config, checkIfExists: true) : channel.empty() + ch_multiqc_logo = params.multiqc_logo ? channel.fromPath(params.multiqc_logo, checkIfExists: true) : channel.empty() + summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + ch_workflow_summary = channel.value(paramsSummaryMultiqc(summary_params)) + ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("${projectDir}/assets/methods_description_template.yml", checkIfExists: true) + ch_methods_description = channel.value(methodsDescriptionText(ch_multiqc_custom_methods_description)) + ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) + ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml', sort: false)) + + MULTIQC( ch_multiqc_files.collect(), ch_multiqc_config.toList(), ch_multiqc_custom_config.toList(), ch_multiqc_logo.toList(), [], - [] + [], ) emit: multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html - versions = ch_versions // channel: [ path(versions.yml) ] + versions = ch_versions // channel: [ path(versions.yml) ] } - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - THE END -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/