diff --git a/conf/modules/align_MT.config b/conf/modules/align_MT.config index e88f7e88..5ffec1c0 100644 --- a/conf/modules/align_MT.config +++ b/conf/modules/align_MT.config @@ -21,7 +21,7 @@ process { withName: '.*ALIGN_MT:BWAMEM2_MEM_MT' { ext.args = { "-M -K 100000000 -R ${meta.read_group}" } ext.when = { !(params.analysis_type.equals("wes")) } - ext.prefix = { "${meta.id}.sorted" } + ext.prefix = { "${meta.id}_sorted" } } } @@ -29,7 +29,7 @@ process { withName: '.*ALIGN_MT:BWA_MEM_MT' { ext.args = { "-M -K 100000000 -R ${meta.read_group}" } ext.when = { !(params.analysis_type.equals("wes")) } - ext.prefix = { "${meta.id}.sorted" } + ext.prefix = { "${meta.id}_sorted" } } } @@ -37,13 +37,13 @@ process { withName: '.*ALIGN_MT:SENTIEON_BWAMEM_MT' { ext.args = { "-M -K 10000000 -R ${meta.read_group}" } ext.when = { !(params.analysis_type.equals("wes"))} - ext.prefix = { "${meta.id}.sorted" } + ext.prefix = { "${meta.id}_sorted" } } } withName: '.*ALIGN_MT:GATK4_MERGEBAMALIGNMENT_MT' { ext.args = '--TMP_DIR . --CREATE_INDEX true --MAX_GAPS -1 --SORT_ORDER queryname --INCLUDE_SECONDARY_ALIGNMENTS false --PAIRED_RUN false --VALIDATION_STRINGENCY LENIENT' - ext.prefix = { "${meta.id}_merged" } + ext.prefix = { "${meta.id}_sorted_merged" } } withName: '.*ALIGN_MT:PICARD_ADDORREPLACEREADGROUPS_MT' { @@ -59,11 +59,11 @@ process { withName: '.*ALIGN_MT:PICARD_MARKDUPLICATES_MT' { ext.args = '--TMP_DIR . --VALIDATION_STRINGENCY LENIENT --CREATE_INDEX true' - ext.prefix = { "${meta.id}_markduplicates" } + ext.prefix = { "${meta.id}_sorted_merged_md" } } withName: '.*ALIGN_MT:SAMTOOLS_SORT_MT' { - ext.prefix = { "${meta.id}_sorted" } + ext.prefix = { "${meta.id}_sorted_merged_md_sorted" } } } @@ -78,7 +78,7 @@ process { withName: '.*ALIGN_MT_SHIFT:BWAMEM2_MEM_MT' { ext.args = { "-M -K 100000000 -R ${meta.read_group}" } ext.when = { !(params.analysis_type.equals("wes")) } - ext.prefix = { "${meta.id}.sorted" } + ext.prefix = { "${meta.id}_sorted_shifted" } } } @@ -86,22 +86,21 @@ process { withName: '.*ALIGN_MT_SHIFT:SENTIEON_BWAMEM_MT' { ext.args = { "-M -K 10000000 -R ${meta.read_group}" } ext.when = { !(params.analysis_type.equals("wes"))} - ext.prefix = { "${meta.id}.sorted" } + ext.prefix = { "${meta.id}_sorted_shifted" } } } - if (params.aligner.equals("bwa")) { withName: '.*ALIGN_MT_SHIFT:BWA_MEM_MT' { ext.args = { "-M -K 100000000 -R ${meta.read_group}" } ext.when = { !(params.analysis_type.equals("wes")) } - ext.prefix = { "${meta.id}.sorted" } + ext.prefix = { "${meta.id}_sorted_shifted" } } } withName: '.*ALIGN_MT_SHIFT:GATK4_MERGEBAMALIGNMENT_MT' { ext.args = '--TMP_DIR . --CREATE_INDEX true --MAX_GAPS -1 --SORT_ORDER queryname --INCLUDE_SECONDARY_ALIGNMENTS false --PAIRED_RUN false --VALIDATION_STRINGENCY LENIENT' - ext.prefix = { "${meta.id}_merged_shifted" } + ext.prefix = { "${meta.id}_sorted_merged_shifted" } } withName: '.*ALIGN_MT_SHIFT:PICARD_ADDORREPLACEREADGROUPS_MT' { @@ -117,11 +116,11 @@ process { withName: '.*ALIGN_MT_SHIFT:PICARD_MARKDUPLICATES_MT' { ext.args = '--TMP_DIR . --VALIDATION_STRINGENCY LENIENT --CREATE_INDEX true' - ext.prefix = { "${meta.id}_markduplicates_shifted" } + ext.prefix = { "${meta.id}_sorted_merged_md_shifted" } } withName: '.*ALIGN_MT_SHIFT:SAMTOOLS_SORT_MT' { - ext.prefix = { "${meta.id}_sorted_shifted" } + ext.prefix = { "${meta.id}_sorted_merged_md_sorted_shifted" } } } diff --git a/conf/modules/align_bwa_bwamem2.config b/conf/modules/align_bwa_bwamem2.config index 15453e0e..e91360fc 100644 --- a/conf/modules/align_bwa_bwamem2.config +++ b/conf/modules/align_bwa_bwamem2.config @@ -21,14 +21,14 @@ process { withName: '.*ALIGN:ALIGN_BWA_BWAMEM2:BWAMEM2_MEM' { ext.args = { "-M -K 100000000 -R ${meta.read_group}" } - ext.prefix = { "${meta.id}.sorted" } - ext.when = { params.aligner.equals("bwamem2")} + ext.prefix = { "${meta.id}_sorted" } + ext.when = { params.aligner.equals("bwamem2") } } withName: '.*ALIGN:ALIGN_BWA_BWAMEM2:BWA_MEM' { ext.args = { "-M -K 100000000 -R ${meta.read_group}" } - ext.prefix = { "${meta.id}.sorted" } - ext.when = { params.aligner.equals("bwa")} + ext.prefix = { "${meta.id}_sorted" } + ext.when = { params.aligner.equals("bwa") } } withName: '.*ALIGN:ALIGN_BWA_BWAMEM2:SAMTOOLS_STATS' { diff --git a/conf/modules/annotate_genome_snvs.config b/conf/modules/annotate_genome_snvs.config index bf748350..768aeee3 100644 --- a/conf/modules/annotate_genome_snvs.config +++ b/conf/modules/annotate_genome_snvs.config @@ -25,26 +25,29 @@ process { withName: '.*ANNOTATE_GENOME_SNVS:RHOCALL_ANNOTATE' { ext.args = { "--v14 " } - ext.prefix = { "${meta.id}_rohann" } + } + + withName: '.*ANNOTATE_GENOME_SNVS:ZIP_TABIX_ROHCALL' { + ext.prefix = { "${input.simpleName}" } } withName: '.*ANNOTATE_GENOME_SNVS:VCFANNO' { - ext.prefix = { "${meta.id}_rohann_vcfanno" } + ext.prefix = { "${vcf.simpleName}_vcfanno" } } withName: '.*ANNOTATE_GENOME_SNVS:UPD_SITES' { - ext.prefix = { "${meta.id}_rohann_vcfanno_upd_sites" } + ext.prefix = { "${vcf.simpleName}_upd_sites" } ext.args = {"--af-tag GNOMADAF --proband ${meta.upd_child} --mother ${meta.mother} --father ${meta.father} sites"} } withName: '.*ANNOTATE_GENOME_SNVS:UPD_REGIONS' { - ext.prefix = { "${meta.id}_rohann_vcfanno_upd_regions" } + ext.prefix = { "${vcf.simpleName}_upd_regions" } ext.args = {"--af-tag GNOMADAF --proband ${meta.upd_child} --mother ${meta.mother} --father ${meta.father} regions --min-size 5 --min-sites 1"} ext.when = { !(workflow.profile.tokenize(',').intersect(['test', 'test_one_sample']).size() >= 1) || workflow.stubRun } } withName: '.*ANNOTATE_GENOME_SNVS:CHROMOGRAPH_SITES' { - ext.prefix = { "${meta7.id}_rohann_vcfanno_upd_sites_chromograph" } + ext.prefix = { "${sites.simpleName}_chromograph" } ext.args = { "--euploid" } tag = {"${meta7.id}"} publishDir = [ @@ -55,7 +58,7 @@ process { } withName: '.*ANNOTATE_GENOME_SNVS:CHROMOGRAPH_REGIONS' { - ext.prefix = { "${meta6.id}_rohann_vcfanno_upd_regions_chromograph" } + ext.prefix = { "${regions.simpleName}_chromograph" } ext.args = { '--euploid' } ext.when = { !(workflow.profile.tokenize(',').intersect(['test', 'test_one_sample', 'test_sentieon']).size() >= 1) || workflow.stubRun } tag = {"${meta6.id}"} @@ -66,17 +69,21 @@ process { ] } + withName: '.*ANNOTATE_GENOME_SNVS:ZIP_TABIX_VCFANNO' { + ext.prefix = { "${input.simpleName}" } + } + withName: '.*ANNOTATE_GENOME_SNVS:BCFTOOLS_VIEW' { - ext.prefix = { "${meta.id}_rohann_vcfanno_filter" } + ext.prefix = { "${vcf.simpleName}_filter" } ext.args = { '--output-type z --exclude "INFO/GNOMADAF > 0.70 | INFO/GNOMADAF_popmax > 0.70" ' } } withName: '.*ANNOTATE_GENOME_SNVS:GATK4_SELECTVARIANTS' { - ext.prefix = { "${meta.id}_${intervals.simpleName}" } + ext.prefix = { "${vcf.simpleName}_${intervals.simpleName}" } } withName: '.*ANNOTATE_GENOME_SNVS:ENSEMBLVEP_SNV' { - ext.prefix = { "${vcf.simpleName}_rohann_vcfanno_filter_vep" } + ext.prefix = { "${meta.prefix}_vep_${meta.scatterid}" } ext.args = { [ '--dir_plugins vep_cache/Plugins', '--plugin LoFtool,LoFtool_scores.txt', @@ -94,7 +101,7 @@ process { } withName: '.*ANNOTATE_GENOME_SNVS:BCFTOOLS_CONCAT' { - ext.prefix = { "${meta.id}_rohann_vcfanno_filter_vep" } + ext.prefix = { "${meta.prefix}_vep" } publishDir = [ path: { "${params.outdir}/annotate_snv/genome" }, mode: params.publish_dir_mode, diff --git a/conf/modules/annotate_mt_snvs.config b/conf/modules/annotate_mt_snvs.config index 45260fb2..3e25c36f 100644 --- a/conf/modules/annotate_mt_snvs.config +++ b/conf/modules/annotate_mt_snvs.config @@ -16,49 +16,52 @@ // process { - if (!params.skip_mt_annotation) { - withName: '.*ANNOTATE_MT_SNVS:ENSEMBLVEP_MT' { - ext.args = { [ - '--dir_plugins vep_cache/Plugins', - '--plugin LoFtool,LoFtool_scores.txt', - '--plugin pLI,pLI_values.txt', - '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz', - '--distance 0', - '--buffer_size 20000', - '--format vcf --fork 4 --max_sv_size 248956422', - '--appris --biotype --cache --canonical --ccds --compress_output bgzip', - '--domains --exclude_predicted --force_overwrite', - '--hgvs --humdiv --no_progress --numbers', - '--merged --polyphen p --protein --offline --regulatory --sift p --symbol --tsl --vcf', - '--uniprot' - ].join(' ') } - } + withName: '.*ANNOTATE_MT_SNVS:ENSEMBLVEP_MT' { + ext.args = { [ + '--dir_plugins vep_cache/Plugins', + '--plugin LoFtool,LoFtool_scores.txt', + '--plugin pLI,pLI_values.txt', + '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz', + '--distance 0', + '--buffer_size 20000', + '--format vcf --fork 4 --max_sv_size 248956422', + '--appris --biotype --cache --canonical --ccds --compress_output bgzip', + '--domains --exclude_predicted --force_overwrite', + '--hgvs --humdiv --no_progress --numbers', + '--merged --polyphen p --protein --offline --regulatory --sift p --symbol --tsl --vcf', + '--uniprot' + ].join(' ') } + ext.prefix = { "${meta.prefix}" } + } - withName: '.*ANNOTATE_MT_SNVS:ZIP_TABIX_HMTNOTE' { - ext.prefix = { "${meta.id}_vep_vcfanno_hmtnote_mt" } - publishDir = [ - path: { "${params.outdir}/annotate_snv/mitochondria" }, - mode: params.publish_dir_mode, - pattern: "*{vcf.gz,vcf.gz.tbi}", - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } + withName: '.*ANNOTATE_MT_SNVS:VCFANNO_MT' { + ext.prefix = { "${meta.prefix}" } + } - withName: '.*ANNOTATE_MT_SNVS:HMTNOTE_ANNOTATE' { - ext.prefix = { "${meta.id}_vep_vcfanno_hmtnote_mt" } - ext.args = '--offline' - publishDir = [ - enabled: false - ] - } + withName: '.*ANNOTATE_MT_SNVS:ZIP_TABIX_HMTNOTE' { + ext.prefix = { "${meta.prefix}" } + publishDir = [ + path: { "${params.outdir}/annotate_snv/mitochondria" }, + mode: params.publish_dir_mode, + pattern: "*{vcf.gz,vcf.gz.tbi}", + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*ANNOTATE_MT_SNVS:HMTNOTE_ANNOTATE' { + ext.prefix = { "${meta.prefix}_uncompressed" } + ext.args = '--offline' + publishDir = [ + enabled: false + ] + } - withName: '.*ANNOTATE_MT_SNVS:HAPLOGREP2_CLASSIFY_MT' { - ext.prefix = { "${meta.id}_haplogrep" } - publishDir = [ - path: { "${params.outdir}/annotate_snv/mitochondria" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } + withName: '.*ANNOTATE_MT_SNVS:HAPLOGREP2_CLASSIFY_MT' { + ext.prefix = { "${meta.prefix}_haplogrep" } + publishDir = [ + path: { "${params.outdir}/annotate_snv/mitochondria" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] } } diff --git a/conf/modules/annotate_structural_variants.config b/conf/modules/annotate_structural_variants.config index 62faeda7..f8666a82 100644 --- a/conf/modules/annotate_structural_variants.config +++ b/conf/modules/annotate_structural_variants.config @@ -35,7 +35,7 @@ process { } withName: '.*ANNOTATE_STRUCTURAL_VARIANTS:PICARD_SORTVCF' { - ext.prefix = { "${meta.id}_sortvcf" } + ext.prefix = { "${meta.id}_svdbquery" } } withName: '.*ANNOTATE_STRUCTURAL_VARIANTS:BCFTOOLS_VIEW' { diff --git a/conf/modules/call_snv.config b/conf/modules/call_snv.config index 92eda8cf..1170d515 100644 --- a/conf/modules/call_snv.config +++ b/conf/modules/call_snv.config @@ -21,7 +21,7 @@ process { withName: '.*CALL_SNV:GATK4_SELECTVARIANTS' { ext.args = { "--exclude-intervals ${params.mito_name}" } - ext.prefix = { "${meta.id}_nomito" } + ext.prefix = { "${meta.id}_snv" } publishDir = [ path: { "${params.outdir}/call_snv/genome" }, mode: params.publish_dir_mode, diff --git a/conf/modules/call_structural_variants.config b/conf/modules/call_structural_variants.config index 3a59868d..f8da7840 100644 --- a/conf/modules/call_structural_variants.config +++ b/conf/modules/call_structural_variants.config @@ -24,6 +24,7 @@ process { } withName: '.*CALL_STRUCTURAL_VARIANTS:SVDB_MERGE' { + ext.prefix = {"${meta.id}_sv"} ext.args = '--pass_only --same_order' publishDir = [ path: { "${params.outdir}/call_sv/genome" }, diff --git a/conf/modules/call_sv_MT.config b/conf/modules/call_sv_MT.config index b7022829..05f98e84 100644 --- a/conf/modules/call_sv_MT.config +++ b/conf/modules/call_sv_MT.config @@ -19,6 +19,7 @@ process { withName: '.*CALL_SV_MT:MT_DELETION' { ext.args = '-s --insert-size 16000' + ext.prefix = { "${meta.id}_mitochondria_deletions" } publishDir = [ path: { "${params.outdir}/call_sv/mitochondria" }, mode: params.publish_dir_mode, diff --git a/conf/modules/call_sv_germlinecnvcaller.config b/conf/modules/call_sv_germlinecnvcaller.config index 6685dc6c..5f85c0f9 100644 --- a/conf/modules/call_sv_germlinecnvcaller.config +++ b/conf/modules/call_sv_germlinecnvcaller.config @@ -39,7 +39,7 @@ process { } withName: '.*CALL_STRUCTURAL_VARIANTS:CALL_SV_GERMLINECNVCALLER:BCFTOOLS_VIEW' { - ext.prefix = { "${meta.id}_gatkcnv_segments_reffiltered" } + ext.prefix = { "${meta.id}_gatkcnv_segments_refiltered" } ext.args = { '--output-type z --exclude "N_ALT = 0" ' } } } diff --git a/conf/modules/generate_clinical_set.config b/conf/modules/generate_clinical_set.config index 794e284b..4ab31579 100644 --- a/conf/modules/generate_clinical_set.config +++ b/conf/modules/generate_clinical_set.config @@ -27,11 +27,6 @@ process { withName: '.*:GENERATE_CLINICAL_SET_SNV:TABIX_BGZIP' { ext.when = !params.skip_vep_filter ext.prefix = { "${meta.id}_snv_${meta.set}" } - publishDir = [ - path: { "${params.outdir}/rank_and_filter" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] } } @@ -40,18 +35,13 @@ process { process { withName: '.*:GENERATE_CLINICAL_SET_SV:ENSEMBLVEP_FILTERVEP' { ext.when = !params.skip_vep_filter - ext.prefix = { "${meta.id}_sv_${meta.set}" } + ext.prefix = { "${input.simpleName}_sv_${meta.set}" } ext.args = { "--filter \"HGNC_ID in ${meta.hgnc_ids.join(',')}\"" } } withName: '.*:GENERATE_CLINICAL_SET_SV:TABIX_BGZIP' { ext.when = !params.skip_vep_filter ext.prefix = { "${meta.id}_sv_${meta.set}" } - publishDir = [ - path: { "${params.outdir}/rank_and_filter" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] } } @@ -67,10 +57,5 @@ process { withName: '.*:GENERATE_CLINICAL_SET_MT:TABIX_BGZIP' { ext.when = !params.skip_vep_filter ext.prefix = { "${meta.id}_mt_${meta.set}" } - publishDir = [ - path: { "${params.outdir}/rank_and_filter" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] } } diff --git a/conf/modules/qc_bam.config b/conf/modules/qc_bam.config index 93b0f2db..d57670c7 100644 --- a/conf/modules/qc_bam.config +++ b/conf/modules/qc_bam.config @@ -48,6 +48,7 @@ process { withName: '.*QC_BAM:UCSC_WIGTOBIGWIG' { ext.args = '-clip' + ext.prefix = { "${meta.id}_tidditcov" } } withName: '.*QC_BAM:CHROMOGRAPH_COV' { diff --git a/conf/modules/rank_variants.config b/conf/modules/rank_variants.config index b65d55ab..a17dee05 100644 --- a/conf/modules/rank_variants.config +++ b/conf/modules/rank_variants.config @@ -31,8 +31,8 @@ process { ].join(' ') } } - withName: '.*RANK_VARIANTS_SNV:GENMOD_MODELS' { - ext.prefix = { "${meta.id}_snv_genmod_models_${meta.set}" } + withName: '.*RANK_VARIANTS_SV:GENMOD_MODELS' { + ext.prefix = { "${meta.id}_sv_genmod_models_${meta.set}" } ext.args = " --whole_gene " } diff --git a/docs/output.md b/docs/output.md index 448322da..281ac7dd 100644 --- a/docs/output.md +++ b/docs/output.md @@ -266,8 +266,8 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ Output files - `call_snv/genome` - - `_nomito.selectvariants.vcf.gz`: normalized vcf file containing no MT variants. - - `_nomito.selectvariants.vcf.gz.tbi`: index of the vcf file containing no MT variants. + - `_snv.vcf.gz`: normalized vcf file containing no MT variants. + - `_snv.vcf.gz.tbi`: index of the vcf file containing no MT variants. @@ -279,8 +279,8 @@ The pipeline performs variant calling using [Sentieon DNAscope](https://support. Output files - `call_snv/genome` - - `_nomito.selectvariants.vcf.gz`: normalized vcf file containing no MT variants. - - `_nomito.selectvariants.vcf.gz.tbi`: index of the vcf file containing no MT variants. + - `_snv.vcf.gz`: normalized vcf file containing no MT variants. + - `_snv.vcf.gz.tbi`: index of the vcf file containing no MT variants. @@ -382,8 +382,8 @@ Based on VEP annotations, custom scripts used by the pipeline further annotate e Output files - `annotate_snv/genome` - - `_rohann_vcfanno_filter_vep.vcf.gz`: file containing bcftools roh, vcfanno, and vep annotations. - - `_rohann_vcfanno_filter_vep.vcf.gz.tbi`: index of the file containing bcftools roh, vcfanno, and vep annotations. + - `_rhocall_vcfanno_filter_.vcf.gz`: file containing bcftools roh, vcfanno, cadd and vep annotations. + - `_rhocall_vcfanno_filter_.vcf.gz.tbi`: index of the file containing bcftools roh, vcfanno, cadd and vep annotations. @@ -456,15 +456,15 @@ The pipeline for mitochondrial variant discovery, using Mutect2, uses a high sen [MT deletion script](https://github.com/dnil/mitosign/blob/master/run_mt_del_check.sh) lists the fraction of mitochondrially aligning read pairs (per 1000) that appear discordant, as defined by an insert size of more than 1.2 kb (and less than 15 kb due to the circular nature of the genome) using samtools. - `call_sv/mitochondria` - - `.txt`: file containing deletions. + - `_mitochondria_deletions.txt`: file containing deletions. ##### eKLIPse [eKLIPse](https://github.com/dooguypapua/eKLIPse) allows the detection and quantification of large mtDNA rearrangements. - `call_sv/mitochondria` - - `eKLIPse_deletions.csv`: file containing all predicted deletions. - - `eKLIPse_genes.csv`: file summarizing cumulated deletions per mtDNA gene. + - `eKLIPse__deletions.csv`: file containing all predicted deletions. + - `eKLIPse__genes.csv`: file summarizing cumulated deletions per mtDNA gene. - `eKLIPse_.png`: circos plot. #### Annotation: @@ -477,7 +477,7 @@ The pipeline for mitochondrial variant discovery, using Mutect2, uses a high sen Output files - `annotate_snv/mitochondria` - - `_haplogrep.txt`: file containing haplogroup information. + - `_mitochondria_haplogrep.txt`: file containing haplogroup information. @@ -503,8 +503,8 @@ We recommend using vcfanno to annotate SNVs with precomputed CADD scores (files Output files - `annotate_snv/mitochondria` - - `_vep_vcfanno_hmtnote_mt.vcf.gz`: file containing mitochondrial annotations. - - `_vep_vcfanno_hmtnote_mt.vcf.gz.tbi`: index of the file containing mitochondrial annotations. + - `_mitochondria_vep_vcfanno_hmtnote.vcf.gz`: file containing mitochondrial annotations. + - `_mitochondria_vep_vcfanno_hmtnote.vcf.gz.tbi`: index of the file containing mitochondrial annotations. diff --git a/modules.json b/modules.json index 1076a6d6..cf999956 100644 --- a/modules.json +++ b/modules.json @@ -113,7 +113,7 @@ }, "eklipse": { "branch": "master", - "git_sha": "0031772de29283811deb989a5b42d0310d35ec22", + "git_sha": "7f265c2db4b1394c9303a3eb51e25d8447767347", "installed_by": ["modules"] }, "ensemblvep/filtervep": { @@ -225,7 +225,7 @@ }, "gatk4/selectvariants": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "47cd015ac64f0294ae65a589693604127132a686", "installed_by": ["modules"] }, "gatk4/shiftfasta": { @@ -281,7 +281,8 @@ "hmtnote/annotate": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/hmtnote/annotate/hmtnote-annotate.diff" }, "manta/germline": { "branch": "master", @@ -455,7 +456,7 @@ }, "svdb/merge": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "d9c95c45db561814ff6c46a0c0574581e81beaae", "installed_by": ["modules"] }, "svdb/query": { diff --git a/modules/local/mt_deletion_script.nf b/modules/local/mt_deletion_script.nf index 02d55876..f363b949 100644 --- a/modules/local/mt_deletion_script.nf +++ b/modules/local/mt_deletion_script.nf @@ -38,7 +38,7 @@ process MT_DELETION { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}_mt_del.txt + touch ${prefix}.txt cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/eklipse/main.nf b/modules/nf-core/eklipse/main.nf index b50df3c1..98c57789 100644 --- a/modules/nf-core/eklipse/main.nf +++ b/modules/nf-core/eklipse/main.nf @@ -33,8 +33,8 @@ process EKLIPSE { -in infile.txt \\ $args \\ -ref $ref_gb - mv eKLIPse_*/eKLIPse_deletions.csv eKLIPse_deletions.csv - mv eKLIPse_*/eKLIPse_genes.csv eKLIPse_genes.csv + mv eKLIPse_*/eKLIPse_deletions.csv eKLIPse_${prefix}_deletions.csv + mv eKLIPse_*/eKLIPse_genes.csv eKLIPse_${prefix}_genes.csv mv eKLIPse_*/eKLIPse_${prefix}.png eKLIPse_${prefix}.png cat <<-END_VERSIONS > versions.yml @@ -47,8 +47,8 @@ process EKLIPSE { def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = "1.8" """ - touch eKLIPse_deletions.csv - touch eKLIPse_genes.csv + touch eKLIPse_${prefix}_deletions.csv + touch eKLIPse_${prefix}_genes.csv touch eKLIPse_${prefix}.png cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/eklipse/tests/main.nf.test.snap b/modules/nf-core/eklipse/tests/main.nf.test.snap index 87d79dac..5969a1da 100644 --- a/modules/nf-core/eklipse/tests/main.nf.test.snap +++ b/modules/nf-core/eklipse/tests/main.nf.test.snap @@ -1,11 +1,11 @@ { - "eklipse": { + "homo_sapiens [bam]": { "content": [ - "eKLIPse_deletions.csv:md5,8bcfdb8f3e8a63dcd211c2a53b6ca0a7", - "eKLIPse_genes.csv:md5,ec1a1f31d018ca66a46d8a2d17bc8d18", + "eKLIPse_test_deletions.csv:md5,8bcfdb8f3e8a63dcd211c2a53b6ca0a7", + "eKLIPse_test_genes.csv:md5,ec1a1f31d018ca66a46d8a2d17bc8d18", "eKLIPse_test.png:md5,d1ea2a548bc4f8d321b1128a61ea8b0a", "versions.yml:md5,8e6ebaa9abf72ced91c1f56acd10f131" ], - "timestamp": "2023-11-22T18:02:08.245264064" + "timestamp": "2024-02-11T14:55:25.205208435" } } \ No newline at end of file diff --git a/modules/nf-core/gatk4/selectvariants/main.nf b/modules/nf-core/gatk4/selectvariants/main.nf index f81a019b..139d7835 100644 --- a/modules/nf-core/gatk4/selectvariants/main.nf +++ b/modules/nf-core/gatk4/selectvariants/main.nf @@ -11,9 +11,9 @@ process GATK4_SELECTVARIANTS { tuple val(meta), path(vcf), path(vcf_idx), path (intervals) output: - tuple val(meta), path("*.selectvariants.vcf.gz") , emit: vcf - tuple val(meta), path("*.selectvariants.vcf.gz.tbi") , emit: tbi - path "versions.yml" , emit: versions + tuple val(meta), path("*.vcf.gz") , emit: vcf + tuple val(meta), path("*.vcf.gz.tbi") , emit: tbi + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -33,7 +33,7 @@ process GATK4_SELECTVARIANTS { gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ SelectVariants \\ --variant $vcf \\ - --output ${prefix}.selectvariants.vcf.gz \\ + --output ${prefix}.vcf.gz \\ $interval \\ --tmp-dir . \\ $args @@ -47,8 +47,8 @@ process GATK4_SELECTVARIANTS { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.selectvariants.vcf.gz - touch ${prefix}.selectvariants.vcf.gz.tbi + touch ${prefix}.vcf.gz + touch ${prefix}.vcf.gz.tbi cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/selectvariants/tests/main.nf.test b/modules/nf-core/gatk4/selectvariants/tests/main.nf.test new file mode 100644 index 00000000..d1622dad --- /dev/null +++ b/modules/nf-core/gatk4/selectvariants/tests/main.nf.test @@ -0,0 +1,64 @@ +nextflow_process { + + name "Test Process GATK4_SELECTVARIANTS" + script "modules/nf-core/gatk4/selectvariants/main.nf" + process "GATK4_SELECTVARIANTS" + tag "modules" + tag "modules_nfcore" + tag "gatk4" + tag "gatk4/selectvariants" + + test("selectvariants - vcf input") { + + when { + params { + // define parameters here. Example: + // outdir = "tests/results" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_idx'], checkIfExists: true), + file(params.test_data['homo_sapiens']['genome']['genome_interval_list'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + {assert process.success}, + {assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2")} + ) + } + + + } + + test("selectvariants - gz input") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz_tbi'], checkIfExists: true), + [] + ] + """ + } + } + + then { + assertAll( + {assert process.success}, + {assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2")} + ) + } + + } + +} diff --git a/modules/nf-core/gatk4/selectvariants/tests/tags.yml b/modules/nf-core/gatk4/selectvariants/tests/tags.yml new file mode 100644 index 00000000..d9fb50f7 --- /dev/null +++ b/modules/nf-core/gatk4/selectvariants/tests/tags.yml @@ -0,0 +1,2 @@ +gatk4/selectvariants: + - "modules/nf-core/gatk4/selectvariants/**" diff --git a/modules/nf-core/hmtnote/annotate/hmtnote-annotate.diff b/modules/nf-core/hmtnote/annotate/hmtnote-annotate.diff new file mode 100644 index 00000000..3723cf2f --- /dev/null +++ b/modules/nf-core/hmtnote/annotate/hmtnote-annotate.diff @@ -0,0 +1,42 @@ +Changes in module 'nf-core/hmtnote/annotate' +--- modules/nf-core/hmtnote/annotate/main.nf ++++ modules/nf-core/hmtnote/annotate/main.nf +@@ -11,7 +11,7 @@ + tuple val(meta), path(vcf) + + output: +- tuple val(meta), path("*_annotated.vcf"), emit: vcf ++ tuple val(meta), path("${prefix}.vcf"), emit: vcf + path "versions.yml" , emit: versions + + when: +@@ -19,13 +19,13 @@ + + script: + def args = task.ext.args ?: '' +- def prefix = task.ext.prefix ?: "${meta.id}" ++ prefix = task.ext.prefix ?: "${meta.id}" + + """ + hmtnote \\ + annotate \\ + $vcf \\ +- ${prefix}_annotated.vcf \\ ++ ${prefix}.vcf \\ + $args + + cat <<-END_VERSIONS > versions.yml +@@ -34,9 +34,9 @@ + END_VERSIONS + """ + stub: +- def prefix = task.ext.prefix ?: "${meta.id}" ++ prefix = task.ext.prefix ?: "${meta.id}" + """ +- touch ${prefix}_annotated.vcf ++ touch ${prefix}.vcf + cat <<-END_VERSIONS > versions.yml + "${task.process}": + hmtnote: \$(echo \$(hmtnote --version 2>&1) | sed 's/^.*hmtnote, version //; s/Using.*\$//' )) + +************************************************************ diff --git a/modules/nf-core/hmtnote/annotate/main.nf b/modules/nf-core/hmtnote/annotate/main.nf index 2fca73f4..8d727df3 100644 --- a/modules/nf-core/hmtnote/annotate/main.nf +++ b/modules/nf-core/hmtnote/annotate/main.nf @@ -11,7 +11,7 @@ process HMTNOTE_ANNOTATE { tuple val(meta), path(vcf) output: - tuple val(meta), path("*_annotated.vcf"), emit: vcf + tuple val(meta), path("${prefix}.vcf"), emit: vcf path "versions.yml" , emit: versions when: @@ -19,13 +19,13 @@ process HMTNOTE_ANNOTATE { script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" """ hmtnote \\ annotate \\ $vcf \\ - ${prefix}_annotated.vcf \\ + ${prefix}.vcf \\ $args cat <<-END_VERSIONS > versions.yml @@ -34,9 +34,9 @@ process HMTNOTE_ANNOTATE { END_VERSIONS """ stub: - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}_annotated.vcf + touch ${prefix}.vcf cat <<-END_VERSIONS > versions.yml "${task.process}": hmtnote: \$(echo \$(hmtnote --version 2>&1) | sed 's/^.*hmtnote, version //; s/Using.*\$//' )) diff --git a/modules/nf-core/svdb/merge/main.nf b/modules/nf-core/svdb/merge/main.nf index 0d9967dd..827d11b3 100644 --- a/modules/nf-core/svdb/merge/main.nf +++ b/modules/nf-core/svdb/merge/main.nf @@ -11,7 +11,7 @@ process SVDB_MERGE { val (priority) output: - tuple val(meta), path("*_sv_merge.vcf.gz"), emit: vcf + tuple val(meta), path("*.vcf.gz"), emit: vcf path "versions.yml" , emit: versions when: @@ -35,8 +35,8 @@ process SVDB_MERGE { $args \\ $prio \\ --vcf $input \\ - > ${prefix}_sv_merge.vcf - bgzip ${prefix}_sv_merge.vcf + > ${prefix}.vcf + bgzip ${prefix}.vcf cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -48,7 +48,7 @@ process SVDB_MERGE { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}_sv_merge.vcf.gz + touch ${prefix}.vcf.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/svdb/merge/tests/main.nf.test b/modules/nf-core/svdb/merge/tests/main.nf.test new file mode 100644 index 00000000..f06b5998 --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/main.nf.test @@ -0,0 +1,57 @@ +nextflow_process { + + name "Test Process SVDB_MERGE" + script "modules/nf-core/svdb/merge/main.nf" + process "SVDB_MERGE" + tag "modules" + tag "modules_nfcore" + tag "svdb" + tag "svdb/merge" + + test("test_svdb_merge") { + + when { + process { + """ + input[0] = [[ id:'test' ], // meta map + [file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test2_vcf'], checkIfExists: true) ] + ] + input[1] = [ 'tiddit', 'cnvnator'] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.1") } + ) + } + + } + + test("test_svdb_merge_noprio") { + + when { + process { + """ + input[0] = [[ id:'test' ], // meta map + [file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test2_vcf'], checkIfExists: true) ] + ] + input[1] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.1") } + ) + } + + } + +} diff --git a/modules/nf-core/svdb/merge/tests/tags.yml b/modules/nf-core/svdb/merge/tests/tags.yml new file mode 100644 index 00000000..8501d907 --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/tags.yml @@ -0,0 +1,2 @@ +svdb/merge: + - modules/nf-core/svdb/merge/** diff --git a/subworkflows/local/annotate_genome_snvs.nf b/subworkflows/local/annotate_genome_snvs.nf index fe59303d..e2f10a1e 100644 --- a/subworkflows/local/annotate_genome_snvs.nf +++ b/subworkflows/local/annotate_genome_snvs.nf @@ -93,7 +93,7 @@ workflow ANNOTATE_GENOME_SNVS { .combine(ch_split_intervals) .map { meta, vcf, tbi, interval -> - return [meta + [scatterid:interval.baseName], vcf, tbi, interval] + return [meta + [scatterid:interval.baseName, prefix: vcf.simpleName], vcf, tbi, interval] } .set { ch_vcf_scatter_in } @@ -118,7 +118,7 @@ workflow ANNOTATE_GENOME_SNVS { selvar: it[2].equals(null) return [it[0], it[1]] cadd: !(it[2].equals(null)) - return [it[0], it[2]] + return [it[0] + [prefix: it[0].prefix + "_cadd"], it[2]] } .set { ch_for_mix } @@ -156,9 +156,13 @@ workflow ANNOTATE_GENOME_SNVS { BCFTOOLS_CONCAT (ch_concat_in) - TABIX_BCFTOOLS_CONCAT (BCFTOOLS_CONCAT.out.vcf) + BCFTOOLS_CONCAT.out.vcf + .map { meta, vcf -> [meta - meta.subMap('prefix'), vcf] } + .set { ch_concat_out } - ch_vep_ann = BCFTOOLS_CONCAT.out.vcf + TABIX_BCFTOOLS_CONCAT (ch_concat_out) + + ch_vep_ann = ch_concat_out ch_vep_index = TABIX_BCFTOOLS_CONCAT.out.tbi ch_versions = ch_versions.mix(BCFTOOLS_ROH.out.versions) diff --git a/subworkflows/local/annotate_mt_snvs.nf b/subworkflows/local/annotate_mt_snvs.nf index e7b8ae6a..5cbf261f 100644 --- a/subworkflows/local/annotate_mt_snvs.nf +++ b/subworkflows/local/annotate_mt_snvs.nf @@ -46,9 +46,9 @@ workflow ANNOTATE_MT_SNVS { .join(ch_cadd_vcf, remainder: true) // If CADD is not run then the third element in this channel will be `null` .branch { it -> // If CADD is run, then "it" will be [[meta],selvar.vcf,cadd.vcf], else [[meta],selvar.vcf,null] merged: it[2].equals(null) - return [it[0], it[1]] + return [it[0]+ [prefix: it[1].simpleName + "_vep"], it[1]] cadd: !(it[2].equals(null)) - return [it[0], it[2]] + return [it[0] + [prefix: it[1].simpleName + "_cadd_vep"], it[2]] } .set { ch_for_mix } @@ -73,15 +73,18 @@ workflow ANNOTATE_MT_SNVS { TABIX_TABIX_MT(ENSEMBLVEP_MT.out.vcf) ENSEMBLVEP_MT.out.vcf .join(TABIX_TABIX_MT.out.tbi, failOnMismatch:true, failOnDuplicate:true) - .map { meta, vcf, tbi -> return [meta, vcf, tbi, []]} + .map { meta, vcf, tbi -> return [meta + [prefix: meta.prefix + "_vcfanno"], vcf, tbi, []]} .set { ch_in_vcfanno } - VCFANNO_MT(ch_in_vcfanno, ch_vcfanno_toml, [], ch_vcfanno_resources) + VCFANNO_MT(ch_in_vcfanno, ch_vcfanno_toml, [], ch_vcfanno_resources).vcf + .map { meta, vcf -> return [meta + [prefix: meta.prefix + "_hmtnote"], vcf]} + .set {ch_hmtnote_in} // HMTNOTE ANNOTATE - HMTNOTE_ANNOTATE(VCFANNO_MT.out.vcf) - HMTNOTE_ANNOTATE.out.vcf.map{meta, vcf -> - return [meta, WorkflowRaredisease.replaceSpacesInInfoColumn(vcf, vcf.parent.toString(), vcf.baseName)] + HMTNOTE_ANNOTATE(ch_hmtnote_in) + HMTNOTE_ANNOTATE.out.vcf + .map{meta, vcf -> + return [meta, WorkflowRaredisease.replaceSpacesInInfoColumn(vcf, vcf.parent.toString(), vcf.baseName)] } .set { ch_hmtnote_reformatted } ZIP_TABIX_HMTNOTE(ch_hmtnote_reformatted) diff --git a/subworkflows/local/annotate_structural_variants.nf b/subworkflows/local/annotate_structural_variants.nf index d2d42027..db73f5a1 100644 --- a/subworkflows/local/annotate_structural_variants.nf +++ b/subworkflows/local/annotate_structural_variants.nf @@ -95,7 +95,9 @@ workflow ANNOTATE_STRUCTURAL_VARIANTS { PICARD_SORTVCF(ch_querypedbed_out, ch_genome_fasta, ch_genome_dictionary) - PICARD_SORTVCF.out.vcf.map { meta, vcf -> return [meta,vcf,[]] }.set { ch_sortvcf } + PICARD_SORTVCF.out.vcf + .map { meta, vcf -> return [meta,vcf,[]] } + .set { ch_sortvcf } BCFTOOLS_VIEW(ch_sortvcf, [], [], []) .vcf